polymarket-apis 0.2.6__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (61) hide show
  1. polymarket_apis-0.3.0/.idea/copilot.data.migration.agent.xml +6 -0
  2. polymarket_apis-0.3.0/.idea/copilot.data.migration.ask.xml +6 -0
  3. polymarket_apis-0.3.0/.idea/copilot.data.migration.ask2agent.xml +6 -0
  4. polymarket_apis-0.3.0/.idea/copilot.data.migration.edit.xml +6 -0
  5. polymarket_apis-0.3.0/.idea/misc.xml +10 -0
  6. polymarket_apis-0.3.0/.idea/polymarket-apis.iml +10 -0
  7. polymarket_apis-0.3.0/.idea/vcs.xml +6 -0
  8. polymarket_apis-0.3.0/.idea/workspace.xml +138 -0
  9. polymarket_apis-0.3.0/PKG-INFO +161 -0
  10. polymarket_apis-0.3.0/README.md +145 -0
  11. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/pyproject.toml +2 -1
  12. polymarket_apis-0.3.0/src/pl.ipynb +1179 -0
  13. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/clients/clob_client.py +17 -13
  14. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/clients/data_client.py +5 -5
  15. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/clients/gamma_client.py +10 -7
  16. polymarket_apis-0.3.0/src/polymarket_apis/clients/graphql_client.py +43 -0
  17. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/clients/web3_client.py +1 -0
  18. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/clients/websockets_client.py +1 -2
  19. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/types/clob_types.py +2 -2
  20. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/types/data_types.py +2 -2
  21. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/types/websockets_types.py +3 -3
  22. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/order_builder/builder.py +3 -1
  23. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/order_builder/helpers.py +13 -11
  24. polymarket_apis-0.3.0/src/polymarket_apis/utilities/schemas/activity-subgraph.graphql +86 -0
  25. polymarket_apis-0.3.0/src/polymarket_apis/utilities/schemas/open-interest.graphql +30 -0
  26. polymarket_apis-0.3.0/src/polymarket_apis/utilities/web3/abis/__init__.py +0 -0
  27. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/uv.lock +41 -1
  28. polymarket_apis-0.2.6/.idea/workspace.xml +0 -110
  29. polymarket_apis-0.2.6/PKG-INFO +0 -18
  30. polymarket_apis-0.2.6/README.md +0 -3
  31. polymarket_apis-0.2.6/src/polymarket_apis/__init__.py +0 -2
  32. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/.github/workflows/ruff.yml +0 -0
  33. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/.gitignore +0 -0
  34. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/requirements-dev.lock +0 -0
  35. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/requirements.lock +0 -0
  36. {polymarket_apis-0.2.6/src/polymarket_apis/clients → polymarket_apis-0.3.0/src/polymarket_apis}/__init__.py +0 -0
  37. {polymarket_apis-0.2.6/src/polymarket_apis/types → polymarket_apis-0.3.0/src/polymarket_apis/clients}/__init__.py +0 -0
  38. {polymarket_apis-0.2.6/src/polymarket_apis/utilities → polymarket_apis-0.3.0/src/polymarket_apis/types}/__init__.py +0 -0
  39. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/types/common.py +0 -0
  40. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/types/gamma_types.py +0 -0
  41. {polymarket_apis-0.2.6/src/polymarket_apis/utilities/order_builder → polymarket_apis-0.3.0/src/polymarket_apis/utilities}/__init__.py +0 -0
  42. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/config.py +0 -0
  43. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/constants.py +0 -0
  44. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/endpoints.py +0 -0
  45. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/exceptions.py +0 -0
  46. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/headers.py +0 -0
  47. {polymarket_apis-0.2.6/src/polymarket_apis/utilities/signing → polymarket_apis-0.3.0/src/polymarket_apis/utilities/order_builder}/__init__.py +0 -0
  48. {polymarket_apis-0.2.6/src/polymarket_apis/utilities/web3 → polymarket_apis-0.3.0/src/polymarket_apis/utilities/signing}/__init__.py +0 -0
  49. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/signing/eip712.py +0 -0
  50. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/signing/hmac.py +0 -0
  51. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/signing/model.py +0 -0
  52. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/signing/signer.py +0 -0
  53. {polymarket_apis-0.2.6/src/polymarket_apis/utilities/web3/abis → polymarket_apis-0.3.0/src/polymarket_apis/utilities/web3}/__init__.py +0 -0
  54. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/web3/abis/CTFExchange.json +0 -0
  55. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/web3/abis/ConditionalTokens.json +0 -0
  56. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/web3/abis/NegRiskAdapter.json +0 -0
  57. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/web3/abis/NegRiskCtfExchange.json +0 -0
  58. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/web3/abis/ProxyWalletFactory.json +0 -0
  59. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/web3/abis/UChildERC20Proxy.json +0 -0
  60. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/src/polymarket_apis/utilities/web3/abis/custom_contract_errors.py +0 -0
  61. {polymarket_apis-0.2.6 → polymarket_apis-0.3.0}/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="AgentMigrationStateService">
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="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>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="EditMigrationStateService">
4
+ <option name="migrationStatus" value="COMPLETED" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="Black">
4
+ <option name="sdkName" value="Python 3.12 virtualenv at ~/poly/polymarket-apis/.venv" />
5
+ </component>
6
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 virtualenv at ~/poly/polymarket-apis/.venv" project-jdk-type="Python SDK" />
7
+ <component name="PyCharmDSProjectLayout">
8
+ <option name="id" value="JupyterRightHiddenStructureLayout" />
9
+ </component>
10
+ </project>
@@ -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,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
@@ -0,0 +1,138 @@
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="Updated README with mental models and rough functionality. Fixed rounding in order_builder/helpers to avoid floating point errors. Added a sync and async minimal GraphQL client (to be updated). Made small naming changes (RewardsMarket -&gt; MarketRewards, opposite -&gt; complementary)">
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/clob_client.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/clients/clob_client.py" afterDir="false" />
12
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/clients/data_client.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/clients/data_client.py" afterDir="false" />
13
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/clients/gamma_client.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/clients/gamma_client.py" afterDir="false" />
14
+ <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" />
15
+ <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" />
16
+ <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" />
17
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/types/data_types.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/types/data_types.py" afterDir="false" />
18
+ <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" />
19
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/utilities/order_builder/builder.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/utilities/order_builder/builder.py" afterDir="false" />
20
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/utilities/order_builder/helpers.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/utilities/order_builder/helpers.py" afterDir="false" />
21
+ </list>
22
+ <option name="SHOW_DIALOG" value="false" />
23
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
24
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
25
+ <option name="LAST_RESOLUTION" value="IGNORE" />
26
+ </component>
27
+ <component name="FileTemplateManagerImpl">
28
+ <option name="RECENT_TEMPLATES">
29
+ <list>
30
+ <option value="Python Script" />
31
+ <option value="Jupyter Notebook" />
32
+ </list>
33
+ </option>
34
+ </component>
35
+ <component name="Git.Settings">
36
+ <option name="RECENT_BRANCH_BY_REPOSITORY">
37
+ <map>
38
+ <entry key="$PROJECT_DIR$" value="40cd35431ff229eb2d1f90061f6329d151341cf0" />
39
+ </map>
40
+ </option>
41
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
42
+ </component>
43
+ <component name="GitHubPullRequestSearchHistory">{
44
+ &quot;lastFilter&quot;: {
45
+ &quot;state&quot;: &quot;OPEN&quot;,
46
+ &quot;assignee&quot;: &quot;qualiaenjoyer&quot;
47
+ }
48
+ }</component>
49
+ <component name="GithubPullRequestsUISettings">{
50
+ &quot;selectedUrlAndAccountId&quot;: {
51
+ &quot;url&quot;: &quot;https://github.com/qualiaenjoyer/polymarket-apis&quot;,
52
+ &quot;accountId&quot;: &quot;23ce466d-36d9-4058-83a4-50b6bb4e2918&quot;
53
+ }
54
+ }</component>
55
+ <component name="HighlightingSettingsPerFile">
56
+ <setting file="file://$PROJECT_DIR$/src/polymarket_apis/types/clob_types.py" root0="SKIP_INSPECTION" />
57
+ <setting file="file://$PROJECT_DIR$/src/polymarket_apis/types/gamma_types.py" root0="FORCE_HIGHLIGHTING" />
58
+ </component>
59
+ <component name="ProblemsViewState">
60
+ <option name="selectedTabId" value="CurrentFile" />
61
+ </component>
62
+ <component name="ProjectColorInfo">{
63
+ &quot;associatedIndex&quot;: 8
64
+ }</component>
65
+ <component name="ProjectId" id="2zYa5MNq19sJIBlugDnCy8nAGXD" />
66
+ <component name="ProjectViewState">
67
+ <option name="hideEmptyMiddlePackages" value="true" />
68
+ <option name="showLibraryContents" value="true" />
69
+ </component>
70
+ <component name="PropertiesComponent">{
71
+ &quot;keyToString&quot;: {
72
+ &quot;ModuleVcsDetector.initialDetectionPerformed&quot;: &quot;true&quot;,
73
+ &quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
74
+ &quot;RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252&quot;: &quot;true&quot;,
75
+ &quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
76
+ &quot;git-widget-placeholder&quot;: &quot;main&quot;,
77
+ &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;,
78
+ &quot;last_opened_file_path&quot;: &quot;/Users/razvan/DataspellProjects/polymarket-apis/src/polymarket_apis/clients&quot;,
79
+ &quot;settings.editor.selected.configurable&quot;: &quot;preferences.pluginManager&quot;
80
+ }
81
+ }</component>
82
+ <component name="RecentsManager">
83
+ <key name="CopyFile.RECENT_KEYS">
84
+ <recent name="$PROJECT_DIR$/src/polymarket_apis/clients" />
85
+ </key>
86
+ <key name="MoveFile.RECENT_KEYS">
87
+ <recent name="$PROJECT_DIR$" />
88
+ <recent name="$PROJECT_DIR$/src" />
89
+ <recent name="$PROJECT_DIR$/src/polymarket_apis" />
90
+ </key>
91
+ </component>
92
+ <component name="SharedIndexes">
93
+ <attachedChunks>
94
+ <set>
95
+ <option value="bundled-python-sdk-d27dc8f8c276-a636b6f4477c-com.jetbrains.pycharm.ds.sharedIndexes.bundled-DS-252.26199.84" />
96
+ </set>
97
+ </attachedChunks>
98
+ </component>
99
+ <component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
100
+ <component name="TaskManager">
101
+ <task active="true" id="Default" summary="Default task">
102
+ <changelist id="9f343e29-a437-4d31-9fb8-c5fea3514239" name="Changes" comment="" />
103
+ <created>1757675426486</created>
104
+ <option name="number" value="Default" />
105
+ <option name="presentableId" value="Default" />
106
+ <updated>1757675426486</updated>
107
+ </task>
108
+ <servers />
109
+ </component>
110
+ <component name="Vcs.Log.Tabs.Properties">
111
+ <option name="OPEN_GENERIC_TABS">
112
+ <map>
113
+ <entry key="aba50f86-b8c2-4539-ae95-df2598f43312" value="TOOL_WINDOW" />
114
+ </map>
115
+ </option>
116
+ <option name="TAB_STATES">
117
+ <map>
118
+ <entry key="MAIN">
119
+ <value>
120
+ <State />
121
+ </value>
122
+ </entry>
123
+ <entry key="aba50f86-b8c2-4539-ae95-df2598f43312">
124
+ <value>
125
+ <State />
126
+ </value>
127
+ </entry>
128
+ </map>
129
+ </option>
130
+ </component>
131
+ <component name="VcsManagerConfiguration">
132
+ <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" />
133
+ <MESSAGE value="websockets/live_data_socket - fixed clob_user subscriptions; renamed api_key to key in ApiCreds to use creds.model_dump()" />
134
+ <MESSAGE value="gamma/types - fixed search_events validation for 0 results" />
135
+ <MESSAGE value="Updated README with mental models and rough functionality. Fixed rounding in order_builder/helpers to avoid floating point errors. Added a sync and async minimal GraphQL client (to be updated). Made small naming changes (RewardsMarket -&gt; MarketRewards, opposite -&gt; complementary)" />
136
+ <option name="LAST_COMMIT_MESSAGE" value="Updated README with mental models and rough functionality. Fixed rounding in order_builder/helpers to avoid floating point errors. Added a sync and async minimal GraphQL client (to be updated). Made small naming changes (RewardsMarket -&gt; MarketRewards, opposite -&gt; complementary)" />
137
+ </component>
138
+ </project>
@@ -0,0 +1,161 @@
1
+ Metadata-Version: 2.4
2
+ Name: polymarket-apis
3
+ Version: 0.3.0
4
+ Summary: Unified Polymarket APIs - clob, gamma, data, web3, websockets
5
+ Author-email: Razvan Gheorghe <razvan@gheorghe.me>
6
+ Requires-Python: >=3.12
7
+ Requires-Dist: gql[httpx]>=4.0.0
8
+ Requires-Dist: httpx[http2]>=0.25.1
9
+ Requires-Dist: lomond>=0.3.3
10
+ Requires-Dist: poly-eip712-structs>=0.0.1
11
+ Requires-Dist: py-order-utils>=0.3.2
12
+ Requires-Dist: pydantic>=2.10.5
13
+ Requires-Dist: web3>=7.0
14
+ Requires-Dist: wsaccel>=0.6.7
15
+ Description-Content-Type: text/markdown
16
+
17
+ # polymarket-apis [![PyPI version](https://img.shields.io/pypi/v/polymarket-apis.svg)](https://pypi.org/project/polymarket-apis/)
18
+
19
+ Polymarket CLOB, Gamma, Data, Web3, Websockets and GraphQL clients.
20
+
21
+ ## Polymarket Mental Models
22
+
23
+ ### Events, Markets and Outcomes
24
+
25
+ The Polymarket ecosystem is organized hierarchically:
26
+
27
+ ```mermaid
28
+ flowchart LR
29
+ A([Event]) --- B([Market A])
30
+ A --- C([Market B])
31
+ A ~~~ Dot1@{ shape: sm-circ}
32
+ A ~~~ Dot2@{ shape: sm-circ}
33
+ A ~~~ Dot3@{ shape: sm-circ}
34
+ A -.- D([Market n])
35
+ B --- E([Outcome 1])
36
+ B --- F([Outcome 2])
37
+ C --- G([Outcome 1])
38
+ C --- H([Outcome 2])
39
+ ```
40
+
41
+ - **Event** — represents a proposition or question such as “How many Fed rate cuts in 2025?”.
42
+ - Identified by a human-readable **`slug`** (e.g. `how-many-fed-rate-cuts-in-2025`) and an **event `id`** (e.g. `16085`).
43
+
44
+ - **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)
45
+ - 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`).
46
+
47
+ - **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)
48
+ - Identified by a **`token id`** (e.g. `15353185604353847122370324954202969073036867278400776447048296624042585335546` for the `Yes` outcome in the 1 rate cut in 2025 market)
49
+
50
+ ### Tokens
51
+ - **Tokens** are the blockchain implementation of **Outcomes** - tradable digital assets on the Polygon blockchain that users buy, hold and sell on Polygon.
52
+ - 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).
53
+
54
+ ### Splits and Merges
55
+ - 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.
56
+ - 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¢.
57
+
58
+ ### Unified Order Book
59
+ - 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.
60
+ - 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.
61
+ - 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.
62
+
63
+ ### Negative Risk and Conversions
64
+ - 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.
65
+ - 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}.
66
+ - An interesting consequence is that holding `No` tokens in more than one **Market** is equivalent to `Yes` tokens ***and*** some USDC.
67
+ - 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.
68
+ - 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.
69
+ - 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.
70
+
71
+ ## Clients overview
72
+ - ### PolymarketClobClient - Order book related operations
73
+ - #### Order book
74
+ - get one or more order books, best price, spread, midpoint, last trade price by `token_id`(s)
75
+ - #### Orders
76
+ - create and post limit or market orders
77
+ - cancel one or more orders by `order_id`(s)
78
+ - get active orders
79
+ - #### Trades
80
+ - get trade history for a user with filtering by `condition_id`, `token_id`, `trade_id`, time window
81
+ - #### Rewards
82
+ - check if one or more orders are scoring for liquidity rewards by `order_id`(s)
83
+ - get daily earned rewards
84
+ - check if a **Market** offers rewards by `condition_id` - **get_market_rewards()**
85
+ - 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*)
86
+ - #### Miscellaneous
87
+ - get price history
88
+ - get **ClobMarket** by `condition_id`
89
+ - get all **ClobMarkets**
90
+
91
+ ### PolymarketGammaClient - Market/Event related operations
92
+ - #### Market
93
+ - get **GammaMarket** by `market_id`
94
+ - 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
95
+ - #### Event
96
+ - get **Event** by `event_id`
97
+ - 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
98
+ - get all **Events** given some filtration
99
+ - search **Events**, filter by text query, active/resolved, sort by volume/volume_24hr/liquidity/start_date/end_date/competitive (tries to mimic the web app search bar)
100
+ - #### Miscellaneous
101
+ - grok event summary by **Event** `slug`
102
+ - grok election market explanation by candidate name and election title
103
+
104
+ ### PolymarketDataClient - Portfolio related operations
105
+ - #### Positions
106
+ - get positions with pagination (offset and limit) by user address, filter by `condition_id`, position size, redeemability, mergeability, title
107
+ - #### Trades
108
+ - get trades with pagination, filter by `condition id`, user address, side, taker only or not, cash amount/token amount
109
+ - #### Activity
110
+ - 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
111
+ - #### Holders
112
+ - get top holders by `condition_id`
113
+ - #### Value
114
+ - get positions value by user address and condition_ids
115
+ - `condition_ids` is ***None*** → total value of positions
116
+ - `condition_ids` is ***str*** → value of positions on a market
117
+ - `condition_ids` is ***list[str]*** → sum of values of positions on multiple markets
118
+ - #### Miscellaneous
119
+ - get pnl timeseries by user address for a period (1d, 1w, 1m, all) with frequency (1h, 3h, 12h, 1d)
120
+ - get overall pnl/volume by user address for a recent window (1d, 7d, 30d, all)
121
+ - get user rank on the profit/volume leaderboards by user address for a recent window (1d, 7d, 30d, all)
122
+ - get top users on the profit/volume leaderboards (at most 100) for a recent window (1d, 7d, 30d, all)
123
+
124
+ ### PolymarketWeb3Client - Blockchain related operations
125
+ - #### Balance
126
+ - get usdc balance by user address
127
+ - get token balance by `token_id` and user address
128
+ - #### Token/USDC conversions
129
+ - split USDC into complementary tokens - needs `condition_id`, amount, neg_risk bool
130
+ - merge complementary tokens into USDC - needs `condition_id`, amount, neg_risk bool
131
+ - redeem token into USDC - needs `condition_id`, amounts array [`Yes` shares, `No` shares], neg_risk bool
132
+ - 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**
133
+
134
+ ### PolymarketWebsocketsClient - Real time data subscriptions
135
+ - subscribe to **market socket** with `token_ids` list, receive different event types:
136
+ - order book summary
137
+ - price change
138
+ - tick size change
139
+ - last trade price
140
+ - subscribe to **user socket** with **ApiCreds**, receive different event types:
141
+ - order (status - live, canceled, matched)
142
+ - trade (status - matched, mined, confirmed, retrying, failed)
143
+ - 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:
144
+ - all of the above event types
145
+ - market (created, resolved)
146
+ - comment/reaction (created, removed)
147
+ - trades/orders_matched (all, not just yours) - filter by **Event** `slug` or **Market** `slug`
148
+ - crypto price
149
+ - request/quote (created, edited, canceled, expired) - rqf not public yet
150
+
151
+ ### PolymarketGraphQLClient/AsyncPolymarketGraphQLClient - Goldsky hosted Subgraphs queries
152
+ - instantiate with an endpoint name from:
153
+ - activity_subgraph
154
+ - fpmm_subgraph
155
+ - open_interest_subgraph
156
+ - orderbook_subgraph
157
+ - pnl_subgraph
158
+ - positions_subgraph
159
+ - sports_oracle_subgraph
160
+ - wallet_subgraph
161
+ - ****query()**** takes in a GraphQL query string and returns the raw json