mt5cli 1.7.1__tar.gz → 1.7.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. {mt5cli-1.7.1 → mt5cli-1.7.2}/.agents/skills/local-qa/SKILL.md +5 -5
  2. {mt5cli-1.7.1 → mt5cli-1.7.2}/.github/renovate.json +1 -0
  3. mt5cli-1.7.2/.github/workflows/claude.yml +29 -0
  4. {mt5cli-1.7.1 → mt5cli-1.7.2}/PKG-INFO +2 -2
  5. {mt5cli-1.7.1 → mt5cli-1.7.2}/pyproject.toml +3 -2
  6. {mt5cli-1.7.1 → mt5cli-1.7.2}/uv.lock +399 -388
  7. mt5cli-1.7.1/.github/workflows/claude.yml +0 -56
  8. {mt5cli-1.7.1 → mt5cli-1.7.2}/.agents/skills/local-qa/scripts/qa.sh +0 -0
  9. {mt5cli-1.7.1 → mt5cli-1.7.2}/.agents/skills/mt5cli/SKILL.md +0 -0
  10. {mt5cli-1.7.1 → mt5cli-1.7.2}/.claude/agents/codex.md +0 -0
  11. {mt5cli-1.7.1 → mt5cli-1.7.2}/.claude/settings.json +0 -0
  12. {mt5cli-1.7.1 → mt5cli-1.7.2}/.github/CODEOWNERS +0 -0
  13. {mt5cli-1.7.1 → mt5cli-1.7.2}/.github/FUNDING.yml +0 -0
  14. {mt5cli-1.7.1 → mt5cli-1.7.2}/.github/dependabot.yml +0 -0
  15. {mt5cli-1.7.1 → mt5cli-1.7.2}/.github/workflows/ci.yml +0 -0
  16. {mt5cli-1.7.1 → mt5cli-1.7.2}/.github/workflows/codeql.yml +0 -0
  17. {mt5cli-1.7.1 → mt5cli-1.7.2}/.github/workflows/release.yml +0 -0
  18. {mt5cli-1.7.1 → mt5cli-1.7.2}/.gitignore +0 -0
  19. {mt5cli-1.7.1 → mt5cli-1.7.2}/LICENSE +0 -0
  20. {mt5cli-1.7.1 → mt5cli-1.7.2}/README.md +0 -0
  21. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/analytics.md +0 -0
  22. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/cli.md +0 -0
  23. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/client.md +0 -0
  24. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/converters.md +0 -0
  25. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/exceptions.md +0 -0
  26. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/history.md +0 -0
  27. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/index.md +0 -0
  28. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/marketdata.md +0 -0
  29. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/observability.md +0 -0
  30. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/public-contract.md +0 -0
  31. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/schemas.md +0 -0
  32. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/telemetry.md +0 -0
  33. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/trading.md +0 -0
  34. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/api/utils.md +0 -0
  35. {mt5cli-1.7.1 → mt5cli-1.7.2}/docs/index.md +0 -0
  36. {mt5cli-1.7.1 → mt5cli-1.7.2}/mkdocs.yml +0 -0
  37. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/__init__.py +0 -0
  38. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/__main__.py +0 -0
  39. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/analytics.py +0 -0
  40. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/cli.py +0 -0
  41. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/client.py +0 -0
  42. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/contract.py +0 -0
  43. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/converters.py +0 -0
  44. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/exceptions.py +0 -0
  45. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/history.py +0 -0
  46. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/lifecycle.py +0 -0
  47. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/marketdata.py +0 -0
  48. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/observability.py +0 -0
  49. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/rates.py +0 -0
  50. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/retry.py +0 -0
  51. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/schemas.py +0 -0
  52. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/sdk.py +0 -0
  53. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/telemetry.py +0 -0
  54. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/trading.py +0 -0
  55. {mt5cli-1.7.1 → mt5cli-1.7.2}/mt5cli/utils.py +0 -0
  56. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/architecture/__init__.py +0 -0
  57. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/architecture/test_unit_module_correspondence.py +0 -0
  58. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/cli/test_cli.bats +0 -0
  59. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/conftest.py +0 -0
  60. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/contracts/__init__.py +0 -0
  61. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/contracts/test_public_api.py +0 -0
  62. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/docs/__init__.py +0 -0
  63. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/docs/test_public_contract.py +0 -0
  64. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/docs/test_rate_storage_contract.py +0 -0
  65. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/integration/__init__.py +0 -0
  66. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/integration/test_history_capture_persist.py +0 -0
  67. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/packaging/test_metadata.py +0 -0
  68. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/__init__.py +0 -0
  69. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/conftest.py +0 -0
  70. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_analytics.py +0 -0
  71. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_cli.py +0 -0
  72. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_client.py +0 -0
  73. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_contract.py +0 -0
  74. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_converters.py +0 -0
  75. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_exceptions.py +0 -0
  76. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_history.py +0 -0
  77. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_lifecycle.py +0 -0
  78. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_marketdata.py +0 -0
  79. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_observability.py +0 -0
  80. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_rates.py +0 -0
  81. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_retry.py +0 -0
  82. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_schemas.py +0 -0
  83. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_sdk.py +0 -0
  84. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_telemetry.py +0 -0
  85. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_trading.py +0 -0
  86. {mt5cli-1.7.1 → mt5cli-1.7.2}/tests/unit/test_utils.py +0 -0
@@ -1,22 +1,22 @@
1
1
  ---
2
2
  name: local-qa
3
3
  description: Run local QA including formatting, linting, and testing for the repository. Use whenever any file has been updated.
4
- disable-model-invocation: false
5
4
  ---
6
5
 
7
6
  # Local QA (format, lint, and test)
8
7
 
9
- Run the local QA script `scripts/qa.sh` in this skill.
8
+ Run `scripts/qa.sh` relative to this skill's directory, not the shell's current working directory. The script changes to the repository root itself.
10
9
 
11
10
  ## Procedure
12
11
 
13
- - Execute the script exactly as shown above when this skill is triggered.
12
+ - Execute `scripts/qa.sh` from the skill directory when this skill is triggered (it formats and fixes files in place, so check `git status` afterward).
14
13
  - Capture and summarize key output (success/failure, major warnings, and any files modified).
15
- - If the script fails due to missing tooling (`command not found`, missing executable, or equivalent), install the missing tool(s) and rerun `./scripts/qa.sh`.
14
+ - If the script fails due to missing tooling (`command not found`, missing executable, or equivalent), install the missing tool(s) and rerun `scripts/qa.sh` from the skill directory.
16
15
  - Install tools using this order of preference:
17
16
  1. Use the project's package manager when applicable (`uv`/`poetry` for Python, package manager scripts/dependencies for Node.js).
18
17
  2. Use a system package manager (`brew` on macOS, `apt` on Debian/Ubuntu) when project-local install is not applicable.
19
18
  3. Use language-specific installers as fallback (`pipx`/`pip`, `npm`, `go install`, etc.).
20
19
  - If multiple tools are missing, repeat install -> rerun until QA completes or you hit a blocker.
21
20
  - If installation fails or requires unavailable privileges, report what was attempted, the exact failure, and stop.
22
- - Do not run unrelated commands; only run commands needed for QA and missing-tool installation.
21
+ - If QA fails for another reason, fix the root cause and rerun until QA passes or a blocker is reached. Do not bypass or weaken checks.
22
+ - Do not run unrelated commands; only run commands needed for QA, fixes, and missing-tool installation.
@@ -2,6 +2,7 @@
2
2
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3
3
  "extends": ["config:recommended"],
4
4
  "minimumReleaseAge": "1 day",
5
+ "lockFileMaintenance": {"enabled": true},
5
6
  "packageRules": [
6
7
  {
7
8
  "description": "Automatically merge minor and patch-level updates",
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: Claude Code review
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - main
7
+ types:
8
+ - opened
9
+ - ready_for_review
10
+ paths-ignore:
11
+ - .github/workflows/claude.yml
12
+ permissions:
13
+ contents: read
14
+ jobs:
15
+ claude-code-review:
16
+ if: >
17
+ github.event_name == 'pull_request'
18
+ && (! github.event.pull_request.draft)
19
+ && github.event.pull_request.user.type != 'Bot'
20
+ permissions:
21
+ contents: read
22
+ pull-requests: write
23
+ issues: write
24
+ id-token: write
25
+ actions: read
26
+ uses: dceoy/pr-loop/.github/workflows/claude-code-review.yml@main # zizmor: ignore[unpinned-uses]
27
+ secrets:
28
+ CLAUDE_CODE_OAUTH_TOKEN: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }} # zizmor: ignore[secrets-outside-env]
29
+ GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: mt5cli
3
- Version: 1.7.1
3
+ Version: 1.7.2
4
4
  Summary: Generic MT5 data and execution infrastructure for Python applications
5
5
  Project-URL: Repository, https://github.com/dceoy/mt5cli.git
6
6
  Author-email: dceoy <dceoy@users.noreply.github.com>
@@ -17,7 +17,7 @@ Classifier: Programming Language :: Python :: 3
17
17
  Classifier: Topic :: Office/Business :: Financial :: Investment
18
18
  Requires-Python: <3.15,>=3.11
19
19
  Requires-Dist: pandas>=2.2.2
20
- Requires-Dist: pdmt5>=1.2.0
20
+ Requires-Dist: pdmt5>=1.2.4
21
21
  Requires-Dist: typer>=0.26.0
22
22
  Provides-Extra: otel
23
23
  Requires-Dist: opentelemetry-api>=1.23.0; extra == 'otel'
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mt5cli"
3
- version = "1.7.1"
3
+ version = "1.7.2"
4
4
  description = "Generic MT5 data and execution infrastructure for Python applications"
5
5
  authors = [{name = "dceoy", email = "dceoy@users.noreply.github.com"}]
6
6
  maintainers = [{name = "dceoy", email = "dceoy@users.noreply.github.com"}]
@@ -9,7 +9,7 @@ license-files = ["LICENSE"]
9
9
  readme = "README.md"
10
10
  requires-python = ">= 3.11, < 3.15"
11
11
  dependencies = [
12
- "pdmt5 >= 1.2.0",
12
+ "pdmt5 >= 1.2.4",
13
13
  "pandas >= 2.2.2",
14
14
  "typer >= 0.26.0",
15
15
  ]
@@ -90,6 +90,7 @@ ignore = [
90
90
  "assert", # Use of assert (acceptable in tests)
91
91
  "hardcoded-password-func-arg", # Possible hardcoded password
92
92
  "private-member-access", # Private member accessed
93
+ "shared-clock-mock", # Tests intentionally monkeypatch the process clock
93
94
  ]
94
95
 
95
96
  [tool.ruff.lint.pydocstyle]