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.
- ai_dev_browser-0.5.3/.github/workflows/ci.yml +47 -0
- ai_dev_browser-0.5.3/.github/workflows/publish.yml +59 -0
- ai_dev_browser-0.5.3/.gitignore +51 -0
- ai_dev_browser-0.5.3/.gitmodules +3 -0
- ai_dev_browser-0.5.3/.pre-commit-config.yaml +48 -0
- ai_dev_browser-0.5.3/.secrets.baseline +663 -0
- ai_dev_browser-0.5.3/LICENSE +25 -0
- ai_dev_browser-0.5.3/PKG-INFO +177 -0
- ai_dev_browser-0.5.3/README.md +142 -0
- ai_dev_browser-0.5.3/ai_dev_browser/__init__.py +110 -0
- ai_dev_browser-0.5.3/ai_dev_browser/_cli.py +428 -0
- ai_dev_browser-0.5.3/ai_dev_browser/_version.py +13 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/__init__.py +6 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/accessibility.py +668 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/animation.py +494 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/audits.py +1990 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/autofill.py +292 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/background_service.py +215 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/bluetooth_emulation.py +626 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/browser.py +821 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/cache_storage.py +311 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/cast.py +172 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/console.py +107 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/crash_report_context.py +55 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/css.py +2710 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/debugger.py +1405 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/device_access.py +141 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/device_orientation.py +45 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/dom.py +2257 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/dom_debugger.py +321 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/dom_snapshot.py +876 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/dom_storage.py +222 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/emulation.py +1779 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/event_breakpoints.py +56 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/extensions.py +246 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/fed_cm.py +283 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/fetch.py +507 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/file_system.py +115 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/headless_experimental.py +115 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/heap_profiler.py +401 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/indexed_db.py +528 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/input_.py +701 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/inspector.py +95 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/io.py +101 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/layer_tree.py +464 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/log.py +190 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/media.py +313 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/memory.py +305 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/network.py +5317 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/overlay.py +1468 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/page.py +3970 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/performance.py +124 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/performance_timeline.py +200 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/preload.py +575 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/profiler.py +420 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/pwa.py +278 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/py.typed +0 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/runtime.py +1589 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/schema.py +50 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/security.py +518 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/service_worker.py +401 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/smart_card_emulation.py +891 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/storage.py +1573 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/system_info.py +327 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/target.py +822 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/tethering.py +65 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/tracing.py +377 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/util.py +17 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/web_audio.py +606 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/web_authn.py +598 -0
- ai_dev_browser-0.5.3/ai_dev_browser/cdp/web_mcp.py +219 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/__init__.py +218 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/_case.py +38 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/_cf_template.py +84 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/_element.py +431 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/_tab.py +817 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/_transport.py +362 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/ax.py +605 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/browser.py +323 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/cdp.py +66 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/chrome.py +253 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/cloudflare.py +77 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/config.py +95 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/connection.py +403 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/cookies.py +103 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/dialog.py +165 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/download.py +38 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/elements.py +913 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/human.py +612 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/login.py +122 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/mouse.py +140 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/navigation.py +225 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/overlays.py +148 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/page.py +302 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/port.py +465 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/process.py +114 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/snapshot.py +425 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/storage.py +50 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/tabs.py +125 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/text_match.py +217 -0
- ai_dev_browser-0.5.3/ai_dev_browser/core/window.py +84 -0
- ai_dev_browser-0.5.3/ai_dev_browser/pool/__init__.py +34 -0
- ai_dev_browser-0.5.3/ai_dev_browser/pool/job.py +140 -0
- ai_dev_browser-0.5.3/ai_dev_browser/pool/persistence.py +154 -0
- ai_dev_browser-0.5.3/ai_dev_browser/pool/pool.py +873 -0
- ai_dev_browser-0.5.3/ai_dev_browser/pool/worker.py +171 -0
- ai_dev_browser-0.5.3/ai_dev_browser/profile.py +107 -0
- ai_dev_browser-0.5.3/ai_dev_browser/py.typed +0 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/__init__.py +9 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/_generate.py +209 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/browser_list.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/browser_start.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/browser_stop.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/cdp_send.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/click_by_html_id.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/click_by_ref.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/click_by_text.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/click_by_xpath.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/cloudflare_verify.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/cookies_list.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/cookies_load.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/cookies_save.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/dialog_respond.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/download.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/drag_by_ref.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/find_by_html_id.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/find_by_xpath.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/focus_by_ref.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/highlight_by_ref.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/hover_by_ref.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/html_by_ref.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/js_evaluate.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/login_interactive.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/mouse_click.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/mouse_drag.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/mouse_move.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/page_discover.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/page_emulate_focus.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/page_goto.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/page_html.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/page_info.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/page_reload.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/page_screenshot.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/page_scroll.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/page_wait_element.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/page_wait_ready.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/page_wait_url.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/screenshot_by_ref.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/select_by_ref.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/storage_get.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/storage_set.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/tab_close.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/tab_list.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/tab_new.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/tab_switch.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/type_by_ref.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/type_by_text.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/upload_by_ref.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser/tools/window_set.py +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser.egg-info/PKG-INFO +177 -0
- ai_dev_browser-0.5.3/ai_dev_browser.egg-info/SOURCES.txt +178 -0
- ai_dev_browser-0.5.3/ai_dev_browser.egg-info/dependency_links.txt +1 -0
- ai_dev_browser-0.5.3/ai_dev_browser.egg-info/requires.txt +14 -0
- ai_dev_browser-0.5.3/ai_dev_browser.egg-info/top_level.txt +1 -0
- ai_dev_browser-0.5.3/pyproject.toml +69 -0
- ai_dev_browser-0.5.3/scripts/sync_cdp.py +38 -0
- ai_dev_browser-0.5.3/setup.cfg +4 -0
- ai_dev_browser-0.5.3/tests/__init__.py +1 -0
- ai_dev_browser-0.5.3/tests/conftest.py +37 -0
- ai_dev_browser-0.5.3/tests/integration/__init__.py +1 -0
- ai_dev_browser-0.5.3/tests/integration/scenarios_workspace.json +719 -0
- ai_dev_browser-0.5.3/tests/integration/test_find_and_interact_workflows.py +752 -0
- ai_dev_browser-0.5.3/tests/integration/test_locator_workflows.py +299 -0
- ai_dev_browser-0.5.3/tests/integration/test_multi_profile_pool.py +163 -0
- ai_dev_browser-0.5.3/tests/integration/test_timeout_and_retry.py +101 -0
- ai_dev_browser-0.5.3/tests/integration/test_workspace_workflows.py +673 -0
- ai_dev_browser-0.5.3/tests/unit/test_case.py +66 -0
- ai_dev_browser-0.5.3/tests/unit/test_cli_param_type.py +63 -0
- ai_dev_browser-0.5.3/tests/unit/test_no_acronym_rot.py +67 -0
- 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,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]
|