polymarket-apis 0.2.5__tar.gz → 0.3.8__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.

Potentially problematic release.


This version of polymarket-apis might be problematic. Click here for more details.

Files changed (82) hide show
  1. polymarket_apis-0.3.8/.idea/MypyPlugin.xml +8 -0
  2. polymarket_apis-0.3.8/.idea/dictionaries/project.xml +7 -0
  3. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/.idea/misc.xml +2 -2
  4. polymarket_apis-0.3.8/.idea/polymarket-apis.iml +10 -0
  5. polymarket_apis-0.3.8/.idea/ruff.xml +7 -0
  6. polymarket_apis-0.3.8/.idea/ryecharm.xml +6 -0
  7. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/.idea/vcs.xml +1 -1
  8. polymarket_apis-0.3.8/.idea/workspace.xml +124 -0
  9. polymarket_apis-0.3.8/.pre-commit-hooks.yaml +17 -0
  10. polymarket_apis-0.3.8/PKG-INFO +201 -0
  11. polymarket_apis-0.3.8/README.md +183 -0
  12. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/pyproject.toml +22 -5
  13. polymarket_apis-0.3.8/src/polymarket_apis/__init__.py +42 -0
  14. polymarket_apis-0.3.8/src/polymarket_apis/clients/__init__.py +23 -0
  15. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/clients/clob_client.py +237 -126
  16. polymarket_apis-0.3.8/src/polymarket_apis/clients/data_client.py +387 -0
  17. polymarket_apis-0.3.8/src/polymarket_apis/clients/gamma_client.py +822 -0
  18. polymarket_apis-0.3.8/src/polymarket_apis/clients/graphql_client.py +60 -0
  19. polymarket_apis-0.3.8/src/polymarket_apis/clients/web3_client.py +901 -0
  20. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/clients/websockets_client.py +25 -9
  21. polymarket_apis-0.3.8/src/polymarket_apis/types/__init__.py +167 -0
  22. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/types/clob_types.py +37 -16
  23. polymarket_apis-0.3.8/src/polymarket_apis/types/common.py +40 -0
  24. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/types/data_types.py +50 -5
  25. polymarket_apis-0.3.8/src/polymarket_apis/types/gamma_types.py +626 -0
  26. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/types/websockets_types.py +95 -44
  27. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/config.py +1 -0
  28. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/constants.py +5 -4
  29. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/exceptions.py +9 -0
  30. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/order_builder/builder.py +38 -20
  31. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/order_builder/helpers.py +13 -12
  32. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/signing/hmac.py +5 -1
  33. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/signing/signer.py +2 -2
  34. polymarket_apis-0.3.8/src/polymarket_apis/utilities/web3/abis/Safe.json +1138 -0
  35. polymarket_apis-0.3.8/src/polymarket_apis/utilities/web3/abis/SafeProxyFactory.json +224 -0
  36. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/web3/abis/custom_contract_errors.py +1 -1
  37. polymarket_apis-0.3.8/src/polymarket_apis/utilities/web3/helpers.py +243 -0
  38. polymarket_apis-0.3.8/uv.lock +3187 -0
  39. polymarket_apis-0.2.5/.idea/.gitignore +0 -8
  40. polymarket_apis-0.2.5/.idea/modules.xml +0 -8
  41. polymarket_apis-0.2.5/.idea/polymarket-apis.iml +0 -14
  42. polymarket_apis-0.2.5/.idea/ryecharm.xml +0 -7
  43. polymarket_apis-0.2.5/.idea/workspace.xml +0 -90
  44. polymarket_apis-0.2.5/PKG-INFO +0 -18
  45. polymarket_apis-0.2.5/README.md +0 -3
  46. polymarket_apis-0.2.5/search_yes_arbs.ipynb +0 -271
  47. polymarket_apis-0.2.5/src/polymarket_apis/__init__.py +0 -2
  48. polymarket_apis-0.2.5/src/polymarket_apis/clients/data_client.py +0 -234
  49. polymarket_apis-0.2.5/src/polymarket_apis/clients/gamma_client.py +0 -331
  50. polymarket_apis-0.2.5/src/polymarket_apis/clients/graphql_client.py +0 -182
  51. polymarket_apis-0.2.5/src/polymarket_apis/clients/web3_client.py +0 -261
  52. polymarket_apis-0.2.5/src/polymarket_apis/types/common.py +0 -51
  53. polymarket_apis-0.2.5/src/polymarket_apis/types/gamma_types.py +0 -354
  54. polymarket_apis-0.2.5/src/polymarket_apis/utilities/web3/__init__.py +0 -0
  55. polymarket_apis-0.2.5/src/polymarket_apis/utilities/web3/abis/__init__.py +0 -0
  56. polymarket_apis-0.2.5/src/polymarket_apis/utilities/web3/helpers.py +0 -8
  57. polymarket_apis-0.2.5/test.ipynb +0 -102
  58. polymarket_apis-0.2.5/uv.lock +0 -2590
  59. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/.github/workflows/ruff.yml +0 -0
  60. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/.gitignore +0 -0
  61. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/.idea/copilot.data.migration.agent.xml +0 -0
  62. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/.idea/copilot.data.migration.ask.xml +0 -0
  63. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/.idea/copilot.data.migration.ask2agent.xml +0 -0
  64. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/.idea/copilot.data.migration.edit.xml +0 -0
  65. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/.idea/ryecharm-overrides.xml +0 -0
  66. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/requirements-dev.lock +0 -0
  67. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/requirements.lock +0 -0
  68. {polymarket_apis-0.2.5/src/polymarket_apis/clients → polymarket_apis-0.3.8/src/polymarket_apis/utilities}/__init__.py +0 -0
  69. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/endpoints.py +0 -0
  70. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/headers.py +0 -0
  71. {polymarket_apis-0.2.5/src/polymarket_apis/types → polymarket_apis-0.3.8/src/polymarket_apis/utilities/order_builder}/__init__.py +0 -0
  72. {polymarket_apis-0.2.5/src/polymarket_apis/utilities → polymarket_apis-0.3.8/src/polymarket_apis/utilities/signing}/__init__.py +0 -0
  73. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/signing/eip712.py +0 -0
  74. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/signing/model.py +0 -0
  75. {polymarket_apis-0.2.5/src/polymarket_apis/utilities/order_builder → polymarket_apis-0.3.8/src/polymarket_apis/utilities/web3}/__init__.py +0 -0
  76. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/web3/abis/CTFExchange.json +0 -0
  77. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/web3/abis/ConditionalTokens.json +0 -0
  78. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/web3/abis/NegRiskAdapter.json +0 -0
  79. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/web3/abis/NegRiskCtfExchange.json +0 -0
  80. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/web3/abis/ProxyWalletFactory.json +0 -0
  81. {polymarket_apis-0.2.5 → polymarket_apis-0.3.8}/src/polymarket_apis/utilities/web3/abis/UChildERC20Proxy.json +0 -0
  82. {polymarket_apis-0.2.5/src/polymarket_apis/utilities/signing → polymarket_apis-0.3.8/src/polymarket_apis/utilities/web3/abis}/__init__.py +0 -0
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="MypySettings">
4
+ <option name="arguments" value="--follow-imports silent --exclude \.pyi$" />
5
+ <option name="mypyExecutable" value="$PROJECT_DIR$/.venv/bin/mypy" />
6
+ <option name="projectDirectory" value="$PROJECT_DIR$" />
7
+ </component>
8
+ </project>
@@ -0,0 +1,7 @@
1
+ <component name="ProjectDictionaryState">
2
+ <dictionary name="project">
3
+ <words>
4
+ <w>delegatecall</w>
5
+ </words>
6
+ </dictionary>
7
+ </component>
@@ -1,9 +1,9 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <project version="4">
3
3
  <component name="Black">
4
- <option name="sdkName" value="Python 3.12 virtualenv at ~/gemini-cli/polymarket-apis/.venv" />
4
+ <option name="sdkName" value="Python 3.12 virtualenv at ~/poly/polymarket-apis/.venv" />
5
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" />
6
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 virtualenv at ~/pr/polymarket-apis/.venv" project-jdk-type="Python SDK" />
7
7
  <component name="PyCharmDSProjectLayout">
8
8
  <option name="id" value="JupyterRightHiddenStructureLayout" />
9
9
  </component>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module version="4">
3
+ <component name="PyDocumentationSettings">
4
+ <option name="format" value="PLAIN" />
5
+ <option name="myDocStringFormat" value="Plain" />
6
+ </component>
7
+ <component name="TestRunnerService">
8
+ <option name="PROJECT_TEST_RUNNER" value="py.test" />
9
+ </component>
10
+ </module>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="RuffConfigService">
4
+ <option name="useRuffImportOptimizer" value="true" />
5
+ <option name="useRuffServer" value="true" />
6
+ </component>
7
+ </project>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="insyncwithfoo.ryecharm.configurations.ruff.Local">
4
+ <option name="executable" value="ruff" />
5
+ </component>
6
+ </project>
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <project version="4">
3
3
  <component name="VcsDirectoryMappings">
4
- <mapping directory="" vcs="Git" />
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
5
  </component>
6
6
  </project>
@@ -0,0 +1,124 @@
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="9cbf4d21-9d0c-43a0-80fe-b72fdf89ce0d" name="Changes" comment="web3: added set_all_approvals for all wallet types; enforced stricter typing overall.">
8
+ <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
9
+ <change beforePath="$PROJECT_DIR$/pyproject.toml" beforeDir="false" afterPath="$PROJECT_DIR$/pyproject.toml" afterDir="false" />
10
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/__init__.py" afterDir="false" />
11
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/clients/web3_client.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/clients/web3_client.py" afterDir="false" />
12
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/utilities/exceptions.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/utilities/exceptions.py" afterDir="false" />
13
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/utilities/web3/helpers.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/utilities/web3/helpers.py" afterDir="false" />
14
+ </list>
15
+ <option name="SHOW_DIALOG" value="false" />
16
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
17
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
18
+ <option name="LAST_RESOLUTION" value="IGNORE" />
19
+ </component>
20
+ <component name="FileTemplateManagerImpl">
21
+ <option name="RECENT_TEMPLATES">
22
+ <list>
23
+ <option value="Jupyter Notebook" />
24
+ </list>
25
+ </option>
26
+ </component>
27
+ <component name="Git.Settings">
28
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
29
+ </component>
30
+ <component name="GitHubPullRequestSearchHistory">{
31
+ &quot;lastFilter&quot;: {
32
+ &quot;state&quot;: &quot;OPEN&quot;,
33
+ &quot;assignee&quot;: &quot;qualiaenjoyer&quot;
34
+ }
35
+ }</component>
36
+ <component name="GithubPullRequestsUISettings">{
37
+ &quot;selectedUrlAndAccountId&quot;: {
38
+ &quot;url&quot;: &quot;https://github.com/qualiaenjoyer/polymarket-apis&quot;,
39
+ &quot;accountId&quot;: &quot;23ce466d-36d9-4058-83a4-50b6bb4e2918&quot;
40
+ }
41
+ }</component>
42
+ <component name="HighlightingSettingsPerFile">
43
+ <setting file="file://$PROJECT_DIR$/src/polymarket_apis/clients/clob_client.py" root0="SKIP_INSPECTION" />
44
+ </component>
45
+ <component name="ProblemsViewState">
46
+ <option name="selectedTabId" value="CurrentFile" />
47
+ </component>
48
+ <component name="ProjectColorInfo">{
49
+ &quot;customColor&quot;: &quot;&quot;,
50
+ &quot;associatedIndex&quot;: 5
51
+ }</component>
52
+ <component name="ProjectId" id="34HNc0USmRKn5QdD9z5lxgd2ljx" />
53
+ <component name="ProjectViewState">
54
+ <option name="hideEmptyMiddlePackages" value="true" />
55
+ <option name="showLibraryContents" value="true" />
56
+ </component>
57
+ <component name="PropertiesComponent">{
58
+ &quot;keyToString&quot;: {
59
+ &quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
60
+ &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
61
+ &quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
62
+ &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
63
+ &quot;git-widget-placeholder&quot;: &quot;main&quot;,
64
+ &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;,
65
+ &quot;last_opened_file_path&quot;: &quot;/Users/razvan/pr/polymarket-apis&quot;,
66
+ &quot;run.code.analysis.last.selected.profile&quot;: &quot;pProject Default&quot;,
67
+ &quot;settings.editor.selected.configurable&quot;: &quot;insyncwithfoo.ryecharm.configurations.ty.Global&quot;
68
+ }
69
+ }</component>
70
+ <component name="RecentsManager">
71
+ <key name="CopyFile.RECENT_KEYS">
72
+ <recent name="$PROJECT_DIR$/src/polymarket_apis/clients" />
73
+ <recent name="$PROJECT_DIR$/src/polymarket_apis/types" />
74
+ </key>
75
+ <key name="MoveFile.RECENT_KEYS">
76
+ <recent name="$PROJECT_DIR$" />
77
+ </key>
78
+ </component>
79
+ <component name="SharedIndexes">
80
+ <attachedChunks>
81
+ <set>
82
+ <option value="bundled-python-sdk-c298477dffd1-c13f99f12e27-com.jetbrains.pycharm.ds.sharedIndexes.bundled-DS-252.27397.107" />
83
+ </set>
84
+ </attachedChunks>
85
+ </component>
86
+ <component name="TaskManager">
87
+ <task active="true" id="Default" summary="Default task">
88
+ <changelist id="9cbf4d21-9d0c-43a0-80fe-b72fdf89ce0d" name="Changes" comment="" />
89
+ <created>1760866613742</created>
90
+ <option name="number" value="Default" />
91
+ <option name="presentableId" value="Default" />
92
+ <updated>1760866613742</updated>
93
+ </task>
94
+ <servers />
95
+ </component>
96
+ <component name="Vcs.Log.Tabs.Properties">
97
+ <option name="TAB_STATES">
98
+ <map>
99
+ <entry key="MAIN">
100
+ <value>
101
+ <State>
102
+ <option name="CUSTOM_BOOLEAN_PROPERTIES">
103
+ <map>
104
+ <entry key="Show.Git.Branches" value="true" />
105
+ </map>
106
+ </option>
107
+ </State>
108
+ </value>
109
+ </entry>
110
+ </map>
111
+ </option>
112
+ </component>
113
+ <component name="VcsManagerConfiguration">
114
+ <MESSAGE value="added pre-commit hooks for linting and formatting. small formatting changes. updated __init__s." />
115
+ <MESSAGE value="data: added closed positions, total markets traded, open interest, live volume; gamma: updated search function, added tags, teams, sports, series, comments related queries; improved datetime parsing." />
116
+ <MESSAGE value="web3: added support for safe/gnosis wallet; gamma: added missing docs fields to models" />
117
+ <MESSAGE value="added dateutil dependency" />
118
+ <MESSAGE value="lint fix" />
119
+ <MESSAGE value="clob: added get_all_history for token_id, updated get_recent_history and get_history (for start/end intervals) + raise better errors." />
120
+ <MESSAGE value="web3: added support for eoa wallets; clob: renamed proxy_address argument to address; data: added get_all_positions for queries without filters." />
121
+ <MESSAGE value="web3: added set_all_approvals for all wallet types; enforced stricter typing overall." />
122
+ <option name="LAST_COMMIT_MESSAGE" value="web3: added set_all_approvals for all wallet types; enforced stricter typing overall." />
123
+ </component>
124
+ </project>
@@ -0,0 +1,17 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ # Ruff version.
4
+ rev: v0.14.1
5
+ hooks:
6
+ # Run the linter.
7
+ - id: ruff-check
8
+ args: [ --fix ]
9
+ # Run the formatter.
10
+ - id: ruff-format
11
+
12
+ - repo: https://github.com/facebook/pyrefly-pre-commit
13
+ rev: 0.0.1
14
+ hooks:
15
+ - id: pyrefly-typecheck-system
16
+ name: Pyrefly (type checking)
17
+ pass_filenames: false
@@ -0,0 +1,201 @@
1
+ Metadata-Version: 2.4
2
+ Name: polymarket-apis
3
+ Version: 0.3.8
4
+ Summary: Unified Polymarket APIs with Pydantic data validation - Clob, Gamma, Data, Web3, Websockets, GraphQL clients.
5
+ Project-URL: repository, https://github.com/qualiaenjoyer/polymarket-apis
6
+ Author-email: Razvan Gheorghe <razvan@gheorghe.me>
7
+ Requires-Python: >=3.12
8
+ Requires-Dist: gql[httpx]>=4.0.0
9
+ Requires-Dist: httpx[http2]>=0.25.1
10
+ Requires-Dist: lomond>=0.3.3
11
+ Requires-Dist: poly-eip712-structs>=0.0.1
12
+ Requires-Dist: py-order-utils>=0.3.2
13
+ Requires-Dist: pydantic>=2.10.5
14
+ Requires-Dist: python-dateutil>=2.9.0
15
+ Requires-Dist: web3>=7.0
16
+ Requires-Dist: wsaccel>=0.6.7
17
+ Description-Content-Type: text/markdown
18
+
19
+ # polymarket-apis [![PyPI version](https://img.shields.io/pypi/v/polymarket-apis.svg)](https://pypi.org/project/polymarket-apis/)
20
+
21
+ Unified Polymarket APIs with Pydantic data validation - Clob, Gamma, Data, Web3, Websockets, GraphQL clients.
22
+
23
+ ## Polymarket Mental Models
24
+
25
+ ### Events, Markets and Outcomes
26
+
27
+ The Polymarket ecosystem is organized hierarchically:
28
+
29
+ ```mermaid
30
+ flowchart LR
31
+ A([Event]) --- B([Market A])
32
+ A --- C([Market B])
33
+ A ~~~ Dot1@{ shape: sm-circ}
34
+ A ~~~ Dot2@{ shape: sm-circ}
35
+ A ~~~ Dot3@{ shape: sm-circ}
36
+ A -.- D([Market n])
37
+ B --- E([Outcome 1])
38
+ B --- F([Outcome 2])
39
+ C --- G([Outcome 1])
40
+ C --- H([Outcome 2])
41
+ ```
42
+
43
+ - **Event** — represents a proposition or question such as “How many Fed rate cuts in 2025?”.
44
+ - Identified by a human-readable **`slug`** (e.g. `how-many-fed-rate-cuts-in-2025`) and an **event `id`** (e.g. `16085`).
45
+
46
+ - **Market** — represents a specific option for the related event (e.g. 1 rate cut in 2025). An Event has 1 or more corresponding Markets. (e.g. 9 options in this case - {0, 1, 2, ..., 7, 8 or more} rate cuts in 2025)
47
+ - Identified by a **`condition id`** (e.g. `0x8e9b6942b4dac3117dadfacac2edb390b6d62d59c14152774bb5fcd983fc134e` for 1 rate cut in 2025), a human-readable **`slug`** (e.g. `'will-1-fed-rate-cut-happen-in-2025'`) and a **market `id`** (e.g. `516724`).
48
+
49
+ - **Outcome** — represents a binary option related to a market. (most commonly `Yes`/`No`, but can be e.g. `Paris Saint-Germain`/`Inter Milan` in the case of a match where draws are not possible)
50
+ - Identified by a **`token id`** (e.g. `15353185604353847122370324954202969073036867278400776447048296624042585335546` for the `Yes` outcome in the 1 rate cut in 2025 market)
51
+
52
+ - The different APIs represent Events/Markets differently (e.g. Event, QueryEvent / ClobMarket, GammaMarket, RewardsMarket) but they all use to the same underlying identifiers.
53
+
54
+
55
+ ### Tokens
56
+ - **Tokens** are the blockchain implementation of **Outcomes** - tradable digital assets on the Polygon blockchain that users buy, hold and sell on Polygon.
57
+ - This helps ensure the logic of binary outcome prediction markets through smart contracts (e.g. collateralization, token prices going to $1.00 or $0.00 after resolution, splits/merges).
58
+
59
+ ### Splits and Merges
60
+ - Holding 1 `Yes` share + 1 `No` share in a **Market** (e.g. `'will-1-fed-rate-cut-happen-in-2025'`) covers the entire universe of possibilities and guarantees a $1.00 payout regardless of outcome. This mathematical relationship enables Polymarket's core mechanisms: splitting (1 USDC → 1 `Yes` + 1 `No`) and merging (1 `Yes` + 1 `No` → 1 USDC) at any point before resolution.
61
+ - Splits are the only way tokens are created. Either a user splits USDC into equal shares of the complementary tokens or Polymarket automatically splits USDC when it matches an `Yes` buy order at e.g. 30¢ with a `No` buy order at 70¢.
62
+
63
+ ### Unified Order Book
64
+ - Polymarket uses traditional exchange mechanics - a Central Limit Order Book (CLOB), where users place buy and sell orders that get matched by price and time priority.
65
+ - However, because the `Yes` and `No` outcomes form a complete probability universe, certain orders become mathematically equivalent - allowing the matching engine to find trades as exemplified above.
66
+ - This unified structure means every **BUY** order for `Outcome 1` at price **X** is simultaneously visible as a **SELL** order for `Outcome 2` at price **(100¢ - X)**, creating deeper liquidity and tighter spreads than separate order books would allow.
67
+
68
+ ### Negative Risk and Conversions
69
+ - If the **Markets** in and **Event** collectively cover a complete universe of possibilities (e.g. {0, 1, 2, ..., 7, 8 or more} rate cuts in 2025) and only one winner is possible, two collections of positions (made up of tokens and USDC) become mathematically equivalent and the **Event** is said to support negative risk.
70
+ - e.g. Hold 1 `No` token in the 0 rate cuts in 2025. This is equivalent to holding 1 `Yes` token in each of the other **Markets** {1, 2, ..., 7, 8 or more}.
71
+ - An interesting consequence is that holding `No` tokens in more than one **Market** is equivalent to `Yes` tokens ***and*** some USDC.
72
+ - e.g. Hold 1 `No` token on each of {0, 1, 2, ..., 7, 8 or more} rate cuts in 2025. Because only one winner is possible, this guarantees that 8 out of the 9 **Markets** resolve to `No`. This is equivalent to a position of 8 USDC.
73
+ - e.g. Hold 1 `No` token on each of {0, 1} rate cuts in 2025. This is equivalent to 1 `Yes` token in {2, ..., 7, 8 or more} and 1 USDC.
74
+ - Polymarket allows for the one way (for capital efficiency) conversion from `No` tokens to a collection of `Yes` tokens and USDC before resolution through a smart contract.
75
+
76
+ ## Clients overview
77
+ - ### PolymarketClobClient - Order book related operations
78
+ - #### Order book
79
+ - get one or more order books, best price, spread, midpoint, last trade price by `token_id`(s)
80
+ - #### Orders
81
+ - create and post limit or market orders
82
+ - cancel one or more orders by `order_id`(s)
83
+ - get active orders
84
+ - #### Trades
85
+ - get trade history for a user with filtering by `condition_id`, `token_id`, `trade_id`, time window
86
+ - #### Rewards
87
+ - check if one or more orders are scoring for liquidity rewards by `order_id`(s)
88
+ - get daily earned rewards
89
+ - check if a **Market** offers rewards by `condition_id` - **get_market_rewards()**
90
+ - get all active markets that offer rewards sorted by different metrics and ordered, filtered by a query, show your favourites from the web app - **get_reward_markets()** (*naming would do with some work*)
91
+ - #### Miscellaneous
92
+ - get recent price history by `token_id` in the last 1h, 6h, 1d, 1w, 1m
93
+ - get price history by `token_id` in start/end interval
94
+ - get all price history by `token_id` in 2 min increments
95
+ - get **ClobMarket** by `condition_id`
96
+ - get all **ClobMarkets**
97
+
98
+ ### PolymarketGammaClient - Market/Event related operations
99
+ - #### Market
100
+ - get **GammaMarket** by `market_id`
101
+ - get **GammaMarket** by `slug`
102
+ - get **GammaMarkets** with pagination (offset and limit), filter by `slug`s, `market_id`s, `token_id`s, `condition_id`s, `tag_id` or filtered by active, closed, archived, liquidity window, volume window, start date window, end date window and ordered
103
+ - get **Tags** for a **Market** by `market_id`
104
+ - #### Event
105
+ - get **Event** by `event_id`
106
+ - get **Event** by `slug`
107
+ - get **Events** with pagination, filter by `slug`s, `event_id`s, `tag_id` or filtered by active, closed, archived, liquidity window, volume window, start date window, end date window and ordered
108
+ - get all **Events** given some filtration
109
+ - search **Events**, **Tags**, **Profiles**, filter by text query, tags, active/resolved, recurrence, sort by volume/volume_24hr/liquidity/start_date/end_date/competitive
110
+ - grok event summary by **Event** `slug`
111
+ - grok election market explanation by candidate name and election title
112
+ - get **Tags** for an **Event** by `event_id`
113
+ - #### Tag
114
+ - get **Tags** with pagination, order by any **Tag** field
115
+ - get all **Tags**
116
+ - get **Tag** by `tag_id`
117
+ - get **Tag** relations by `tag_id` or `slug`
118
+ - get **Tags** related to a **Tag** by `tag_id` or `slug`
119
+ - #### Sport
120
+ - get **Teams** with pagination, filter by `league`, `name`, `abbreviation`
121
+ - get all **Teams** given some filtration
122
+ - get **Sports** with pagination, filter by `name`
123
+ - get **Sports** metadata
124
+ - #### Series
125
+ - get **Series** with pagination, filter by `slug`, closed status, order by any **Series** field
126
+ - get all **Series** given some filtration
127
+ - #### Comments
128
+ - get comments by `parent_entity_type` and `parent_entity_id` with pagination, order by any **Comment** field
129
+ - get comments by `comment_id` - gets all comments in a thread.
130
+ - get comments by user base address (not proxy address) with pagination, order by any **Comment** field
131
+
132
+ ### PolymarketDataClient - Portfolio related operations
133
+ - #### Positions
134
+ - get positions with pagination (offset and limit) by user address, filter by `condition_id`, position size, redeemability, mergeability, title
135
+ - #### Trades
136
+ - get trades with pagination, filter by `condition id`, user address, side, taker only or not, cash amount/token amount
137
+ - #### Activity
138
+ - get activity with pagination by user address, filter by type (trade, split, merge, redeem, reward, conversion), `condition_id`, time window, side, sort by timestamp/tokens/cash
139
+ - #### Holders
140
+ - get top holders by `condition_id`
141
+ - #### Value
142
+ - get positions value by user address and condition_ids
143
+ - `condition_ids` is ***None*** → total value of positions
144
+ - `condition_ids` is ***str*** → value of positions on a market
145
+ - `condition_ids` is ***list[str]*** → sum of values of positions on multiple markets
146
+ - #### Closed positions
147
+ - get closed positions, filter by condition_ids
148
+ - #### Miscellaneous
149
+ - get total number of markets traded by user address
150
+ - get open interest for a list of condition_ids
151
+ - get live volume for an event by `event_id`
152
+ - get pnl timeseries by user address for a period (1d, 1w, 1m, all) with frequency (1h, 3h, 12h, 1d)
153
+ - get overall pnl/volume by user address for a recent window (1d, 7d, 30d, all)
154
+ - get user rank on the profit/volume leaderboards by user address for a recent window (1d, 7d, 30d, all)
155
+ - get top users on the profit/volume leaderboards (at most 100) for a recent window (1d, 7d, 30d, all)
156
+
157
+ ### PolymarketWeb3Client - Blockchain related operations
158
+ - #### Supporting EOA(signature_type=0), Email/Magic wallets (signature_type=1) and Safe/Gnosis wallets (signature_type=2)
159
+ - #### Approvals
160
+ - set approvals for all needed usdc and conditional token spenders (needed for full trading functionality)
161
+ - Safe/Gnosis wallet holders need to run deploy_safe before setting approvals
162
+ - #### Balance
163
+ - get usdc balance by user address
164
+ - get token balance by `token_id` and user address
165
+ - #### Transfers
166
+ - transfer usdc to another address - needs recipient address, amount
167
+ - transfer token to another address - needs `token_id`, recipient address, amount
168
+ - #### Token/USDC conversions
169
+ - split USDC into complementary tokens - needs `condition_id`, amount, neg_risk bool
170
+ - merge complementary tokens into USDC - needs `condition_id`, amount, neg_risk bool
171
+ - redeem token into USDC - needs `condition_id`, amounts array [`Yes` shares, `No` shares], neg_risk bool
172
+ - convert 1 or more `No` tokens in a *negative risk* **Event** into a collection of USDC and `Yes` tokens on the other **Markets** in the **Event**
173
+
174
+ ### PolymarketWebsocketsClient - Real time data subscriptions
175
+ - subscribe to **market socket** with `token_ids` list, receive different event types:
176
+ - order book summary
177
+ - price change
178
+ - tick size change
179
+ - last trade price
180
+ - subscribe to **user socket** with **ApiCreds**, receive different event types:
181
+ - order (status - live, canceled, matched)
182
+ - trade (status - matched, mined, confirmed, retrying, failed)
183
+ - subscribe to **live data socket** with any combination described [here](https://github.com/Polymarket/real-time-data-client?tab=readme-ov-file#subscribe) - ***newest endpoint*** - includes the other sockets, receive:
184
+ - all of the above event types
185
+ - market (created, resolved)
186
+ - comment/reaction (created, removed)
187
+ - trades/orders_matched (all, not just yours) - filter by **Event** `slug` or **Market** `slug`
188
+ - crypto price
189
+ - request/quote (created, edited, canceled, expired) - rqf not public yet
190
+
191
+ ### PolymarketGraphQLClient/AsyncPolymarketGraphQLClient - Goldsky hosted Subgraphs queries
192
+ - instantiate with an endpoint name from:
193
+ - activity_subgraph
194
+ - fpmm_subgraph
195
+ - open_interest_subgraph
196
+ - orderbook_subgraph
197
+ - pnl_subgraph
198
+ - positions_subgraph
199
+ - sports_oracle_subgraph
200
+ - wallet_subgraph
201
+ - ****query()**** takes in a GraphQL query string and returns the raw json