ai-dev-browser 0.5.3__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 (180) hide show
  1. ai_dev_browser-0.5.3/.github/workflows/ci.yml +47 -0
  2. ai_dev_browser-0.5.3/.github/workflows/publish.yml +59 -0
  3. ai_dev_browser-0.5.3/.gitignore +51 -0
  4. ai_dev_browser-0.5.3/.gitmodules +3 -0
  5. ai_dev_browser-0.5.3/.pre-commit-config.yaml +48 -0
  6. ai_dev_browser-0.5.3/.secrets.baseline +663 -0
  7. ai_dev_browser-0.5.3/LICENSE +25 -0
  8. ai_dev_browser-0.5.3/PKG-INFO +177 -0
  9. ai_dev_browser-0.5.3/README.md +142 -0
  10. ai_dev_browser-0.5.3/ai_dev_browser/__init__.py +110 -0
  11. ai_dev_browser-0.5.3/ai_dev_browser/_cli.py +428 -0
  12. ai_dev_browser-0.5.3/ai_dev_browser/_version.py +13 -0
  13. ai_dev_browser-0.5.3/ai_dev_browser/cdp/__init__.py +6 -0
  14. ai_dev_browser-0.5.3/ai_dev_browser/cdp/accessibility.py +668 -0
  15. ai_dev_browser-0.5.3/ai_dev_browser/cdp/animation.py +494 -0
  16. ai_dev_browser-0.5.3/ai_dev_browser/cdp/audits.py +1990 -0
  17. ai_dev_browser-0.5.3/ai_dev_browser/cdp/autofill.py +292 -0
  18. ai_dev_browser-0.5.3/ai_dev_browser/cdp/background_service.py +215 -0
  19. ai_dev_browser-0.5.3/ai_dev_browser/cdp/bluetooth_emulation.py +626 -0
  20. ai_dev_browser-0.5.3/ai_dev_browser/cdp/browser.py +821 -0
  21. ai_dev_browser-0.5.3/ai_dev_browser/cdp/cache_storage.py +311 -0
  22. ai_dev_browser-0.5.3/ai_dev_browser/cdp/cast.py +172 -0
  23. ai_dev_browser-0.5.3/ai_dev_browser/cdp/console.py +107 -0
  24. ai_dev_browser-0.5.3/ai_dev_browser/cdp/crash_report_context.py +55 -0
  25. ai_dev_browser-0.5.3/ai_dev_browser/cdp/css.py +2710 -0
  26. ai_dev_browser-0.5.3/ai_dev_browser/cdp/debugger.py +1405 -0
  27. ai_dev_browser-0.5.3/ai_dev_browser/cdp/device_access.py +141 -0
  28. ai_dev_browser-0.5.3/ai_dev_browser/cdp/device_orientation.py +45 -0
  29. ai_dev_browser-0.5.3/ai_dev_browser/cdp/dom.py +2257 -0
  30. ai_dev_browser-0.5.3/ai_dev_browser/cdp/dom_debugger.py +321 -0
  31. ai_dev_browser-0.5.3/ai_dev_browser/cdp/dom_snapshot.py +876 -0
  32. ai_dev_browser-0.5.3/ai_dev_browser/cdp/dom_storage.py +222 -0
  33. ai_dev_browser-0.5.3/ai_dev_browser/cdp/emulation.py +1779 -0
  34. ai_dev_browser-0.5.3/ai_dev_browser/cdp/event_breakpoints.py +56 -0
  35. ai_dev_browser-0.5.3/ai_dev_browser/cdp/extensions.py +246 -0
  36. ai_dev_browser-0.5.3/ai_dev_browser/cdp/fed_cm.py +283 -0
  37. ai_dev_browser-0.5.3/ai_dev_browser/cdp/fetch.py +507 -0
  38. ai_dev_browser-0.5.3/ai_dev_browser/cdp/file_system.py +115 -0
  39. ai_dev_browser-0.5.3/ai_dev_browser/cdp/headless_experimental.py +115 -0
  40. ai_dev_browser-0.5.3/ai_dev_browser/cdp/heap_profiler.py +401 -0
  41. ai_dev_browser-0.5.3/ai_dev_browser/cdp/indexed_db.py +528 -0
  42. ai_dev_browser-0.5.3/ai_dev_browser/cdp/input_.py +701 -0
  43. ai_dev_browser-0.5.3/ai_dev_browser/cdp/inspector.py +95 -0
  44. ai_dev_browser-0.5.3/ai_dev_browser/cdp/io.py +101 -0
  45. ai_dev_browser-0.5.3/ai_dev_browser/cdp/layer_tree.py +464 -0
  46. ai_dev_browser-0.5.3/ai_dev_browser/cdp/log.py +190 -0
  47. ai_dev_browser-0.5.3/ai_dev_browser/cdp/media.py +313 -0
  48. ai_dev_browser-0.5.3/ai_dev_browser/cdp/memory.py +305 -0
  49. ai_dev_browser-0.5.3/ai_dev_browser/cdp/network.py +5317 -0
  50. ai_dev_browser-0.5.3/ai_dev_browser/cdp/overlay.py +1468 -0
  51. ai_dev_browser-0.5.3/ai_dev_browser/cdp/page.py +3970 -0
  52. ai_dev_browser-0.5.3/ai_dev_browser/cdp/performance.py +124 -0
  53. ai_dev_browser-0.5.3/ai_dev_browser/cdp/performance_timeline.py +200 -0
  54. ai_dev_browser-0.5.3/ai_dev_browser/cdp/preload.py +575 -0
  55. ai_dev_browser-0.5.3/ai_dev_browser/cdp/profiler.py +420 -0
  56. ai_dev_browser-0.5.3/ai_dev_browser/cdp/pwa.py +278 -0
  57. ai_dev_browser-0.5.3/ai_dev_browser/cdp/py.typed +0 -0
  58. ai_dev_browser-0.5.3/ai_dev_browser/cdp/runtime.py +1589 -0
  59. ai_dev_browser-0.5.3/ai_dev_browser/cdp/schema.py +50 -0
  60. ai_dev_browser-0.5.3/ai_dev_browser/cdp/security.py +518 -0
  61. ai_dev_browser-0.5.3/ai_dev_browser/cdp/service_worker.py +401 -0
  62. ai_dev_browser-0.5.3/ai_dev_browser/cdp/smart_card_emulation.py +891 -0
  63. ai_dev_browser-0.5.3/ai_dev_browser/cdp/storage.py +1573 -0
  64. ai_dev_browser-0.5.3/ai_dev_browser/cdp/system_info.py +327 -0
  65. ai_dev_browser-0.5.3/ai_dev_browser/cdp/target.py +822 -0
  66. ai_dev_browser-0.5.3/ai_dev_browser/cdp/tethering.py +65 -0
  67. ai_dev_browser-0.5.3/ai_dev_browser/cdp/tracing.py +377 -0
  68. ai_dev_browser-0.5.3/ai_dev_browser/cdp/util.py +17 -0
  69. ai_dev_browser-0.5.3/ai_dev_browser/cdp/web_audio.py +606 -0
  70. ai_dev_browser-0.5.3/ai_dev_browser/cdp/web_authn.py +598 -0
  71. ai_dev_browser-0.5.3/ai_dev_browser/cdp/web_mcp.py +219 -0
  72. ai_dev_browser-0.5.3/ai_dev_browser/core/__init__.py +218 -0
  73. ai_dev_browser-0.5.3/ai_dev_browser/core/_case.py +38 -0
  74. ai_dev_browser-0.5.3/ai_dev_browser/core/_cf_template.py +84 -0
  75. ai_dev_browser-0.5.3/ai_dev_browser/core/_element.py +431 -0
  76. ai_dev_browser-0.5.3/ai_dev_browser/core/_tab.py +817 -0
  77. ai_dev_browser-0.5.3/ai_dev_browser/core/_transport.py +362 -0
  78. ai_dev_browser-0.5.3/ai_dev_browser/core/ax.py +605 -0
  79. ai_dev_browser-0.5.3/ai_dev_browser/core/browser.py +323 -0
  80. ai_dev_browser-0.5.3/ai_dev_browser/core/cdp.py +66 -0
  81. ai_dev_browser-0.5.3/ai_dev_browser/core/chrome.py +253 -0
  82. ai_dev_browser-0.5.3/ai_dev_browser/core/cloudflare.py +77 -0
  83. ai_dev_browser-0.5.3/ai_dev_browser/core/config.py +95 -0
  84. ai_dev_browser-0.5.3/ai_dev_browser/core/connection.py +403 -0
  85. ai_dev_browser-0.5.3/ai_dev_browser/core/cookies.py +103 -0
  86. ai_dev_browser-0.5.3/ai_dev_browser/core/dialog.py +165 -0
  87. ai_dev_browser-0.5.3/ai_dev_browser/core/download.py +38 -0
  88. ai_dev_browser-0.5.3/ai_dev_browser/core/elements.py +913 -0
  89. ai_dev_browser-0.5.3/ai_dev_browser/core/human.py +612 -0
  90. ai_dev_browser-0.5.3/ai_dev_browser/core/login.py +122 -0
  91. ai_dev_browser-0.5.3/ai_dev_browser/core/mouse.py +140 -0
  92. ai_dev_browser-0.5.3/ai_dev_browser/core/navigation.py +225 -0
  93. ai_dev_browser-0.5.3/ai_dev_browser/core/overlays.py +148 -0
  94. ai_dev_browser-0.5.3/ai_dev_browser/core/page.py +302 -0
  95. ai_dev_browser-0.5.3/ai_dev_browser/core/port.py +465 -0
  96. ai_dev_browser-0.5.3/ai_dev_browser/core/process.py +114 -0
  97. ai_dev_browser-0.5.3/ai_dev_browser/core/snapshot.py +425 -0
  98. ai_dev_browser-0.5.3/ai_dev_browser/core/storage.py +50 -0
  99. ai_dev_browser-0.5.3/ai_dev_browser/core/tabs.py +125 -0
  100. ai_dev_browser-0.5.3/ai_dev_browser/core/text_match.py +217 -0
  101. ai_dev_browser-0.5.3/ai_dev_browser/core/window.py +84 -0
  102. ai_dev_browser-0.5.3/ai_dev_browser/pool/__init__.py +34 -0
  103. ai_dev_browser-0.5.3/ai_dev_browser/pool/job.py +140 -0
  104. ai_dev_browser-0.5.3/ai_dev_browser/pool/persistence.py +154 -0
  105. ai_dev_browser-0.5.3/ai_dev_browser/pool/pool.py +873 -0
  106. ai_dev_browser-0.5.3/ai_dev_browser/pool/worker.py +171 -0
  107. ai_dev_browser-0.5.3/ai_dev_browser/profile.py +107 -0
  108. ai_dev_browser-0.5.3/ai_dev_browser/py.typed +0 -0
  109. ai_dev_browser-0.5.3/ai_dev_browser/tools/__init__.py +9 -0
  110. ai_dev_browser-0.5.3/ai_dev_browser/tools/_generate.py +209 -0
  111. ai_dev_browser-0.5.3/ai_dev_browser/tools/browser_list.py +14 -0
  112. ai_dev_browser-0.5.3/ai_dev_browser/tools/browser_start.py +14 -0
  113. ai_dev_browser-0.5.3/ai_dev_browser/tools/browser_stop.py +14 -0
  114. ai_dev_browser-0.5.3/ai_dev_browser/tools/cdp_send.py +14 -0
  115. ai_dev_browser-0.5.3/ai_dev_browser/tools/click_by_html_id.py +14 -0
  116. ai_dev_browser-0.5.3/ai_dev_browser/tools/click_by_ref.py +14 -0
  117. ai_dev_browser-0.5.3/ai_dev_browser/tools/click_by_text.py +14 -0
  118. ai_dev_browser-0.5.3/ai_dev_browser/tools/click_by_xpath.py +14 -0
  119. ai_dev_browser-0.5.3/ai_dev_browser/tools/cloudflare_verify.py +14 -0
  120. ai_dev_browser-0.5.3/ai_dev_browser/tools/cookies_list.py +14 -0
  121. ai_dev_browser-0.5.3/ai_dev_browser/tools/cookies_load.py +14 -0
  122. ai_dev_browser-0.5.3/ai_dev_browser/tools/cookies_save.py +14 -0
  123. ai_dev_browser-0.5.3/ai_dev_browser/tools/dialog_respond.py +14 -0
  124. ai_dev_browser-0.5.3/ai_dev_browser/tools/download.py +14 -0
  125. ai_dev_browser-0.5.3/ai_dev_browser/tools/drag_by_ref.py +14 -0
  126. ai_dev_browser-0.5.3/ai_dev_browser/tools/find_by_html_id.py +14 -0
  127. ai_dev_browser-0.5.3/ai_dev_browser/tools/find_by_xpath.py +14 -0
  128. ai_dev_browser-0.5.3/ai_dev_browser/tools/focus_by_ref.py +14 -0
  129. ai_dev_browser-0.5.3/ai_dev_browser/tools/highlight_by_ref.py +14 -0
  130. ai_dev_browser-0.5.3/ai_dev_browser/tools/hover_by_ref.py +14 -0
  131. ai_dev_browser-0.5.3/ai_dev_browser/tools/html_by_ref.py +14 -0
  132. ai_dev_browser-0.5.3/ai_dev_browser/tools/js_evaluate.py +14 -0
  133. ai_dev_browser-0.5.3/ai_dev_browser/tools/login_interactive.py +14 -0
  134. ai_dev_browser-0.5.3/ai_dev_browser/tools/mouse_click.py +14 -0
  135. ai_dev_browser-0.5.3/ai_dev_browser/tools/mouse_drag.py +14 -0
  136. ai_dev_browser-0.5.3/ai_dev_browser/tools/mouse_move.py +14 -0
  137. ai_dev_browser-0.5.3/ai_dev_browser/tools/page_discover.py +14 -0
  138. ai_dev_browser-0.5.3/ai_dev_browser/tools/page_emulate_focus.py +14 -0
  139. ai_dev_browser-0.5.3/ai_dev_browser/tools/page_goto.py +14 -0
  140. ai_dev_browser-0.5.3/ai_dev_browser/tools/page_html.py +14 -0
  141. ai_dev_browser-0.5.3/ai_dev_browser/tools/page_info.py +14 -0
  142. ai_dev_browser-0.5.3/ai_dev_browser/tools/page_reload.py +14 -0
  143. ai_dev_browser-0.5.3/ai_dev_browser/tools/page_screenshot.py +14 -0
  144. ai_dev_browser-0.5.3/ai_dev_browser/tools/page_scroll.py +14 -0
  145. ai_dev_browser-0.5.3/ai_dev_browser/tools/page_wait_element.py +14 -0
  146. ai_dev_browser-0.5.3/ai_dev_browser/tools/page_wait_ready.py +14 -0
  147. ai_dev_browser-0.5.3/ai_dev_browser/tools/page_wait_url.py +14 -0
  148. ai_dev_browser-0.5.3/ai_dev_browser/tools/screenshot_by_ref.py +14 -0
  149. ai_dev_browser-0.5.3/ai_dev_browser/tools/select_by_ref.py +14 -0
  150. ai_dev_browser-0.5.3/ai_dev_browser/tools/storage_get.py +14 -0
  151. ai_dev_browser-0.5.3/ai_dev_browser/tools/storage_set.py +14 -0
  152. ai_dev_browser-0.5.3/ai_dev_browser/tools/tab_close.py +14 -0
  153. ai_dev_browser-0.5.3/ai_dev_browser/tools/tab_list.py +14 -0
  154. ai_dev_browser-0.5.3/ai_dev_browser/tools/tab_new.py +14 -0
  155. ai_dev_browser-0.5.3/ai_dev_browser/tools/tab_switch.py +14 -0
  156. ai_dev_browser-0.5.3/ai_dev_browser/tools/type_by_ref.py +14 -0
  157. ai_dev_browser-0.5.3/ai_dev_browser/tools/type_by_text.py +14 -0
  158. ai_dev_browser-0.5.3/ai_dev_browser/tools/upload_by_ref.py +14 -0
  159. ai_dev_browser-0.5.3/ai_dev_browser/tools/window_set.py +14 -0
  160. ai_dev_browser-0.5.3/ai_dev_browser.egg-info/PKG-INFO +177 -0
  161. ai_dev_browser-0.5.3/ai_dev_browser.egg-info/SOURCES.txt +178 -0
  162. ai_dev_browser-0.5.3/ai_dev_browser.egg-info/dependency_links.txt +1 -0
  163. ai_dev_browser-0.5.3/ai_dev_browser.egg-info/requires.txt +14 -0
  164. ai_dev_browser-0.5.3/ai_dev_browser.egg-info/top_level.txt +1 -0
  165. ai_dev_browser-0.5.3/pyproject.toml +69 -0
  166. ai_dev_browser-0.5.3/scripts/sync_cdp.py +38 -0
  167. ai_dev_browser-0.5.3/setup.cfg +4 -0
  168. ai_dev_browser-0.5.3/tests/__init__.py +1 -0
  169. ai_dev_browser-0.5.3/tests/conftest.py +37 -0
  170. ai_dev_browser-0.5.3/tests/integration/__init__.py +1 -0
  171. ai_dev_browser-0.5.3/tests/integration/scenarios_workspace.json +719 -0
  172. ai_dev_browser-0.5.3/tests/integration/test_find_and_interact_workflows.py +752 -0
  173. ai_dev_browser-0.5.3/tests/integration/test_locator_workflows.py +299 -0
  174. ai_dev_browser-0.5.3/tests/integration/test_multi_profile_pool.py +163 -0
  175. ai_dev_browser-0.5.3/tests/integration/test_timeout_and_retry.py +101 -0
  176. ai_dev_browser-0.5.3/tests/integration/test_workspace_workflows.py +673 -0
  177. ai_dev_browser-0.5.3/tests/unit/test_case.py +66 -0
  178. ai_dev_browser-0.5.3/tests/unit/test_cli_param_type.py +63 -0
  179. ai_dev_browser-0.5.3/tests/unit/test_no_acronym_rot.py +67 -0
  180. ai_dev_browser-0.5.3/uv.lock +718 -0
@@ -0,0 +1,47 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [master, main, dev]
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ test:
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ os: [ubuntu-latest, macos-latest, windows-latest]
15
+ runs-on: ${{ matrix.os }}
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: astral-sh/setup-uv@v4
19
+
20
+ - name: Install package
21
+ run: uv sync
22
+
23
+ # ── Tool dispatch smoke test ──
24
+ # Verifies python -m entry point works on all platforms.
25
+ - name: Test tool dispatch
26
+ run: |
27
+ uv run python -m ai_dev_browser.tools.browser_start --help
28
+
29
+ # ── Headless browser smoke test ──
30
+ - name: Smoke test headless browser
31
+ run: |
32
+ uv run python -c "
33
+ from ai_dev_browser.core.browser import browser_start, browser_stop
34
+
35
+ result = browser_start(headless=True, temp=True)
36
+ if 'error' in result:
37
+ print('SKIP:', result['error'])
38
+ exit(0)
39
+
40
+ port = result['port']
41
+ pid = result['pid']
42
+ print(f'Started: port={port}, pid={pid}, reused={result.get(\"reused\", False)}')
43
+
44
+ stop_result = browser_stop(port=port)
45
+ print(f'Stopped: {stop_result}')
46
+ print('Smoke test passed.')
47
+ "
@@ -0,0 +1,59 @@
1
+ name: Publish to PyPI
2
+
3
+ # Triggers on every `v*` tag push (e.g. v0.5.3, v0.6.0). The tag is the
4
+ # source of truth: setuptools-scm derives the version from it at build time,
5
+ # so no pyproject.toml edit is required — just `git tag vX.Y.Z && git push
6
+ # --tags` and this workflow handles the rest.
7
+ on:
8
+ push:
9
+ tags:
10
+ - "v*"
11
+
12
+ jobs:
13
+ build:
14
+ name: Build sdist + wheel
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ with:
19
+ # setuptools-scm needs full git history to compute the version
20
+ fetch-depth: 0
21
+
22
+ - uses: actions/setup-python@v5
23
+ with:
24
+ python-version: "3.12"
25
+
26
+ - name: Install build tooling
27
+ run: python -m pip install --upgrade build twine
28
+
29
+ - name: Build distributions
30
+ run: python -m build
31
+
32
+ - name: Validate distributions
33
+ run: python -m twine check dist/*
34
+
35
+ - uses: actions/upload-artifact@v4
36
+ with:
37
+ name: dist
38
+ path: dist/
39
+
40
+ publish:
41
+ name: Upload to PyPI
42
+ needs: build
43
+ runs-on: ubuntu-latest
44
+ # Environment is required by the PyPI trusted publisher config —
45
+ # mirror the environment name on PyPI's "pending publisher" page.
46
+ environment:
47
+ name: release
48
+ url: https://pypi.org/project/ai-dev-browser/
49
+ permissions:
50
+ # Required for PyPI OIDC trusted publisher auth — no token needed.
51
+ id-token: write
52
+ steps:
53
+ - uses: actions/download-artifact@v4
54
+ with:
55
+ name: dist
56
+ path: dist/
57
+
58
+ - name: Publish to PyPI
59
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,51 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+
23
+ # Virtual environments
24
+ venv/
25
+ ENV/
26
+ env/
27
+ .venv/
28
+
29
+ # IDE
30
+ .idea/
31
+ .vscode/
32
+ *.swp
33
+ *.swo
34
+
35
+ # Testing
36
+ .pytest_cache/
37
+ .coverage
38
+ htmlcov/
39
+
40
+ # macOS
41
+ .DS_Store
42
+
43
+ # Screenshots (default output of page_screenshot)
44
+ screenshots/
45
+
46
+ # Temporary files
47
+ *.tmp
48
+ tmpclaude-*
49
+
50
+ # Claude Code local settings
51
+ .claude/settings.local.json
@@ -0,0 +1,3 @@
1
+ [submodule "vendor/cdp-python"]
2
+ path = vendor/cdp-python
3
+ url = https://github.com/sudoprivacy/cdp-python.git
@@ -0,0 +1,48 @@
1
+ # Pre-commit hooks for ai-dev-browser
2
+ # Install: pip install pre-commit && pre-commit install
3
+ # Run manually: pre-commit run --all-files
4
+
5
+ repos:
6
+ # File checks
7
+ - repo: https://github.com/pre-commit/pre-commit-hooks
8
+ rev: v5.0.0
9
+ hooks:
10
+ - id: trailing-whitespace
11
+ - id: end-of-file-fixer
12
+ - id: check-yaml
13
+ - id: check-toml
14
+ - id: check-json
15
+ - id: check-added-large-files
16
+ args: ['--maxkb=500']
17
+ - id: check-merge-conflict
18
+ - id: check-ast # Python syntax check
19
+ - id: debug-statements # No pdb/breakpoint
20
+ - id: detect-private-key
21
+ - id: mixed-line-ending
22
+ args: [--fix=lf]
23
+
24
+ # Ruff - fast Python linter and formatter
25
+ - repo: https://github.com/astral-sh/ruff-pre-commit
26
+ rev: v0.9.1
27
+ hooks:
28
+ - id: ruff
29
+ args: [--fix, --exit-non-zero-on-fix]
30
+ - id: ruff-format
31
+
32
+ # Type checking (lenient for now, can be stricter later)
33
+ - repo: https://github.com/pre-commit/mirrors-mypy
34
+ rev: v1.14.1
35
+ hooks:
36
+ - id: mypy
37
+ args: [--ignore-missing-imports, --no-strict-optional, --allow-untyped-defs]
38
+ exclude: 'tests/|tools/|cdp/'
39
+
40
+ # Security
41
+ - repo: https://github.com/Yelp/detect-secrets
42
+ rev: v1.5.0
43
+ hooks:
44
+ - id: detect-secrets
45
+ args: ['--baseline', '.secrets.baseline']
46
+
47
+ ci:
48
+ skip: [mypy, detect-secrets]