odoo-toolkit 4.2.0__tar.gz → 5.0.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 (121) hide show
  1. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/.devcontainer/devcontainer.json +3 -2
  2. odoo_toolkit-5.0.0/.git-blame-ignore-revs +5 -0
  3. odoo_toolkit-5.0.0/.gitattributes +1 -0
  4. odoo_toolkit-5.0.0/.github/workflows/ci.yml +49 -0
  5. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/.github/workflows/images.yml +5 -5
  6. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/.github/workflows/release.yml +2 -2
  7. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/.github/workflows/sync-runbot.yml +1 -1
  8. odoo_toolkit-5.0.0/.gitignore +47 -0
  9. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/PKG-INFO +129 -99
  10. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/README.md +128 -98
  11. odoo_toolkit-5.0.0/codecov.yml +14 -0
  12. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/code.py +14 -6
  13. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/common.py +18 -27
  14. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/dev/common.py +79 -32
  15. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/dev/db.py +27 -10
  16. odoo_toolkit-5.0.0/odoo_toolkit/dev/image_check.py +199 -0
  17. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/dev/images.py +18 -7
  18. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/dev/run.py +33 -13
  19. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/dev/runtime.py +34 -18
  20. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/dev/stop.py +12 -4
  21. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/docker/runbot/Docker18.Dockerfile +1 -1
  22. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/docker/runbot/Docker19.Dockerfile +1 -1
  23. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/docker/runbot/Docker191.Dockerfile +1 -1
  24. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/docker/runbot/Docker194.Dockerfile +1 -1
  25. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/docker/runbot/Docker20.Dockerfile +1 -1
  26. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/docker/runbot/DockerMaster.Dockerfile +2 -2
  27. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/git_cli.py +75 -7
  28. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/main.py +4 -3
  29. odoo_toolkit-5.0.0/odoo_toolkit/multiverse_config/.devcontainer/CLAUDE.md +28 -0
  30. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/multiverse_config/.devcontainer/devcontainer.json +1 -0
  31. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/multiverse_config/.vscode/settings.json +6 -1
  32. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/mv/__init__.py +1 -1
  33. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/mv/cleanup.py +15 -6
  34. odoo_toolkit-5.0.0/odoo_toolkit/mv/clone.py +230 -0
  35. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/mv/config.py +50 -28
  36. odoo_toolkit-5.0.0/odoo_toolkit/mv/configure.py +622 -0
  37. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/mv/link.py +20 -13
  38. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/mv/remotes.py +7 -6
  39. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/mv/repos.py +33 -17
  40. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/mv/reset.py +22 -17
  41. odoo_toolkit-5.0.0/odoo_toolkit/mv/setup.py +538 -0
  42. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/mv/switch.py +17 -13
  43. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/po/common.py +110 -109
  44. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/po/create.py +20 -8
  45. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/po/export.py +136 -96
  46. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/po/update.py +14 -9
  47. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/update_check.py +35 -18
  48. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/wl/authors.py +31 -21
  49. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/wl/common.py +90 -54
  50. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/wl/config.py +71 -171
  51. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/wl/copy.py +40 -72
  52. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/wl/download.py +9 -7
  53. odoo_toolkit-5.0.0/odoo_toolkit/wl/l10n_languages.toml +132 -0
  54. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/wl/update_teams.py +36 -10
  55. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/wl/upload.py +65 -43
  56. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/pyproject.toml +22 -15
  57. odoo_toolkit-5.0.0/scripts/check.py +31 -0
  58. odoo_toolkit-5.0.0/scripts/sync_readme.py +155 -0
  59. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/scripts/sync_runbot.py +3 -3
  60. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/conftest.py +6 -1
  61. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/dev/test_common.py +44 -2
  62. odoo_toolkit-5.0.0/tests/dev/test_image_check.py +204 -0
  63. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/dev/test_runtime.py +17 -5
  64. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/mv/conftest.py +20 -2
  65. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/mv/test_config.py +2 -2
  66. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/mv/test_remotes.py +10 -0
  67. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/mv/test_setup.py +342 -96
  68. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/mv/test_switch_reset.py +3 -0
  69. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/po/test_export.py +20 -6
  70. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/po/test_po_files.py +26 -4
  71. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/test_code.py +11 -4
  72. odoo_toolkit-5.0.0/tests/test_common.py +5 -0
  73. odoo_toolkit-5.0.0/tests/test_http.py +6 -0
  74. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/test_update_check.py +44 -5
  75. odoo_toolkit-5.0.0/tests/wl/conftest.py +14 -0
  76. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/wl/test_authors.py +5 -6
  77. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/wl/test_client.py +18 -48
  78. odoo_toolkit-5.0.0/tests/wl/test_commands.py +205 -0
  79. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/uv.lock +174 -26
  80. odoo_toolkit-4.2.0/.github/workflows/ci.yml +0 -34
  81. odoo_toolkit-4.2.0/.gitignore +0 -165
  82. odoo_toolkit-4.2.0/odoo_toolkit/mv/setup.py +0 -1115
  83. odoo_toolkit-4.2.0/tests/test_http.py +0 -18
  84. odoo_toolkit-4.2.0/tests/wl/test_commands.py +0 -81
  85. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/.devcontainer/Dockerfile +0 -0
  86. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/.github/dependabot.yml +0 -0
  87. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/.github/workflows/sync-odoo-ruff.yml +0 -0
  88. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/.vscode/settings.json +0 -0
  89. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/LICENSE +0 -0
  90. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/images/mailpit.png +0 -0
  91. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/__init__.py +0 -0
  92. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/__main__.py +0 -0
  93. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/dev/__init__.py +0 -0
  94. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/docker/compose.yaml +0 -0
  95. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/docker/dev.Dockerfile +0 -0
  96. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/docker/pgadmin/servers.json +0 -0
  97. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/docker/runbot/Docker17.Dockerfile +0 -0
  98. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/multiverse_config/.vscode/extensions.json +0 -0
  99. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/multiverse_config/.vscode/launch.json +0 -0
  100. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/multiverse_config/.vscode/tasks.json +0 -0
  101. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/multiverse_config/build-constraints.txt +0 -0
  102. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/multiverse_config/compat-requirements.txt +0 -0
  103. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/multiverse_config/requirements.txt +0 -0
  104. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/multiverse_config/ruff-odoo.toml +0 -0
  105. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/po/__init__.py +0 -0
  106. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/po/cldr-common-48.2/LICENSE +0 -0
  107. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/po/cldr-common-48.2/common/dtd/ldmlSupplemental.dtd +0 -0
  108. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/po/cldr-common-48.2/common/supplemental/plurals.xml +0 -0
  109. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/po/cldr.csv +0 -0
  110. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/versions.json +0 -0
  111. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/versions.py +0 -0
  112. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/odoo_toolkit/wl/__init__.py +0 -0
  113. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/scripts/build_images.py +0 -0
  114. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/__init__.py +0 -0
  115. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/dev/__init__.py +0 -0
  116. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/dev/test_images.py +0 -0
  117. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/mv/__init__.py +0 -0
  118. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/po/__init__.py +0 -0
  119. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/test_git_cli.py +0 -0
  120. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/test_versions.py +0 -0
  121. {odoo_toolkit-4.2.0 → odoo_toolkit-5.0.0}/tests/wl/__init__.py +0 -0
@@ -5,12 +5,13 @@
5
5
  },
6
6
  "remoteUser": "vscode",
7
7
  "updateRemoteUserUID": true,
8
- "runArgs": ["--cap-drop=ALL", "--security-opt=no-new-privileges", "--init"],
8
+ "runArgs": ["--name=odoo-toolkit-dev", "--cap-drop=ALL", "--security-opt=no-new-privileges", "--init"],
9
9
  "mounts": [
10
10
  "source=odoo-toolkit-claude,target=/home/vscode/.claude,type=volume",
11
11
  "source=${localWorkspaceFolder}/.devcontainer,target=${containerWorkspaceFolder}/.devcontainer,type=bind,readonly",
12
12
  "source=${localWorkspaceFolder}/.vscode,target=${containerWorkspaceFolder}/.vscode,type=bind,readonly",
13
- "source=${localWorkspaceFolder}/.git/hooks,target=${containerWorkspaceFolder}/.git/hooks,type=bind,readonly"
13
+ "source=${localWorkspaceFolder}/.git/hooks,target=${containerWorkspaceFolder}/.git/hooks,type=bind,readonly",
14
+ "source=${localWorkspaceFolder}/.git/config,target=${containerWorkspaceFolder}/.git/config,type=bind,readonly"
14
15
  ],
15
16
  "containerEnv": {
16
17
  "CLAUDE_CONFIG_DIR": "/home/vscode/.claude",
@@ -0,0 +1,5 @@
1
+ # Formatting-only commits, which `git blame` skips (GitHub does by itself; locally, run
2
+ # `git config blame.ignoreRevsFile .git-blame-ignore-revs` once).
3
+
4
+ # style: format the code with ruff format
5
+ 6f06b7c200a66bb3bf2a9f2c9d21f7a7c4df25fb
@@ -0,0 +1 @@
1
+ * text=auto eol=lf
@@ -0,0 +1,49 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [master]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ lint:
14
+ runs-on: ubuntu-24.04
15
+ steps:
16
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
17
+ - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
18
+ - run: uv run ruff check odoo_toolkit scripts tests
19
+ - run: uv run ruff format --check odoo_toolkit scripts tests
20
+ - run: uv run pyright
21
+ # The options in the README are generated from the commands, so they can't drift apart.
22
+ - run: uv run scripts/sync_readme.py --check
23
+
24
+ test:
25
+ strategy:
26
+ fail-fast: false
27
+ matrix:
28
+ # The oldest supported Python and the newest one Runbot uses, on Linux and macOS.
29
+ python: ["3.12", "3.14"]
30
+ os: [ubuntu-24.04, macos-15]
31
+ runs-on: ${{ matrix.os }}
32
+ env:
33
+ # One run reports the coverage, which is the same on every platform.
34
+ REPORT_COVERAGE: ${{ matrix.os == 'ubuntu-24.04' && matrix.python == '3.14' }}
35
+ steps:
36
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
37
+ - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
38
+ with:
39
+ python-version: ${{ matrix.python }}
40
+ # The coverage report shows which modules lack tests, without failing the build.
41
+ - run: uv run pytest -q --cov --cov-report=term --cov-report=xml
42
+ # Codecov comments the coverage on pull requests, with the change against master and links to the files.
43
+ - if: env.REPORT_COVERAGE == 'true'
44
+ uses: codecov/codecov-action@303a32d7a59b442fa8d48b6a1cc6825c09c847a5 # v7.1.1
45
+ with:
46
+ files: coverage.xml
47
+ token: ${{ secrets.CODECOV_TOKEN }}
48
+ # Codecov being down mustn't fail the build.
49
+ fail_ci_if_error: false
@@ -22,7 +22,7 @@ jobs:
22
22
  images: ${{ steps.images.outputs.images }}
23
23
  steps:
24
24
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
25
- - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
25
+ - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
26
26
  - id: images
27
27
  env:
28
28
  REQUESTED: ${{ inputs.images }}
@@ -44,9 +44,9 @@ jobs:
44
44
  runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
45
45
  steps:
46
46
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
47
- - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
47
+ - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
48
48
  - uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
49
- - uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
49
+ - uses: docker/login-action@81c6f93d4bc991e510b342a00b419b3bb4efc5c6 # v4.7.0
50
50
  with:
51
51
  username: ${{ secrets.DOCKERHUB_USERNAME }}
52
52
  password: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -66,9 +66,9 @@ jobs:
66
66
  image: ${{ fromJSON(needs.plan.outputs.images) }}
67
67
  steps:
68
68
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
69
- - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
69
+ - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
70
70
  - uses: docker/setup-buildx-action@f87e5991a6d7451dcb8d9637bfbc97413f497069 # v4.4.1
71
- - uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f # v4.6.0
71
+ - uses: docker/login-action@81c6f93d4bc991e510b342a00b419b3bb4efc5c6 # v4.7.0
72
72
  with:
73
73
  username: ${{ secrets.DOCKERHUB_USERNAME }}
74
74
  password: ${{ secrets.DOCKERHUB_TOKEN }}
@@ -31,7 +31,7 @@ jobs:
31
31
  echo "Releases are made from master, not $REF." >&2
32
32
  exit 1
33
33
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
34
- - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
34
+ - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
35
35
  - run: uv run pytest -q tests
36
36
  - name: Bump the version, and commit and tag the release
37
37
  id: tag
@@ -69,7 +69,7 @@ jobs:
69
69
  ref: refs/tags/${{ env.TAG }}
70
70
  # The previous tag, to list the commits since then.
71
71
  fetch-depth: 0
72
- - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
72
+ - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
73
73
  - name: Check that the tag is the package version
74
74
  run: |
75
75
  version="v$(uv version --short)"
@@ -15,7 +15,7 @@ jobs:
15
15
  runs-on: ubuntu-24.04
16
16
  steps:
17
17
  - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
18
- - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
18
+ - uses: astral-sh/setup-uv@07a047e608db84b3d8c06cd9a7c7dcc9c355c18e # v10.3.2
19
19
  - run: uv run scripts/sync_runbot.py
20
20
  # Pull requests opened by this workflow don't run the CI, so check the rendered images here.
21
21
  - run: uv run pytest -q tests/dev tests/test_versions.py
@@ -0,0 +1,47 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ .eggs/
8
+ *.egg-info/
9
+ *.egg
10
+
11
+ # Environments and secrets
12
+ .venv/
13
+ venv/
14
+ .env
15
+ .env.*
16
+ !.env.example
17
+
18
+ # Tool caches and reports
19
+ .pytest_cache/
20
+ .ruff_cache/
21
+ .hypothesis/
22
+ .coverage
23
+ .coverage.*
24
+ coverage.xml
25
+ htmlcov/
26
+
27
+ # Editors (.vscode/ is tracked: it holds the settings of this project)
28
+ .idea/
29
+ *.swp
30
+ *.swo
31
+ *~
32
+
33
+ # Operating systems
34
+ .DS_Store
35
+ .AppleDouble
36
+ ._*
37
+ Thumbs.db
38
+ ehthumbs.db
39
+ Desktop.ini
40
+ $RECYCLE.BIN/
41
+ .directory
42
+ .Trash-*
43
+
44
+ # Claude Code
45
+ .claude/settings.local.json
46
+ .claude/.cc-writes
47
+ CLAUDE.local.md