cdpify 0.3.0__tar.gz → 0.5.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.
- cdpify-0.5.0/CHANGELOG.md +214 -0
- cdpify-0.5.0/MANIFEST.in +2 -0
- cdpify-0.5.0/PKG-INFO +586 -0
- cdpify-0.5.0/README.md +567 -0
- cdpify-0.5.0/RELEASING.md +76 -0
- cdpify-0.5.0/cdpify/__init__.py +47 -0
- cdpify-0.5.0/cdpify/client.py +241 -0
- cdpify-0.5.0/cdpify/codec.py +275 -0
- cdpify-0.5.0/cdpify/domains/__init__.py +198 -0
- cdpify-0.5.0/cdpify/domains/accessibility/__init__.py +103 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/accessibility/commands.py +74 -14
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/accessibility/domain.py +94 -41
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/accessibility/events.py +17 -5
- cdpify-0.5.0/cdpify/domains/accessibility/types.py +321 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/accessors.py +193 -62
- cdpify-0.5.0/cdpify/domains/ads/__init__.py +37 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/ads/commands.py +1 -1
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/ads/types.py +47 -1
- cdpify-0.5.0/cdpify/domains/animation/__init__.py +94 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/animation/commands.py +59 -8
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/animation/domain.py +61 -25
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/animation/events.py +26 -5
- cdpify-0.5.0/cdpify/domains/animation/types.py +189 -0
- cdpify-0.5.0/cdpify/domains/audits/__init__.py +299 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/audits/commands.py +25 -3
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/audits/domain.py +16 -10
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/audits/events.py +5 -2
- cdpify-0.5.0/cdpify/domains/audits/types.py +1349 -0
- cdpify-0.5.0/cdpify/domains/autofill/__init__.py +58 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/autofill/commands.py +19 -4
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/autofill/domain.py +24 -11
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/autofill/events.py +10 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/autofill/types.py +72 -16
- cdpify-0.5.0/cdpify/domains/backgroundservice/__init__.py +63 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/backgroundservice/commands.py +4 -4
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/backgroundservice/domain.py +16 -13
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/backgroundservice/events.py +10 -1
- cdpify-0.5.0/cdpify/domains/backgroundservice/types.py +72 -0
- cdpify-0.5.0/cdpify/domains/bluetoothemulation/__init__.py +146 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/bluetoothemulation/commands.py +35 -17
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/bluetoothemulation/domain.py +70 -60
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/bluetoothemulation/events.py +19 -6
- cdpify-0.5.0/cdpify/domains/bluetoothemulation/types.py +135 -0
- cdpify-0.5.0/cdpify/domains/browser/__init__.py +142 -0
- cdpify-0.5.0/cdpify/domains/browser/commands.py +420 -0
- cdpify-0.5.0/cdpify/domains/browser/domain.py +519 -0
- cdpify-0.5.0/cdpify/domains/browser/events.py +77 -0
- cdpify-0.5.0/cdpify/domains/browser/types.py +216 -0
- cdpify-0.5.0/cdpify/domains/cachestorage/__init__.py +72 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/cachestorage/commands.py +56 -3
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/cachestorage/domain.py +57 -28
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/cachestorage/types.py +59 -11
- cdpify-0.5.0/cdpify/domains/cast/__init__.py +53 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/cast/domain.py +18 -16
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/cast/events.py +6 -1
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/cast/types.py +8 -4
- cdpify-0.5.0/cdpify/domains/console/__init__.py +34 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/console/events.py +8 -2
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/console/types.py +25 -11
- cdpify-0.5.0/cdpify/domains/crashreportcontext/__init__.py +31 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/crashreportcontext/commands.py +2 -2
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/crashreportcontext/types.py +5 -2
- cdpify-0.5.0/cdpify/domains/css/__init__.py +407 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/css/commands.py +293 -55
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/css/domain.py +249 -150
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/css/events.py +30 -3
- cdpify-0.5.0/cdpify/domains/css/types.py +1293 -0
- cdpify-0.5.0/cdpify/domains/debugger/__init__.py +245 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/debugger/commands.py +344 -45
- cdpify-0.5.0/cdpify/domains/debugger/domain.py +871 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/debugger/events.py +181 -14
- cdpify-0.5.0/cdpify/domains/debugger/types.py +260 -0
- cdpify-0.5.0/cdpify/domains/deviceaccess/__init__.py +42 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/deviceaccess/commands.py +2 -2
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/deviceaccess/domain.py +10 -7
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/deviceaccess/events.py +8 -3
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/deviceaccess/types.py +8 -5
- cdpify-0.5.0/cdpify/domains/deviceorientation/__init__.py +31 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/deviceorientation/commands.py +13 -4
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/deviceorientation/domain.py +12 -4
- cdpify-0.5.0/cdpify/domains/digitalcredentials/__init__.py +34 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/digitalcredentials/commands.py +17 -5
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/digitalcredentials/domain.py +18 -6
- cdpify-0.5.0/cdpify/domains/digitalcredentials/types.py +18 -0
- cdpify-0.5.0/cdpify/domains/dom/__init__.py +431 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/dom/commands.py +550 -59
- cdpify-0.5.0/cdpify/domains/dom/domain.py +1422 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/dom/events.py +171 -18
- cdpify-0.5.0/cdpify/domains/dom/types.py +465 -0
- cdpify-0.5.0/cdpify/domains/domdebugger/__init__.py +80 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/domdebugger/commands.py +68 -10
- cdpify-0.5.0/cdpify/domains/domdebugger/domain.py +254 -0
- cdpify-0.5.0/cdpify/domains/domdebugger/types.py +81 -0
- cdpify-0.5.0/cdpify/domains/domsnapshot/__init__.py +87 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/domsnapshot/commands.py +54 -3
- cdpify-0.5.0/cdpify/domains/domsnapshot/domain.py +134 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/domsnapshot/types.py +310 -27
- cdpify-0.5.0/cdpify/domains/domstorage/__init__.py +67 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/domstorage/commands.py +4 -4
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/domstorage/domain.py +18 -13
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/domstorage/events.py +12 -3
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/domstorage/types.py +11 -3
- cdpify-0.5.0/cdpify/domains/emulation/__init__.py +311 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/emulation/commands.py +419 -96
- cdpify-0.5.0/cdpify/domains/emulation/domain.py +1238 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/emulation/events.py +17 -7
- cdpify-0.5.0/cdpify/domains/emulation/types.py +385 -0
- cdpify-0.5.0/cdpify/domains/eventbreakpoints/__init__.py +40 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/eventbreakpoints/commands.py +6 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/eventbreakpoints/domain.py +14 -7
- cdpify-0.5.0/cdpify/domains/extensions/__init__.py +63 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/extensions/commands.py +64 -13
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/extensions/domain.py +63 -22
- cdpify-0.5.0/cdpify/domains/extensions/types.py +48 -0
- cdpify-0.5.0/cdpify/domains/fedcm/__init__.py +67 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/fedcm/commands.py +5 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/fedcm/domain.py +32 -24
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/fedcm/events.py +12 -3
- cdpify-0.5.0/cdpify/domains/fedcm/types.py +74 -0
- cdpify-0.5.0/cdpify/domains/fetch/__init__.py +91 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/fetch/commands.py +103 -12
- cdpify-0.5.0/cdpify/domains/fetch/domain.py +298 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/fetch/events.py +56 -2
- cdpify-0.5.0/cdpify/domains/fetch/types.py +107 -0
- cdpify-0.5.0/cdpify/domains/filesystem/__init__.py +37 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/filesystem/commands.py +4 -1
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/filesystem/domain.py +6 -6
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/filesystem/types.py +23 -4
- cdpify-0.5.0/cdpify/domains/findinpage/__init__.py +28 -0
- cdpify-0.5.0/cdpify/domains/findinpage/commands.py +25 -0
- cdpify-0.5.0/cdpify/domains/findinpage/domain.py +70 -0
- cdpify-0.5.0/cdpify/domains/headlessexperimental/__init__.py +37 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/headlessexperimental/commands.py +31 -4
- cdpify-0.5.0/cdpify/domains/headlessexperimental/domain.py +96 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/headlessexperimental/types.py +11 -4
- cdpify-0.5.0/cdpify/domains/heapprofiler/__init__.py +101 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/heapprofiler/commands.py +77 -3
- cdpify-0.5.0/cdpify/domains/heapprofiler/domain.py +262 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/heapprofiler/events.py +24 -6
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/heapprofiler/types.py +30 -7
- cdpify-0.5.0/cdpify/domains/indexeddb/__init__.py +87 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/indexeddb/commands.py +128 -0
- cdpify-0.5.0/cdpify/domains/indexeddb/domain.py +311 -0
- cdpify-0.5.0/cdpify/domains/indexeddb/types.py +171 -0
- cdpify-0.5.0/cdpify/domains/input/__init__.py +92 -0
- cdpify-0.5.0/cdpify/domains/input/commands.py +518 -0
- cdpify-0.5.0/cdpify/domains/input/domain.py +573 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/input/events.py +7 -3
- cdpify-0.5.0/cdpify/domains/input/types.py +138 -0
- cdpify-0.5.0/cdpify/domains/inspector/__init__.py +43 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/inspector/events.py +12 -6
- cdpify-0.5.0/cdpify/domains/io/__init__.py +46 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/io/commands.py +37 -8
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/io/domain.py +33 -12
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/io/types.py +1 -1
- cdpify-0.5.0/cdpify/domains/layertree/__init__.py +97 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/layertree/commands.py +63 -3
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/layertree/domain.py +67 -31
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/layertree/events.py +16 -2
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/layertree/types.py +89 -17
- cdpify-0.5.0/cdpify/domains/log/__init__.py +38 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/log/commands.py +5 -2
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/log/domain.py +9 -4
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/log/events.py +8 -2
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/log/types.py +45 -19
- cdpify-0.5.0/cdpify/domains/media/__init__.py +72 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/media/events.py +16 -5
- cdpify-0.5.0/cdpify/domains/media/types.py +102 -0
- cdpify-0.5.0/cdpify/domains/memory/__init__.py +84 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/memory/commands.py +23 -8
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/memory/domain.py +25 -12
- cdpify-0.5.0/cdpify/domains/memory/types.py +90 -0
- cdpify-0.5.0/cdpify/domains/network/__init__.py +641 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/network/commands.py +357 -61
- cdpify-0.5.0/cdpify/domains/network/domain.py +939 -0
- cdpify-0.5.0/cdpify/domains/network/events.py +1199 -0
- cdpify-0.5.0/cdpify/domains/network/types.py +2430 -0
- cdpify-0.5.0/cdpify/domains/overlay/__init__.py +269 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/overlay/commands.py +179 -24
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/overlay/domain.py +264 -136
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/overlay/events.py +27 -2
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/overlay/types.py +385 -19
- cdpify-0.5.0/cdpify/domains/page/__init__.py +578 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/page/commands.py +628 -106
- cdpify-0.5.0/cdpify/domains/page/domain.py +1583 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/page/events.py +309 -58
- cdpify-0.5.0/cdpify/domains/page/types.py +1398 -0
- cdpify-0.5.0/cdpify/domains/performance/__init__.py +45 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/performance/commands.py +12 -2
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/performance/domain.py +19 -10
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/performance/events.py +12 -3
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/performance/types.py +9 -3
- cdpify-0.5.0/cdpify/domains/performancetimeline/__init__.py +47 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/performancetimeline/commands.py +7 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/performancetimeline/domain.py +13 -4
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/performancetimeline/events.py +7 -2
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/performancetimeline/types.py +37 -8
- cdpify-0.5.0/cdpify/domains/preload/__init__.py +93 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/preload/events.py +35 -5
- cdpify-0.5.0/cdpify/domains/preload/types.py +346 -0
- cdpify-0.5.0/cdpify/domains/profiler/__init__.py +83 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/profiler/commands.py +36 -7
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/profiler/domain.py +24 -11
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/profiler/events.py +41 -11
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/profiler/types.py +78 -10
- cdpify-0.5.0/cdpify/domains/pwa/__init__.py +65 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/pwa/commands.py +23 -2
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/pwa/domain.py +52 -28
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/pwa/types.py +15 -7
- cdpify-0.5.0/cdpify/domains/runtime/__init__.py +215 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/runtime/commands.py +316 -22
- cdpify-0.5.0/cdpify/domains/runtime/domain.py +697 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/runtime/events.py +78 -16
- cdpify-0.5.0/cdpify/domains/runtime/types.py +669 -0
- cdpify-0.5.0/cdpify/domains/schema/__init__.py +31 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/schema/commands.py +5 -2
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/schema/types.py +9 -3
- cdpify-0.5.0/cdpify/domains/security/__init__.py +92 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/security/commands.py +18 -5
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/security/domain.py +28 -14
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/security/events.py +48 -7
- cdpify-0.5.0/cdpify/domains/security/types.py +284 -0
- cdpify-0.5.0/cdpify/domains/serviceworker/__init__.py +113 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/serviceworker/commands.py +6 -6
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/serviceworker/domain.py +37 -39
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/serviceworker/events.py +14 -3
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/serviceworker/types.py +55 -24
- cdpify-0.5.0/cdpify/domains/smartcardemulation/__init__.py +146 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/smartcardemulation/commands.py +7 -7
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/smartcardemulation/domain.py +47 -45
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/smartcardemulation/events.py +76 -16
- cdpify-0.5.0/cdpify/domains/smartcardemulation/types.py +139 -0
- cdpify-0.5.0/cdpify/domains/storage/__init__.py +233 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/storage/commands.py +155 -26
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/storage/domain.py +222 -88
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/storage/events.py +77 -4
- cdpify-0.5.0/cdpify/domains/storage/types.py +138 -0
- cdpify-0.5.0/cdpify/domains/systeminfo/__init__.py +72 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/systeminfo/commands.py +19 -1
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/systeminfo/domain.py +6 -4
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/systeminfo/types.py +105 -17
- cdpify-0.5.0/cdpify/domains/target/__init__.py +158 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/target/commands.py +209 -22
- cdpify-0.5.0/cdpify/domains/target/domain.py +569 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/target/events.py +40 -3
- cdpify-0.5.0/cdpify/domains/target/types.py +130 -0
- cdpify-0.5.0/cdpify/domains/tethering/__init__.py +35 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/tethering/commands.py +9 -3
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/tethering/domain.py +14 -7
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/tethering/events.py +10 -1
- cdpify-0.5.0/cdpify/domains/tracing/__init__.py +80 -0
- cdpify-0.5.0/cdpify/domains/tracing/commands.py +169 -0
- cdpify-0.5.0/cdpify/domains/tracing/domain.py +194 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/tracing/events.py +39 -7
- cdpify-0.5.0/cdpify/domains/tracing/types.py +136 -0
- cdpify-0.5.0/cdpify/domains/webaudio/__init__.py +118 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/webaudio/domain.py +6 -4
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/webaudio/events.py +34 -5
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/webaudio/types.py +74 -25
- cdpify-0.5.0/cdpify/domains/webauthn/__init__.py +116 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/webauthn/commands.py +29 -6
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/webauthn/domain.py +86 -61
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/webauthn/events.py +12 -3
- cdpify-0.5.0/cdpify/domains/webauthn/types.py +214 -0
- cdpify-0.5.0/cdpify/domains/webmcp/__init__.py +68 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/webmcp/commands.py +16 -1
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/webmcp/domain.py +17 -7
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/webmcp/events.py +52 -9
- cdpify-0.5.0/cdpify/domains/webmcp/types.py +112 -0
- cdpify-0.5.0/cdpify/error.py +110 -0
- cdpify-0.5.0/cdpify/event_queue.py +87 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/events/__init__.py +11 -9
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/events/dispatcher.py +22 -3
- cdpify-0.5.0/cdpify/events/router.py +183 -0
- cdpify-0.5.0/cdpify/events/source.py +65 -0
- cdpify-0.5.0/cdpify/events/subscription.py +109 -0
- cdpify-0.5.0/cdpify/executor.py +74 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/generators/commands.py +107 -90
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/generators/domain.py +98 -97
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/generators/events.py +126 -106
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/generators/init.py +103 -83
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/generators/types.py +135 -105
- cdpify-0.5.0/cdpify/generator/generators/utils.py +185 -0
- cdpify-0.5.0/cdpify/generator/generators/views.py +148 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/schemas.py +5 -1
- cdpify-0.5.0/cdpify/generator/templates/accessors.py.jinja2 +30 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/templates/commands.py.jinja2 +47 -38
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/templates/domain.py.jinja2 +76 -65
- cdpify-0.5.0/cdpify/generator/templates/domain_init.py.jinja2 +35 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/templates/events.py.jinja2 +49 -40
- cdpify-0.5.0/cdpify/generator/templates/root_init.py.jinja2 +26 -0
- cdpify-0.5.0/cdpify/generator/templates/types.py.jinja2 +52 -0
- cdpify-0.5.0/cdpify/py.typed +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/session.py +45 -54
- cdpify-0.5.0/cdpify/shared/decorators.py +53 -0
- cdpify-0.5.0/cdpify/shared/enums.py +19 -0
- cdpify-0.5.0/cdpify/shared/lazy.py +35 -0
- cdpify-0.5.0/cdpify/transport.py +60 -0
- cdpify-0.5.0/cdpify/transports/websocket.py +325 -0
- cdpify-0.5.0/cdpify/unset.py +13 -0
- cdpify-0.5.0/cdpify.egg-info/PKG-INFO +586 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify.egg-info/SOURCES.txt +22 -2
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify.egg-info/requires.txt +3 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/pyproject.toml +15 -1
- {cdpify-0.3.0 → cdpify-0.5.0}/tests/test_client.py +303 -239
- cdpify-0.5.0/tests/test_codec.py +222 -0
- cdpify-0.5.0/tests/test_decorators_and_errors.py +93 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/tests/test_dependency_boundaries.py +20 -2
- cdpify-0.5.0/tests/test_enums.py +117 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/tests/test_event_dispatcher.py +2 -1
- cdpify-0.5.0/tests/test_event_overflow_and_raw.py +109 -0
- cdpify-0.5.0/tests/test_event_subscription.py +331 -0
- cdpify-0.5.0/tests/test_executor.py +74 -0
- cdpify-0.5.0/tests/test_generated_params.py +40 -0
- cdpify-0.5.0/tests/test_lazy_imports.py +75 -0
- cdpify-0.5.0/tests/test_models.py +144 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/tests/test_session.py +143 -140
- cdpify-0.5.0/tests/test_websocket_client.py +173 -0
- cdpify-0.5.0/tests/test_websocket_transport.py +412 -0
- cdpify-0.3.0/PKG-INFO +0 -304
- cdpify-0.3.0/README.md +0 -287
- cdpify-0.3.0/cdpify/__init__.py +0 -27
- cdpify-0.3.0/cdpify/client.py +0 -160
- cdpify-0.3.0/cdpify/codec.py +0 -183
- cdpify-0.3.0/cdpify/domains/__init__.py +0 -125
- cdpify-0.3.0/cdpify/domains/accessibility/__init__.py +0 -65
- cdpify-0.3.0/cdpify/domains/accessibility/types.py +0 -223
- cdpify-0.3.0/cdpify/domains/ads/__init__.py +0 -19
- cdpify-0.3.0/cdpify/domains/animation/__init__.py +0 -61
- cdpify-0.3.0/cdpify/domains/animation/types.py +0 -96
- cdpify-0.3.0/cdpify/domains/audits/__init__.py +0 -160
- cdpify-0.3.0/cdpify/domains/audits/types.py +0 -1092
- cdpify-0.3.0/cdpify/domains/autofill/__init__.py +0 -34
- cdpify-0.3.0/cdpify/domains/backgroundservice/__init__.py +0 -37
- cdpify-0.3.0/cdpify/domains/backgroundservice/types.py +0 -47
- cdpify-0.3.0/cdpify/domains/bluetoothemulation/__init__.py +0 -79
- cdpify-0.3.0/cdpify/domains/bluetoothemulation/types.py +0 -96
- cdpify-0.3.0/cdpify/domains/browser/__init__.py +0 -87
- cdpify-0.3.0/cdpify/domains/browser/commands.py +0 -267
- cdpify-0.3.0/cdpify/domains/browser/domain.py +0 -391
- cdpify-0.3.0/cdpify/domains/browser/events.py +0 -43
- cdpify-0.3.0/cdpify/domains/browser/types.py +0 -129
- cdpify-0.3.0/cdpify/domains/cachestorage/__init__.py +0 -45
- cdpify-0.3.0/cdpify/domains/cast/__init__.py +0 -31
- cdpify-0.3.0/cdpify/domains/console/__init__.py +0 -18
- cdpify-0.3.0/cdpify/domains/crashreportcontext/__init__.py +0 -16
- cdpify-0.3.0/cdpify/domains/css/__init__.py +0 -247
- cdpify-0.3.0/cdpify/domains/css/types.py +0 -689
- cdpify-0.3.0/cdpify/domains/debugger/__init__.py +0 -147
- cdpify-0.3.0/cdpify/domains/debugger/domain.py +0 -680
- cdpify-0.3.0/cdpify/domains/debugger/types.py +0 -159
- cdpify-0.3.0/cdpify/domains/deviceaccess/__init__.py +0 -22
- cdpify-0.3.0/cdpify/domains/deviceorientation/__init__.py +0 -14
- cdpify-0.3.0/cdpify/domains/digitalcredentials/__init__.py +0 -16
- cdpify-0.3.0/cdpify/domains/digitalcredentials/types.py +0 -12
- cdpify-0.3.0/cdpify/domains/dom/__init__.py +0 -249
- cdpify-0.3.0/cdpify/domains/dom/domain.py +0 -1069
- cdpify-0.3.0/cdpify/domains/dom/types.py +0 -271
- cdpify-0.3.0/cdpify/domains/domdebugger/__init__.py +0 -41
- cdpify-0.3.0/cdpify/domains/domdebugger/domain.py +0 -203
- cdpify-0.3.0/cdpify/domains/domdebugger/types.py +0 -48
- cdpify-0.3.0/cdpify/domains/domsnapshot/__init__.py +0 -55
- cdpify-0.3.0/cdpify/domains/domsnapshot/domain.py +0 -101
- cdpify-0.3.0/cdpify/domains/domstorage/__init__.py +0 -41
- cdpify-0.3.0/cdpify/domains/emulation/__init__.py +0 -161
- cdpify-0.3.0/cdpify/domains/emulation/domain.py +0 -956
- cdpify-0.3.0/cdpify/domains/emulation/types.py +0 -211
- cdpify-0.3.0/cdpify/domains/eventbreakpoints/__init__.py +0 -19
- cdpify-0.3.0/cdpify/domains/extensions/__init__.py +0 -38
- cdpify-0.3.0/cdpify/domains/extensions/types.py +0 -26
- cdpify-0.3.0/cdpify/domains/fedcm/__init__.py +0 -41
- cdpify-0.3.0/cdpify/domains/fedcm/types.py +0 -51
- cdpify-0.3.0/cdpify/domains/fetch/__init__.py +0 -53
- cdpify-0.3.0/cdpify/domains/fetch/domain.py +0 -229
- cdpify-0.3.0/cdpify/domains/fetch/types.py +0 -71
- cdpify-0.3.0/cdpify/domains/filesystem/__init__.py +0 -19
- cdpify-0.3.0/cdpify/domains/headlessexperimental/__init__.py +0 -17
- cdpify-0.3.0/cdpify/domains/headlessexperimental/domain.py +0 -75
- cdpify-0.3.0/cdpify/domains/heapprofiler/__init__.py +0 -61
- cdpify-0.3.0/cdpify/domains/heapprofiler/domain.py +0 -195
- cdpify-0.3.0/cdpify/domains/indexeddb/__init__.py +0 -53
- cdpify-0.3.0/cdpify/domains/indexeddb/domain.py +0 -239
- cdpify-0.3.0/cdpify/domains/indexeddb/types.py +0 -94
- cdpify-0.3.0/cdpify/domains/input/__init__.py +0 -56
- cdpify-0.3.0/cdpify/domains/input/commands.py +0 -268
- cdpify-0.3.0/cdpify/domains/input/domain.py +0 -385
- cdpify-0.3.0/cdpify/domains/input/types.py +0 -52
- cdpify-0.3.0/cdpify/domains/inspector/__init__.py +0 -25
- cdpify-0.3.0/cdpify/domains/io/__init__.py +0 -27
- cdpify-0.3.0/cdpify/domains/layertree/__init__.py +0 -61
- cdpify-0.3.0/cdpify/domains/log/__init__.py +0 -20
- cdpify-0.3.0/cdpify/domains/media/__init__.py +0 -45
- cdpify-0.3.0/cdpify/domains/media/types.py +0 -81
- cdpify-0.3.0/cdpify/domains/memory/__init__.py +0 -43
- cdpify-0.3.0/cdpify/domains/memory/types.py +0 -56
- cdpify-0.3.0/cdpify/domains/network/__init__.py +0 -371
- cdpify-0.3.0/cdpify/domains/network/domain.py +0 -718
- cdpify-0.3.0/cdpify/domains/network/events.py +0 -678
- cdpify-0.3.0/cdpify/domains/network/types.py +0 -1399
- cdpify-0.3.0/cdpify/domains/overlay/__init__.py +0 -141
- cdpify-0.3.0/cdpify/domains/page/__init__.py +0 -325
- cdpify-0.3.0/cdpify/domains/page/domain.py +0 -1189
- cdpify-0.3.0/cdpify/domains/page/types.py +0 -883
- cdpify-0.3.0/cdpify/domains/performance/__init__.py +0 -26
- cdpify-0.3.0/cdpify/domains/performancetimeline/__init__.py +0 -27
- cdpify-0.3.0/cdpify/domains/preload/__init__.py +0 -55
- cdpify-0.3.0/cdpify/domains/preload/types.py +0 -250
- cdpify-0.3.0/cdpify/domains/profiler/__init__.py +0 -51
- cdpify-0.3.0/cdpify/domains/pwa/__init__.py +0 -39
- cdpify-0.3.0/cdpify/domains/runtime/__init__.py +0 -137
- cdpify-0.3.0/cdpify/domains/runtime/domain.py +0 -494
- cdpify-0.3.0/cdpify/domains/runtime/types.py +0 -430
- cdpify-0.3.0/cdpify/domains/schema/__init__.py +0 -16
- cdpify-0.3.0/cdpify/domains/security/__init__.py +0 -53
- cdpify-0.3.0/cdpify/domains/security/types.py +0 -142
- cdpify-0.3.0/cdpify/domains/serviceworker/__init__.py +0 -67
- cdpify-0.3.0/cdpify/domains/smartcardemulation/__init__.py +0 -87
- cdpify-0.3.0/cdpify/domains/smartcardemulation/types.py +0 -116
- cdpify-0.3.0/cdpify/domains/storage/__init__.py +0 -105
- cdpify-0.3.0/cdpify/domains/storage/types.py +0 -80
- cdpify-0.3.0/cdpify/domains/systeminfo/__init__.py +0 -41
- cdpify-0.3.0/cdpify/domains/target/__init__.py +0 -103
- cdpify-0.3.0/cdpify/domains/target/domain.py +0 -429
- cdpify-0.3.0/cdpify/domains/target/types.py +0 -74
- cdpify-0.3.0/cdpify/domains/tethering/__init__.py +0 -18
- cdpify-0.3.0/cdpify/domains/tracing/__init__.py +0 -51
- cdpify-0.3.0/cdpify/domains/tracing/commands.py +0 -102
- cdpify-0.3.0/cdpify/domains/tracing/domain.py +0 -138
- cdpify-0.3.0/cdpify/domains/tracing/types.py +0 -80
- cdpify-0.3.0/cdpify/domains/webaudio/__init__.py +0 -73
- cdpify-0.3.0/cdpify/domains/webauthn/__init__.py +0 -71
- cdpify-0.3.0/cdpify/domains/webauthn/types.py +0 -93
- cdpify-0.3.0/cdpify/domains/webmcp/__init__.py +0 -43
- cdpify-0.3.0/cdpify/domains/webmcp/types.py +0 -65
- cdpify-0.3.0/cdpify/events/router.py +0 -91
- cdpify-0.3.0/cdpify/exceptions.py +0 -18
- cdpify-0.3.0/cdpify/executor.py +0 -39
- cdpify-0.3.0/cdpify/generator/generators/utils.py +0 -111
- cdpify-0.3.0/cdpify/generator/generators/views.py +0 -90
- cdpify-0.3.0/cdpify/generator/templates/accessors.py.jinja2 +0 -17
- cdpify-0.3.0/cdpify/generator/templates/domain_init.py.jinja2 +0 -22
- cdpify-0.3.0/cdpify/generator/templates/root_init.py.jinja2 +0 -9
- cdpify-0.3.0/cdpify/generator/templates/types.py.jinja2 +0 -33
- cdpify-0.3.0/cdpify/shared/decorators.py +0 -27
- cdpify-0.3.0/cdpify/transport.py +0 -29
- cdpify-0.3.0/cdpify/transports/websocket.py +0 -256
- cdpify-0.3.0/cdpify.egg-info/PKG-INFO +0 -304
- cdpify-0.3.0/tests/test_codec.py +0 -118
- cdpify-0.3.0/tests/test_decorators_and_exceptions.py +0 -42
- cdpify-0.3.0/tests/test_models.py +0 -59
- cdpify-0.3.0/tests/test_websocket_transport.py +0 -161
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/ads/domain.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/cast/commands.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/console/commands.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/console/domain.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/crashreportcontext/domain.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/inspector/commands.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/inspector/domain.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/media/commands.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/media/domain.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/preload/commands.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/preload/domain.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/schema/domain.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/domains/webaudio/commands.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/__main__.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/downloader.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/formatting.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/generator.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/generators/__init__.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/generators/accessors.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/generators/constants.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/generators/context.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/generator/rendering.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/shared/naming.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify/transports/__init__.py +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify.egg-info/dependency_links.txt +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/cdpify.egg-info/top_level.txt +0 -0
- {cdpify-0.3.0 → cdpify-0.5.0}/setup.cfg +0 -0
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented here.
|
|
4
|
+
Breaking changes are listed first in each release.
|
|
5
|
+
|
|
6
|
+
## [0.5.0] - Unreleased
|
|
7
|
+
|
|
8
|
+
Release preparation; the publication date will be recorded when 0.5.0 ships.
|
|
9
|
+
See the [migration guide](README.md#upgrading-from-040) before upgrading.
|
|
10
|
+
|
|
11
|
+
### Breaking changes
|
|
12
|
+
|
|
13
|
+
- Renamed the error module from `cdpify.exceptions` to `cdpify.error`.
|
|
14
|
+
Update imports such as `from cdpify.exceptions import CDPCommandError` to
|
|
15
|
+
`from cdpify.error import CDPCommandError`. The old module is removed;
|
|
16
|
+
error classes remain available from the root package (`from cdpify import
|
|
17
|
+
CDPCommandError`) with the same behavior and inheritance.
|
|
18
|
+
- Optional `any` fields now default to `UNSET`, distinguishing omission from
|
|
19
|
+
JSON `null`. For example, `CallArgument()` omits `value`, while
|
|
20
|
+
`CallArgument(value=None)` sends `{"value": null}`. Ordinary optional scalar
|
|
21
|
+
fields still use `None` to mean omitted. `UNSET` and `UnsetType` are public.
|
|
22
|
+
- `decode_cdp` now raises `CDPDecodeError` for missing required fields, including
|
|
23
|
+
nested models. Unknown fields and future enum values remain supported. Use
|
|
24
|
+
`decode_cdp(Model, payload, strict=False)` for the previous tolerant behavior
|
|
25
|
+
that logs a warning and fills missing required fields with `None`.
|
|
26
|
+
- Command timeouts now cover sending and receiving. The
|
|
27
|
+
`CdpClient(default_timeout=...)` setting is enforced for every transport and
|
|
28
|
+
inherited by session views. Omit the raw `execute(timeout=...)` argument to
|
|
29
|
+
inherit the default; pass `None` to disable it. Set `default_timeout=None` to
|
|
30
|
+
disable the client default entirely.
|
|
31
|
+
- `WebSocketTransport` no longer accepts `default_timeout`; configure it on
|
|
32
|
+
`CdpClient` instead. Standalone transport calls have no deadline unless
|
|
33
|
+
`execute(timeout=seconds)` is specified. Generated methods retain only CDP's
|
|
34
|
+
own parameters; use `asyncio.timeout(seconds)` for an individual caller budget.
|
|
35
|
+
- WebSocket compression is disabled by default for lower local latency. Pass
|
|
36
|
+
`compression="deflate"` to `CdpClient` or `WebSocketTransport` to opt into
|
|
37
|
+
compression when bandwidth matters more.
|
|
38
|
+
- Bounded event buffers now default to `overflow="error"`: overflow terminates
|
|
39
|
+
only the affected stream and raises `CDPEventOverflowError` on its next read.
|
|
40
|
+
Pass `overflow="drop_oldest"` on the client, transport or subscription to keep
|
|
41
|
+
the old lossy behavior. The default queue size remains unlimited (`0`).
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
|
|
45
|
+
- Generated method docstrings include parameter descriptions, units and defaults
|
|
46
|
+
from the spec. Model fields retain their attribute documentation. Experimental
|
|
47
|
+
and deprecated markers are preserved on types, events and fields as well as
|
|
48
|
+
commands.
|
|
49
|
+
- `listen_raw(method=None)` on clients and sessions, and `listen_all_raw()` on
|
|
50
|
+
clients, return `TransportEvent` values with wire names, parameter dictionaries
|
|
51
|
+
and session IDs. None matches every method in the selected scope.
|
|
52
|
+
- Per-subscription overflow overrides and structured `CDPEventOverflowError`
|
|
53
|
+
details (`max_queue_size`, `dropped_events`). Overflow never blocks responses
|
|
54
|
+
or other subscriptions; failed listeners unregister immediately.
|
|
55
|
+
- `compression`, `open_timeout` and `close_timeout` options for URL-based clients
|
|
56
|
+
and the standalone WebSocket transport. Connection timeouts are in seconds.
|
|
57
|
+
- Reproducible codec, dispatch and optional Chrome round-trip benchmarks in
|
|
58
|
+
`benchmarks/runtime.py`; offline regeneration and generated-code drift checks
|
|
59
|
+
in `scripts/check_generated.py`.
|
|
60
|
+
- CI checks the library and public API with Pyright and runs isolated headless
|
|
61
|
+
Chrome tests. Run those locally with `pytest -m integration` and optionally
|
|
62
|
+
`CHROME_PATH`; they are excluded from the default unit-test run.
|
|
63
|
+
|
|
64
|
+
### Performance
|
|
65
|
+
|
|
66
|
+
- Generated command methods build wire dictionaries directly, avoiding an
|
|
67
|
+
intermediate Params dataclass and reflective field traversal. Public Params
|
|
68
|
+
models and keyword-only command signatures are retained. Nested models still
|
|
69
|
+
serialize through the shared codec.
|
|
70
|
+
- The orjson transport sends UTF-8 bytes directly as text frames and receives
|
|
71
|
+
bytes without first decoding to a Python string. This removes redundant
|
|
72
|
+
UTF-8 conversions while preserving the CDP wire format.
|
|
73
|
+
|
|
74
|
+
## [0.4.0] - 2026-10-25
|
|
75
|
+
|
|
76
|
+
### Breaking changes
|
|
77
|
+
|
|
78
|
+
- Named protocol enums are now `StrEnum` subclasses instead of `Literal`
|
|
79
|
+
aliases. Use constants such as `ResourceType.FETCH` and
|
|
80
|
+
`CookieOperation.SET_COOKIE` in typed code. `decode_cdp` returns enum members,
|
|
81
|
+
including in nested models and collections. Unknown strings from newer CDP
|
|
82
|
+
versions remain instances of the corresponding enum with their original
|
|
83
|
+
`.value`; they are not added to its declared members. Inline enums remain
|
|
84
|
+
`Literal` annotations.
|
|
85
|
+
- Matching event listeners now share one decoded model per incoming event and
|
|
86
|
+
event class, including `listen_all()`'s `ReceivedEvent.value`. Mutations are
|
|
87
|
+
visible to other listeners. Treat event data as read-only or make a
|
|
88
|
+
`copy.deepcopy(event)` before changing it privately.
|
|
89
|
+
- All generated type aliases use `type` statements, including primitives and
|
|
90
|
+
arrays, e.g. `type FrameId = str` and `type Quad = list[float]`. Use them in
|
|
91
|
+
annotations; pass plain values such as `frame_id: FrameId = "F1"` instead of
|
|
92
|
+
calling `FrameId("F1")`. For runtime checks use `isinstance(value, str)` rather
|
|
93
|
+
than `isinstance(value, FrameId)`.
|
|
94
|
+
- `Client` and `CDPSession` are renamed to `CdpClient` and `CdpSession`.
|
|
95
|
+
Update imports to `from cdpify import CdpClient, CdpSession` and calls to
|
|
96
|
+
`CdpClient(...)`. `client.session(...)` now returns `CdpSession`.
|
|
97
|
+
- Exceptions follow Python naming: `CDPException` → `CDPError`,
|
|
98
|
+
`CDPConnectionException` → `CDPConnectionError`, `CDPCommandException` →
|
|
99
|
+
`CDPCommandError`, `CDPTimeoutException` → `CDPTimeoutError`. The old names
|
|
100
|
+
still work but emit a `DeprecationWarning` and will be removed in a future
|
|
101
|
+
release.
|
|
102
|
+
- `CDPCommandError` takes `(method, code, message, data=None)` instead of the
|
|
103
|
+
raw error dict. Use `CDPCommandError.from_response(method, error)` to build
|
|
104
|
+
one from a CDP error payload. The message now names the failed method, e.g.
|
|
105
|
+
`Page.navigate failed with CDP error -32000: Cannot navigate to invalid URL`.
|
|
106
|
+
- `listen()`, `listen_all()` and `CdpSession.listen()` are now regular methods
|
|
107
|
+
that return an `EventSubscription` instead of async generators. `async for`
|
|
108
|
+
and `aclose()` keep working. Code that relied on the generator type itself
|
|
109
|
+
(e.g. `inspect.isasyncgen`) or on `asend()`/`athrow()` must be updated.
|
|
110
|
+
- `listen()`, `listen_all()` and `CdpSession.listen()` take the event class
|
|
111
|
+
instead of an event name plus class, and `timeout` is keyword-only:
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
# Before
|
|
115
|
+
client.listen(NetworkEvent.REQUEST_WILL_BE_SENT, RequestWillBeSentEvent)
|
|
116
|
+
client.listen(
|
|
117
|
+
event_name=NetworkEvent.REQUEST_WILL_BE_SENT,
|
|
118
|
+
event_type=RequestWillBeSentEvent,
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
# After
|
|
122
|
+
client.listen(RequestWillBeSentEvent)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
The CDP name comes from the new `__cdp_event__` class variable on generated
|
|
126
|
+
event classes. For custom dataclasses pass `event_name="Domain.event"`.
|
|
127
|
+
- Calling a deprecated CDP command emits a `DeprecationWarning` instead of
|
|
128
|
+
logging a warning on every call. Python's default filters show it once per
|
|
129
|
+
call site; use `warnings.filterwarnings` or `-W` to change that. The
|
|
130
|
+
decorator is now `warnings.deprecated` (PEP 702) on Python 3.13+, so IDEs and
|
|
131
|
+
type checkers mark deprecated commands. `cdpify.shared.decorators.deprecated`
|
|
132
|
+
requires a message: `@deprecated("...")` instead of `@deprecated()`.
|
|
133
|
+
|
|
134
|
+
### Added
|
|
135
|
+
|
|
136
|
+
- Optional `max_queue_size` on `CdpClient`, `WebSocketTransport`, `listen()`,
|
|
137
|
+
`listen_all()`, and `CdpSession.listen()`. Zero keeps unlimited buffering;
|
|
138
|
+
bounded queues drop their oldest event instead of blocking command responses.
|
|
139
|
+
Subscriptions inherit the client limit unless overridden. Both subscriptions
|
|
140
|
+
and the standalone WebSocket transport expose `dropped_events` counters.
|
|
141
|
+
- `cdpify[orjson]` enables optional `orjson` encoding and decoding in the WebSocket
|
|
142
|
+
transport, with automatic fallback to `json` and outgoing text frames.
|
|
143
|
+
- Optional `CallbackTransport` protocol in `cdpify.transport` for direct event
|
|
144
|
+
delivery without a transport queue. Existing `Transport` implementations work
|
|
145
|
+
through their event iterator.
|
|
146
|
+
- `EventSubscription` registers its handler as soon as `listen()` is called, so
|
|
147
|
+
events emitted before the first read are no longer lost. It supports
|
|
148
|
+
`async with` for deterministic cleanup and `await events.next(timeout=...)`
|
|
149
|
+
for waiting on a single event. `next()` raises `CDPStreamClosedError` once
|
|
150
|
+
the stream has ended.
|
|
151
|
+
- Generated event classes expose their CDP method name as `__cdp_event__`,
|
|
152
|
+
e.g. `LoadEventFiredEvent.__cdp_event__ == "Page.loadEventFired"`.
|
|
153
|
+
- `FindInPage` domain (`client.find_in_page`) from the latest CDP spec.
|
|
154
|
+
|
|
155
|
+
### Changed
|
|
156
|
+
|
|
157
|
+
- Generated `__cdp_event__` class variables refer to the domain's event enum,
|
|
158
|
+
e.g. `LoadingFailedEvent.__cdp_event__ is NetworkEvent.LOADING_FAILED`.
|
|
159
|
+
- The root client and session views share the implementation of `listen()`.
|
|
160
|
+
- CI runs tests on Ubuntu, Windows, and macOS with Python 3.12, 3.13, and 3.14,
|
|
161
|
+
including both JSON backends.
|
|
162
|
+
- `CDPTimeoutError` also inherits from the built-in `TimeoutError`, so
|
|
163
|
+
`except TimeoutError` catches command timeouts.
|
|
164
|
+
- Docstrings of generated type aliases follow the alias, so IDEs and Sphinx
|
|
165
|
+
show them on hover.
|
|
166
|
+
- Generated fields only carry `metadata={"cdp_name": ...}` when the CDP name
|
|
167
|
+
differs from the Python name. Code that reads `field.metadata["cdp_name"]`
|
|
168
|
+
directly should fall back to `field.name`.
|
|
169
|
+
|
|
170
|
+
### Fixed
|
|
171
|
+
|
|
172
|
+
- Distributions include the `py.typed` marker so type checkers recognize the
|
|
173
|
+
installed package's inline annotations.
|
|
174
|
+
- A connection closing while a command is being sent now raises
|
|
175
|
+
`CDPConnectionError` and does not leave an unobserved response-future exception.
|
|
176
|
+
Commands submitted after shutdown starts are rejected immediately.
|
|
177
|
+
- Concurrent disconnects and browser-initiated closure now wait for the same
|
|
178
|
+
cleanup. Cancelling a disconnect waiter no longer interrupts socket cleanup
|
|
179
|
+
or masks cancellation with an error when detaching the event callback.
|
|
180
|
+
- Bounded event streams close even when their buffers are full, preserving
|
|
181
|
+
buffered events on disconnect. Explicit subscription closure releases pending
|
|
182
|
+
events immediately. Subscriptions from an earlier connection stay closed
|
|
183
|
+
after reconnecting.
|
|
184
|
+
- `decode_cdp` now decodes nested models behind `type X = ...` aliases instead
|
|
185
|
+
of leaving them as plain dicts.
|
|
186
|
+
- `decode_cdp` logs a warning when a field annotation cannot be resolved,
|
|
187
|
+
instead of silently leaving nested values as plain dicts.
|
|
188
|
+
- A malformed message from the browser no longer closes the WebSocket
|
|
189
|
+
connection. The message is logged and skipped.
|
|
190
|
+
- Events sent with `"params": null` are delivered with empty params instead of
|
|
191
|
+
being dropped as malformed.
|
|
192
|
+
- Event listeners (`listen()`, `listen_all()`, `CdpSession.listen()`) now end
|
|
193
|
+
when the transport event stream ends or the client disconnects. Previously
|
|
194
|
+
they waited forever unless a `timeout` was set. Events that were already
|
|
195
|
+
received are still delivered before the stream ends.
|
|
196
|
+
- Array type aliases keep their element type instead of `list[Any]`, e.g.
|
|
197
|
+
`DOM.Quad = list[float]` and `Target.TargetFilter = list[FilterEntry]`.
|
|
198
|
+
Fields typed as `TargetFilter` now decode to `FilterEntry` objects instead
|
|
199
|
+
of plain dicts.
|
|
200
|
+
- Generated fields and parameters whose CDP name is a Python keyword get a
|
|
201
|
+
trailing underscore (`or` → `or_`), so the generated code is valid again.
|
|
202
|
+
|
|
203
|
+
### Performance
|
|
204
|
+
|
|
205
|
+
- The default WebSocket transport delivers events directly to the router,
|
|
206
|
+
removing the intermediate queue and client event-loop task.
|
|
207
|
+
- Event models are decoded lazily once per incoming event and target class,
|
|
208
|
+
then reused by matching listeners. Unread events are not decoded; caches are
|
|
209
|
+
released together with the buffered event instead of being retained globally.
|
|
210
|
+
- `decode_cdp` builds a converter per field once per model instead of
|
|
211
|
+
inspecting type annotations for every value. Decoding typical Network
|
|
212
|
+
events is 4–7× faster (`ResponseReceivedEvent`: 56 µs → 7 µs).
|
|
213
|
+
- `import cdpify` loads CDP domains lazily on first access. Import time drops
|
|
214
|
+
from ~790 ms to ~85 ms.
|
cdpify-0.5.0/MANIFEST.in
ADDED