aceiot-models-cli 0.1.0__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 (55) hide show
  1. aceiot_models_cli-0.1.0/.github/workflows/publish.yml +98 -0
  2. aceiot_models_cli-0.1.0/.github/workflows/test.yml +48 -0
  3. aceiot_models_cli-0.1.0/.gitignore +65 -0
  4. aceiot_models_cli-0.1.0/.hive-mind/config.json +17 -0
  5. aceiot_models_cli-0.1.0/.hive-mind/hive.db +0 -0
  6. aceiot_models_cli-0.1.0/.hive-mind/hive.db-shm +0 -0
  7. aceiot_models_cli-0.1.0/.hive-mind/hive.db-wal +0 -0
  8. aceiot_models_cli-0.1.0/.hive-mind/memory.db +0 -0
  9. aceiot_models_cli-0.1.0/.hive-mind/sessions/session-1753211745508-yuylk957g-auto-save-1753211775510.json +81 -0
  10. aceiot_models_cli-0.1.0/.hive-mind/sessions/session-1753218717423-518j1u7mc-auto-save-1753218747424.json +81 -0
  11. aceiot_models_cli-0.1.0/.hive-mind/sessions/session-1753226483889-l6t8sliyv-auto-save-1753226513890.json +81 -0
  12. aceiot_models_cli-0.1.0/.hive-mind/sessions/session-1753244606046-hwadu65zx-auto-save-1753244636047.json +81 -0
  13. aceiot_models_cli-0.1.0/.pre-commit-config.yaml +27 -0
  14. aceiot_models_cli-0.1.0/.python-version +1 -0
  15. aceiot_models_cli-0.1.0/EXECUTIVE_SUMMARY.md +151 -0
  16. aceiot_models_cli-0.1.0/IMPLEMENTATION_SUMMARY.md +81 -0
  17. aceiot_models_cli-0.1.0/IMPLEMENTATION_UPDATE_SUMMARY.md +73 -0
  18. aceiot_models_cli-0.1.0/LICENSE +21 -0
  19. aceiot_models_cli-0.1.0/MANIFEST.in +12 -0
  20. aceiot_models_cli-0.1.0/MISSING_FEATURES.md +53 -0
  21. aceiot_models_cli-0.1.0/NEW_USE_CASES.md +137 -0
  22. aceiot_models_cli-0.1.0/PKG-INFO +0 -0
  23. aceiot_models_cli-0.1.0/PYPI_SETUP.md +120 -0
  24. aceiot_models_cli-0.1.0/README.md +0 -0
  25. aceiot_models_cli-0.1.0/REPL_IMPLEMENTATION_SPECIFICATION.md +304 -0
  26. aceiot_models_cli-0.1.0/ROADMAP.md +172 -0
  27. aceiot_models_cli-0.1.0/TEST_PLAN.md +245 -0
  28. aceiot_models_cli-0.1.0/UX_SPECIFICATION_REPL_MODE.md +802 -0
  29. aceiot_models_cli-0.1.0/ace-api-kit +1 -0
  30. aceiot_models_cli-0.1.0/example-config.yaml +3 -0
  31. aceiot_models_cli-0.1.0/pyproject.toml +93 -0
  32. aceiot_models_cli-0.1.0/src/aceiot_models_cli/__init__.py +7 -0
  33. aceiot_models_cli-0.1.0/src/aceiot_models_cli/api_client.py +453 -0
  34. aceiot_models_cli-0.1.0/src/aceiot_models_cli/cli.py +684 -0
  35. aceiot_models_cli-0.1.0/src/aceiot_models_cli/config.py +140 -0
  36. aceiot_models_cli-0.1.0/src/aceiot_models_cli/formatters.py +108 -0
  37. aceiot_models_cli-0.1.0/src/aceiot_models_cli/repl/__init__.py +5 -0
  38. aceiot_models_cli-0.1.0/src/aceiot_models_cli/repl/context.py +124 -0
  39. aceiot_models_cli-0.1.0/src/aceiot_models_cli/repl/core.py +98 -0
  40. aceiot_models_cli-0.1.0/src/aceiot_models_cli/repl/executor.py +363 -0
  41. aceiot_models_cli-0.1.0/src/aceiot_models_cli/repl/parser.py +165 -0
  42. aceiot_models_cli-0.1.0/src/aceiot_models_cli/test_serializers.py +601 -0
  43. aceiot_models_cli-0.1.0/src/aceiot_models_cli/utils/__init__.py +21 -0
  44. aceiot_models_cli-0.1.0/src/aceiot_models_cli/utils/api_helpers.py +173 -0
  45. aceiot_models_cli-0.1.0/src/aceiot_models_cli/utils/pagination.py +65 -0
  46. aceiot_models_cli-0.1.0/tests/__init__.py +1 -0
  47. aceiot_models_cli-0.1.0/tests/conftest.py +49 -0
  48. aceiot_models_cli-0.1.0/tests/test_api_client.py +217 -0
  49. aceiot_models_cli-0.1.0/tests/test_cli.py +87 -0
  50. aceiot_models_cli-0.1.0/tests/test_client_commands.py +158 -0
  51. aceiot_models_cli-0.1.0/tests/test_config.py +252 -0
  52. aceiot_models_cli-0.1.0/tests/test_point_commands.py +202 -0
  53. aceiot_models_cli-0.1.0/tests/test_repl.py +291 -0
  54. aceiot_models_cli-0.1.0/tests/test_site_commands.py +152 -0
  55. aceiot_models_cli-0.1.0/tests/test_utils.py +247 -0
@@ -0,0 +1,98 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - 'v*'
7
+ workflow_dispatch:
8
+ inputs:
9
+ publish_to_testpypi:
10
+ description: 'Publish to TestPyPI'
11
+ required: true
12
+ default: true
13
+ type: boolean
14
+ publish_to_pypi:
15
+ description: 'Publish to PyPI'
16
+ required: true
17
+ default: false
18
+ type: boolean
19
+
20
+ jobs:
21
+ build:
22
+ runs-on: ubuntu-latest
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+
26
+ - name: Set up Python
27
+ uses: actions/setup-python@v5
28
+ with:
29
+ python-version: '3.13'
30
+
31
+ - name: Install uv
32
+ uses: astral-sh/setup-uv@v5.1.0
33
+ with:
34
+ enable-cache: true
35
+
36
+ - name: Install dependencies
37
+ run: |
38
+ uv pip install --system build twine
39
+
40
+ - name: Build package
41
+ run: python -m build
42
+
43
+ - name: Check distribution
44
+ run: twine check dist/*
45
+
46
+ - name: Upload distributions
47
+ uses: actions/upload-artifact@v4
48
+ with:
49
+ name: python-package-distributions
50
+ path: dist/
51
+
52
+ publish-to-testpypi:
53
+ name: Publish to TestPyPI
54
+ needs: build
55
+ runs-on: ubuntu-latest
56
+ if: github.event_name == 'workflow_dispatch' && inputs.publish_to_testpypi == true
57
+
58
+ environment:
59
+ name: testpypi
60
+ url: https://test.pypi.org/p/aceiot-models-cli
61
+
62
+ permissions:
63
+ id-token: write # IMPORTANT: mandatory for trusted publishing
64
+
65
+ steps:
66
+ - name: Download distributions
67
+ uses: actions/download-artifact@v4
68
+ with:
69
+ name: python-package-distributions
70
+ path: dist/
71
+
72
+ - name: Publish to TestPyPI
73
+ uses: pypa/gh-action-pypi-publish@release/v1
74
+ with:
75
+ repository-url: https://test.pypi.org/legacy/
76
+
77
+ publish-to-pypi:
78
+ name: Publish to PyPI
79
+ needs: build
80
+ runs-on: ubuntu-latest
81
+ if: (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/')) || (github.event_name == 'workflow_dispatch' && inputs.publish_to_pypi == true)
82
+
83
+ environment:
84
+ name: pypi
85
+ url: https://pypi.org/p/aceiot-models-cli
86
+
87
+ permissions:
88
+ id-token: write # IMPORTANT: mandatory for trusted publishing
89
+
90
+ steps:
91
+ - name: Download distributions
92
+ uses: actions/download-artifact@v4
93
+ with:
94
+ name: python-package-distributions
95
+ path: dist/
96
+
97
+ - name: Publish to PyPI
98
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,48 @@
1
+ name: Test
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ['3.13']
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python ${{ matrix.python-version }}
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: ${{ matrix.python-version }}
23
+
24
+ - name: Install uv
25
+ uses: astral-sh/setup-uv@v5.1.0
26
+ with:
27
+ enable-cache: true
28
+
29
+ - name: Install dependencies
30
+ run: |
31
+ uv pip install --system -e ".[dev]"
32
+
33
+ - name: Run linting
34
+ run: |
35
+ ruff check src tests
36
+ ruff format --check src tests
37
+
38
+ - name: Run tests with coverage
39
+ run: |
40
+ pytest tests/ -v --cov=aceiot_models_cli --cov-report=term-missing --cov-report=xml
41
+
42
+ - name: Upload coverage to Codecov
43
+ uses: codecov/codecov-action@v4
44
+ with:
45
+ file: ./coverage.xml
46
+ flags: unittests
47
+ name: codecov-umbrella
48
+ fail_ci_if_error: false
@@ -0,0 +1,65 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ *.py[cod]
5
+ *$py.class
6
+ build/
7
+ dist/
8
+ wheels/
9
+ *.egg-info
10
+ .eggs/
11
+ *.egg
12
+
13
+ # Virtual environments
14
+ .venv
15
+ venv/
16
+ env/
17
+ ENV/
18
+
19
+ # IDE and editors
20
+ .vscode/
21
+ .idea/
22
+ *.swp
23
+ *.swo
24
+ *~
25
+
26
+ # Testing and coverage
27
+ .pytest_cache/
28
+ .coverage
29
+ .coverage.*
30
+ htmlcov/
31
+ .tox/
32
+ *.cover
33
+
34
+ # Configuration files with sensitive data
35
+ config.yaml
36
+ config.yml
37
+ .config/
38
+
39
+ # OS files
40
+ .DS_Store
41
+ Thumbs.db
42
+
43
+ # uv
44
+ .uv/
45
+ uv.lock
46
+
47
+ # ruff
48
+ .ruff_cache/
49
+
50
+ # mypy
51
+ .mypy_cache/
52
+ .dmypy.json
53
+ dmypy.json
54
+
55
+ # Environments
56
+ .env
57
+ .env.local
58
+ .env.*.local
59
+
60
+ # Logs
61
+ *.log
62
+
63
+ # Temporary files
64
+ *.tmp
65
+ *.bak
@@ -0,0 +1,17 @@
1
+ {
2
+ "version": "2.0.0",
3
+ "initialized": "2025-07-22T19:06:50.328Z",
4
+ "defaults": {
5
+ "queenType": "strategic",
6
+ "maxWorkers": 8,
7
+ "consensusAlgorithm": "majority",
8
+ "memorySize": 100,
9
+ "autoScale": true,
10
+ "encryption": false
11
+ },
12
+ "mcpTools": {
13
+ "enabled": true,
14
+ "parallel": true,
15
+ "timeout": 60000
16
+ }
17
+ }
@@ -0,0 +1,81 @@
1
+ {
2
+ "sessionId": "session-1753211745508-yuylk957g",
3
+ "checkpointId": "checkpoint-1753211775510-5ko9qfsjo",
4
+ "checkpointName": "auto-save-1753211775510",
5
+ "timestamp": "2025-07-22T19:16:15.512Z",
6
+ "data": {
7
+ "timestamp": "2025-07-22T19:16:15.510Z",
8
+ "changeCount": 5,
9
+ "changesByType": {
10
+ "swarm_created": [
11
+ {
12
+ "type": "swarm_created",
13
+ "data": {
14
+ "swarmId": "swarm-1753211745507-tvcxpfu8l",
15
+ "swarmName": "hive-1753211745504",
16
+ "objective": "create a cli that uses the installed aceiot-models to interact with the api at flightdeck.aceiot.cloud/api/ and include test all the serdes in the codebase",
17
+ "workerCount": 8
18
+ },
19
+ "timestamp": "2025-07-22T19:15:45.509Z"
20
+ }
21
+ ],
22
+ "agent_activity": [
23
+ {
24
+ "type": "agent_activity",
25
+ "data": {
26
+ "agentId": "worker-swarm-1753211745507-tvcxpfu8l-0",
27
+ "activity": "spawned",
28
+ "data": {
29
+ "type": "researcher",
30
+ "name": "Researcher Worker 1"
31
+ }
32
+ },
33
+ "timestamp": "2025-07-22T19:15:45.510Z"
34
+ },
35
+ {
36
+ "type": "agent_activity",
37
+ "data": {
38
+ "agentId": "worker-swarm-1753211745507-tvcxpfu8l-1",
39
+ "activity": "spawned",
40
+ "data": {
41
+ "type": "coder",
42
+ "name": "Coder Worker 2"
43
+ }
44
+ },
45
+ "timestamp": "2025-07-22T19:15:45.511Z"
46
+ },
47
+ {
48
+ "type": "agent_activity",
49
+ "data": {
50
+ "agentId": "worker-swarm-1753211745507-tvcxpfu8l-2",
51
+ "activity": "spawned",
52
+ "data": {
53
+ "type": "analyst",
54
+ "name": "Analyst Worker 3"
55
+ }
56
+ },
57
+ "timestamp": "2025-07-22T19:15:45.511Z"
58
+ },
59
+ {
60
+ "type": "agent_activity",
61
+ "data": {
62
+ "agentId": "worker-swarm-1753211745507-tvcxpfu8l-3",
63
+ "activity": "spawned",
64
+ "data": {
65
+ "type": "tester",
66
+ "name": "Tester Worker 4"
67
+ }
68
+ },
69
+ "timestamp": "2025-07-22T19:15:45.511Z"
70
+ }
71
+ ]
72
+ },
73
+ "statistics": {
74
+ "tasksProcessed": 0,
75
+ "tasksCompleted": 0,
76
+ "memoryUpdates": 0,
77
+ "agentActivities": 4,
78
+ "consensusDecisions": 0
79
+ }
80
+ }
81
+ }
@@ -0,0 +1,81 @@
1
+ {
2
+ "sessionId": "session-1753218717423-518j1u7mc",
3
+ "checkpointId": "checkpoint-1753218747424-fg1f6zi7o",
4
+ "checkpointName": "auto-save-1753218747424",
5
+ "timestamp": "2025-07-22T21:12:27.425Z",
6
+ "data": {
7
+ "timestamp": "2025-07-22T21:12:27.424Z",
8
+ "changeCount": 5,
9
+ "changesByType": {
10
+ "swarm_created": [
11
+ {
12
+ "type": "swarm_created",
13
+ "data": {
14
+ "swarmId": "swarm-1753218717422-d6hj5f1w1",
15
+ "swarmName": "hive-1753218717418",
16
+ "objective": "review the functionality in the ace-api-kit package and ensure our aceiot-models-cli package includes all of the functionality present in ace-api-kit, if there are any new use-cases implied by the ace-api-kit codebase, ensure we have testing in our project that ensures we're covering all use cases, when complete, create a roadmap for future functionality based on industry best practices and the sector we're working in, smart buildings",
17
+ "workerCount": 8
18
+ },
19
+ "timestamp": "2025-07-22T21:11:57.423Z"
20
+ }
21
+ ],
22
+ "agent_activity": [
23
+ {
24
+ "type": "agent_activity",
25
+ "data": {
26
+ "agentId": "worker-swarm-1753218717422-d6hj5f1w1-0",
27
+ "activity": "spawned",
28
+ "data": {
29
+ "type": "researcher",
30
+ "name": "Researcher Worker 1"
31
+ }
32
+ },
33
+ "timestamp": "2025-07-22T21:11:57.423Z"
34
+ },
35
+ {
36
+ "type": "agent_activity",
37
+ "data": {
38
+ "agentId": "worker-swarm-1753218717422-d6hj5f1w1-1",
39
+ "activity": "spawned",
40
+ "data": {
41
+ "type": "coder",
42
+ "name": "Coder Worker 2"
43
+ }
44
+ },
45
+ "timestamp": "2025-07-22T21:11:57.423Z"
46
+ },
47
+ {
48
+ "type": "agent_activity",
49
+ "data": {
50
+ "agentId": "worker-swarm-1753218717422-d6hj5f1w1-2",
51
+ "activity": "spawned",
52
+ "data": {
53
+ "type": "analyst",
54
+ "name": "Analyst Worker 3"
55
+ }
56
+ },
57
+ "timestamp": "2025-07-22T21:11:57.423Z"
58
+ },
59
+ {
60
+ "type": "agent_activity",
61
+ "data": {
62
+ "agentId": "worker-swarm-1753218717422-d6hj5f1w1-3",
63
+ "activity": "spawned",
64
+ "data": {
65
+ "type": "tester",
66
+ "name": "Tester Worker 4"
67
+ }
68
+ },
69
+ "timestamp": "2025-07-22T21:11:57.423Z"
70
+ }
71
+ ]
72
+ },
73
+ "statistics": {
74
+ "tasksProcessed": 0,
75
+ "tasksCompleted": 0,
76
+ "memoryUpdates": 0,
77
+ "agentActivities": 4,
78
+ "consensusDecisions": 0
79
+ }
80
+ }
81
+ }
@@ -0,0 +1,81 @@
1
+ {
2
+ "sessionId": "session-1753226483889-l6t8sliyv",
3
+ "checkpointId": "checkpoint-1753226513890-ar7d15hsw",
4
+ "checkpointName": "auto-save-1753226513890",
5
+ "timestamp": "2025-07-22T23:21:53.890Z",
6
+ "data": {
7
+ "timestamp": "2025-07-22T23:21:53.890Z",
8
+ "changeCount": 5,
9
+ "changesByType": {
10
+ "swarm_created": [
11
+ {
12
+ "type": "swarm_created",
13
+ "data": {
14
+ "swarmId": "swarm-1753226483889-vthkfmnh5",
15
+ "swarmName": "hive-1753226483885",
16
+ "objective": "Let's add a new capability to the aceiot-models-cli, a repl mode, this repl mode will simplify interacting with sites and gateways by enabling you to enter the context of a site, and not have to manually enter the site_name for each command, we'll provide similar functionality as appropriate for the other models as well, think through the optimal user experience and document it so we can track our progress implementing what we're looking for, start of by checking the current version into github so we don't lose our progress if something fails",
17
+ "workerCount": 8
18
+ },
19
+ "timestamp": "2025-07-22T23:21:23.889Z"
20
+ }
21
+ ],
22
+ "agent_activity": [
23
+ {
24
+ "type": "agent_activity",
25
+ "data": {
26
+ "agentId": "worker-swarm-1753226483889-vthkfmnh5-0",
27
+ "activity": "spawned",
28
+ "data": {
29
+ "type": "researcher",
30
+ "name": "Researcher Worker 1"
31
+ }
32
+ },
33
+ "timestamp": "2025-07-22T23:21:23.890Z"
34
+ },
35
+ {
36
+ "type": "agent_activity",
37
+ "data": {
38
+ "agentId": "worker-swarm-1753226483889-vthkfmnh5-1",
39
+ "activity": "spawned",
40
+ "data": {
41
+ "type": "coder",
42
+ "name": "Coder Worker 2"
43
+ }
44
+ },
45
+ "timestamp": "2025-07-22T23:21:23.890Z"
46
+ },
47
+ {
48
+ "type": "agent_activity",
49
+ "data": {
50
+ "agentId": "worker-swarm-1753226483889-vthkfmnh5-2",
51
+ "activity": "spawned",
52
+ "data": {
53
+ "type": "analyst",
54
+ "name": "Analyst Worker 3"
55
+ }
56
+ },
57
+ "timestamp": "2025-07-22T23:21:23.890Z"
58
+ },
59
+ {
60
+ "type": "agent_activity",
61
+ "data": {
62
+ "agentId": "worker-swarm-1753226483889-vthkfmnh5-3",
63
+ "activity": "spawned",
64
+ "data": {
65
+ "type": "tester",
66
+ "name": "Tester Worker 4"
67
+ }
68
+ },
69
+ "timestamp": "2025-07-22T23:21:23.890Z"
70
+ }
71
+ ]
72
+ },
73
+ "statistics": {
74
+ "tasksProcessed": 0,
75
+ "tasksCompleted": 0,
76
+ "memoryUpdates": 0,
77
+ "agentActivities": 4,
78
+ "consensusDecisions": 0
79
+ }
80
+ }
81
+ }
@@ -0,0 +1,81 @@
1
+ {
2
+ "sessionId": "session-1753244606046-hwadu65zx",
3
+ "checkpointId": "checkpoint-1753244636047-236eqvl9y",
4
+ "checkpointName": "auto-save-1753244636047",
5
+ "timestamp": "2025-07-23T04:23:56.049Z",
6
+ "data": {
7
+ "timestamp": "2025-07-23T04:23:56.047Z",
8
+ "changeCount": 5,
9
+ "changesByType": {
10
+ "swarm_created": [
11
+ {
12
+ "type": "swarm_created",
13
+ "data": {
14
+ "swarmId": "swarm-1753244606046-80oa9sdcm",
15
+ "swarmName": "hive-1753244606041",
16
+ "objective": "Let's make the final preparations for publishing the package to pypi, we'll use the openid connect workflow with github actions, and test with test.pypi.org before publishing to the production environment, I've already published v0.1.1 of aceiot-models to the index, so we should change our requirments to reference it, and test that it's resolved correctly, be sure to update the readme and make it clear and understandable. The author will be Andrew Rodgers andrew@aceiotsolutions.com and the repo details can be read from the local repos origin remote",
17
+ "workerCount": 8
18
+ },
19
+ "timestamp": "2025-07-23T04:23:26.046Z"
20
+ }
21
+ ],
22
+ "agent_activity": [
23
+ {
24
+ "type": "agent_activity",
25
+ "data": {
26
+ "agentId": "worker-swarm-1753244606046-80oa9sdcm-0",
27
+ "activity": "spawned",
28
+ "data": {
29
+ "type": "researcher",
30
+ "name": "Researcher Worker 1"
31
+ }
32
+ },
33
+ "timestamp": "2025-07-23T04:23:26.047Z"
34
+ },
35
+ {
36
+ "type": "agent_activity",
37
+ "data": {
38
+ "agentId": "worker-swarm-1753244606046-80oa9sdcm-1",
39
+ "activity": "spawned",
40
+ "data": {
41
+ "type": "coder",
42
+ "name": "Coder Worker 2"
43
+ }
44
+ },
45
+ "timestamp": "2025-07-23T04:23:26.047Z"
46
+ },
47
+ {
48
+ "type": "agent_activity",
49
+ "data": {
50
+ "agentId": "worker-swarm-1753244606046-80oa9sdcm-2",
51
+ "activity": "spawned",
52
+ "data": {
53
+ "type": "analyst",
54
+ "name": "Analyst Worker 3"
55
+ }
56
+ },
57
+ "timestamp": "2025-07-23T04:23:26.047Z"
58
+ },
59
+ {
60
+ "type": "agent_activity",
61
+ "data": {
62
+ "agentId": "worker-swarm-1753244606046-80oa9sdcm-3",
63
+ "activity": "spawned",
64
+ "data": {
65
+ "type": "tester",
66
+ "name": "Tester Worker 4"
67
+ }
68
+ },
69
+ "timestamp": "2025-07-23T04:23:26.047Z"
70
+ }
71
+ ]
72
+ },
73
+ "statistics": {
74
+ "tasksProcessed": 0,
75
+ "tasksCompleted": 0,
76
+ "memoryUpdates": 0,
77
+ "agentActivities": 4,
78
+ "consensusDecisions": 0
79
+ }
80
+ }
81
+ }
@@ -0,0 +1,27 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v4.6.0
4
+ hooks:
5
+ - id: trailing-whitespace
6
+ - id: end-of-file-fixer
7
+ - id: check-yaml
8
+ - id: check-added-large-files
9
+ - id: check-json
10
+ - id: check-merge-conflict
11
+ - id: check-toml
12
+ - id: debug-statements
13
+ - id: mixed-line-ending
14
+
15
+ - repo: https://github.com/astral-sh/ruff-pre-commit
16
+ rev: v0.5.0
17
+ hooks:
18
+ - id: ruff
19
+ args: [--fix]
20
+ - id: ruff-format
21
+
22
+ - repo: https://github.com/pre-commit/mirrors-mypy
23
+ rev: v1.10.0
24
+ hooks:
25
+ - id: mypy
26
+ additional_dependencies: [types-requests, types-pyyaml]
27
+ exclude: ^tests/
@@ -0,0 +1 @@
1
+ 3.13