polymarket-apis 0.2.2__tar.gz → 0.2.4__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 (62) hide show
  1. polymarket_apis-0.2.4/.idea/copilot.data.migration.ask.xml +6 -0
  2. polymarket_apis-0.2.4/.idea/copilot.data.migration.ask2agent.xml +6 -0
  3. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/.idea/misc.xml +4 -1
  4. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/.idea/modules.xml +1 -1
  5. polymarket_apis-0.2.2/.idea/oply.iml → polymarket_apis-0.2.4/.idea/polymarket-apis.iml +4 -2
  6. polymarket_apis-0.2.4/.idea/ryecharm-overrides.xml +11 -0
  7. polymarket_apis-0.2.4/.idea/ryecharm.xml +7 -0
  8. polymarket_apis-0.2.4/.idea/workspace.xml +93 -0
  9. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/PKG-INFO +1 -1
  10. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/pyproject.toml +2 -2
  11. polymarket_apis-0.2.4/search_yes_arbs.ipynb +271 -0
  12. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/clients/clob_client.py +37 -3
  13. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/clients/gamma_client.py +84 -64
  14. polymarket_apis-0.2.4/src/polymarket_apis/clients/graphql_client.py +182 -0
  15. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/clients/web3_client.py +1 -1
  16. polymarket_apis-0.2.4/src/polymarket_apis/clients/websockets_client.py +204 -0
  17. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/types/clob_types.py +1 -1
  18. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/types/common.py +4 -2
  19. polymarket_apis-0.2.4/src/polymarket_apis/types/gamma_types.py +354 -0
  20. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/types/websockets_types.py +156 -42
  21. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/config.py +12 -0
  22. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/endpoints.py +1 -0
  23. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/exceptions.py +6 -0
  24. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/headers.py +1 -1
  25. polymarket_apis-0.2.4/test.ipynb +102 -0
  26. polymarket_apis-0.2.4/uv.lock +2590 -0
  27. polymarket_apis-0.2.2/src/polymarket_apis/clients/websockets_client.py +0 -131
  28. polymarket_apis-0.2.2/src/polymarket_apis/types/gamma_types.py +0 -313
  29. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/.github/workflows/ruff.yml +0 -0
  30. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/.gitignore +0 -0
  31. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/.idea/.gitignore +2 -2
  32. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/.idea/copilot.data.migration.agent.xml +0 -0
  33. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/.idea/copilot.data.migration.edit.xml +0 -0
  34. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/.idea/vcs.xml +0 -0
  35. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/README.md +0 -0
  36. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/requirements-dev.lock +0 -0
  37. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/requirements.lock +0 -0
  38. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/__init__.py +0 -0
  39. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/clients/__init__.py +0 -0
  40. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/clients/data_client.py +0 -0
  41. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/types/__init__.py +0 -0
  42. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/types/data_types.py +0 -0
  43. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/__init__.py +0 -0
  44. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/constants.py +0 -0
  45. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/order_builder/__init__.py +0 -0
  46. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/order_builder/builder.py +0 -0
  47. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/order_builder/helpers.py +0 -0
  48. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/signing/__init__.py +0 -0
  49. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/signing/eip712.py +0 -0
  50. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/signing/hmac.py +0 -0
  51. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/signing/model.py +0 -0
  52. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/signing/signer.py +0 -0
  53. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/web3/__init__.py +0 -0
  54. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/web3/abis/CTFExchange.json +0 -0
  55. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/web3/abis/ConditionalTokens.json +0 -0
  56. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/web3/abis/NegRiskAdapter.json +0 -0
  57. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/web3/abis/NegRiskCtfExchange.json +0 -0
  58. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/web3/abis/ProxyWalletFactory.json +0 -0
  59. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/web3/abis/UChildERC20Proxy.json +0 -0
  60. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/web3/abis/__init__.py +0 -0
  61. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/web3/abis/custom_contract_errors.py +0 -0
  62. {polymarket_apis-0.2.2 → polymarket_apis-0.2.4}/src/polymarket_apis/utilities/web3/helpers.py +0 -0
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="AskMigrationStateService">
4
+ <option name="migrationStatus" value="COMPLETED" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="Ask2AgentMigrationStateService">
4
+ <option name="migrationStatus" value="COMPLETED" />
5
+ </component>
6
+ </project>
@@ -1,6 +1,9 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <project version="4">
3
- <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 virtualenv at ~/DataspellProjects/py-clob-client/.venv" project-jdk-type="Python SDK" />
3
+ <component name="Black">
4
+ <option name="sdkName" value="Python 3.12 virtualenv at ~/gemini-cli/polymarket-apis/.venv" />
5
+ </component>
6
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 virtualenv at ~/gemini-cli/polymarket-apis/.venv" project-jdk-type="Python SDK" />
4
7
  <component name="PyCharmDSProjectLayout">
5
8
  <option name="id" value="JupyterRightHiddenStructureLayout" />
6
9
  </component>
@@ -2,7 +2,7 @@
2
2
  <project version="4">
3
3
  <component name="ProjectModuleManager">
4
4
  <modules>
5
- <module fileurl="file://$PROJECT_DIR$/.idea/oply.iml" filepath="$PROJECT_DIR$/.idea/oply.iml" />
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/polymarket-apis.iml" filepath="$PROJECT_DIR$/.idea/polymarket-apis.iml" />
6
6
  </modules>
7
7
  </component>
8
8
  </project>
@@ -1,8 +1,10 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <module type="PYTHON_MODULE" version="4">
3
3
  <component name="NewModuleRootManager">
4
- <content url="file://$MODULE_DIR$" />
5
- <orderEntry type="jdk" jdkName="Python 3.12 virtualenv at ~/DataspellProjects/py-clob-client/.venv" jdkType="Python SDK" />
4
+ <content url="file://$MODULE_DIR$">
5
+ <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
6
+ </content>
7
+ <orderEntry type="jdk" jdkName="Python 3.12 virtualenv at ~/gemini-cli/polymarket-apis/.venv" jdkType="Python SDK" />
6
8
  <orderEntry type="sourceFolder" forTests="false" />
7
9
  </component>
8
10
  <component name="PyDocumentationSettings">
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="insyncwithfoo.ryecharm.configurations.ruff.Override">
4
+ <option name="names">
5
+ <map>
6
+ <entry key="crossPlatformExecutableResolution" value="true" />
7
+ <entry key="executable" value="true" />
8
+ </map>
9
+ </option>
10
+ </component>
11
+ </project>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="insyncwithfoo.ryecharm.configurations.ruff.Local">
4
+ <option name="crossPlatformExecutableResolution" value="false" />
5
+ <option name="executable" value="$PROJECT_DIR$/.venv/bin/ruff" />
6
+ </component>
7
+ </project>
@@ -0,0 +1,93 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="AutoImportSettings">
4
+ <option name="autoReloadType" value="SELECTIVE" />
5
+ </component>
6
+ <component name="ChangeListManager">
7
+ <list default="true" id="9f343e29-a437-4d31-9fb8-c5fea3514239" name="Changes" comment="clob - added fee rate endpoint, gamma - updated search_events and grok summaries for the new behaviours, websockets - added new live data event types. small formatting fixes">
8
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/clients/clob_client.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/clients/clob_client.py" afterDir="false" />
9
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/clients/websockets_client.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/clients/websockets_client.py" afterDir="false" />
10
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/types/clob_types.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/types/clob_types.py" afterDir="false" />
11
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/types/websockets_types.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/types/websockets_types.py" afterDir="false" />
12
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/utilities/headers.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/utilities/headers.py" afterDir="false" />
13
+ </list>
14
+ <option name="SHOW_DIALOG" value="false" />
15
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
16
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
17
+ <option name="LAST_RESOLUTION" value="IGNORE" />
18
+ </component>
19
+ <component name="FileTemplateManagerImpl">
20
+ <option name="RECENT_TEMPLATES">
21
+ <list>
22
+ <option value="Jupyter Notebook" />
23
+ </list>
24
+ </option>
25
+ </component>
26
+ <component name="Git.Settings">
27
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
28
+ </component>
29
+ <component name="HighlightingSettingsPerFile">
30
+ <setting file="file://$PROJECT_DIR$/src/polymarket_apis/types/clob_types.py" root0="SKIP_INSPECTION" />
31
+ <setting file="file://$PROJECT_DIR$/src/polymarket_apis/types/gamma_types.py" root0="FORCE_HIGHLIGHTING" />
32
+ </component>
33
+ <component name="ProblemsViewState">
34
+ <option name="selectedTabId" value="CurrentFile" />
35
+ </component>
36
+ <component name="ProjectColorInfo">{
37
+ &quot;associatedIndex&quot;: 8
38
+ }</component>
39
+ <component name="ProjectId" id="2zYa5MNq19sJIBlugDnCy8nAGXD" />
40
+ <component name="ProjectViewState">
41
+ <option name="hideEmptyMiddlePackages" value="true" />
42
+ <option name="showLibraryContents" value="true" />
43
+ </component>
44
+ <component name="PropertiesComponent">{
45
+ &quot;keyToString&quot;: {
46
+ &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
47
+ &quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
48
+ &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
49
+ &quot;git-widget-placeholder&quot;: &quot;main&quot;,
50
+ &quot;insyncwithfoo.ryecharm.ruff.caching.ruleNameToCodeMap&quot;: &quot;{\&quot;result\&quot;:{\&quot;airflow-variable-name-task-id-mismatch\&quot;:\&quot;AIR001\&quot;,\&quot;airflow-dag-no-schedule-argument\&quot;:\&quot;AIR301\&quot;,\&quot;airflow3-removal\&quot;:\&quot;AIR302\&quot;,\&quot;commented-out-code\&quot;:\&quot;ERA001\&quot;,\&quot;fast-api-redundant-response-model\&quot;:\&quot;FAST001\&quot;,\&quot;fast-api-non-annotated-dependency\&quot;:\&quot;FAST002\&quot;,\&quot;fast-api-unused-path-parameter\&quot;:\&quot;FAST003\&quot;,\&quot;sys-version-slice3\&quot;:\&quot;YTT101\&quot;,\&quot;sys-version2\&quot;:\&quot;YTT102\&quot;,\&quot;sys-version-cmp-str3\&quot;:\&quot;YTT103\&quot;,\&quot;sys-version-info0-eq3\&quot;:\&quot;YTT201\&quot;,\&quot;six-py3\&quot;:\&quot;YTT202\&quot;,\&quot;sys-version-info1-cmp-int\&quot;:\&quot;YTT203\&quot;,\&quot;sys-version-info-minor-cmp-int\&quot;:\&quot;YTT204\&quot;,\&quot;sys-version0\&quot;:\&quot;YTT301\&quot;,\&quot;sys-version-cmp-str10\&quot;:\&quot;YTT302\&quot;,\&quot;sys-version-slice1\&quot;:\&quot;YTT303\&quot;,\&quot;missing-type-function-argument\&quot;:\&quot;ANN001\&quot;,\&quot;missing-type-args\&quot;:\&quot;ANN002\&quot;,\&quot;missing-type-kwargs\&quot;:\&quot;ANN003\&quot;,\&quot;missing-type-self\&quot;:\&quot;ANN101\&quot;,\&quot;missing-type-cls\&quot;:\&quot;ANN102\&quot;,\&quot;missing-return-type-undocumented-public-function\&quot;:\&quot;ANN201\&quot;,\&quot;missing-return-type-private-function\&quot;:\&quot;ANN202\&quot;,\&quot;missing-return-type-special-method\&quot;:\&quot;ANN204\&quot;,\&quot;missing-return-type-static-method\&quot;:\&quot;ANN205\&quot;,\&quot;missing-return-type-class-method\&quot;:\&quot;ANN206\&quot;,\&quot;any-type\&quot;:\&quot;ANN401\&quot;,\&quot;cancel-scope-no-checkpoint\&quot;:\&quot;ASYNC100\&quot;,\&quot;trio-sync-call\&quot;:\&quot;ASYNC105\&quot;,\&quot;async-function-with-timeout\&quot;:\&quot;ASYNC109\&quot;,\&quot;async-busy-wait\&quot;:\&quot;ASYNC110\&quot;,\&quot;async-zero-sleep\&quot;:\&quot;ASYNC115\&quot;,\&quot;long-sleep-not-forever\&quot;:\&quot;ASYNC116\&quot;,\&quot;blocking-http-call-in-async-function\&quot;:\&quot;ASYNC210\&quot;,\&quot;create-subprocess-in-async-function\&quot;:\&quot;ASYNC220\&quot;,\&quot;run-process-in-async-function\&quot;:\&quot;ASYNC221\&quot;,\&quot;wait-for-process-in-async-function\&quot;:\&quot;ASYNC222\&quot;,\&quot;blocking-open-call-in-async-function\&quot;:\&quot;ASYNC230\&quot;,\&quot;blocking-sleep-in-async-function\&quot;:\&quot;ASYNC251\&quot;,\&quot;assert\&quot;:\&quot;S101\&quot;,\&quot;exec-builtin\&quot;:\&quot;S102\&quot;,\&quot;bad-file-permissions\&quot;:\&quot;S103\&quot;,\&quot;hardcoded-bind-all-interfaces\&quot;:\&quot;S104\&quot;,\&quot;hardcoded-password-string\&quot;:\&quot;S105\&quot;,\&quot;hardcoded-password-func-arg\&quot;:\&quot;S106\&quot;,\&quot;hardcoded-password-default\&quot;:\&quot;S107\&quot;,\&quot;hardcoded-temp-file\&quot;:\&quot;S108\&quot;,\&quot;try-except-pass\&quot;:\&quot;S110\&quot;,\&quot;try-except-continue\&quot;:\&quot;S112\&quot;,\&quot;request-without-timeout\&quot;:\&quot;S113\&quot;,\&quot;flask-debug-true\&quot;:\&quot;S201\&quot;,\&quot;tarfile-unsafe-members\&quot;:\&quot;S202\&quot;,\&quot;suspicious-pickle-usage\&quot;:\&quot;S301\&quot;,\&quot;suspicious-marshal-usage\&quot;:\&quot;S302\&quot;,\&quot;suspicious-insecure-hash-usage\&quot;:\&quot;S303\&quot;,\&quot;suspicious-insecure-cipher-usage\&quot;:\&quot;S304\&quot;,\&quot;suspicious-insecure-cipher-mode-usage\&quot;:\&quot;S305\&quot;,\&quot;suspicious-mktemp-usage\&quot;:\&quot;S306\&quot;,\&quot;suspicious-eval-usage\&quot;:\&quot;S307\&quot;,\&quot;suspicious-mark-safe-usage\&quot;:\&quot;S308\&quot;,\&quot;suspicious-url-open-usage\&quot;:\&quot;S310\&quot;,\&quot;suspicious-non-cryptographic-random-usage\&quot;:\&quot;S311\&quot;,\&quot;suspicious-telnet-usage\&quot;:\&quot;S312\&quot;,\&quot;suspicious-xmlc-element-tree-usage\&quot;:\&quot;S313\&quot;,\&quot;suspicious-xml-element-tree-usage\&quot;:\&quot;S314\&quot;,\&quot;suspicious-xml-expat-reader-usage\&quot;:\&quot;S315\&quot;,\&quot;suspicious-xml-expat-builder-usage\&quot;:\&quot;S316\&quot;,\&quot;suspicious-xml-sax-usage\&quot;:\&quot;S317\&quot;,\&quot;suspicious-xml-mini-dom-usage\&quot;:\&quot;S318\&quot;,\&quot;suspicious-xml-pull-dom-usage\&quot;:\&quot;S319\&quot;,\&quot;suspicious-xmle-tree-usage\&quot;:\&quot;S320\&quot;,\&quot;suspicious-ftp-lib-usage\&quot;:\&quot;S321\&quot;,\&quot;suspicious-unverified-context-usage\&quot;:\&quot;S323\&quot;,\&quot;hashlib-insecure-hash-function\&quot;:\&quot;S324\&quot;,\&quot;suspicious-telnetlib-import\&quot;:\&quot;S401\&quot;,\&quot;suspicious-ftplib-import\&quot;:\&quot;S402\&quot;,\&quot;suspicious-pickle-import\&quot;:\&quot;S403\&quot;,\&quot;suspicious-subprocess-import\&quot;:\&quot;S404\&quot;,\&quot;suspicious-xml-etree-import\&quot;:\&quot;S405\&quot;,\&quot;suspicious-xml-sax-import\&quot;:\&quot;S406\&quot;,\&quot;suspicious-xml-expat-import\&quot;:\&quot;S407\&quot;,\&quot;suspicious-xml-minidom-import\&quot;:\&quot;S408\&quot;,\&quot;suspicious-xml-pulldom-import\&quot;:\&quot;S409\&quot;,\&quot;suspicious-lxml-import\&quot;:\&quot;S410\&quot;,\&quot;suspicious-xmlrpc-import\&quot;:\&quot;S411\&quot;,\&quot;suspicious-httpoxy-import\&quot;:\&quot;S412\&quot;,\&quot;suspicious-pycrypto-import\&quot;:\&quot;S413\&quot;,\&quot;suspicious-pyghmi-import\&quot;:\&quot;S415\&quot;,\&quot;request-with-no-cert-validation\&quot;:\&quot;S501\&quot;,\&quot;ssl-insecure-version\&quot;:\&quot;S502\&quot;,\&quot;ssl-with-bad-defaults\&quot;:\&quot;S503\&quot;,\&quot;ssl-with-no-version\&quot;:\&quot;S504\&quot;,\&quot;weak-cryptographic-key\&quot;:\&quot;S505\&quot;,\&quot;unsafe-yaml-load\&quot;:\&quot;S506\&quot;,\&quot;ssh-no-host-key-verification\&quot;:\&quot;S507\&quot;,\&quot;snmp-insecure-version\&quot;:\&quot;S508\&quot;,\&quot;snmp-weak-cryptography\&quot;:\&quot;S509\&quot;,\&quot;paramiko-call\&quot;:\&quot;S601\&quot;,\&quot;subprocess-popen-with-shell-equals-true\&quot;:\&quot;S602\&quot;,\&quot;subprocess-without-shell-equals-true\&quot;:\&quot;S603\&quot;,\&quot;call-with-shell-equals-true\&quot;:\&quot;S604\&quot;,\&quot;start-process-with-a-shell\&quot;:\&quot;S605\&quot;,\&quot;start-process-with-no-shell\&quot;:\&quot;S606\&quot;,\&quot;start-process-with-partial-path\&quot;:\&quot;S607\&quot;,\&quot;hardcoded-sql-expression\&quot;:\&quot;S608\&quot;,\&quot;unix-command-wildcard-injection\&quot;:\&quot;S609\&quot;,\&quot;django-extra\&quot;:\&quot;S610\&quot;,\&quot;django-raw-sql\&quot;:\&quot;S611\&quot;,\&quot;logging-config-insecure-listen\&quot;:\&quot;S612\&quot;,\&quot;jinja2-autoescape-false\&quot;:\&quot;S701\&quot;,\&quot;mako-templates\&quot;:\&quot;S702\&quot;,\&quot;blind-except\&quot;:\&quot;BLE001\&quot;,\&quot;boolean-type-hint-positional-argument\&quot;:\&quot;FBT001\&quot;,\&quot;boolean-default-value-positional-argument\&quot;:\&quot;FBT002\&quot;,\&quot;boolean-positional-value-in-call\&quot;:\&quot;FBT003\&quot;,\&quot;unary-prefix-increment-decrement\&quot;:\&quot;B002\&quot;,\&quot;assignment-to-os-environ\&quot;:\&quot;B003\&quot;,\&quot;unreliable-callable-check\&quot;:\&quot;B004\&quot;,\&quot;strip-with-multi-characters\&quot;:\&quot;B005\&quot;,\&quot;mutable-argument-default\&quot;:\&quot;B006\&quot;,\&quot;unused-loop-control-variable\&quot;:\&quot;B007\&quot;,\&quot;function-call-in-default-argument\&quot;:\&quot;B008\&quot;,\&quot;get-attr-with-constant\&quot;:\&quot;B009\&quot;,\&quot;set-attr-with-constant\&quot;:\&quot;B010\&quot;,\&quot;assert-false\&quot;:\&quot;B011\&quot;,\&quot;jump-statement-in-finally\&quot;:\&quot;B012\&quot;,\&quot;redundant-tuple-in-exception-handler\&quot;:\&quot;B013\&quot;,\&quot;duplicate-handler-exception\&quot;:\&quot;B014\&quot;,\&quot;useless-comparison\&quot;:\&quot;B015\&quot;,\&quot;raise-literal\&quot;:\&quot;B016\&quot;,\&quot;assert-raises-exception\&quot;:\&quot;B017\&quot;,\&quot;useless-expression\&quot;:\&quot;B018\&quot;,\&quot;cached-instance-method\&quot;:\&quot;B019\&quot;,\&quot;loop-variable-overrides-iterator\&quot;:\&quot;B020\&quot;,\&quot;f-string-docstring\&quot;:\&quot;B021\&quot;,\&quot;useless-contextlib-suppress\&quot;:\&quot;B022\&quot;,\&quot;function-uses-loop-variable\&quot;:\&quot;B023\&quot;,\&quot;abstract-base-class-without-abstract-method\&quot;:\&quot;B024\&quot;,\&quot;duplicate-try-block-exception\&quot;:\&quot;B025\&quot;,\&quot;star-arg-unpacking-after-keyword-arg\&quot;:\&quot;B026\&quot;,\&quot;empty-method-without-abstract-decorator\&quot;:\&quot;B027\&quot;,\&quot;no-explicit-stacklevel\&quot;:\&quot;B028\&quot;,\&quot;except-with-empty-tuple\&quot;:\&quot;B029\&quot;,\&quot;except-with-non-exception-classes\&quot;:\&quot;B030\&quot;,\&quot;reuse-of-groupby-generator\&quot;:\&quot;B031\&quot;,\&quot;unintentional-type-annotation\&quot;:\&quot;B032\&quot;,\&quot;duplicate-value\&quot;:\&quot;B033\&quot;,\&quot;re-sub-positional-args\&quot;:\&quot;B034\&quot;,\&quot;static-key-dict-comprehension\&quot;:\&quot;B035\&quot;,\&quot;mutable-contextvar-default\&quot;:\&quot;B039\&quot;,\&quot;return-in-generator\&quot;:\&quot;B901\&quot;,\&quot;raise-without-from-inside-except\&quot;:\&quot;B904\&quot;,\&quot;zip-without-explicit-strict\&quot;:\&quot;B905\&quot;,\&quot;loop-iterator-mutation\&quot;:\&quot;B909\&quot;,\&quot;builtin-variable-shadowing\&quot;:\&quot;A001\&quot;,\&quot;builtin-argument-shadowing\&quot;:\&quot;A002\&quot;,\&quot;builtin-attribute-shadowing\&quot;:\&quot;A003\&quot;,\&quot;builtin-import-shadowing\&quot;:\&quot;A004\&quot;,\&quot;builtin-module-shadowing\&quot;:\&quot;A005\&quot;,\&quot;builtin-lambda-argument-shadowing\&quot;:\&quot;A006\&quot;,\&quot;missing-trailing-comma\&quot;:\&quot;COM812\&quot;,\&quot;trailing-comma-on-bare-tuple\&quot;:\&quot;COM818\&quot;,\&quot;prohibited-trailing-comma\&quot;:\&quot;COM819\&quot;,\&quot;unnecessary-generator-list\&quot;:\&quot;C400\&quot;,\&quot;unnecessary-generator-set\&quot;:\&quot;C401\&quot;,\&quot;unnecessary-generator-dict\&quot;:\&quot;C402\&quot;,\&quot;unnecessary-list-comprehension-set\&quot;:\&quot;C403\&quot;,\&quot;unnecessary-list-comprehension-dict\&quot;:\&quot;C404\&quot;,\&quot;unnecessary-literal-set\&quot;:\&quot;C405\&quot;,\&quot;unnecessary-literal-dict\&quot;:\&quot;C406\&quot;,\&quot;unnecessary-collection-call\&quot;:\&quot;C408\&quot;,\&quot;unnecessary-literal-within-tuple-call\&quot;:\&quot;C409\&quot;,\&quot;unnecessary-literal-within-list-call\&quot;:\&quot;C410\&quot;,\&quot;unnecessary-list-call\&quot;:\&quot;C411\&quot;,\&quot;unnecessary-call-around-sorted\&quot;:\&quot;C413\&quot;,\&quot;unnecessary-double-cast-or-process\&quot;:\&quot;C414\&quot;,\&quot;unnecessary-subscript-reversal\&quot;:\&quot;C415\&quot;,\&quot;unnecessary-comprehension\&quot;:\&quot;C416\&quot;,\&quot;unnecessary-map\&quot;:\&quot;C417\&quot;,\&quot;unnecessary-literal-within-dict-call\&quot;:\&quot;C418\&quot;,\&quot;unnecessary-comprehension-in-call\&quot;:\&quot;C419\&quot;,\&quot;unnecessary-dict-comprehension-for-iterable\&quot;:\&quot;C420\&quot;,\&quot;missing-copyright-notice\&quot;:\&quot;CPY001\&quot;,\&quot;call-datetime-without-tzinfo\&quot;:\&quot;DTZ001\&quot;,\&quot;call-datetime-today\&quot;:\&quot;DTZ002\&quot;,\&quot;call-datetime-utcnow\&quot;:\&quot;DTZ003\&quot;,\&quot;call-datetime-utcfromtimestamp\&quot;:\&quot;DTZ004\&quot;,\&quot;call-datetime-now-without-tzinfo\&quot;:\&quot;DTZ005\&quot;,\&quot;call-datetime-fromtimestamp\&quot;:\&quot;DTZ006\&quot;,\&quot;call-datetime-strptime-without-zone\&quot;:\&quot;DTZ007\&quot;,\&quot;call-date-today\&quot;:\&quot;DTZ011\&quot;,\&quot;call-date-fromtimestamp\&quot;:\&quot;DTZ012\&quot;,\&quot;datetime-min-max\&quot;:\&quot;DTZ901\&quot;,\&quot;debugger\&quot;:\&quot;T100\&quot;,\&quot;django-nullable-model-string-field\&quot;:\&quot;DJ001\&quot;,\&quot;django-locals-in-render-function\&quot;:\&quot;DJ003\&quot;,\&quot;django-exclude-with-model-form\&quot;:\&quot;DJ006\&quot;,\&quot;django-all-with-model-form\&quot;:\&quot;DJ007\&quot;,\&quot;django-model-without-dunder-str\&quot;:\&quot;DJ008\&quot;,\&quot;django-unordered-body-content-in-model\&quot;:\&quot;DJ012\&quot;,\&quot;django-non-leading-receiver-decorator\&quot;:\&quot;DJ013\&quot;,\&quot;raw-string-in-exception\&quot;:\&quot;EM101\&quot;,\&quot;f-string-in-exception\&quot;:\&quot;EM102\&quot;,\&quot;dot-format-in-exception\&quot;:\&quot;EM103\&quot;,\&quot;shebang-not-executable\&quot;:\&quot;EXE001\&quot;,\&quot;shebang-missing-executable-file\&quot;:\&quot;EXE002\&quot;,\&quot;shebang-missing-python\&quot;:\&quot;EXE003\&quot;,\&quot;shebang-leading-whitespace\&quot;:\&quot;EXE004\&quot;,\&quot;shebang-not-first-line\&quot;:\&quot;EXE005\&quot;,\&quot;line-contains-fixme\&quot;:\&quot;FIX001\&quot;,\&quot;line-contains-todo\&quot;:\&quot;FIX002\&quot;,\&quot;line-contains-xxx\&quot;:\&quot;FIX003\&quot;,\&quot;line-contains-hack\&quot;:\&quot;FIX004\&quot;,\&quot;future-rewritable-type-annotation\&quot;:\&quot;FA100\&quot;,\&quot;future-required-type-annotation\&quot;:\&quot;FA102\&quot;,\&quot;f-string-in-get-text-func-call\&quot;:\&quot;INT001\&quot;,\&quot;format-in-get-text-func-call\&quot;:\&quot;INT002\&quot;,\&quot;printf-in-get-text-func-call\&quot;:\&quot;INT003\&quot;,\&quot;single-line-implicit-string-concatenation\&quot;:\&quot;ISC001\&quot;,\&quot;multi-line-implicit-string-concatenation\&quot;:\&quot;ISC002\&quot;,\&quot;explicit-string-concatenation\&quot;:\&quot;ISC003\&quot;,\&quot;unconventional-import-alias\&quot;:\&quot;ICN001\&quot;,\&quot;banned-import-alias\&quot;:\&quot;ICN002\&quot;,\&quot;banned-import-from\&quot;:\&quot;ICN003\&quot;,\&quot;direct-logger-instantiation\&quot;:\&quot;LOG001\&quot;,\&quot;invalid-get-logger-argument\&quot;:\&quot;LOG002\&quot;,\&quot;exception-without-exc-info\&quot;:\&quot;LOG007\&quot;,\&quot;undocumented-warn\&quot;:\&quot;LOG009\&quot;,\&quot;root-logger-call\&quot;:\&quot;LOG015\&quot;,\&quot;logging-string-format\&quot;:\&quot;G001\&quot;,\&quot;logging-percent-format\&quot;:\&quot;G002\&quot;,\&quot;logging-string-concat\&quot;:\&quot;G003\&quot;,\&quot;logging-f-string\&quot;:\&quot;G004\&quot;,\&quot;logging-warn\&quot;:\&quot;G010\&quot;,\&quot;logging-extra-attr-clash\&quot;:\&quot;G101\&quot;,\&quot;logging-exc-info\&quot;:\&quot;G201\&quot;,\&quot;logging-redundant-exc-info\&quot;:\&quot;G202\&quot;,\&quot;implicit-namespace-package\&quot;:\&quot;INP001\&quot;,\&quot;unnecessary-placeholder\&quot;:\&quot;PIE790\&quot;,\&quot;duplicate-class-field-definition\&quot;:\&quot;PIE794\&quot;,\&quot;non-unique-enums\&quot;:\&quot;PIE796\&quot;,\&quot;unnecessary-spread\&quot;:\&quot;PIE800\&quot;,\&quot;unnecessary-dict-kwargs\&quot;:\&quot;PIE804\&quot;,\&quot;reimplemented-container-builtin\&quot;:\&quot;PIE807\&quot;,\&quot;unnecessary-range-start\&quot;:\&quot;PIE808\&quot;,\&quot;multiple-starts-ends-with\&quot;:\&quot;PIE810\&quot;,\&quot;print\&quot;:\&quot;T201\&quot;,\&quot;p-print\&quot;:\&quot;T203\&quot;,\&quot;unprefixed-type-param\&quot;:\&quot;PYI001\&quot;,\&quot;complex-if-statement-in-stub\&quot;:\&quot;PYI002\&quot;,\&quot;unrecognized-version-info-check\&quot;:\&quot;PYI003\&quot;,\&quot;patch-version-comparison\&quot;:\&quot;PYI004\&quot;,\&quot;wrong-tuple-length-version-comparison\&quot;:\&quot;PYI005\&quot;,\&quot;bad-version-info-comparison\&quot;:\&quot;PYI006\&quot;,\&quot;unrecognized-platform-check\&quot;:\&quot;PYI007\&quot;,\&quot;unrecognized-platform-name\&quot;:\&quot;PYI008\&quot;,\&quot;pass-statement-stub-body\&quot;:\&quot;PYI009\&quot;,\&quot;non-empty-stub-body\&quot;:\&quot;PYI010\&quot;,\&quot;typed-argument-default-in-stub\&quot;:\&quot;PYI011\&quot;,\&quot;pass-in-class-body\&quot;:\&quot;PYI012\&quot;,\&quot;ellipsis-in-non-empty-class-body\&quot;:\&quot;PYI013\&quot;,\&quot;argument-default-in-stub\&quot;:\&quot;PYI014\&quot;,\&quot;assignment-default-in-stub\&quot;:\&quot;PYI015\&quot;,\&quot;duplicate-union-member\&quot;:\&quot;PYI016\&quot;,\&quot;complex-assignment-in-stub\&quot;:\&quot;PYI017\&quot;,\&quot;unused-private-type-var\&quot;:\&quot;PYI018\&quot;,\&quot;custom-type-var-return-type\&quot;:\&quot;PYI019\&quot;,\&quot;quoted-annotation-in-stub\&quot;:\&quot;PYI020\&quot;,\&quot;docstring-in-stub\&quot;:\&quot;PYI021\&quot;,\&quot;collections-named-tuple\&quot;:\&quot;PYI024\&quot;,\&quot;unaliased-collections-abc-set-import\&quot;:\&quot;PYI025\&quot;,\&quot;type-alias-without-annotation\&quot;:\&quot;PYI026\&quot;,\&quot;str-or-repr-defined-in-stub\&quot;:\&quot;PYI029\&quot;,\&quot;unnecessary-literal-union\&quot;:\&quot;PYI030\&quot;,\&quot;any-eq-ne-annotation\&quot;:\&quot;PYI032\&quot;,\&quot;type-comment-in-stub\&quot;:\&quot;PYI033\&quot;,\&quot;non-self-return-type\&quot;:\&quot;PYI034\&quot;,\&quot;unassigned-special-variable-in-stub\&quot;:\&quot;PYI035\&quot;,\&quot;bad-exit-annotation\&quot;:\&quot;PYI036\&quot;,\&quot;redundant-numeric-union\&quot;:\&quot;PYI041\&quot;,\&quot;snake-case-type-alias\&quot;:\&quot;PYI042\&quot;,\&quot;t-suffixed-type-alias\&quot;:\&quot;PYI043\&quot;,\&quot;future-annotations-in-stub\&quot;:\&quot;PYI044\&quot;,\&quot;iter-method-return-iterable\&quot;:\&quot;PYI045\&quot;,\&quot;unused-private-protocol\&quot;:\&quot;PYI046\&quot;,\&quot;unused-private-type-alias\&quot;:\&quot;PYI047\&quot;,\&quot;stub-body-multiple-statements\&quot;:\&quot;PYI048\&quot;,\&quot;unused-private-typed-dict\&quot;:\&quot;PYI049\&quot;,\&quot;no-return-argument-annotation-in-stub\&quot;:\&quot;PYI050\&quot;,\&quot;redundant-literal-union\&quot;:\&quot;PYI051\&quot;,\&quot;unannotated-assignment-in-stub\&quot;:\&quot;PYI052\&quot;,\&quot;string-or-bytes-too-long\&quot;:\&quot;PYI053\&quot;,\&quot;numeric-literal-too-long\&quot;:\&quot;PYI054\&quot;,\&quot;unnecessary-type-union\&quot;:\&quot;PYI055\&quot;,\&quot;unsupported-method-call-on-all\&quot;:\&quot;PYI056\&quot;,\&quot;byte-string-usage\&quot;:\&quot;PYI057\&quot;,\&quot;generator-return-from-iter-method\&quot;:\&quot;PYI058\&quot;,\&quot;generic-not-last-base-class\&quot;:\&quot;PYI059\&quot;,\&quot;redundant-none-literal\&quot;:\&quot;PYI061\&quot;,\&quot;duplicate-literal-member\&quot;:\&quot;PYI062\&quot;,\&quot;pep484-style-positional-only-parameter\&quot;:\&quot;PYI063\&quot;,\&quot;redundant-final-literal\&quot;:\&quot;PYI064\&quot;,\&quot;bad-version-info-order\&quot;:\&quot;PYI066\&quot;,\&quot;pytest-fixture-incorrect-parentheses-style\&quot;:\&quot;PT001\&quot;,\&quot;pytest-fixture-positional-args\&quot;:\&quot;PT002\&quot;,\&quot;pytest-extraneous-scope-function\&quot;:\&quot;PT003\&quot;,\&quot;pytest-missing-fixture-name-underscore\&quot;:\&quot;PT004\&quot;,\&quot;pytest-incorrect-fixture-name-underscore\&quot;:\&quot;PT005\&quot;,\&quot;pytest-parametrize-names-wrong-type\&quot;:\&quot;PT006\&quot;,\&quot;pytest-parametrize-values-wrong-type\&quot;:\&quot;PT007\&quot;,\&quot;pytest-patch-with-lambda\&quot;:\&quot;PT008\&quot;,\&quot;pytest-unittest-assertion\&quot;:\&quot;PT009\&quot;,\&quot;pytest-raises-without-exception\&quot;:\&quot;PT010\&quot;,\&quot;pytest-raises-too-broad\&quot;:\&quot;PT011\&quot;,\&quot;pytest-raises-with-multiple-statements\&quot;:\&quot;PT012\&quot;,\&quot;pytest-incorrect-pytest-import\&quot;:\&quot;PT013\&quot;,\&quot;pytest-duplicate-parametrize-test-cases\&quot;:\&quot;PT014\&quot;,\&quot;pytest-assert-always-false\&quot;:\&quot;PT015\&quot;,\&quot;pytest-fail-without-message\&quot;:\&quot;PT016\&quot;,\&quot;pytest-assert-in-except\&quot;:\&quot;PT017\&quot;,\&quot;pytest-composite-assertion\&quot;:\&quot;PT018\&quot;,\&quot;pytest-fixture-param-without-value\&quot;:\&quot;PT019\&quot;,\&quot;pytest-deprecated-yield-fixture\&quot;:\&quot;PT020\&quot;,\&quot;pytest-fixture-finalizer-callback\&quot;:\&quot;PT021\&quot;,\&quot;pytest-useless-yield-fixture\&quot;:\&quot;PT022\&quot;,\&quot;pytest-incorrect-mark-parentheses-style\&quot;:\&quot;PT023\&quot;,\&quot;pytest-unnecessary-asyncio-mark-on-fixture\&quot;:\&quot;PT024\&quot;,\&quot;pytest-erroneous-use-fixtures-on-fixture\&quot;:\&quot;PT025\&quot;,\&quot;pytest-use-fixtures-without-parameters\&quot;:\&quot;PT026\&quot;,\&quot;pytest-unittest-raises-assertion\&quot;:\&quot;PT027\&quot;,\&quot;bad-quotes-inline-string\&quot;:\&quot;Q000\&quot;,\&quot;bad-quotes-multiline-string\&quot;:\&quot;Q001\&quot;,\&quot;bad-quotes-docstring\&quot;:\&quot;Q002\&quot;,\&quot;avoidable-escaped-quote\&quot;:\&quot;Q003\&quot;,\&quot;unnecessary-escaped-quote\&quot;:\&quot;Q004\&quot;,\&quot;unnecessary-paren-on-raise-exception\&quot;:\&quot;RSE102\&quot;,\&quot;unnecessary-return-none\&quot;:\&quot;RET501\&quot;,\&quot;implicit-return-value\&quot;:\&quot;RET502\&quot;,\&quot;implicit-return\&quot;:\&quot;RET503\&quot;,\&quot;unnecessary-assign\&quot;:\&quot;RET504\&quot;,\&quot;superfluous-else-return\&quot;:\&quot;RET505\&quot;,\&quot;superfluous-else-raise\&quot;:\&quot;RET506\&quot;,\&quot;superfluous-else-continue\&quot;:\&quot;RET507\&quot;,\&quot;superfluous-else-break\&quot;:\&quot;RET508\&quot;,\&quot;private-member-access\&quot;:\&quot;SLF001\&quot;,\&quot;duplicate-isinstance-call\&quot;:\&quot;SIM101\&quot;,\&quot;collapsible-if\&quot;:\&quot;SIM102\&quot;,\&quot;needless-bool\&quot;:\&quot;SIM103\&quot;,\&quot;suppressible-exception\&quot;:\&quot;SIM105\&quot;,\&quot;return-in-try-except-finally\&quot;:\&quot;SIM107\&quot;,\&quot;if-else-block-instead-of-if-exp\&quot;:\&quot;SIM108\&quot;,\&quot;compare-with-tuple\&quot;:\&quot;SIM109\&quot;,\&quot;reimplemented-builtin\&quot;:\&quot;SIM110\&quot;,\&quot;uncapitalized-environment-variables\&quot;:\&quot;SIM112\&quot;,\&quot;enumerate-for-loop\&quot;:\&quot;SIM113\&quot;,\&quot;if-with-same-arms\&quot;:\&quot;SIM114\&quot;,\&quot;open-file-with-context-handler\&quot;:\&quot;SIM115\&quot;,\&quot;if-else-block-instead-of-dict-lookup\&quot;:\&quot;SIM116\&quot;,\&quot;multiple-with-statements\&quot;:\&quot;SIM117\&quot;,\&quot;in-dict-keys\&quot;:\&quot;SIM118\&quot;,\&quot;negate-equal-op\&quot;:\&quot;SIM201\&quot;,\&quot;negate-not-equal-op\&quot;:\&quot;SIM202\&quot;,\&quot;double-negation\&quot;:\&quot;SIM208\&quot;,\&quot;if-expr-with-true-false\&quot;:\&quot;SIM210\&quot;,\&quot;if-expr-with-false-true\&quot;:\&quot;SIM211\&quot;,\&quot;if-expr-with-twisted-arms\&quot;:\&quot;SIM212\&quot;,\&quot;expr-and-not-expr\&quot;:\&quot;SIM220\&quot;,\&quot;expr-or-not-expr\&quot;:\&quot;SIM221\&quot;,\&quot;expr-or-true\&quot;:\&quot;SIM222\&quot;,\&quot;expr-and-false\&quot;:\&quot;SIM223\&quot;,\&quot;yoda-conditions\&quot;:\&quot;SIM300\&quot;,\&quot;if-else-block-instead-of-dict-get\&quot;:\&quot;SIM401\&quot;,\&quot;split-static-string\&quot;:\&quot;SIM905\&quot;,\&quot;dict-get-with-none-default\&quot;:\&quot;SIM910\&quot;,\&quot;zip-dict-keys-and-values\&quot;:\&quot;SIM911\&quot;,\&quot;no-slots-in-str-subclass\&quot;:\&quot;SLOT000\&quot;,\&quot;no-slots-in-tuple-subclass\&quot;:\&quot;SLOT001\&quot;,\&quot;no-slots-in-namedtuple-subclass\&quot;:\&quot;SLOT002\&quot;,\&quot;banned-api\&quot;:\&quot;TID251\&quot;,\&quot;relative-imports\&quot;:\&quot;TID252\&quot;,\&quot;banned-module-level-imports\&quot;:\&quot;TID253\&quot;,\&quot;invalid-todo-tag\&quot;:\&quot;TD001\&quot;,\&quot;missing-todo-author\&quot;:\&quot;TD002\&quot;,\&quot;missing-todo-link\&quot;:\&quot;TD003\&quot;,\&quot;missing-todo-colon\&quot;:\&quot;TD004\&quot;,\&quot;missing-todo-description\&quot;:\&quot;TD005\&quot;,\&quot;invalid-todo-capitalization\&quot;:\&quot;TD006\&quot;,\&quot;missing-space-after-todo-colon\&quot;:\&quot;TD007\&quot;,\&quot;typing-only-first-party-import\&quot;:\&quot;TC001\&quot;,\&quot;typing-only-third-party-import\&quot;:\&quot;TC002\&quot;,\&quot;typing-only-standard-library-import\&quot;:\&quot;TC003\&quot;,\&quot;runtime-import-in-type-checking-block\&quot;:\&quot;TC004\&quot;,\&quot;empty-type-checking-block\&quot;:\&quot;TC005\&quot;,\&quot;runtime-cast-value\&quot;:\&quot;TC006\&quot;,\&quot;unquoted-type-alias\&quot;:\&quot;TC007\&quot;,\&quot;quoted-type-alias\&quot;:\&quot;TC008\&quot;,\&quot;runtime-string-union\&quot;:\&quot;TC010\&quot;,\&quot;unused-function-argument\&quot;:\&quot;ARG001\&quot;,\&quot;unused-method-argument\&quot;:\&quot;ARG002\&quot;,\&quot;unused-class-method-argument\&quot;:\&quot;ARG003\&quot;,\&quot;unused-static-method-argument\&quot;:\&quot;ARG004\&quot;,\&quot;unused-lambda-argument\&quot;:\&quot;ARG005\&quot;,\&quot;os-path-abspath\&quot;:\&quot;PTH100\&quot;,\&quot;os-chmod\&quot;:\&quot;PTH101\&quot;,\&quot;os-mkdir\&quot;:\&quot;PTH102\&quot;,\&quot;os-makedirs\&quot;:\&quot;PTH103\&quot;,\&quot;os-rename\&quot;:\&quot;PTH104\&quot;,\&quot;os-replace\&quot;:\&quot;PTH105\&quot;,\&quot;os-rmdir\&quot;:\&quot;PTH106\&quot;,\&quot;os-remove\&quot;:\&quot;PTH107\&quot;,\&quot;os-unlink\&quot;:\&quot;PTH108\&quot;,\&quot;os-getcwd\&quot;:\&quot;PTH109\&quot;,\&quot;os-path-exists\&quot;:\&quot;PTH110\&quot;,\&quot;os-path-expanduser\&quot;:\&quot;PTH111\&quot;,\&quot;os-path-isdir\&quot;:\&quot;PTH112\&quot;,\&quot;os-path-isfile\&quot;:\&quot;PTH113\&quot;,\&quot;os-path-islink\&quot;:\&quot;PTH114\&quot;,\&quot;os-readlink\&quot;:\&quot;PTH115\&quot;,\&quot;os-stat\&quot;:\&quot;PTH116\&quot;,\&quot;os-path-isabs\&quot;:\&quot;PTH117\&quot;,\&quot;os-path-join\&quot;:\&quot;PTH118\&quot;,\&quot;os-path-basename\&quot;:\&quot;PTH119\&quot;,\&quot;os-path-dirname\&quot;:\&quot;PTH120\&quot;,\&quot;os-path-samefile\&quot;:\&quot;PTH121\&quot;,\&quot;os-path-splitext\&quot;:\&quot;PTH122\&quot;,\&quot;builtin-open\&quot;:\&quot;PTH123\&quot;,\&quot;py-path\&quot;:\&quot;PTH124\&quot;,\&quot;path-constructor-current-directory\&quot;:\&quot;PTH201\&quot;,\&quot;os-path-getsize\&quot;:\&quot;PTH202\&quot;,\&quot;os-path-getatime\&quot;:\&quot;PTH203\&quot;,\&quot;os-path-getmtime\&quot;:\&quot;PTH204\&quot;,\&quot;os-path-getctime\&quot;:\&quot;PTH205\&quot;,\&quot;os-sep-split\&quot;:\&quot;PTH206\&quot;,\&quot;glob\&quot;:\&quot;PTH207\&quot;,\&quot;os-listdir\&quot;:\&quot;PTH208\&quot;,\&quot;static-join-to-f-string\&quot;:\&quot;FLY002\&quot;,\&quot;unsorted-imports\&quot;:\&quot;I001\&quot;,\&quot;missing-required-import\&quot;:\&quot;I002\&quot;,\&quot;complex-structure\&quot;:\&quot;C901\&quot;,\&quot;numpy-deprecated-type-alias\&quot;:\&quot;NPY001\&quot;,\&quot;numpy-legacy-random\&quot;:\&quot;NPY002\&quot;,\&quot;numpy-deprecated-function\&quot;:\&quot;NPY003\&quot;,\&quot;numpy2-deprecation\&quot;:\&quot;NPY201\&quot;,\&quot;invalid-class-name\&quot;:\&quot;N801\&quot;,\&quot;invalid-function-name\&quot;:\&quot;N802\&quot;,\&quot;invalid-argument-name\&quot;:\&quot;N803\&quot;,\&quot;invalid-first-argument-name-for-class-method\&quot;:\&quot;N804\&quot;,\&quot;invalid-first-argument-name-for-method\&quot;:\&quot;N805\&quot;,\&quot;non-lowercase-variable-in-function\&quot;:\&quot;N806\&quot;,\&quot;dunder-function-name\&quot;:\&quot;N807\&quot;,\&quot;constant-imported-as-non-constant\&quot;:\&quot;N811\&quot;,\&quot;lowercase-imported-as-non-lowercase\&quot;:\&quot;N812\&quot;,\&quot;camelcase-imported-as-lowercase\&quot;:\&quot;N813\&quot;,\&quot;camelcase-imported-as-constant\&quot;:\&quot;N814\&quot;,\&quot;mixed-case-variable-in-class-scope\&quot;:\&quot;N815\&quot;,\&quot;mixed-case-variable-in-global-scope\&quot;:\&quot;N816\&quot;,\&quot;camelcase-imported-as-acronym\&quot;:\&quot;N817\&quot;,\&quot;error-suffix-on-exception-name\&quot;:\&quot;N818\&quot;,\&quot;invalid-module-name\&quot;:\&quot;N999\&quot;,\&quot;pandas-use-of-inplace-argument\&quot;:\&quot;PD002\&quot;,\&quot;pandas-use-of-dot-is-null\&quot;:\&quot;PD003\&quot;,\&quot;pandas-use-of-dot-not-null\&quot;:\&quot;PD004\&quot;,\&quot;pandas-use-of-dot-ix\&quot;:\&quot;PD007\&quot;,\&quot;pandas-use-of-dot-at\&quot;:\&quot;PD008\&quot;,\&quot;pandas-use-of-dot-iat\&quot;:\&quot;PD009\&quot;,\&quot;pandas-use-of-dot-pivot-or-unstack\&quot;:\&quot;PD010\&quot;,\&quot;pandas-use-of-dot-values\&quot;:\&quot;PD011\&quot;,\&quot;pandas-use-of-dot-read-table\&quot;:\&quot;PD012\&quot;,\&quot;pandas-use-of-dot-stack\&quot;:\&quot;PD013\&quot;,\&quot;pandas-use-of-pd-merge\&quot;:\&quot;PD015\&quot;,\&quot;pandas-nunique-constant-series-check\&quot;:\&quot;PD101\&quot;,\&quot;pandas-df-variable-name\&quot;:\&quot;PD901\&quot;,\&quot;unnecessary-list-cast\&quot;:\&quot;PERF101\&quot;,\&quot;incorrect-dict-iterator\&quot;:\&quot;PERF102\&quot;,\&quot;try-except-in-loop\&quot;:\&quot;PERF203\&quot;,\&quot;manual-list-comprehension\&quot;:\&quot;PERF401\&quot;,\&quot;manual-list-copy\&quot;:\&quot;PERF402\&quot;,\&quot;manual-dict-comprehension\&quot;:\&quot;PERF403\&quot;,\&quot;mixed-spaces-and-tabs\&quot;:\&quot;E101\&quot;,\&quot;indentation-with-invalid-multiple\&quot;:\&quot;E111\&quot;,\&quot;no-indented-block\&quot;:\&quot;E112\&quot;,\&quot;unexpected-indentation\&quot;:\&quot;E113\&quot;,\&quot;indentation-with-invalid-multiple-comment\&quot;:\&quot;E114\&quot;,\&quot;no-indented-block-comment\&quot;:\&quot;E115\&quot;,\&quot;unexpected-indentation-comment\&quot;:\&quot;E116\&quot;,\&quot;over-indented\&quot;:\&quot;E117\&quot;,\&quot;whitespace-after-open-bracket\&quot;:\&quot;E201\&quot;,\&quot;whitespace-before-close-bracket\&quot;:\&quot;E202\&quot;,\&quot;whitespace-before-punctuation\&quot;:\&quot;E203\&quot;,\&quot;whitespace-after-decorator\&quot;:\&quot;E204\&quot;,\&quot;whitespace-before-parameters\&quot;:\&quot;E211\&quot;,\&quot;multiple-spaces-before-operator\&quot;:\&quot;E221\&quot;,\&quot;multiple-spaces-after-operator\&quot;:\&quot;E222\&quot;,\&quot;tab-before-operator\&quot;:\&quot;E223\&quot;,\&quot;tab-after-operator\&quot;:\&quot;E224\&quot;,\&quot;missing-whitespace-around-operator\&quot;:\&quot;E225\&quot;,\&quot;missing-whitespace-around-arithmetic-operator\&quot;:\&quot;E226\&quot;,\&quot;missing-whitespace-around-bitwise-or-shift-operator\&quot;:\&quot;E227\&quot;,\&quot;missing-whitespace-around-modulo-operator\&quot;:\&quot;E228\&quot;,\&quot;missing-whitespace\&quot;:\&quot;E231\&quot;,\&quot;multiple-spaces-after-comma\&quot;:\&quot;E241\&quot;,\&quot;tab-after-comma\&quot;:\&quot;E242\&quot;,\&quot;unexpected-spaces-around-keyword-parameter-equals\&quot;:\&quot;E251\&quot;,\&quot;missing-whitespace-around-parameter-equals\&quot;:\&quot;E252\&quot;,\&quot;too-few-spaces-before-inline-comment\&quot;:\&quot;E261\&quot;,\&quot;no-space-after-inline-comment\&quot;:\&quot;E262\&quot;,\&quot;no-space-after-block-comment\&quot;:\&quot;E265\&quot;,\&quot;multiple-leading-hashes-for-block-comment\&quot;:\&quot;E266\&quot;,\&quot;multiple-spaces-after-keyword\&quot;:\&quot;E271\&quot;,\&quot;multiple-spaces-before-keyword\&quot;:\&quot;E272\&quot;,\&quot;tab-after-keyword\&quot;:\&quot;E273\&quot;,\&quot;tab-before-keyword\&quot;:\&quot;E274\&quot;,\&quot;missing-whitespace-after-keyword\&quot;:\&quot;E275\&quot;,\&quot;blank-line-between-methods\&quot;:\&quot;E301\&quot;,\&quot;blank-lines-top-level\&quot;:\&quot;E302\&quot;,\&quot;too-many-blank-lines\&quot;:\&quot;E303\&quot;,\&quot;blank-line-after-decorator\&quot;:\&quot;E304\&quot;,\&quot;blank-lines-after-function-or-class\&quot;:\&quot;E305\&quot;,\&quot;blank-lines-before-nested-definition\&quot;:\&quot;E306\&quot;,\&quot;multiple-imports-on-one-line\&quot;:\&quot;E401\&quot;,\&quot;module-import-not-at-top-of-file\&quot;:\&quot;E402\&quot;,\&quot;line-too-long\&quot;:\&quot;E501\&quot;,\&quot;redundant-backslash\&quot;:\&quot;E502\&quot;,\&quot;multiple-statements-on-one-line-colon\&quot;:\&quot;E701\&quot;,\&quot;multiple-statements-on-one-line-semicolon\&quot;:\&quot;E702\&quot;,\&quot;useless-semicolon\&quot;:\&quot;E703\&quot;,\&quot;none-comparison\&quot;:\&quot;E711\&quot;,\&quot;true-false-comparison\&quot;:\&quot;E712\&quot;,\&quot;not-in-test\&quot;:\&quot;E713\&quot;,\&quot;not-is-test\&quot;:\&quot;E714\&quot;,\&quot;type-comparison\&quot;:\&quot;E721\&quot;,\&quot;bare-except\&quot;:\&quot;E722\&quot;,\&quot;lambda-assignment\&quot;:\&quot;E731\&quot;,\&quot;ambiguous-variable-name\&quot;:\&quot;E741\&quot;,\&quot;ambiguous-class-name\&quot;:\&quot;E742\&quot;,\&quot;ambiguous-function-name\&quot;:\&quot;E743\&quot;,\&quot;io-error\&quot;:\&quot;E902\&quot;,\&quot;syntax-error\&quot;:\&quot;E999\&quot;,\&quot;tab-indentation\&quot;:\&quot;W191\&quot;,\&quot;trailing-whitespace\&quot;:\&quot;W291\&quot;,\&quot;missing-newline-at-end-of-file\&quot;:\&quot;W292\&quot;,\&quot;blank-line-with-whitespace\&quot;:\&quot;W293\&quot;,\&quot;too-many-newlines-at-end-of-file\&quot;:\&quot;W391\&quot;,\&quot;doc-line-too-long\&quot;:\&quot;W505\&quot;,\&quot;invalid-escape-sequence\&quot;:\&quot;W605\&quot;,\&quot;docstring-missing-returns\&quot;:\&quot;DOC201\&quot;,\&quot;docstring-extraneous-returns\&quot;:\&quot;DOC202\&quot;,\&quot;docstring-missing-yields\&quot;:\&quot;DOC402\&quot;,\&quot;docstring-extraneous-yields\&quot;:\&quot;DOC403\&quot;,\&quot;docstring-missing-exception\&quot;:\&quot;DOC501\&quot;,\&quot;docstring-extraneous-exception\&quot;:\&quot;DOC502\&quot;,\&quot;undocumented-public-module\&quot;:\&quot;D100\&quot;,\&quot;undocumented-public-class\&quot;:\&quot;D101\&quot;,\&quot;undocumented-public-method\&quot;:\&quot;D102\&quot;,\&quot;undocumented-public-function\&quot;:\&quot;D103\&quot;,\&quot;undocumented-public-package\&quot;:\&quot;D104\&quot;,\&quot;undocumented-magic-method\&quot;:\&quot;D105\&quot;,\&quot;undocumented-public-nested-class\&quot;:\&quot;D106\&quot;,\&quot;undocumented-public-init\&quot;:\&quot;D107\&quot;,\&quot;fits-on-one-line\&quot;:\&quot;D200\&quot;,\&quot;no-blank-line-before-function\&quot;:\&quot;D201\&quot;,\&quot;no-blank-line-after-function\&quot;:\&quot;D202\&quot;,\&quot;one-blank-line-before-class\&quot;:\&quot;D203\&quot;,\&quot;one-blank-line-after-class\&quot;:\&quot;D204\&quot;,\&quot;blank-line-after-summary\&quot;:\&quot;D205\&quot;,\&quot;indent-with-spaces\&quot;:\&quot;D206\&quot;,\&quot;under-indentation\&quot;:\&quot;D207\&quot;,\&quot;over-indentation\&quot;:\&quot;D208\&quot;,\&quot;new-line-after-last-paragraph\&quot;:\&quot;D209\&quot;,\&quot;surrounding-whitespace\&quot;:\&quot;D210\&quot;,\&quot;blank-line-before-class\&quot;:\&quot;D211\&quot;,\&quot;multi-line-summary-first-line\&quot;:\&quot;D212\&quot;,\&quot;multi-line-summary-second-line\&quot;:\&quot;D213\&quot;,\&quot;section-not-over-indented\&quot;:\&quot;D214\&quot;,\&quot;section-underline-not-over-indented\&quot;:\&quot;D215\&quot;,\&quot;triple-single-quotes\&quot;:\&quot;D300\&quot;,\&quot;escape-sequence-in-docstring\&quot;:\&quot;D301\&quot;,\&quot;ends-in-period\&quot;:\&quot;D400\&quot;,\&quot;non-imperative-mood\&quot;:\&quot;D401\&quot;,\&quot;no-signature\&quot;:\&quot;D402\&quot;,\&quot;first-line-capitalized\&quot;:\&quot;D403\&quot;,\&quot;docstring-starts-with-this\&quot;:\&quot;D404\&quot;,\&quot;capitalize-section-name\&quot;:\&quot;D405\&quot;,\&quot;new-line-after-section-name\&quot;:\&quot;D406\&quot;,\&quot;dashed-underline-after-section\&quot;:\&quot;D407\&quot;,\&quot;section-underline-after-name\&quot;:\&quot;D408\&quot;,\&quot;section-underline-matches-section-length\&quot;:\&quot;D409\&quot;,\&quot;no-blank-line-after-section\&quot;:\&quot;D410\&quot;,\&quot;no-blank-line-before-section\&quot;:\&quot;D411\&quot;,\&quot;blank-lines-between-header-and-content\&quot;:\&quot;D412\&quot;,\&quot;blank-line-after-last-section\&quot;:\&quot;D413\&quot;,\&quot;empty-docstring-section\&quot;:\&quot;D414\&quot;,\&quot;ends-in-punctuation\&quot;:\&quot;D415\&quot;,\&quot;section-name-ends-in-colon\&quot;:\&quot;D416\&quot;,\&quot;undocumented-param\&quot;:\&quot;D417\&quot;,\&quot;overload-with-docstring\&quot;:\&quot;D418\&quot;,\&quot;empty-docstring\&quot;:\&quot;D419\&quot;,\&quot;unused-import\&quot;:\&quot;F401\&quot;,\&quot;import-shadowed-by-loop-var\&quot;:\&quot;F402\&quot;,\&quot;undefined-local-with-import-star\&quot;:\&quot;F403\&quot;,\&quot;late-future-import\&quot;:\&quot;F404\&quot;,\&quot;undefined-local-with-import-star-usage\&quot;:\&quot;F405\&quot;,\&quot;undefined-local-with-nested-import-star-usage\&quot;:\&quot;F406\&quot;,\&quot;future-feature-not-defined\&quot;:\&quot;F407\&quot;,\&quot;percent-format-invalid-format\&quot;:\&quot;F501\&quot;,\&quot;percent-format-expected-mapping\&quot;:\&quot;F502\&quot;,\&quot;percent-format-expected-sequence\&quot;:\&quot;F503\&quot;,\&quot;percent-format-extra-named-arguments\&quot;:\&quot;F504\&quot;,\&quot;percent-format-missing-argument\&quot;:\&quot;F505\&quot;,\&quot;percent-format-mixed-positional-and-named\&quot;:\&quot;F506\&quot;,\&quot;percent-format-positional-count-mismatch\&quot;:\&quot;F507\&quot;,\&quot;percent-format-star-requires-sequence\&quot;:\&quot;F508\&quot;,\&quot;percent-format-unsupported-format-character\&quot;:\&quot;F509\&quot;,\&quot;string-dot-format-invalid-format\&quot;:\&quot;F521\&quot;,\&quot;string-dot-format-extra-named-arguments\&quot;:\&quot;F522\&quot;,\&quot;string-dot-format-extra-positional-arguments\&quot;:\&quot;F523\&quot;,\&quot;string-dot-format-missing-arguments\&quot;:\&quot;F524\&quot;,\&quot;string-dot-format-mixing-automatic\&quot;:\&quot;F525\&quot;,\&quot;f-string-missing-placeholders\&quot;:\&quot;F541\&quot;,\&quot;multi-value-repeated-key-literal\&quot;:\&quot;F601\&quot;,\&quot;multi-value-repeated-key-variable\&quot;:\&quot;F602\&quot;,\&quot;expressions-in-star-assignment\&quot;:\&quot;F621\&quot;,\&quot;multiple-starred-expressions\&quot;:\&quot;F622\&quot;,\&quot;assert-tuple\&quot;:\&quot;F631\&quot;,\&quot;is-literal\&quot;:\&quot;F632\&quot;,\&quot;invalid-print-syntax\&quot;:\&quot;F633\&quot;,\&quot;if-tuple\&quot;:\&quot;F634\&quot;,\&quot;break-outside-loop\&quot;:\&quot;F701\&quot;,\&quot;continue-outside-loop\&quot;:\&quot;F702\&quot;,\&quot;yield-outside-function\&quot;:\&quot;F704\&quot;,\&quot;return-outside-function\&quot;:\&quot;F706\&quot;,\&quot;default-except-not-last\&quot;:\&quot;F707\&quot;,\&quot;forward-annotation-syntax-error\&quot;:\&quot;F722\&quot;,\&quot;redefined-while-unused\&quot;:\&quot;F811\&quot;,\&quot;undefined-name\&quot;:\&quot;F821\&quot;,\&quot;undefined-export\&quot;:\&quot;F822\&quot;,\&quot;undefined-local\&quot;:\&quot;F823\&quot;,\&quot;unused-variable\&quot;:\&quot;F841\&quot;,\&quot;unused-annotation\&quot;:\&quot;F842\&quot;,\&quot;raise-not-implemented\&quot;:\&quot;F901\&quot;,\&quot;eval\&quot;:\&quot;PGH001\&quot;,\&quot;deprecated-log-warn\&quot;:\&quot;PGH002\&quot;,\&quot;blanket-type-ignore\&quot;:\&quot;PGH003\&quot;,\&quot;blanket-noqa\&quot;:\&quot;PGH004\&quot;,\&quot;invalid-mock-access\&quot;:\&quot;PGH005\&quot;,\&quot;type-name-incorrect-variance\&quot;:\&quot;PLC0105\&quot;,\&quot;type-bivariance\&quot;:\&quot;PLC0131\&quot;,\&quot;type-param-name-mismatch\&quot;:\&quot;PLC0132\&quot;,\&quot;single-string-slots\&quot;:\&quot;PLC0205\&quot;,\&quot;dict-index-missing-items\&quot;:\&quot;PLC0206\&quot;,\&quot;iteration-over-set\&quot;:\&quot;PLC0208\&quot;,\&quot;useless-import-alias\&quot;:\&quot;PLC0414\&quot;,\&quot;import-outside-top-level\&quot;:\&quot;PLC0415\&quot;,\&quot;len-test\&quot;:\&quot;PLC1802\&quot;,\&quot;compare-to-empty-string\&quot;:\&quot;PLC1901\&quot;,\&quot;non-ascii-name\&quot;:\&quot;PLC2401\&quot;,\&quot;non-ascii-import-name\&quot;:\&quot;PLC2403\&quot;,\&quot;import-private-name\&quot;:\&quot;PLC2701\&quot;,\&quot;unnecessary-dunder-call\&quot;:\&quot;PLC2801\&quot;,\&quot;unnecessary-direct-lambda-call\&quot;:\&quot;PLC3002\&quot;,\&quot;yield-in-init\&quot;:\&quot;PLE0100\&quot;,\&quot;return-in-init\&quot;:\&quot;PLE0101\&quot;,\&quot;nonlocal-and-global\&quot;:\&quot;PLE0115\&quot;,\&quot;continue-in-finally\&quot;:\&quot;PLE0116\&quot;,\&quot;nonlocal-without-binding\&quot;:\&quot;PLE0117\&quot;,\&quot;load-before-global-declaration\&quot;:\&quot;PLE0118\&quot;,\&quot;non-slot-assignment\&quot;:\&quot;PLE0237\&quot;,\&quot;duplicate-bases\&quot;:\&quot;PLE0241\&quot;,\&quot;unexpected-special-method-signature\&quot;:\&quot;PLE0302\&quot;,\&quot;invalid-length-return-type\&quot;:\&quot;PLE0303\&quot;,\&quot;invalid-bool-return-type\&quot;:\&quot;PLE0304\&quot;,\&quot;invalid-index-return-type\&quot;:\&quot;PLE0305\&quot;,\&quot;invalid-str-return-type\&quot;:\&quot;PLE0307\&quot;,\&quot;invalid-bytes-return-type\&quot;:\&quot;PLE0308\&quot;,\&quot;invalid-hash-return-type\&quot;:\&quot;PLE0309\&quot;,\&quot;invalid-all-object\&quot;:\&quot;PLE0604\&quot;,\&quot;invalid-all-format\&quot;:\&quot;PLE0605\&quot;,\&quot;potential-index-error\&quot;:\&quot;PLE0643\&quot;,\&quot;misplaced-bare-raise\&quot;:\&quot;PLE0704\&quot;,\&quot;repeated-keyword-argument\&quot;:\&quot;PLE1132\&quot;,\&quot;dict-iter-missing-items\&quot;:\&quot;PLE1141\&quot;,\&quot;await-outside-async\&quot;:\&quot;PLE1142\&quot;,\&quot;logging-too-many-args\&quot;:\&quot;PLE1205\&quot;,\&quot;logging-too-few-args\&quot;:\&quot;PLE1206\&quot;,\&quot;bad-string-format-character\&quot;:\&quot;PLE1300\&quot;,\&quot;bad-string-format-type\&quot;:\&quot;PLE1307\&quot;,\&quot;bad-str-strip-call\&quot;:\&quot;PLE1310\&quot;,\&quot;invalid-envvar-value\&quot;:\&quot;PLE1507\&quot;,\&quot;singledispatch-method\&quot;:\&quot;PLE1519\&quot;,\&quot;singledispatchmethod-function\&quot;:\&quot;PLE1520\&quot;,\&quot;yield-from-in-async-function\&quot;:\&quot;PLE1700\&quot;,\&quot;bidirectional-unicode\&quot;:\&quot;PLE2502\&quot;,\&quot;invalid-character-backspace\&quot;:\&quot;PLE2510\&quot;,\&quot;invalid-character-sub\&quot;:\&quot;PLE2512\&quot;,\&quot;invalid-character-esc\&quot;:\&quot;PLE2513\&quot;,\&quot;invalid-character-nul\&quot;:\&quot;PLE2514\&quot;,\&quot;invalid-character-zero-width-space\&quot;:\&quot;PLE2515\&quot;,\&quot;modified-iterating-set\&quot;:\&quot;PLE4703\&quot;,\&quot;comparison-with-itself\&quot;:\&quot;PLR0124\&quot;,\&quot;comparison-of-constant\&quot;:\&quot;PLR0133\&quot;,\&quot;no-classmethod-decorator\&quot;:\&quot;PLR0202\&quot;,\&quot;no-staticmethod-decorator\&quot;:\&quot;PLR0203\&quot;,\&quot;property-with-parameters\&quot;:\&quot;PLR0206\&quot;,\&quot;manual-from-import\&quot;:\&quot;PLR0402\&quot;,\&quot;too-many-public-methods\&quot;:\&quot;PLR0904\&quot;,\&quot;too-many-return-statements\&quot;:\&quot;PLR0911\&quot;,\&quot;too-many-branches\&quot;:\&quot;PLR0912\&quot;,\&quot;too-many-arguments\&quot;:\&quot;PLR0913\&quot;,\&quot;too-many-locals\&quot;:\&quot;PLR0914\&quot;,\&quot;too-many-statements\&quot;:\&quot;PLR0915\&quot;,\&quot;too-many-boolean-expressions\&quot;:\&quot;PLR0916\&quot;,\&quot;too-many-positional-arguments\&quot;:\&quot;PLR0917\&quot;,\&quot;repeated-isinstance-calls\&quot;:\&quot;PLR1701\&quot;,\&quot;too-many-nested-blocks\&quot;:\&quot;PLR1702\&quot;,\&quot;redefined-argument-from-local\&quot;:\&quot;PLR1704\&quot;,\&quot;and-or-ternary\&quot;:\&quot;PLR1706\&quot;,\&quot;useless-return\&quot;:\&quot;PLR1711\&quot;,\&quot;repeated-equality-comparison\&quot;:\&quot;PLR1714\&quot;,\&quot;boolean-chained-comparison\&quot;:\&quot;PLR1716\&quot;,\&quot;sys-exit-alias\&quot;:\&quot;PLR1722\&quot;,\&quot;if-stmt-min-max\&quot;:\&quot;PLR1730\&quot;,\&quot;unnecessary-dict-index-lookup\&quot;:\&quot;PLR1733\&quot;,\&quot;unnecessary-list-index-lookup\&quot;:\&quot;PLR1736\&quot;,\&quot;magic-value-comparison\&quot;:\&quot;PLR2004\&quot;,\&quot;empty-comment\&quot;:\&quot;PLR2044\&quot;,\&quot;collapsible-else-if\&quot;:\&quot;PLR5501\&quot;,\&quot;non-augmented-assignment\&quot;:\&quot;PLR6104\&quot;,\&quot;literal-membership\&quot;:\&quot;PLR6201\&quot;,\&quot;no-self-use\&quot;:\&quot;PLR6301\&quot;,\&quot;unnecessary-lambda\&quot;:\&quot;PLW0108\&quot;,\&quot;useless-else-on-loop\&quot;:\&quot;PLW0120\&quot;,\&quot;self-assigning-variable\&quot;:\&quot;PLW0127\&quot;,\&quot;redeclared-assigned-name\&quot;:\&quot;PLW0128\&quot;,\&quot;assert-on-string-literal\&quot;:\&quot;PLW0129\&quot;,\&quot;named-expr-without-context\&quot;:\&quot;PLW0131\&quot;,\&quot;useless-exception-statement\&quot;:\&quot;PLW0133\&quot;,\&quot;nan-comparison\&quot;:\&quot;PLW0177\&quot;,\&quot;bad-staticmethod-argument\&quot;:\&quot;PLW0211\&quot;,\&quot;super-without-brackets\&quot;:\&quot;PLW0245\&quot;,\&quot;import-self\&quot;:\&quot;PLW0406\&quot;,\&quot;global-variable-not-assigned\&quot;:\&quot;PLW0602\&quot;,\&quot;global-statement\&quot;:\&quot;PLW0603\&quot;,\&quot;global-at-module-level\&quot;:\&quot;PLW0604\&quot;,\&quot;self-or-cls-assignment\&quot;:\&quot;PLW0642\&quot;,\&quot;binary-op-exception\&quot;:\&quot;PLW0711\&quot;,\&quot;bad-open-mode\&quot;:\&quot;PLW1501\&quot;,\&quot;shallow-copy-environ\&quot;:\&quot;PLW1507\&quot;,\&quot;invalid-envvar-default\&quot;:\&quot;PLW1508\&quot;,\&quot;subprocess-popen-preexec-fn\&quot;:\&quot;PLW1509\&quot;,\&quot;subprocess-run-without-check\&quot;:\&quot;PLW1510\&quot;,\&quot;unspecified-encoding\&quot;:\&quot;PLW1514\&quot;,\&quot;eq-without-hash\&quot;:\&quot;PLW1641\&quot;,\&quot;useless-with-lock\&quot;:\&quot;PLW2101\&quot;,\&quot;redefined-loop-name\&quot;:\&quot;PLW2901\&quot;,\&quot;bad-dunder-method-name\&quot;:\&quot;PLW3201\&quot;,\&quot;nested-min-max\&quot;:\&quot;PLW3301\&quot;,\&quot;useless-metaclass-type\&quot;:\&quot;UP001\&quot;,\&quot;type-of-primitive\&quot;:\&quot;UP003\&quot;,\&quot;useless-object-inheritance\&quot;:\&quot;UP004\&quot;,\&quot;deprecated-unittest-alias\&quot;:\&quot;UP005\&quot;,\&quot;non-pep585-annotation\&quot;:\&quot;UP006\&quot;,\&quot;non-pep604-annotation\&quot;:\&quot;UP007\&quot;,\&quot;super-call-with-parameters\&quot;:\&quot;UP008\&quot;,\&quot;utf8-encoding-declaration\&quot;:\&quot;UP009\&quot;,\&quot;unnecessary-future-import\&quot;:\&quot;UP010\&quot;,\&quot;lru-cache-without-parameters\&quot;:\&quot;UP011\&quot;,\&quot;unnecessary-encode-utf8\&quot;:\&quot;UP012\&quot;,\&quot;convert-typed-dict-functional-to-class\&quot;:\&quot;UP013\&quot;,\&quot;convert-named-tuple-functional-to-class\&quot;:\&quot;UP014\&quot;,\&quot;redundant-open-modes\&quot;:\&quot;UP015\&quot;,\&quot;datetime-timezone-utc\&quot;:\&quot;UP017\&quot;,\&quot;native-literals\&quot;:\&quot;UP018\&quot;,\&quot;typing-text-str-alias\&quot;:\&quot;UP019\&quot;,\&quot;open-alias\&quot;:\&quot;UP020\&quot;,\&quot;replace-universal-newlines\&quot;:\&quot;UP021\&quot;,\&quot;replace-stdout-stderr\&quot;:\&quot;UP022\&quot;,\&quot;deprecated-c-element-tree\&quot;:\&quot;UP023\&quot;,\&quot;os-error-alias\&quot;:\&quot;UP024\&quot;,\&quot;unicode-kind-prefix\&quot;:\&quot;UP025\&quot;,\&quot;deprecated-mock-import\&quot;:\&quot;UP026\&quot;,\&quot;unpacked-list-comprehension\&quot;:\&quot;UP027\&quot;,\&quot;yield-in-for-loop\&quot;:\&quot;UP028\&quot;,\&quot;unnecessary-builtin-import\&quot;:\&quot;UP029\&quot;,\&quot;format-literals\&quot;:\&quot;UP030\&quot;,\&quot;printf-string-formatting\&quot;:\&quot;UP031\&quot;,\&quot;f-string\&quot;:\&quot;UP032\&quot;,\&quot;lru-cache-with-maxsize-none\&quot;:\&quot;UP033\&quot;,\&quot;extraneous-parentheses\&quot;:\&quot;UP034\&quot;,\&quot;deprecated-import\&quot;:\&quot;UP035\&quot;,\&quot;outdated-version-block\&quot;:\&quot;UP036\&quot;,\&quot;quoted-annotation\&quot;:\&quot;UP037\&quot;,\&quot;non-pep604-isinstance\&quot;:\&quot;UP038\&quot;,\&quot;unnecessary-class-parentheses\&quot;:\&quot;UP039\&quot;,\&quot;non-pep695-type-alias\&quot;:\&quot;UP040\&quot;,\&quot;timeout-error-alias\&quot;:\&quot;UP041\&quot;,\&quot;replace-str-enum\&quot;:\&quot;UP042\&quot;,\&quot;unnecessary-default-type-args\&quot;:\&quot;UP043\&quot;,\&quot;non-pep646-unpack\&quot;:\&quot;UP044\&quot;,\&quot;read-whole-file\&quot;:\&quot;FURB101\&quot;,\&quot;write-whole-file\&quot;:\&quot;FURB103\&quot;,\&quot;print-empty-string\&quot;:\&quot;FURB105\&quot;,\&quot;if-exp-instead-of-or-operator\&quot;:\&quot;FURB110\&quot;,\&quot;repeated-append\&quot;:\&quot;FURB113\&quot;,\&quot;f-string-number-format\&quot;:\&quot;FURB116\&quot;,\&quot;reimplemented-operator\&quot;:\&quot;FURB118\&quot;,\&quot;readlines-in-for\&quot;:\&quot;FURB129\&quot;,\&quot;delete-full-slice\&quot;:\&quot;FURB131\&quot;,\&quot;check-and-remove-from-set\&quot;:\&quot;FURB132\&quot;,\&quot;if-expr-min-max\&quot;:\&quot;FURB136\&quot;,\&quot;reimplemented-starmap\&quot;:\&quot;FURB140\&quot;,\&quot;for-loop-set-mutations\&quot;:\&quot;FURB142\&quot;,\&quot;slice-copy\&quot;:\&quot;FURB145\&quot;,\&quot;unnecessary-enumerate\&quot;:\&quot;FURB148\&quot;,\&quot;math-constant\&quot;:\&quot;FURB152\&quot;,\&quot;repeated-global\&quot;:\&quot;FURB154\&quot;,\&quot;hardcoded-string-charset\&quot;:\&quot;FURB156\&quot;,\&quot;verbose-decimal-constructor\&quot;:\&quot;FURB157\&quot;,\&quot;bit-count\&quot;:\&quot;FURB161\&quot;,\&quot;redundant-log-base\&quot;:\&quot;FURB163\&quot;,\&quot;unnecessary-from-float\&quot;:\&quot;FURB164\&quot;,\&quot;int-on-sliced-str\&quot;:\&quot;FURB166\&quot;,\&quot;regex-flag-alias\&quot;:\&quot;FURB167\&quot;,\&quot;isinstance-type-none\&quot;:\&quot;FURB168\&quot;,\&quot;type-none-comparison\&quot;:\&quot;FURB169\&quot;,\&quot;single-item-membership-test\&quot;:\&quot;FURB171\&quot;,\&quot;implicit-cwd\&quot;:\&quot;FURB177\&quot;,\&quot;meta-class-abc-meta\&quot;:\&quot;FURB180\&quot;,\&quot;hashlib-digest-hex\&quot;:\&quot;FURB181\&quot;,\&quot;list-reverse-copy\&quot;:\&quot;FURB187\&quot;,\&quot;slice-to-remove-prefix-or-suffix\&quot;:\&quot;FURB188\&quot;,\&quot;subclass-builtin\&quot;:\&quot;FURB189\&quot;,\&quot;sorted-min-max\&quot;:\&quot;FURB192\&quot;,\&quot;ambiguous-unicode-character-string\&quot;:\&quot;RUF001\&quot;,\&quot;ambiguous-unicode-character-docstring\&quot;:\&quot;RUF002\&quot;,\&quot;ambiguous-unicode-character-comment\&quot;:\&quot;RUF003\&quot;,\&quot;collection-literal-concatenation\&quot;:\&quot;RUF005\&quot;,\&quot;asyncio-dangling-task\&quot;:\&quot;RUF006\&quot;,\&quot;zip-instead-of-pairwise\&quot;:\&quot;RUF007\&quot;,\&quot;mutable-dataclass-default\&quot;:\&quot;RUF008\&quot;,\&quot;function-call-in-dataclass-default-argument\&quot;:\&quot;RUF009\&quot;,\&quot;explicit-f-string-type-conversion\&quot;:\&quot;RUF010\&quot;,\&quot;ruff-static-key-dict-comprehension\&quot;:\&quot;RUF011\&quot;,\&quot;mutable-class-default\&quot;:\&quot;RUF012\&quot;,\&quot;implicit-optional\&quot;:\&quot;RUF013\&quot;,\&quot;unnecessary-iterable-allocation-for-first-element\&quot;:\&quot;RUF015\&quot;,\&quot;invalid-index-type\&quot;:\&quot;RUF016\&quot;,\&quot;quadratic-list-summation\&quot;:\&quot;RUF017\&quot;,\&quot;assignment-in-assert\&quot;:\&quot;RUF018\&quot;,\&quot;unnecessary-key-check\&quot;:\&quot;RUF019\&quot;,\&quot;never-union\&quot;:\&quot;RUF020\&quot;,\&quot;parenthesize-chained-operators\&quot;:\&quot;RUF021\&quot;,\&quot;unsorted-dunder-all\&quot;:\&quot;RUF022\&quot;,\&quot;unsorted-dunder-slots\&quot;:\&quot;RUF023\&quot;,\&quot;mutable-fromkeys-value\&quot;:\&quot;RUF024\&quot;,\&quot;default-factory-kwarg\&quot;:\&quot;RUF026\&quot;,\&quot;missing-f-string-syntax\&quot;:\&quot;RUF027\&quot;,\&quot;invalid-formatter-suppression-comment\&quot;:\&quot;RUF028\&quot;,\&quot;unused-async\&quot;:\&quot;RUF029\&quot;,\&quot;assert-with-print-message\&quot;:\&quot;RUF030\&quot;,\&quot;incorrectly-parenthesized-tuple-in-subscript\&quot;:\&quot;RUF031\&quot;,\&quot;decimal-from-float-literal\&quot;:\&quot;RUF032\&quot;,\&quot;post-init-default\&quot;:\&quot;RUF033\&quot;,\&quot;useless-if-else\&quot;:\&quot;RUF034\&quot;,\&quot;unsafe-markup-use\&quot;:\&quot;RUF035\&quot;,\&quot;none-not-at-end-of-union\&quot;:\&quot;RUF036\&quot;,\&quot;redundant-bool-literal\&quot;:\&quot;RUF038\&quot;,\&quot;unraw-re-pattern\&quot;:\&quot;RUF039\&quot;,\&quot;invalid-assert-message-literal-argument\&quot;:\&quot;RUF040\&quot;,\&quot;unnecessary-nested-literal\&quot;:\&quot;RUF041\&quot;,\&quot;unnecessary-cast-to-int\&quot;:\&quot;RUF046\&quot;,\&quot;map-int-version-parsing\&quot;:\&quot;RUF048\&quot;,\&quot;used-dummy-variable\&quot;:\&quot;RUF052\&quot;,\&quot;unnecessary-regular-expression\&quot;:\&quot;RUF055\&quot;,\&quot;unused-noqa\&quot;:\&quot;RUF100\&quot;,\&quot;redirected-noqa\&quot;:\&quot;RUF101\&quot;,\&quot;invalid-pyproject-toml\&quot;:\&quot;RUF200\&quot;,\&quot;raise-vanilla-class\&quot;:\&quot;TRY002\&quot;,\&quot;raise-vanilla-args\&quot;:\&quot;TRY003\&quot;,\&quot;type-check-without-type-error\&quot;:\&quot;TRY004\&quot;,\&quot;reraise-no-cause\&quot;:\&quot;TRY200\&quot;,\&quot;verbose-raise\&quot;:\&quot;TRY201\&quot;,\&quot;useless-try-except\&quot;:\&quot;TRY203\&quot;,\&quot;try-consider-else\&quot;:\&quot;TRY300\&quot;,\&quot;raise-within-try\&quot;:\&quot;TRY301\&quot;,\&quot;error-instead-of-exception\&quot;:\&quot;TRY400\&quot;,\&quot;verbose-log-message\&quot;:\&quot;TRY401\&quot;},\&quot;executable\&quot;:\&quot;/Users/razvan/.rye/self/bin/ruff\&quot;,\&quot;timestamp\&quot;:1738802705}&quot;,
51
+ &quot;last_opened_file_path&quot;: &quot;/Users/razvan/DataspellProjects/polymarket-apis&quot;,
52
+ &quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;
53
+ }
54
+ }</component>
55
+ <component name="RecentsManager">
56
+ <key name="MoveFile.RECENT_KEYS">
57
+ <recent name="$PROJECT_DIR$" />
58
+ </key>
59
+ </component>
60
+ <component name="SharedIndexes">
61
+ <attachedChunks>
62
+ <set>
63
+ <option value="bundled-python-sdk-d27dc8f8c276-a636b6f4477c-com.jetbrains.pycharm.ds.sharedIndexes.bundled-DS-252.26199.84" />
64
+ </set>
65
+ </attachedChunks>
66
+ </component>
67
+ <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
68
+ <component name="TaskManager">
69
+ <task active="true" id="Default" summary="Default task">
70
+ <changelist id="9f343e29-a437-4d31-9fb8-c5fea3514239" name="Changes" comment="" />
71
+ <created>1757675426486</created>
72
+ <option name="number" value="Default" />
73
+ <option name="presentableId" value="Default" />
74
+ <updated>1757675426486</updated>
75
+ </task>
76
+ <servers />
77
+ </component>
78
+ <component name="Vcs.Log.Tabs.Properties">
79
+ <option name="TAB_STATES">
80
+ <map>
81
+ <entry key="MAIN">
82
+ <value>
83
+ <State />
84
+ </value>
85
+ </entry>
86
+ </map>
87
+ </option>
88
+ </component>
89
+ <component name="VcsManagerConfiguration">
90
+ <MESSAGE value="clob - added fee rate endpoint, gamma - updated search_events and grok summaries for the new behaviours, websockets - added new live data event types. small formatting fixes" />
91
+ <option name="LAST_COMMIT_MESSAGE" value="clob - added fee rate endpoint, gamma - updated search_events and grok summaries for the new behaviours, websockets - added new live data event types. small formatting fixes" />
92
+ </component>
93
+ </project>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: polymarket-apis
3
- Version: 0.2.2
3
+ Version: 0.2.4
4
4
  Summary: Unified Polymarket APIs - clob, gamma, data, web3, websockets
5
5
  Author-email: Razvan Gheorghe <razvan@gheorghe.me>
6
6
  Requires-Python: >=3.12
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "polymarket-apis"
3
- version = "0.2.2"
3
+ version = "0.2.4"
4
4
  description = "Unified Polymarket APIs - clob, gamma, data, web3, websockets"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -16,7 +16,7 @@ dependencies = [
16
16
  "py-order-utils>=0.3.2",
17
17
  "web3>=7.0",
18
18
  "lomond>=0.3.3",
19
- "wsaccel>=0.6.7"
19
+ "wsaccel>=0.6.7",
20
20
  ]
21
21
 
22
22
  [dependency-groups]
@@ -0,0 +1,271 @@
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "code",
5
+ "execution_count": 2,
6
+ "id": "initial_id",
7
+ "metadata": {
8
+ "ExecuteTime": {
9
+ "end_time": "2025-09-18T12:36:09.436492Z",
10
+ "start_time": "2025-09-18T12:36:09.432138Z"
11
+ },
12
+ "collapsed": true
13
+ },
14
+ "outputs": [],
15
+ "source": [
16
+ "import os\n",
17
+ "from math import ceil\n",
18
+ "from dotenv import load_dotenv\n",
19
+ "\n",
20
+ "load_dotenv(\"keys.env\")\n",
21
+ "import polars as pl\n",
22
+ "\n",
23
+ "from polymarket_apis.clients.clob_client import PolymarketClobClient\n",
24
+ "from polymarket_apis.types.gamma_types import Event\n",
25
+ "# from poly_trader.helpers import get_all_order_books_async, get_tops_by_event, simplify_event"
26
+ ]
27
+ },
28
+ {
29
+ "cell_type": "code",
30
+ "execution_count": 3,
31
+ "id": "2c2a4f3ce954d564",
32
+ "metadata": {
33
+ "ExecuteTime": {
34
+ "end_time": "2025-09-18T12:36:10.495971Z",
35
+ "start_time": "2025-09-18T12:36:10.059051Z"
36
+ }
37
+ },
38
+ "outputs": [],
39
+ "source": [
40
+ "clob = PolymarketClobClient(private_key=os.getenv(\"PRIVATE_KEY\"), proxy_address=os.getenv(\"PROXY_ADDRESS\"))"
41
+ ]
42
+ },
43
+ {
44
+ "cell_type": "code",
45
+ "execution_count": 4,
46
+ "id": "d6eab59b35f77c4b",
47
+ "metadata": {
48
+ "ExecuteTime": {
49
+ "end_time": "2025-09-18T12:38:22.775428Z",
50
+ "start_time": "2025-09-18T12:37:19.831041Z"
51
+ }
52
+ },
53
+ "outputs": [
54
+ {
55
+ "ename": "AttributeError",
56
+ "evalue": "'datetime.datetime' object has no attribute 'endswith'",
57
+ "output_type": "error",
58
+ "traceback": [
59
+ "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
60
+ "\u001b[31mAttributeError\u001b[39m Traceback (most recent call last)",
61
+ "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 3\u001b[39m\n\u001b[32m 1\u001b[39m neg_risk_events_df = pl.read_parquet(\u001b[33m\"\u001b[39m\u001b[33mdata/neg_risk_events.parquet\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m 2\u001b[39m events_df = neg_risk_events_df.filter(pl.col(\u001b[33m\"\u001b[39m\u001b[33mnegRiskAugmented\u001b[39m\u001b[33m\"\u001b[39m) == \u001b[38;5;28;01mFalse\u001b[39;00m)\n\u001b[32m----> \u001b[39m\u001b[32m3\u001b[39m events = [\u001b[43mEvent\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mevent\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;28;01mfor\u001b[39;00m event \u001b[38;5;129;01min\u001b[39;00m events_df.to_dicts()]\n",
62
+ " \u001b[31m[... skipping hidden 1 frame]\u001b[39m\n",
63
+ "\u001b[36mFile \u001b[39m\u001b[32m~/gemini-cli/polymarket-apis/src/polymarket_apis/types/common.py:16\u001b[39m, in \u001b[36mparse_timestamp\u001b[39m\u001b[34m(v)\u001b[39m\n\u001b[32m 14\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mparse_timestamp\u001b[39m(v: \u001b[38;5;28mstr\u001b[39m) -> datetime:\n\u001b[32m 15\u001b[39m \u001b[38;5;66;03m# Normalize '+00' to '+0000' for timezone\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m16\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[43mv\u001b[49m\u001b[43m.\u001b[49m\u001b[43mendswith\u001b[49m(\u001b[33m\"\u001b[39m\u001b[33m+00\u001b[39m\u001b[33m\"\u001b[39m):\n\u001b[32m 17\u001b[39m v = v[:-\u001b[32m3\u001b[39m] + \u001b[33m\"\u001b[39m\u001b[33m+0000\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 19\u001b[39m \u001b[38;5;66;03m# Pad fractional seconds to 6 digits if present\u001b[39;00m\n",
64
+ "\u001b[31mAttributeError\u001b[39m: 'datetime.datetime' object has no attribute 'endswith'"
65
+ ]
66
+ }
67
+ ],
68
+ "source": [
69
+ "neg_risk_events_df = pl.read_parquet(\"data/neg_risk_events.parquet\")\n",
70
+ "events_df = neg_risk_events_df.filter(pl.col(\"negRiskAugmented\") == False)\n",
71
+ "events = [Event(**event) for event in events_df.to_dicts()]"
72
+ ]
73
+ },
74
+ {
75
+ "cell_type": "code",
76
+ "execution_count": 5,
77
+ "id": "ab98a4c3e16930e8",
78
+ "metadata": {
79
+ "ExecuteTime": {
80
+ "end_time": "2025-09-18T12:38:58.446680Z",
81
+ "start_time": "2025-09-18T12:38:35.097433Z"
82
+ }
83
+ },
84
+ "outputs": [
85
+ {
86
+ "ename": "AttributeError",
87
+ "evalue": "'datetime.datetime' object has no attribute 'endswith'",
88
+ "output_type": "error",
89
+ "traceback": [
90
+ "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
91
+ "\u001b[31mAttributeError\u001b[39m Traceback (most recent call last)",
92
+ "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[5]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m a = \u001b[43mEvent\u001b[49m\u001b[43m(\u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mneg_risk_events_df\u001b[49m\u001b[43m.\u001b[49m\u001b[43mto_dicts\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m[\u001b[49m\u001b[32;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n",
93
+ " \u001b[31m[... skipping hidden 1 frame]\u001b[39m\n",
94
+ "\u001b[36mFile \u001b[39m\u001b[32m~/gemini-cli/polymarket-apis/src/polymarket_apis/types/common.py:16\u001b[39m, in \u001b[36mparse_timestamp\u001b[39m\u001b[34m(v)\u001b[39m\n\u001b[32m 14\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mparse_timestamp\u001b[39m(v: \u001b[38;5;28mstr\u001b[39m) -> datetime:\n\u001b[32m 15\u001b[39m \u001b[38;5;66;03m# Normalize '+00' to '+0000' for timezone\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m16\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[43mv\u001b[49m\u001b[43m.\u001b[49m\u001b[43mendswith\u001b[49m(\u001b[33m\"\u001b[39m\u001b[33m+00\u001b[39m\u001b[33m\"\u001b[39m):\n\u001b[32m 17\u001b[39m v = v[:-\u001b[32m3\u001b[39m] + \u001b[33m\"\u001b[39m\u001b[33m+0000\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 19\u001b[39m \u001b[38;5;66;03m# Pad fractional seconds to 6 digits if present\u001b[39;00m\n",
95
+ "\u001b[31mAttributeError\u001b[39m: 'datetime.datetime' object has no attribute 'endswith'"
96
+ ]
97
+ }
98
+ ],
99
+ "source": [
100
+ "a = Event(**neg_risk_events_df.to_dicts()[0])"
101
+ ]
102
+ },
103
+ {
104
+ "cell_type": "code",
105
+ "execution_count": 25,
106
+ "id": "471bbcf1cfab6a9b",
107
+ "metadata": {
108
+ "ExecuteTime": {
109
+ "end_time": "2025-09-18T12:12:12.403820Z",
110
+ "start_time": "2025-09-12T10:13:08.564846Z"
111
+ }
112
+ },
113
+ "outputs": [],
114
+ "source": [
115
+ "simple_events = [simplify_event(event) for event in events]\n",
116
+ "yes_tokens = [market.token_ids[0] for event in simple_events for market in event.markets]\n",
117
+ "no_tokens = [market.token_ids[1] for event in simple_events for market in event.markets]\n",
118
+ "yes_books = await get_all_order_books_async(clob=clob, token_ids=yes_tokens, batch_size=ceil(len(yes_tokens) / 3))\n",
119
+ "yes_books_dict = {book.token_id: book for book in yes_books}\n",
120
+ "tops_by_event = get_tops_by_event(simple_events, yes_books_dict)"
121
+ ]
122
+ },
123
+ {
124
+ "cell_type": "code",
125
+ "execution_count": 26,
126
+ "id": "42dffd7e1e89bf58",
127
+ "metadata": {
128
+ "ExecuteTime": {
129
+ "end_time": "2025-09-18T12:12:12.404305Z",
130
+ "start_time": "2025-09-12T10:13:08.861795Z"
131
+ }
132
+ },
133
+ "outputs": [
134
+ {
135
+ "name": "stdout",
136
+ "output_type": "stream",
137
+ "text": [
138
+ "[0.964, 6.36, 0.988, 7.39, 'will-bitcoin-activate-op-ctv-or-op-cat-in-2025']\n"
139
+ ]
140
+ }
141
+ ],
142
+ "source": [
143
+ " # Calculate sums and find smallest sizes for each event\n",
144
+ "result_list = []\n",
145
+ "for event_slug, event_data in tops_by_event.items():\n",
146
+ " sum_bids = round(sum(market['top']['bid']['price'] for market in event_data['tops']),3)\n",
147
+ " sum_asks = round(sum(market['top']['ask']['price'] for market in event_data['tops']),3)\n",
148
+ "\n",
149
+ " if 0.1 < sum_asks < 1:\n",
150
+ " bid_sizes = [market['top']['bid']['size'] for market in event_data['tops']]\n",
151
+ " ask_sizes = [market['top']['ask']['size'] for market in event_data['tops']]\n",
152
+ "\n",
153
+ " smallest_bid_size = min(bid_sizes) if bid_sizes else 0\n",
154
+ " smallest_ask_size = min(ask_sizes) if ask_sizes else 0\n",
155
+ "\n",
156
+ " result_list.append([\n",
157
+ " sum_bids,\n",
158
+ " smallest_bid_size,\n",
159
+ " sum_asks,\n",
160
+ " smallest_ask_size,\n",
161
+ " event_slug,\n",
162
+ " ])\n",
163
+ "\n",
164
+ "for result in result_list:\n",
165
+ " print(result)"
166
+ ]
167
+ },
168
+ {
169
+ "cell_type": "code",
170
+ "execution_count": 27,
171
+ "id": "6c81ad4b709e1ffd",
172
+ "metadata": {
173
+ "ExecuteTime": {
174
+ "end_time": "2025-09-18T12:12:12.404496Z",
175
+ "start_time": "2025-09-12T10:13:08.910819Z"
176
+ }
177
+ },
178
+ "outputs": [],
179
+ "source": [
180
+ "slugs = [item[4] for item in result_list]\n",
181
+ "yes_arbs_list_df = neg_risk_events_df.filter(pl.col(\"slug\").is_in(slugs))\n",
182
+ "yes_arbs_list_df.write_parquet(\"data/yes_arbs_list.parquet\")"
183
+ ]
184
+ },
185
+ {
186
+ "cell_type": "code",
187
+ "execution_count": 28,
188
+ "id": "fc982f729136ee61",
189
+ "metadata": {
190
+ "ExecuteTime": {
191
+ "end_time": "2025-09-18T12:12:12.404747Z",
192
+ "start_time": "2025-09-12T10:13:09.008007Z"
193
+ }
194
+ },
195
+ "outputs": [],
196
+ "source": [
197
+ "# token_id_to_find = \"6427519506286419532134012763551211259629796084507143468688888941057296525505\"\n",
198
+ "#\n",
199
+ "# matching_event = next(\n",
200
+ "# (event for event in simple_events if any(market.token_ids and market.token_ids[0] == token_id_to_find for market in event.markets)),\n",
201
+ "# None\n",
202
+ "# )\n",
203
+ "#\n",
204
+ "# if matching_event:\n",
205
+ "# print(f\"Found event: {matching_event}\")\n",
206
+ "# else:\n",
207
+ "# print(\"No matching event found.\")"
208
+ ]
209
+ },
210
+ {
211
+ "cell_type": "code",
212
+ "execution_count": null,
213
+ "id": "f3e5ad63c37247dd",
214
+ "metadata": {
215
+ "ExecuteTime": {
216
+ "end_time": "2025-09-18T12:12:12.422263Z",
217
+ "start_time": "2025-09-12T10:13:09.057752Z"
218
+ }
219
+ },
220
+ "outputs": [],
221
+ "source": []
222
+ },
223
+ {
224
+ "cell_type": "code",
225
+ "execution_count": null,
226
+ "id": "5d914bc044ec2956",
227
+ "metadata": {
228
+ "ExecuteTime": {
229
+ "end_time": "2025-09-18T12:12:12.422872Z",
230
+ "start_time": "2025-09-12T10:13:09.108236Z"
231
+ }
232
+ },
233
+ "outputs": [],
234
+ "source": []
235
+ },
236
+ {
237
+ "cell_type": "code",
238
+ "execution_count": null,
239
+ "id": "31df401d65512254",
240
+ "metadata": {
241
+ "ExecuteTime": {
242
+ "end_time": "2025-09-18T12:12:12.423339Z",
243
+ "start_time": "2025-09-12T10:13:09.112406Z"
244
+ }
245
+ },
246
+ "outputs": [],
247
+ "source": []
248
+ }
249
+ ],
250
+ "metadata": {
251
+ "kernelspec": {
252
+ "display_name": ".venv",
253
+ "language": "python",
254
+ "name": "python3"
255
+ },
256
+ "language_info": {
257
+ "codemirror_mode": {
258
+ "name": "ipython",
259
+ "version": 3
260
+ },
261
+ "file_extension": ".py",
262
+ "mimetype": "text/x-python",
263
+ "name": "python",
264
+ "nbconvert_exporter": "python",
265
+ "pygments_lexer": "ipython3",
266
+ "version": "3.12.8"
267
+ }
268
+ },
269
+ "nbformat": 4,
270
+ "nbformat_minor": 5
271
+ }