polymarket-apis 0.3.0__tar.gz → 0.3.2__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 (73) hide show
  1. polymarket_apis-0.3.2/.idea/.gitignore +8 -0
  2. polymarket_apis-0.3.2/.idea/MypyPlugin.xml +9 -0
  3. polymarket_apis-0.3.2/.idea/dictionaries/project.xml +7 -0
  4. polymarket_apis-0.3.2/.idea/inspectionProfiles/Project_Default.xml +20 -0
  5. polymarket_apis-0.3.2/.idea/modules.xml +8 -0
  6. polymarket_apis-0.3.2/.idea/polymarket-apis.iml +12 -0
  7. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/.idea/vcs.xml +1 -1
  8. polymarket_apis-0.3.2/.idea/workspace.xml +115 -0
  9. polymarket_apis-0.3.2/.pre-commit-hooks.yaml +10 -0
  10. polymarket_apis-0.3.0/README.md → polymarket_apis-0.3.2/PKG-INFO +48 -3
  11. polymarket_apis-0.3.0/PKG-INFO → polymarket_apis-0.3.2/README.md +32 -19
  12. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/pyproject.toml +16 -3
  13. polymarket_apis-0.3.2/src/polymarket_apis/__init__.py +41 -0
  14. polymarket_apis-0.3.2/src/polymarket_apis/clients/__init__.py +23 -0
  15. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/clients/clob_client.py +171 -79
  16. polymarket_apis-0.3.2/src/polymarket_apis/clients/data_client.py +349 -0
  17. polymarket_apis-0.3.2/src/polymarket_apis/clients/gamma_client.py +816 -0
  18. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/clients/graphql_client.py +28 -11
  19. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/clients/web3_client.py +131 -60
  20. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/clients/websockets_client.py +24 -7
  21. polymarket_apis-0.3.2/src/polymarket_apis/types/__init__.py +167 -0
  22. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/types/clob_types.py +28 -8
  23. polymarket_apis-0.3.2/src/polymarket_apis/types/common.py +34 -0
  24. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/types/data_types.py +15 -2
  25. polymarket_apis-0.3.2/src/polymarket_apis/types/gamma_types.py +617 -0
  26. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/types/websockets_types.py +92 -41
  27. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/config.py +1 -0
  28. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/exceptions.py +5 -0
  29. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/order_builder/builder.py +32 -16
  30. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/order_builder/helpers.py +0 -1
  31. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/signing/hmac.py +5 -1
  32. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/web3/abis/custom_contract_errors.py +1 -1
  33. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/web3/helpers.py +1 -0
  34. polymarket_apis-0.3.2/uv.lock +3173 -0
  35. polymarket_apis-0.3.0/.idea/polymarket-apis.iml +0 -10
  36. polymarket_apis-0.3.0/.idea/workspace.xml +0 -138
  37. polymarket_apis-0.3.0/src/pl.ipynb +0 -1179
  38. polymarket_apis-0.3.0/src/polymarket_apis/clients/data_client.py +0 -234
  39. polymarket_apis-0.3.0/src/polymarket_apis/clients/gamma_client.py +0 -334
  40. polymarket_apis-0.3.0/src/polymarket_apis/types/common.py +0 -51
  41. polymarket_apis-0.3.0/src/polymarket_apis/types/gamma_types.py +0 -354
  42. polymarket_apis-0.3.0/src/polymarket_apis/utilities/schemas/activity-subgraph.graphql +0 -86
  43. polymarket_apis-0.3.0/src/polymarket_apis/utilities/schemas/open-interest.graphql +0 -30
  44. polymarket_apis-0.3.0/src/polymarket_apis/utilities/signing/__init__.py +0 -0
  45. polymarket_apis-0.3.0/src/polymarket_apis/utilities/web3/__init__.py +0 -0
  46. polymarket_apis-0.3.0/src/polymarket_apis/utilities/web3/abis/__init__.py +0 -0
  47. polymarket_apis-0.3.0/uv.lock +0 -2791
  48. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/.github/workflows/ruff.yml +0 -0
  49. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/.gitignore +0 -0
  50. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/.idea/copilot.data.migration.agent.xml +0 -0
  51. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/.idea/copilot.data.migration.ask.xml +0 -0
  52. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/.idea/copilot.data.migration.ask2agent.xml +0 -0
  53. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/.idea/copilot.data.migration.edit.xml +0 -0
  54. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/.idea/misc.xml +0 -0
  55. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/requirements-dev.lock +0 -0
  56. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/requirements.lock +0 -0
  57. {polymarket_apis-0.3.0/src/polymarket_apis → polymarket_apis-0.3.2/src/polymarket_apis/utilities}/__init__.py +0 -0
  58. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/constants.py +0 -0
  59. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/endpoints.py +0 -0
  60. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/headers.py +0 -0
  61. {polymarket_apis-0.3.0/src/polymarket_apis/clients → polymarket_apis-0.3.2/src/polymarket_apis/utilities/order_builder}/__init__.py +0 -0
  62. {polymarket_apis-0.3.0/src/polymarket_apis/types → polymarket_apis-0.3.2/src/polymarket_apis/utilities/signing}/__init__.py +0 -0
  63. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/signing/eip712.py +0 -0
  64. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/signing/model.py +0 -0
  65. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/signing/signer.py +0 -0
  66. {polymarket_apis-0.3.0/src/polymarket_apis/utilities → polymarket_apis-0.3.2/src/polymarket_apis/utilities/web3}/__init__.py +0 -0
  67. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/web3/abis/CTFExchange.json +0 -0
  68. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/web3/abis/ConditionalTokens.json +0 -0
  69. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/web3/abis/NegRiskAdapter.json +0 -0
  70. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/web3/abis/NegRiskCtfExchange.json +0 -0
  71. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/web3/abis/ProxyWalletFactory.json +0 -0
  72. {polymarket_apis-0.3.0 → polymarket_apis-0.3.2}/src/polymarket_apis/utilities/web3/abis/UChildERC20Proxy.json +0 -0
  73. {polymarket_apis-0.3.0/src/polymarket_apis/utilities/order_builder → polymarket_apis-0.3.2/src/polymarket_apis/utilities/web3/abis}/__init__.py +0 -0
@@ -0,0 +1,8 @@
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Datasource local storage ignored files
5
+ /dataSources/
6
+ /dataSources.local.xml
7
+ # Editor-based HTTP Client requests
8
+ /httpRequests/
@@ -0,0 +1,9 @@
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="autoScrollToSource" value="true" />
6
+ <option name="mypyExecutable" value="$PROJECT_DIR$/.venv/bin/mypy" />
7
+ <option name="projectDirectory" value="$PROJECT_DIR$" />
8
+ </component>
9
+ </project>
@@ -0,0 +1,7 @@
1
+ <component name="ProjectDictionaryState">
2
+ <dictionary name="project">
3
+ <words>
4
+ <w>avgprice</w>
5
+ </words>
6
+ </dictionary>
7
+ </component>
@@ -0,0 +1,20 @@
1
+ <component name="InspectionProjectProfileManager">
2
+ <profile version="1.0">
3
+ <option name="myName" value="Project Default" />
4
+ <inspection_tool class="PyArgumentEqualDefaultInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
5
+ <inspection_tool class="PyAugmentAssignmentInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
6
+ <inspection_tool class="PyCompatibilityInspection" enabled="true" level="WARNING" enabled_by_default="true">
7
+ <option name="ourVersions">
8
+ <value>
9
+ <list size="2">
10
+ <item index="0" class="java.lang.String" itemvalue="3.14" />
11
+ <item index="1" class="java.lang.String" itemvalue="3.12" />
12
+ </list>
13
+ </value>
14
+ </option>
15
+ </inspection_tool>
16
+ <inspection_tool class="PyMandatoryEncodingInspection" enabled="true" level="WARNING" enabled_by_default="true" />
17
+ <inspection_tool class="PyMissingTypeHintsInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
18
+ <inspection_tool class="PyUnnecessaryCastInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true" />
19
+ </profile>
20
+ </component>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/polymarket-apis.iml" filepath="$PROJECT_DIR$/.idea/polymarket-apis.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="PYTHON_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$" />
5
+ <orderEntry type="jdk" jdkName="Python 3.12 virtualenv at ~/poly/polymarket-apis/.venv" jdkType="Python SDK" />
6
+ <orderEntry type="sourceFolder" forTests="false" />
7
+ </component>
8
+ <component name="PyDocumentationSettings">
9
+ <option name="format" value="PLAIN" />
10
+ <option name="myDocStringFormat" value="Plain" />
11
+ </component>
12
+ </module>
@@ -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="$PROJECT_DIR$" vcs="Git" />
4
+ <mapping directory="" vcs="Git" />
5
5
  </component>
6
6
  </project>
@@ -0,0 +1,115 @@
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="added pre-commit hooks for linting and formatting. small formatting changes. updated __init__s.">
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/types/__init__.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/types/__init__.py" afterDir="false" />
15
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/types/common.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/types/common.py" afterDir="false" />
16
+ <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" />
17
+ <change beforePath="$PROJECT_DIR$/src/polymarket_apis/types/gamma_types.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/polymarket_apis/types/gamma_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
+ </list>
20
+ <option name="SHOW_DIALOG" value="false" />
21
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
22
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
23
+ <option name="LAST_RESOLUTION" value="IGNORE" />
24
+ </component>
25
+ <component name="Git.Settings">
26
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
27
+ </component>
28
+ <component name="GitHubPullRequestSearchHistory">{
29
+ &quot;lastFilter&quot;: {
30
+ &quot;state&quot;: &quot;OPEN&quot;,
31
+ &quot;assignee&quot;: &quot;qualiaenjoyer&quot;
32
+ }
33
+ }</component>
34
+ <component name="GithubPullRequestsUISettings">{
35
+ &quot;selectedUrlAndAccountId&quot;: {
36
+ &quot;url&quot;: &quot;https://github.com/qualiaenjoyer/polymarket-apis.git&quot;,
37
+ &quot;accountId&quot;: &quot;23ce466d-36d9-4058-83a4-50b6bb4e2918&quot;
38
+ }
39
+ }</component>
40
+ <component name="HighlightingSettingsPerFile">
41
+ <setting file="file://$USER_HOME$/poly/polymarket-apis/.venv/lib/python3.13/site-packages/httpx/_client.py" root0="SKIP_INSPECTION" />
42
+ </component>
43
+ <component name="ProblemsViewState">
44
+ <option name="selectedTabId" value="CurrentFile" />
45
+ </component>
46
+ <component name="ProjectColorInfo">{
47
+ &quot;customColor&quot;: &quot;&quot;,
48
+ &quot;associatedIndex&quot;: 5
49
+ }</component>
50
+ <component name="ProjectId" id="34HNc0USmRKn5QdD9z5lxgd2ljx" />
51
+ <component name="ProjectViewState">
52
+ <option name="hideEmptyMiddlePackages" value="true" />
53
+ <option name="showLibraryContents" value="true" />
54
+ </component>
55
+ <component name="PropertiesComponent"><![CDATA[{
56
+ "keyToString": {
57
+ "ModuleVcsDetector.initialDetectionPerformed": "true",
58
+ "RunOnceActivity.ShowReadmeOnStart": "true",
59
+ "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
60
+ "RunOnceActivity.git.unshallow": "true",
61
+ "git-widget-placeholder": "main",
62
+ "insyncwithfoo.ryecharm.ruff.caching.ruleNameToCodeMap": "{\"result\":{\"airflow-variable-name-task-id-mismatch\":\"AIR001\",\"airflow-dag-no-schedule-argument\":\"AIR301\",\"airflow3-removal\":\"AIR302\",\"commented-out-code\":\"ERA001\",\"fast-api-redundant-response-model\":\"FAST001\",\"fast-api-non-annotated-dependency\":\"FAST002\",\"fast-api-unused-path-parameter\":\"FAST003\",\"sys-version-slice3\":\"YTT101\",\"sys-version2\":\"YTT102\",\"sys-version-cmp-str3\":\"YTT103\",\"sys-version-info0-eq3\":\"YTT201\",\"six-py3\":\"YTT202\",\"sys-version-info1-cmp-int\":\"YTT203\",\"sys-version-info-minor-cmp-int\":\"YTT204\",\"sys-version0\":\"YTT301\",\"sys-version-cmp-str10\":\"YTT302\",\"sys-version-slice1\":\"YTT303\",\"missing-type-function-argument\":\"ANN001\",\"missing-type-args\":\"ANN002\",\"missing-type-kwargs\":\"ANN003\",\"missing-type-self\":\"ANN101\",\"missing-type-cls\":\"ANN102\",\"missing-return-type-undocumented-public-function\":\"ANN201\",\"missing-return-type-private-function\":\"ANN202\",\"missing-return-type-special-method\":\"ANN204\",\"missing-return-type-static-method\":\"ANN205\",\"missing-return-type-class-method\":\"ANN206\",\"any-type\":\"ANN401\",\"cancel-scope-no-checkpoint\":\"ASYNC100\",\"trio-sync-call\":\"ASYNC105\",\"async-function-with-timeout\":\"ASYNC109\",\"async-busy-wait\":\"ASYNC110\",\"async-zero-sleep\":\"ASYNC115\",\"long-sleep-not-forever\":\"ASYNC116\",\"blocking-http-call-in-async-function\":\"ASYNC210\",\"create-subprocess-in-async-function\":\"ASYNC220\",\"run-process-in-async-function\":\"ASYNC221\",\"wait-for-process-in-async-function\":\"ASYNC222\",\"blocking-open-call-in-async-function\":\"ASYNC230\",\"blocking-sleep-in-async-function\":\"ASYNC251\",\"assert\":\"S101\",\"exec-builtin\":\"S102\",\"bad-file-permissions\":\"S103\",\"hardcoded-bind-all-interfaces\":\"S104\",\"hardcoded-password-string\":\"S105\",\"hardcoded-password-func-arg\":\"S106\",\"hardcoded-password-default\":\"S107\",\"hardcoded-temp-file\":\"S108\",\"try-except-pass\":\"S110\",\"try-except-continue\":\"S112\",\"request-without-timeout\":\"S113\",\"flask-debug-true\":\"S201\",\"tarfile-unsafe-members\":\"S202\",\"suspicious-pickle-usage\":\"S301\",\"suspicious-marshal-usage\":\"S302\",\"suspicious-insecure-hash-usage\":\"S303\",\"suspicious-insecure-cipher-usage\":\"S304\",\"suspicious-insecure-cipher-mode-usage\":\"S305\",\"suspicious-mktemp-usage\":\"S306\",\"suspicious-eval-usage\":\"S307\",\"suspicious-mark-safe-usage\":\"S308\",\"suspicious-url-open-usage\":\"S310\",\"suspicious-non-cryptographic-random-usage\":\"S311\",\"suspicious-telnet-usage\":\"S312\",\"suspicious-xmlc-element-tree-usage\":\"S313\",\"suspicious-xml-element-tree-usage\":\"S314\",\"suspicious-xml-expat-reader-usage\":\"S315\",\"suspicious-xml-expat-builder-usage\":\"S316\",\"suspicious-xml-sax-usage\":\"S317\",\"suspicious-xml-mini-dom-usage\":\"S318\",\"suspicious-xml-pull-dom-usage\":\"S319\",\"suspicious-xmle-tree-usage\":\"S320\",\"suspicious-ftp-lib-usage\":\"S321\",\"suspicious-unverified-context-usage\":\"S323\",\"hashlib-insecure-hash-function\":\"S324\",\"suspicious-telnetlib-import\":\"S401\",\"suspicious-ftplib-import\":\"S402\",\"suspicious-pickle-import\":\"S403\",\"suspicious-subprocess-import\":\"S404\",\"suspicious-xml-etree-import\":\"S405\",\"suspicious-xml-sax-import\":\"S406\",\"suspicious-xml-expat-import\":\"S407\",\"suspicious-xml-minidom-import\":\"S408\",\"suspicious-xml-pulldom-import\":\"S409\",\"suspicious-lxml-import\":\"S410\",\"suspicious-xmlrpc-import\":\"S411\",\"suspicious-httpoxy-import\":\"S412\",\"suspicious-pycrypto-import\":\"S413\",\"suspicious-pyghmi-import\":\"S415\",\"request-with-no-cert-validation\":\"S501\",\"ssl-insecure-version\":\"S502\",\"ssl-with-bad-defaults\":\"S503\",\"ssl-with-no-version\":\"S504\",\"weak-cryptographic-key\":\"S505\",\"unsafe-yaml-load\":\"S506\",\"ssh-no-host-key-verification\":\"S507\",\"snmp-insecure-version\":\"S508\",\"snmp-weak-cryptography\":\"S509\",\"paramiko-call\":\"S601\",\"subprocess-popen-with-shell-equals-true\":\"S602\",\"subprocess-without-shell-equals-true\":\"S603\",\"call-with-shell-equals-true\":\"S604\",\"start-process-with-a-shell\":\"S605\",\"start-process-with-no-shell\":\"S606\",\"start-process-with-partial-path\":\"S607\",\"hardcoded-sql-expression\":\"S608\",\"unix-command-wildcard-injection\":\"S609\",\"django-extra\":\"S610\",\"django-raw-sql\":\"S611\",\"logging-config-insecure-listen\":\"S612\",\"jinja2-autoescape-false\":\"S701\",\"mako-templates\":\"S702\",\"blind-except\":\"BLE001\",\"boolean-type-hint-positional-argument\":\"FBT001\",\"boolean-default-value-positional-argument\":\"FBT002\",\"boolean-positional-value-in-call\":\"FBT003\",\"unary-prefix-increment-decrement\":\"B002\",\"assignment-to-os-environ\":\"B003\",\"unreliable-callable-check\":\"B004\",\"strip-with-multi-characters\":\"B005\",\"mutable-argument-default\":\"B006\",\"unused-loop-control-variable\":\"B007\",\"function-call-in-default-argument\":\"B008\",\"get-attr-with-constant\":\"B009\",\"set-attr-with-constant\":\"B010\",\"assert-false\":\"B011\",\"jump-statement-in-finally\":\"B012\",\"redundant-tuple-in-exception-handler\":\"B013\",\"duplicate-handler-exception\":\"B014\",\"useless-comparison\":\"B015\",\"raise-literal\":\"B016\",\"assert-raises-exception\":\"B017\",\"useless-expression\":\"B018\",\"cached-instance-method\":\"B019\",\"loop-variable-overrides-iterator\":\"B020\",\"f-string-docstring\":\"B021\",\"useless-contextlib-suppress\":\"B022\",\"function-uses-loop-variable\":\"B023\",\"abstract-base-class-without-abstract-method\":\"B024\",\"duplicate-try-block-exception\":\"B025\",\"star-arg-unpacking-after-keyword-arg\":\"B026\",\"empty-method-without-abstract-decorator\":\"B027\",\"no-explicit-stacklevel\":\"B028\",\"except-with-empty-tuple\":\"B029\",\"except-with-non-exception-classes\":\"B030\",\"reuse-of-groupby-generator\":\"B031\",\"unintentional-type-annotation\":\"B032\",\"duplicate-value\":\"B033\",\"re-sub-positional-args\":\"B034\",\"static-key-dict-comprehension\":\"B035\",\"mutable-contextvar-default\":\"B039\",\"return-in-generator\":\"B901\",\"raise-without-from-inside-except\":\"B904\",\"zip-without-explicit-strict\":\"B905\",\"loop-iterator-mutation\":\"B909\",\"builtin-variable-shadowing\":\"A001\",\"builtin-argument-shadowing\":\"A002\",\"builtin-attribute-shadowing\":\"A003\",\"builtin-import-shadowing\":\"A004\",\"builtin-module-shadowing\":\"A005\",\"builtin-lambda-argument-shadowing\":\"A006\",\"missing-trailing-comma\":\"COM812\",\"trailing-comma-on-bare-tuple\":\"COM818\",\"prohibited-trailing-comma\":\"COM819\",\"unnecessary-generator-list\":\"C400\",\"unnecessary-generator-set\":\"C401\",\"unnecessary-generator-dict\":\"C402\",\"unnecessary-list-comprehension-set\":\"C403\",\"unnecessary-list-comprehension-dict\":\"C404\",\"unnecessary-literal-set\":\"C405\",\"unnecessary-literal-dict\":\"C406\",\"unnecessary-collection-call\":\"C408\",\"unnecessary-literal-within-tuple-call\":\"C409\",\"unnecessary-literal-within-list-call\":\"C410\",\"unnecessary-list-call\":\"C411\",\"unnecessary-call-around-sorted\":\"C413\",\"unnecessary-double-cast-or-process\":\"C414\",\"unnecessary-subscript-reversal\":\"C415\",\"unnecessary-comprehension\":\"C416\",\"unnecessary-map\":\"C417\",\"unnecessary-literal-within-dict-call\":\"C418\",\"unnecessary-comprehension-in-call\":\"C419\",\"unnecessary-dict-comprehension-for-iterable\":\"C420\",\"missing-copyright-notice\":\"CPY001\",\"call-datetime-without-tzinfo\":\"DTZ001\",\"call-datetime-today\":\"DTZ002\",\"call-datetime-utcnow\":\"DTZ003\",\"call-datetime-utcfromtimestamp\":\"DTZ004\",\"call-datetime-now-without-tzinfo\":\"DTZ005\",\"call-datetime-fromtimestamp\":\"DTZ006\",\"call-datetime-strptime-without-zone\":\"DTZ007\",\"call-date-today\":\"DTZ011\",\"call-date-fromtimestamp\":\"DTZ012\",\"datetime-min-max\":\"DTZ901\",\"debugger\":\"T100\",\"django-nullable-model-string-field\":\"DJ001\",\"django-locals-in-render-function\":\"DJ003\",\"django-exclude-with-model-form\":\"DJ006\",\"django-all-with-model-form\":\"DJ007\",\"django-model-without-dunder-str\":\"DJ008\",\"django-unordered-body-content-in-model\":\"DJ012\",\"django-non-leading-receiver-decorator\":\"DJ013\",\"raw-string-in-exception\":\"EM101\",\"f-string-in-exception\":\"EM102\",\"dot-format-in-exception\":\"EM103\",\"shebang-not-executable\":\"EXE001\",\"shebang-missing-executable-file\":\"EXE002\",\"shebang-missing-python\":\"EXE003\",\"shebang-leading-whitespace\":\"EXE004\",\"shebang-not-first-line\":\"EXE005\",\"line-contains-fixme\":\"FIX001\",\"line-contains-todo\":\"FIX002\",\"line-contains-xxx\":\"FIX003\",\"line-contains-hack\":\"FIX004\",\"future-rewritable-type-annotation\":\"FA100\",\"future-required-type-annotation\":\"FA102\",\"f-string-in-get-text-func-call\":\"INT001\",\"format-in-get-text-func-call\":\"INT002\",\"printf-in-get-text-func-call\":\"INT003\",\"single-line-implicit-string-concatenation\":\"ISC001\",\"multi-line-implicit-string-concatenation\":\"ISC002\",\"explicit-string-concatenation\":\"ISC003\",\"unconventional-import-alias\":\"ICN001\",\"banned-import-alias\":\"ICN002\",\"banned-import-from\":\"ICN003\",\"direct-logger-instantiation\":\"LOG001\",\"invalid-get-logger-argument\":\"LOG002\",\"exception-without-exc-info\":\"LOG007\",\"undocumented-warn\":\"LOG009\",\"root-logger-call\":\"LOG015\",\"logging-string-format\":\"G001\",\"logging-percent-format\":\"G002\",\"logging-string-concat\":\"G003\",\"logging-f-string\":\"G004\",\"logging-warn\":\"G010\",\"logging-extra-attr-clash\":\"G101\",\"logging-exc-info\":\"G201\",\"logging-redundant-exc-info\":\"G202\",\"implicit-namespace-package\":\"INP001\",\"unnecessary-placeholder\":\"PIE790\",\"duplicate-class-field-definition\":\"PIE794\",\"non-unique-enums\":\"PIE796\",\"unnecessary-spread\":\"PIE800\",\"unnecessary-dict-kwargs\":\"PIE804\",\"reimplemented-container-builtin\":\"PIE807\",\"unnecessary-range-start\":\"PIE808\",\"multiple-starts-ends-with\":\"PIE810\",\"print\":\"T201\",\"p-print\":\"T203\",\"unprefixed-type-param\":\"PYI001\",\"complex-if-statement-in-stub\":\"PYI002\",\"unrecognized-version-info-check\":\"PYI003\",\"patch-version-comparison\":\"PYI004\",\"wrong-tuple-length-version-comparison\":\"PYI005\",\"bad-version-info-comparison\":\"PYI006\",\"unrecognized-platform-check\":\"PYI007\",\"unrecognized-platform-name\":\"PYI008\",\"pass-statement-stub-body\":\"PYI009\",\"non-empty-stub-body\":\"PYI010\",\"typed-argument-default-in-stub\":\"PYI011\",\"pass-in-class-body\":\"PYI012\",\"ellipsis-in-non-empty-class-body\":\"PYI013\",\"argument-default-in-stub\":\"PYI014\",\"assignment-default-in-stub\":\"PYI015\",\"duplicate-union-member\":\"PYI016\",\"complex-assignment-in-stub\":\"PYI017\",\"unused-private-type-var\":\"PYI018\",\"custom-type-var-return-type\":\"PYI019\",\"quoted-annotation-in-stub\":\"PYI020\",\"docstring-in-stub\":\"PYI021\",\"collections-named-tuple\":\"PYI024\",\"unaliased-collections-abc-set-import\":\"PYI025\",\"type-alias-without-annotation\":\"PYI026\",\"str-or-repr-defined-in-stub\":\"PYI029\",\"unnecessary-literal-union\":\"PYI030\",\"any-eq-ne-annotation\":\"PYI032\",\"type-comment-in-stub\":\"PYI033\",\"non-self-return-type\":\"PYI034\",\"unassigned-special-variable-in-stub\":\"PYI035\",\"bad-exit-annotation\":\"PYI036\",\"redundant-numeric-union\":\"PYI041\",\"snake-case-type-alias\":\"PYI042\",\"t-suffixed-type-alias\":\"PYI043\",\"future-annotations-in-stub\":\"PYI044\",\"iter-method-return-iterable\":\"PYI045\",\"unused-private-protocol\":\"PYI046\",\"unused-private-type-alias\":\"PYI047\",\"stub-body-multiple-statements\":\"PYI048\",\"unused-private-typed-dict\":\"PYI049\",\"no-return-argument-annotation-in-stub\":\"PYI050\",\"redundant-literal-union\":\"PYI051\",\"unannotated-assignment-in-stub\":\"PYI052\",\"string-or-bytes-too-long\":\"PYI053\",\"numeric-literal-too-long\":\"PYI054\",\"unnecessary-type-union\":\"PYI055\",\"unsupported-method-call-on-all\":\"PYI056\",\"byte-string-usage\":\"PYI057\",\"generator-return-from-iter-method\":\"PYI058\",\"generic-not-last-base-class\":\"PYI059\",\"redundant-none-literal\":\"PYI061\",\"duplicate-literal-member\":\"PYI062\",\"pep484-style-positional-only-parameter\":\"PYI063\",\"redundant-final-literal\":\"PYI064\",\"bad-version-info-order\":\"PYI066\",\"pytest-fixture-incorrect-parentheses-style\":\"PT001\",\"pytest-fixture-positional-args\":\"PT002\",\"pytest-extraneous-scope-function\":\"PT003\",\"pytest-missing-fixture-name-underscore\":\"PT004\",\"pytest-incorrect-fixture-name-underscore\":\"PT005\",\"pytest-parametrize-names-wrong-type\":\"PT006\",\"pytest-parametrize-values-wrong-type\":\"PT007\",\"pytest-patch-with-lambda\":\"PT008\",\"pytest-unittest-assertion\":\"PT009\",\"pytest-raises-without-exception\":\"PT010\",\"pytest-raises-too-broad\":\"PT011\",\"pytest-raises-with-multiple-statements\":\"PT012\",\"pytest-incorrect-pytest-import\":\"PT013\",\"pytest-duplicate-parametrize-test-cases\":\"PT014\",\"pytest-assert-always-false\":\"PT015\",\"pytest-fail-without-message\":\"PT016\",\"pytest-assert-in-except\":\"PT017\",\"pytest-composite-assertion\":\"PT018\",\"pytest-fixture-param-without-value\":\"PT019\",\"pytest-deprecated-yield-fixture\":\"PT020\",\"pytest-fixture-finalizer-callback\":\"PT021\",\"pytest-useless-yield-fixture\":\"PT022\",\"pytest-incorrect-mark-parentheses-style\":\"PT023\",\"pytest-unnecessary-asyncio-mark-on-fixture\":\"PT024\",\"pytest-erroneous-use-fixtures-on-fixture\":\"PT025\",\"pytest-use-fixtures-without-parameters\":\"PT026\",\"pytest-unittest-raises-assertion\":\"PT027\",\"bad-quotes-inline-string\":\"Q000\",\"bad-quotes-multiline-string\":\"Q001\",\"bad-quotes-docstring\":\"Q002\",\"avoidable-escaped-quote\":\"Q003\",\"unnecessary-escaped-quote\":\"Q004\",\"unnecessary-paren-on-raise-exception\":\"RSE102\",\"unnecessary-return-none\":\"RET501\",\"implicit-return-value\":\"RET502\",\"implicit-return\":\"RET503\",\"unnecessary-assign\":\"RET504\",\"superfluous-else-return\":\"RET505\",\"superfluous-else-raise\":\"RET506\",\"superfluous-else-continue\":\"RET507\",\"superfluous-else-break\":\"RET508\",\"private-member-access\":\"SLF001\",\"duplicate-isinstance-call\":\"SIM101\",\"collapsible-if\":\"SIM102\",\"needless-bool\":\"SIM103\",\"suppressible-exception\":\"SIM105\",\"return-in-try-except-finally\":\"SIM107\",\"if-else-block-instead-of-if-exp\":\"SIM108\",\"compare-with-tuple\":\"SIM109\",\"reimplemented-builtin\":\"SIM110\",\"uncapitalized-environment-variables\":\"SIM112\",\"enumerate-for-loop\":\"SIM113\",\"if-with-same-arms\":\"SIM114\",\"open-file-with-context-handler\":\"SIM115\",\"if-else-block-instead-of-dict-lookup\":\"SIM116\",\"multiple-with-statements\":\"SIM117\",\"in-dict-keys\":\"SIM118\",\"negate-equal-op\":\"SIM201\",\"negate-not-equal-op\":\"SIM202\",\"double-negation\":\"SIM208\",\"if-expr-with-true-false\":\"SIM210\",\"if-expr-with-false-true\":\"SIM211\",\"if-expr-with-twisted-arms\":\"SIM212\",\"expr-and-not-expr\":\"SIM220\",\"expr-or-not-expr\":\"SIM221\",\"expr-or-true\":\"SIM222\",\"expr-and-false\":\"SIM223\",\"yoda-conditions\":\"SIM300\",\"if-else-block-instead-of-dict-get\":\"SIM401\",\"split-static-string\":\"SIM905\",\"dict-get-with-none-default\":\"SIM910\",\"zip-dict-keys-and-values\":\"SIM911\",\"no-slots-in-str-subclass\":\"SLOT000\",\"no-slots-in-tuple-subclass\":\"SLOT001\",\"no-slots-in-namedtuple-subclass\":\"SLOT002\",\"banned-api\":\"TID251\",\"relative-imports\":\"TID252\",\"banned-module-level-imports\":\"TID253\",\"invalid-todo-tag\":\"TD001\",\"missing-todo-author\":\"TD002\",\"missing-todo-link\":\"TD003\",\"missing-todo-colon\":\"TD004\",\"missing-todo-description\":\"TD005\",\"invalid-todo-capitalization\":\"TD006\",\"missing-space-after-todo-colon\":\"TD007\",\"typing-only-first-party-import\":\"TC001\",\"typing-only-third-party-import\":\"TC002\",\"typing-only-standard-library-import\":\"TC003\",\"runtime-import-in-type-checking-block\":\"TC004\",\"empty-type-checking-block\":\"TC005\",\"runtime-cast-value\":\"TC006\",\"unquoted-type-alias\":\"TC007\",\"quoted-type-alias\":\"TC008\",\"runtime-string-union\":\"TC010\",\"unused-function-argument\":\"ARG001\",\"unused-method-argument\":\"ARG002\",\"unused-class-method-argument\":\"ARG003\",\"unused-static-method-argument\":\"ARG004\",\"unused-lambda-argument\":\"ARG005\",\"os-path-abspath\":\"PTH100\",\"os-chmod\":\"PTH101\",\"os-mkdir\":\"PTH102\",\"os-makedirs\":\"PTH103\",\"os-rename\":\"PTH104\",\"os-replace\":\"PTH105\",\"os-rmdir\":\"PTH106\",\"os-remove\":\"PTH107\",\"os-unlink\":\"PTH108\",\"os-getcwd\":\"PTH109\",\"os-path-exists\":\"PTH110\",\"os-path-expanduser\":\"PTH111\",\"os-path-isdir\":\"PTH112\",\"os-path-isfile\":\"PTH113\",\"os-path-islink\":\"PTH114\",\"os-readlink\":\"PTH115\",\"os-stat\":\"PTH116\",\"os-path-isabs\":\"PTH117\",\"os-path-join\":\"PTH118\",\"os-path-basename\":\"PTH119\",\"os-path-dirname\":\"PTH120\",\"os-path-samefile\":\"PTH121\",\"os-path-splitext\":\"PTH122\",\"builtin-open\":\"PTH123\",\"py-path\":\"PTH124\",\"path-constructor-current-directory\":\"PTH201\",\"os-path-getsize\":\"PTH202\",\"os-path-getatime\":\"PTH203\",\"os-path-getmtime\":\"PTH204\",\"os-path-getctime\":\"PTH205\",\"os-sep-split\":\"PTH206\",\"glob\":\"PTH207\",\"os-listdir\":\"PTH208\",\"static-join-to-f-string\":\"FLY002\",\"unsorted-imports\":\"I001\",\"missing-required-import\":\"I002\",\"complex-structure\":\"C901\",\"numpy-deprecated-type-alias\":\"NPY001\",\"numpy-legacy-random\":\"NPY002\",\"numpy-deprecated-function\":\"NPY003\",\"numpy2-deprecation\":\"NPY201\",\"invalid-class-name\":\"N801\",\"invalid-function-name\":\"N802\",\"invalid-argument-name\":\"N803\",\"invalid-first-argument-name-for-class-method\":\"N804\",\"invalid-first-argument-name-for-method\":\"N805\",\"non-lowercase-variable-in-function\":\"N806\",\"dunder-function-name\":\"N807\",\"constant-imported-as-non-constant\":\"N811\",\"lowercase-imported-as-non-lowercase\":\"N812\",\"camelcase-imported-as-lowercase\":\"N813\",\"camelcase-imported-as-constant\":\"N814\",\"mixed-case-variable-in-class-scope\":\"N815\",\"mixed-case-variable-in-global-scope\":\"N816\",\"camelcase-imported-as-acronym\":\"N817\",\"error-suffix-on-exception-name\":\"N818\",\"invalid-module-name\":\"N999\",\"pandas-use-of-inplace-argument\":\"PD002\",\"pandas-use-of-dot-is-null\":\"PD003\",\"pandas-use-of-dot-not-null\":\"PD004\",\"pandas-use-of-dot-ix\":\"PD007\",\"pandas-use-of-dot-at\":\"PD008\",\"pandas-use-of-dot-iat\":\"PD009\",\"pandas-use-of-dot-pivot-or-unstack\":\"PD010\",\"pandas-use-of-dot-values\":\"PD011\",\"pandas-use-of-dot-read-table\":\"PD012\",\"pandas-use-of-dot-stack\":\"PD013\",\"pandas-use-of-pd-merge\":\"PD015\",\"pandas-nunique-constant-series-check\":\"PD101\",\"pandas-df-variable-name\":\"PD901\",\"unnecessary-list-cast\":\"PERF101\",\"incorrect-dict-iterator\":\"PERF102\",\"try-except-in-loop\":\"PERF203\",\"manual-list-comprehension\":\"PERF401\",\"manual-list-copy\":\"PERF402\",\"manual-dict-comprehension\":\"PERF403\",\"mixed-spaces-and-tabs\":\"E101\",\"indentation-with-invalid-multiple\":\"E111\",\"no-indented-block\":\"E112\",\"unexpected-indentation\":\"E113\",\"indentation-with-invalid-multiple-comment\":\"E114\",\"no-indented-block-comment\":\"E115\",\"unexpected-indentation-comment\":\"E116\",\"over-indented\":\"E117\",\"whitespace-after-open-bracket\":\"E201\",\"whitespace-before-close-bracket\":\"E202\",\"whitespace-before-punctuation\":\"E203\",\"whitespace-after-decorator\":\"E204\",\"whitespace-before-parameters\":\"E211\",\"multiple-spaces-before-operator\":\"E221\",\"multiple-spaces-after-operator\":\"E222\",\"tab-before-operator\":\"E223\",\"tab-after-operator\":\"E224\",\"missing-whitespace-around-operator\":\"E225\",\"missing-whitespace-around-arithmetic-operator\":\"E226\",\"missing-whitespace-around-bitwise-or-shift-operator\":\"E227\",\"missing-whitespace-around-modulo-operator\":\"E228\",\"missing-whitespace\":\"E231\",\"multiple-spaces-after-comma\":\"E241\",\"tab-after-comma\":\"E242\",\"unexpected-spaces-around-keyword-parameter-equals\":\"E251\",\"missing-whitespace-around-parameter-equals\":\"E252\",\"too-few-spaces-before-inline-comment\":\"E261\",\"no-space-after-inline-comment\":\"E262\",\"no-space-after-block-comment\":\"E265\",\"multiple-leading-hashes-for-block-comment\":\"E266\",\"multiple-spaces-after-keyword\":\"E271\",\"multiple-spaces-before-keyword\":\"E272\",\"tab-after-keyword\":\"E273\",\"tab-before-keyword\":\"E274\",\"missing-whitespace-after-keyword\":\"E275\",\"blank-line-between-methods\":\"E301\",\"blank-lines-top-level\":\"E302\",\"too-many-blank-lines\":\"E303\",\"blank-line-after-decorator\":\"E304\",\"blank-lines-after-function-or-class\":\"E305\",\"blank-lines-before-nested-definition\":\"E306\",\"multiple-imports-on-one-line\":\"E401\",\"module-import-not-at-top-of-file\":\"E402\",\"line-too-long\":\"E501\",\"redundant-backslash\":\"E502\",\"multiple-statements-on-one-line-colon\":\"E701\",\"multiple-statements-on-one-line-semicolon\":\"E702\",\"useless-semicolon\":\"E703\",\"none-comparison\":\"E711\",\"true-false-comparison\":\"E712\",\"not-in-test\":\"E713\",\"not-is-test\":\"E714\",\"type-comparison\":\"E721\",\"bare-except\":\"E722\",\"lambda-assignment\":\"E731\",\"ambiguous-variable-name\":\"E741\",\"ambiguous-class-name\":\"E742\",\"ambiguous-function-name\":\"E743\",\"io-error\":\"E902\",\"syntax-error\":\"E999\",\"tab-indentation\":\"W191\",\"trailing-whitespace\":\"W291\",\"missing-newline-at-end-of-file\":\"W292\",\"blank-line-with-whitespace\":\"W293\",\"too-many-newlines-at-end-of-file\":\"W391\",\"doc-line-too-long\":\"W505\",\"invalid-escape-sequence\":\"W605\",\"docstring-missing-returns\":\"DOC201\",\"docstring-extraneous-returns\":\"DOC202\",\"docstring-missing-yields\":\"DOC402\",\"docstring-extraneous-yields\":\"DOC403\",\"docstring-missing-exception\":\"DOC501\",\"docstring-extraneous-exception\":\"DOC502\",\"undocumented-public-module\":\"D100\",\"undocumented-public-class\":\"D101\",\"undocumented-public-method\":\"D102\",\"undocumented-public-function\":\"D103\",\"undocumented-public-package\":\"D104\",\"undocumented-magic-method\":\"D105\",\"undocumented-public-nested-class\":\"D106\",\"undocumented-public-init\":\"D107\",\"fits-on-one-line\":\"D200\",\"no-blank-line-before-function\":\"D201\",\"no-blank-line-after-function\":\"D202\",\"one-blank-line-before-class\":\"D203\",\"one-blank-line-after-class\":\"D204\",\"blank-line-after-summary\":\"D205\",\"indent-with-spaces\":\"D206\",\"under-indentation\":\"D207\",\"over-indentation\":\"D208\",\"new-line-after-last-paragraph\":\"D209\",\"surrounding-whitespace\":\"D210\",\"blank-line-before-class\":\"D211\",\"multi-line-summary-first-line\":\"D212\",\"multi-line-summary-second-line\":\"D213\",\"section-not-over-indented\":\"D214\",\"section-underline-not-over-indented\":\"D215\",\"triple-single-quotes\":\"D300\",\"escape-sequence-in-docstring\":\"D301\",\"ends-in-period\":\"D400\",\"non-imperative-mood\":\"D401\",\"no-signature\":\"D402\",\"first-line-capitalized\":\"D403\",\"docstring-starts-with-this\":\"D404\",\"capitalize-section-name\":\"D405\",\"new-line-after-section-name\":\"D406\",\"dashed-underline-after-section\":\"D407\",\"section-underline-after-name\":\"D408\",\"section-underline-matches-section-length\":\"D409\",\"no-blank-line-after-section\":\"D410\",\"no-blank-line-before-section\":\"D411\",\"blank-lines-between-header-and-content\":\"D412\",\"blank-line-after-last-section\":\"D413\",\"empty-docstring-section\":\"D414\",\"ends-in-punctuation\":\"D415\",\"section-name-ends-in-colon\":\"D416\",\"undocumented-param\":\"D417\",\"overload-with-docstring\":\"D418\",\"empty-docstring\":\"D419\",\"unused-import\":\"F401\",\"import-shadowed-by-loop-var\":\"F402\",\"undefined-local-with-import-star\":\"F403\",\"late-future-import\":\"F404\",\"undefined-local-with-import-star-usage\":\"F405\",\"undefined-local-with-nested-import-star-usage\":\"F406\",\"future-feature-not-defined\":\"F407\",\"percent-format-invalid-format\":\"F501\",\"percent-format-expected-mapping\":\"F502\",\"percent-format-expected-sequence\":\"F503\",\"percent-format-extra-named-arguments\":\"F504\",\"percent-format-missing-argument\":\"F505\",\"percent-format-mixed-positional-and-named\":\"F506\",\"percent-format-positional-count-mismatch\":\"F507\",\"percent-format-star-requires-sequence\":\"F508\",\"percent-format-unsupported-format-character\":\"F509\",\"string-dot-format-invalid-format\":\"F521\",\"string-dot-format-extra-named-arguments\":\"F522\",\"string-dot-format-extra-positional-arguments\":\"F523\",\"string-dot-format-missing-arguments\":\"F524\",\"string-dot-format-mixing-automatic\":\"F525\",\"f-string-missing-placeholders\":\"F541\",\"multi-value-repeated-key-literal\":\"F601\",\"multi-value-repeated-key-variable\":\"F602\",\"expressions-in-star-assignment\":\"F621\",\"multiple-starred-expressions\":\"F622\",\"assert-tuple\":\"F631\",\"is-literal\":\"F632\",\"invalid-print-syntax\":\"F633\",\"if-tuple\":\"F634\",\"break-outside-loop\":\"F701\",\"continue-outside-loop\":\"F702\",\"yield-outside-function\":\"F704\",\"return-outside-function\":\"F706\",\"default-except-not-last\":\"F707\",\"forward-annotation-syntax-error\":\"F722\",\"redefined-while-unused\":\"F811\",\"undefined-name\":\"F821\",\"undefined-export\":\"F822\",\"undefined-local\":\"F823\",\"unused-variable\":\"F841\",\"unused-annotation\":\"F842\",\"raise-not-implemented\":\"F901\",\"eval\":\"PGH001\",\"deprecated-log-warn\":\"PGH002\",\"blanket-type-ignore\":\"PGH003\",\"blanket-noqa\":\"PGH004\",\"invalid-mock-access\":\"PGH005\",\"type-name-incorrect-variance\":\"PLC0105\",\"type-bivariance\":\"PLC0131\",\"type-param-name-mismatch\":\"PLC0132\",\"single-string-slots\":\"PLC0205\",\"dict-index-missing-items\":\"PLC0206\",\"iteration-over-set\":\"PLC0208\",\"useless-import-alias\":\"PLC0414\",\"import-outside-top-level\":\"PLC0415\",\"len-test\":\"PLC1802\",\"compare-to-empty-string\":\"PLC1901\",\"non-ascii-name\":\"PLC2401\",\"non-ascii-import-name\":\"PLC2403\",\"import-private-name\":\"PLC2701\",\"unnecessary-dunder-call\":\"PLC2801\",\"unnecessary-direct-lambda-call\":\"PLC3002\",\"yield-in-init\":\"PLE0100\",\"return-in-init\":\"PLE0101\",\"nonlocal-and-global\":\"PLE0115\",\"continue-in-finally\":\"PLE0116\",\"nonlocal-without-binding\":\"PLE0117\",\"load-before-global-declaration\":\"PLE0118\",\"non-slot-assignment\":\"PLE0237\",\"duplicate-bases\":\"PLE0241\",\"unexpected-special-method-signature\":\"PLE0302\",\"invalid-length-return-type\":\"PLE0303\",\"invalid-bool-return-type\":\"PLE0304\",\"invalid-index-return-type\":\"PLE0305\",\"invalid-str-return-type\":\"PLE0307\",\"invalid-bytes-return-type\":\"PLE0308\",\"invalid-hash-return-type\":\"PLE0309\",\"invalid-all-object\":\"PLE0604\",\"invalid-all-format\":\"PLE0605\",\"potential-index-error\":\"PLE0643\",\"misplaced-bare-raise\":\"PLE0704\",\"repeated-keyword-argument\":\"PLE1132\",\"dict-iter-missing-items\":\"PLE1141\",\"await-outside-async\":\"PLE1142\",\"logging-too-many-args\":\"PLE1205\",\"logging-too-few-args\":\"PLE1206\",\"bad-string-format-character\":\"PLE1300\",\"bad-string-format-type\":\"PLE1307\",\"bad-str-strip-call\":\"PLE1310\",\"invalid-envvar-value\":\"PLE1507\",\"singledispatch-method\":\"PLE1519\",\"singledispatchmethod-function\":\"PLE1520\",\"yield-from-in-async-function\":\"PLE1700\",\"bidirectional-unicode\":\"PLE2502\",\"invalid-character-backspace\":\"PLE2510\",\"invalid-character-sub\":\"PLE2512\",\"invalid-character-esc\":\"PLE2513\",\"invalid-character-nul\":\"PLE2514\",\"invalid-character-zero-width-space\":\"PLE2515\",\"modified-iterating-set\":\"PLE4703\",\"comparison-with-itself\":\"PLR0124\",\"comparison-of-constant\":\"PLR0133\",\"no-classmethod-decorator\":\"PLR0202\",\"no-staticmethod-decorator\":\"PLR0203\",\"property-with-parameters\":\"PLR0206\",\"manual-from-import\":\"PLR0402\",\"too-many-public-methods\":\"PLR0904\",\"too-many-return-statements\":\"PLR0911\",\"too-many-branches\":\"PLR0912\",\"too-many-arguments\":\"PLR0913\",\"too-many-locals\":\"PLR0914\",\"too-many-statements\":\"PLR0915\",\"too-many-boolean-expressions\":\"PLR0916\",\"too-many-positional-arguments\":\"PLR0917\",\"repeated-isinstance-calls\":\"PLR1701\",\"too-many-nested-blocks\":\"PLR1702\",\"redefined-argument-from-local\":\"PLR1704\",\"and-or-ternary\":\"PLR1706\",\"useless-return\":\"PLR1711\",\"repeated-equality-comparison\":\"PLR1714\",\"boolean-chained-comparison\":\"PLR1716\",\"sys-exit-alias\":\"PLR1722\",\"if-stmt-min-max\":\"PLR1730\",\"unnecessary-dict-index-lookup\":\"PLR1733\",\"unnecessary-list-index-lookup\":\"PLR1736\",\"magic-value-comparison\":\"PLR2004\",\"empty-comment\":\"PLR2044\",\"collapsible-else-if\":\"PLR5501\",\"non-augmented-assignment\":\"PLR6104\",\"literal-membership\":\"PLR6201\",\"no-self-use\":\"PLR6301\",\"unnecessary-lambda\":\"PLW0108\",\"useless-else-on-loop\":\"PLW0120\",\"self-assigning-variable\":\"PLW0127\",\"redeclared-assigned-name\":\"PLW0128\",\"assert-on-string-literal\":\"PLW0129\",\"named-expr-without-context\":\"PLW0131\",\"useless-exception-statement\":\"PLW0133\",\"nan-comparison\":\"PLW0177\",\"bad-staticmethod-argument\":\"PLW0211\",\"super-without-brackets\":\"PLW0245\",\"import-self\":\"PLW0406\",\"global-variable-not-assigned\":\"PLW0602\",\"global-statement\":\"PLW0603\",\"global-at-module-level\":\"PLW0604\",\"self-or-cls-assignment\":\"PLW0642\",\"binary-op-exception\":\"PLW0711\",\"bad-open-mode\":\"PLW1501\",\"shallow-copy-environ\":\"PLW1507\",\"invalid-envvar-default\":\"PLW1508\",\"subprocess-popen-preexec-fn\":\"PLW1509\",\"subprocess-run-without-check\":\"PLW1510\",\"unspecified-encoding\":\"PLW1514\",\"eq-without-hash\":\"PLW1641\",\"useless-with-lock\":\"PLW2101\",\"redefined-loop-name\":\"PLW2901\",\"bad-dunder-method-name\":\"PLW3201\",\"nested-min-max\":\"PLW3301\",\"useless-metaclass-type\":\"UP001\",\"type-of-primitive\":\"UP003\",\"useless-object-inheritance\":\"UP004\",\"deprecated-unittest-alias\":\"UP005\",\"non-pep585-annotation\":\"UP006\",\"non-pep604-annotation\":\"UP007\",\"super-call-with-parameters\":\"UP008\",\"utf8-encoding-declaration\":\"UP009\",\"unnecessary-future-import\":\"UP010\",\"lru-cache-without-parameters\":\"UP011\",\"unnecessary-encode-utf8\":\"UP012\",\"convert-typed-dict-functional-to-class\":\"UP013\",\"convert-named-tuple-functional-to-class\":\"UP014\",\"redundant-open-modes\":\"UP015\",\"datetime-timezone-utc\":\"UP017\",\"native-literals\":\"UP018\",\"typing-text-str-alias\":\"UP019\",\"open-alias\":\"UP020\",\"replace-universal-newlines\":\"UP021\",\"replace-stdout-stderr\":\"UP022\",\"deprecated-c-element-tree\":\"UP023\",\"os-error-alias\":\"UP024\",\"unicode-kind-prefix\":\"UP025\",\"deprecated-mock-import\":\"UP026\",\"unpacked-list-comprehension\":\"UP027\",\"yield-in-for-loop\":\"UP028\",\"unnecessary-builtin-import\":\"UP029\",\"format-literals\":\"UP030\",\"printf-string-formatting\":\"UP031\",\"f-string\":\"UP032\",\"lru-cache-with-maxsize-none\":\"UP033\",\"extraneous-parentheses\":\"UP034\",\"deprecated-import\":\"UP035\",\"outdated-version-block\":\"UP036\",\"quoted-annotation\":\"UP037\",\"non-pep604-isinstance\":\"UP038\",\"unnecessary-class-parentheses\":\"UP039\",\"non-pep695-type-alias\":\"UP040\",\"timeout-error-alias\":\"UP041\",\"replace-str-enum\":\"UP042\",\"unnecessary-default-type-args\":\"UP043\",\"non-pep646-unpack\":\"UP044\",\"read-whole-file\":\"FURB101\",\"write-whole-file\":\"FURB103\",\"print-empty-string\":\"FURB105\",\"if-exp-instead-of-or-operator\":\"FURB110\",\"repeated-append\":\"FURB113\",\"f-string-number-format\":\"FURB116\",\"reimplemented-operator\":\"FURB118\",\"readlines-in-for\":\"FURB129\",\"delete-full-slice\":\"FURB131\",\"check-and-remove-from-set\":\"FURB132\",\"if-expr-min-max\":\"FURB136\",\"reimplemented-starmap\":\"FURB140\",\"for-loop-set-mutations\":\"FURB142\",\"slice-copy\":\"FURB145\",\"unnecessary-enumerate\":\"FURB148\",\"math-constant\":\"FURB152\",\"repeated-global\":\"FURB154\",\"hardcoded-string-charset\":\"FURB156\",\"verbose-decimal-constructor\":\"FURB157\",\"bit-count\":\"FURB161\",\"redundant-log-base\":\"FURB163\",\"unnecessary-from-float\":\"FURB164\",\"int-on-sliced-str\":\"FURB166\",\"regex-flag-alias\":\"FURB167\",\"isinstance-type-none\":\"FURB168\",\"type-none-comparison\":\"FURB169\",\"single-item-membership-test\":\"FURB171\",\"implicit-cwd\":\"FURB177\",\"meta-class-abc-meta\":\"FURB180\",\"hashlib-digest-hex\":\"FURB181\",\"list-reverse-copy\":\"FURB187\",\"slice-to-remove-prefix-or-suffix\":\"FURB188\",\"subclass-builtin\":\"FURB189\",\"sorted-min-max\":\"FURB192\",\"ambiguous-unicode-character-string\":\"RUF001\",\"ambiguous-unicode-character-docstring\":\"RUF002\",\"ambiguous-unicode-character-comment\":\"RUF003\",\"collection-literal-concatenation\":\"RUF005\",\"asyncio-dangling-task\":\"RUF006\",\"zip-instead-of-pairwise\":\"RUF007\",\"mutable-dataclass-default\":\"RUF008\",\"function-call-in-dataclass-default-argument\":\"RUF009\",\"explicit-f-string-type-conversion\":\"RUF010\",\"ruff-static-key-dict-comprehension\":\"RUF011\",\"mutable-class-default\":\"RUF012\",\"implicit-optional\":\"RUF013\",\"unnecessary-iterable-allocation-for-first-element\":\"RUF015\",\"invalid-index-type\":\"RUF016\",\"quadratic-list-summation\":\"RUF017\",\"assignment-in-assert\":\"RUF018\",\"unnecessary-key-check\":\"RUF019\",\"never-union\":\"RUF020\",\"parenthesize-chained-operators\":\"RUF021\",\"unsorted-dunder-all\":\"RUF022\",\"unsorted-dunder-slots\":\"RUF023\",\"mutable-fromkeys-value\":\"RUF024\",\"default-factory-kwarg\":\"RUF026\",\"missing-f-string-syntax\":\"RUF027\",\"invalid-formatter-suppression-comment\":\"RUF028\",\"unused-async\":\"RUF029\",\"assert-with-print-message\":\"RUF030\",\"incorrectly-parenthesized-tuple-in-subscript\":\"RUF031\",\"decimal-from-float-literal\":\"RUF032\",\"post-init-default\":\"RUF033\",\"useless-if-else\":\"RUF034\",\"unsafe-markup-use\":\"RUF035\",\"none-not-at-end-of-union\":\"RUF036\",\"redundant-bool-literal\":\"RUF038\",\"unraw-re-pattern\":\"RUF039\",\"invalid-assert-message-literal-argument\":\"RUF040\",\"unnecessary-nested-literal\":\"RUF041\",\"unnecessary-cast-to-int\":\"RUF046\",\"map-int-version-parsing\":\"RUF048\",\"used-dummy-variable\":\"RUF052\",\"unnecessary-regular-expression\":\"RUF055\",\"unused-noqa\":\"RUF100\",\"redirected-noqa\":\"RUF101\",\"invalid-pyproject-toml\":\"RUF200\",\"raise-vanilla-class\":\"TRY002\",\"raise-vanilla-args\":\"TRY003\",\"type-check-without-type-error\":\"TRY004\",\"reraise-no-cause\":\"TRY200\",\"verbose-raise\":\"TRY201\",\"useless-try-except\":\"TRY203\",\"try-consider-else\":\"TRY300\",\"raise-within-try\":\"TRY301\",\"error-instead-of-exception\":\"TRY400\",\"verbose-log-message\":\"TRY401\"},\"executable\":\"/Users/razvan/.rye/self/bin/ruff\",\"timestamp\":1738802705}",
63
+ "last_opened_file_path": "/Users/razvan/pr/polymarket-apis/src/polymarket_apis/clients",
64
+ "run.code.analysis.last.selected.profile": "pProject Default",
65
+ "settings.editor.selected.configurable": "works.szabope.mypy.configurable"
66
+ }
67
+ }]]></component>
68
+ <component name="RecentsManager">
69
+ <key name="CopyFile.RECENT_KEYS">
70
+ <recent name="$PROJECT_DIR$/src/polymarket_apis/clients" />
71
+ <recent name="$PROJECT_DIR$/src/polymarket_apis/types" />
72
+ </key>
73
+ <key name="MoveFile.RECENT_KEYS">
74
+ <recent name="$PROJECT_DIR$" />
75
+ </key>
76
+ </component>
77
+ <component name="SharedIndexes">
78
+ <attachedChunks>
79
+ <set>
80
+ <option value="bundled-python-sdk-d27dc8f8c276-a636b6f4477c-com.jetbrains.pycharm.ds.sharedIndexes.bundled-DS-252.26199.84" />
81
+ </set>
82
+ </attachedChunks>
83
+ </component>
84
+ <component name="TaskManager">
85
+ <task active="true" id="Default" summary="Default task">
86
+ <changelist id="9cbf4d21-9d0c-43a0-80fe-b72fdf89ce0d" name="Changes" comment="" />
87
+ <created>1760866613742</created>
88
+ <option name="number" value="Default" />
89
+ <option name="presentableId" value="Default" />
90
+ <updated>1760866613742</updated>
91
+ </task>
92
+ <servers />
93
+ </component>
94
+ <component name="Vcs.Log.Tabs.Properties">
95
+ <option name="TAB_STATES">
96
+ <map>
97
+ <entry key="MAIN">
98
+ <value>
99
+ <State>
100
+ <option name="CUSTOM_BOOLEAN_PROPERTIES">
101
+ <map>
102
+ <entry key="Show.Git.Branches" value="true" />
103
+ </map>
104
+ </option>
105
+ </State>
106
+ </value>
107
+ </entry>
108
+ </map>
109
+ </option>
110
+ </component>
111
+ <component name="VcsManagerConfiguration">
112
+ <MESSAGE value="added pre-commit hooks for linting and formatting. small formatting changes. updated __init__s." />
113
+ <option name="LAST_COMMIT_MESSAGE" value="added pre-commit hooks for linting and formatting. small formatting changes. updated __init__s." />
114
+ </component>
115
+ </project>
@@ -0,0 +1,10 @@
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
@@ -1,6 +1,22 @@
1
+ Metadata-Version: 2.4
2
+ Name: polymarket-apis
3
+ Version: 0.3.2
4
+ Summary: Unified Polymarket APIs with Pydantic data validation - Clob, Gamma, Data, Web3, Websockets, GraphQL clients.
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
+
1
17
  # polymarket-apis [![PyPI version](https://img.shields.io/pypi/v/polymarket-apis.svg)](https://pypi.org/project/polymarket-apis/)
2
18
 
3
- Polymarket CLOB, Gamma, Data, Web3, Websockets and GraphQL clients.
19
+ Unified Polymarket APIs with Pydantic data validation - Clob, Gamma, Data, Web3, Websockets, GraphQL clients.
4
20
 
5
21
  ## Polymarket Mental Models
6
22
 
@@ -31,6 +47,9 @@ flowchart LR
31
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)
32
48
  - Identified by a **`token id`** (e.g. `15353185604353847122370324954202969073036867278400776447048296624042585335546` for the `Yes` outcome in the 1 rate cut in 2025 market)
33
49
 
50
+ - The different APIs represent Events/Markets differently (e.g. Event, QueryEvent / ClobMarket, GammaMarket, RewardsMarket) but they all use to the same underlying identifiers.
51
+
52
+
34
53
  ### Tokens
35
54
  - **Tokens** are the blockchain implementation of **Outcomes** - tradable digital assets on the Polygon blockchain that users buy, hold and sell on Polygon.
36
55
  - 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).
@@ -75,15 +94,36 @@ flowchart LR
75
94
  ### PolymarketGammaClient - Market/Event related operations
76
95
  - #### Market
77
96
  - get **GammaMarket** by `market_id`
97
+ - get **GammaMarket** by `slug`
78
98
  - 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
99
+ - get **Tags** for a **Market** by `market_id`
79
100
  - #### Event
80
101
  - get **Event** by `event_id`
102
+ - get **Event** by `slug`
81
103
  - 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
82
104
  - get all **Events** given some filtration
83
- - 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)
84
- - #### Miscellaneous
105
+ - search **Events**, **Tags**, **Profiles**, filter by text query, tags, active/resolved, recurrence, sort by volume/volume_24hr/liquidity/start_date/end_date/competitive
85
106
  - grok event summary by **Event** `slug`
86
107
  - grok election market explanation by candidate name and election title
108
+ - get **Tags** for an **Event** by `event_id`
109
+ - #### Tag
110
+ - get **Tags** with pagination, order by any **Tag** field
111
+ - get all **Tags**
112
+ - get **Tag** by `tag_id`
113
+ - get **Tag** relations by `tag_id` or `slug`
114
+ - get **Tags** related to a **Tag** by `tag_id` or `slug`
115
+ - #### Sport
116
+ - get **Teams** with pagination, filter by `league`, `name`, `abbreviation`
117
+ - get all **Teams** given some filtration
118
+ - get **Sports** with pagination, filter by `name`
119
+ - get **Sports** metadata
120
+ - #### Series
121
+ - get **Series** with pagination, filter by `slug`, closed status, order by any **Series** field
122
+ - get all **Series** given some filtration
123
+ - #### Comments
124
+ - get comments by `parent_entity_type` and `parent_entity_id` with pagination, order by any **Comment** field
125
+ - get comments by `comment_id` - gets all comments in a thread.
126
+ - get comments by user base address (not proxy address) with pagination, order by any **Comment** field
87
127
 
88
128
  ### PolymarketDataClient - Portfolio related operations
89
129
  - #### Positions
@@ -99,7 +139,12 @@ flowchart LR
99
139
  - `condition_ids` is ***None*** → total value of positions
100
140
  - `condition_ids` is ***str*** → value of positions on a market
101
141
  - `condition_ids` is ***list[str]*** → sum of values of positions on multiple markets
142
+ - #### Closed positions
143
+ - get closed positions, filter by condition_ids
102
144
  - #### Miscellaneous
145
+ - get total number of markets traded by user address
146
+ - get open interest for a list of condition_ids
147
+ - get live volume for an event by `event_id`
103
148
  - get pnl timeseries by user address for a period (1d, 1w, 1m, all) with frequency (1h, 3h, 12h, 1d)
104
149
  - get overall pnl/volume by user address for a recent window (1d, 7d, 30d, all)
105
150
  - get user rank on the profit/volume leaderboards by user address for a recent window (1d, 7d, 30d, all)
@@ -1,22 +1,6 @@
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
1
  # polymarket-apis [![PyPI version](https://img.shields.io/pypi/v/polymarket-apis.svg)](https://pypi.org/project/polymarket-apis/)
18
2
 
19
- Polymarket CLOB, Gamma, Data, Web3, Websockets and GraphQL clients.
3
+ Unified Polymarket APIs with Pydantic data validation - Clob, Gamma, Data, Web3, Websockets, GraphQL clients.
20
4
 
21
5
  ## Polymarket Mental Models
22
6
 
@@ -47,6 +31,9 @@ flowchart LR
47
31
  - **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
32
  - Identified by a **`token id`** (e.g. `15353185604353847122370324954202969073036867278400776447048296624042585335546` for the `Yes` outcome in the 1 rate cut in 2025 market)
49
33
 
34
+ - The different APIs represent Events/Markets differently (e.g. Event, QueryEvent / ClobMarket, GammaMarket, RewardsMarket) but they all use to the same underlying identifiers.
35
+
36
+
50
37
  ### Tokens
51
38
  - **Tokens** are the blockchain implementation of **Outcomes** - tradable digital assets on the Polygon blockchain that users buy, hold and sell on Polygon.
52
39
  - 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).
@@ -91,15 +78,36 @@ flowchart LR
91
78
  ### PolymarketGammaClient - Market/Event related operations
92
79
  - #### Market
93
80
  - get **GammaMarket** by `market_id`
81
+ - get **GammaMarket** by `slug`
94
82
  - 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
83
+ - get **Tags** for a **Market** by `market_id`
95
84
  - #### Event
96
85
  - get **Event** by `event_id`
86
+ - get **Event** by `slug`
97
87
  - 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
88
  - 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
89
+ - search **Events**, **Tags**, **Profiles**, filter by text query, tags, active/resolved, recurrence, sort by volume/volume_24hr/liquidity/start_date/end_date/competitive
101
90
  - grok event summary by **Event** `slug`
102
91
  - grok election market explanation by candidate name and election title
92
+ - get **Tags** for an **Event** by `event_id`
93
+ - #### Tag
94
+ - get **Tags** with pagination, order by any **Tag** field
95
+ - get all **Tags**
96
+ - get **Tag** by `tag_id`
97
+ - get **Tag** relations by `tag_id` or `slug`
98
+ - get **Tags** related to a **Tag** by `tag_id` or `slug`
99
+ - #### Sport
100
+ - get **Teams** with pagination, filter by `league`, `name`, `abbreviation`
101
+ - get all **Teams** given some filtration
102
+ - get **Sports** with pagination, filter by `name`
103
+ - get **Sports** metadata
104
+ - #### Series
105
+ - get **Series** with pagination, filter by `slug`, closed status, order by any **Series** field
106
+ - get all **Series** given some filtration
107
+ - #### Comments
108
+ - get comments by `parent_entity_type` and `parent_entity_id` with pagination, order by any **Comment** field
109
+ - get comments by `comment_id` - gets all comments in a thread.
110
+ - get comments by user base address (not proxy address) with pagination, order by any **Comment** field
103
111
 
104
112
  ### PolymarketDataClient - Portfolio related operations
105
113
  - #### Positions
@@ -115,7 +123,12 @@ flowchart LR
115
123
  - `condition_ids` is ***None*** → total value of positions
116
124
  - `condition_ids` is ***str*** → value of positions on a market
117
125
  - `condition_ids` is ***list[str]*** → sum of values of positions on multiple markets
126
+ - #### Closed positions
127
+ - get closed positions, filter by condition_ids
118
128
  - #### Miscellaneous
129
+ - get total number of markets traded by user address
130
+ - get open interest for a list of condition_ids
131
+ - get live volume for an event by `event_id`
119
132
  - get pnl timeseries by user address for a period (1d, 1w, 1m, all) with frequency (1h, 3h, 12h, 1d)
120
133
  - get overall pnl/volume by user address for a recent window (1d, 7d, 30d, all)
121
134
  - get user rank on the profit/volume leaderboards by user address for a recent window (1d, 7d, 30d, all)
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "polymarket-apis"
3
- version = "0.3.0"
4
- description = "Unified Polymarket APIs - clob, gamma, data, web3, websockets"
3
+ version = "0.3.2"
4
+ description = "Unified Polymarket APIs with Pydantic data validation - Clob, Gamma, Data, Web3, Websockets, GraphQL clients."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
7
7
  authors = [
@@ -32,6 +32,7 @@ dev = [
32
32
  "jupyter-contrib-nbextensions>=0.7.0",
33
33
  "jupyter>=1.1.1",
34
34
  "ty>=0.0.1a12",
35
+ "mypy>=1.18.2",
35
36
  ]
36
37
 
37
38
  [build-system]
@@ -64,7 +65,7 @@ lint.extend-select = [
64
65
  "FBT", # Flake8-boolean-trap – potential pitfalls with booleans
65
66
  "B", # Flake8-bugbear – common bug patterns
66
67
  "A", # Flake8-builtins – misuse of Python built-in names
67
- "COM", # Flake8-commas – trailing/comma issues
68
+ # "COM", # Flake8-commas – trailing/comma issues
68
69
  # "CPY", # Flake8-copyright – copyright header checks
69
70
  "C4", # Flake8-comprehensions – best practices in comprehensions
70
71
  "DTZ", # Flake8-datetimez – requires timezone-aware datetime objects
@@ -136,3 +137,15 @@ lint.ignore = [
136
137
  "A001", # Flake8-builtins - builtin-variable-shadowing
137
138
  "A002", # Flake8-builtins - builtin-argument-shadowing
138
139
  ]
140
+
141
+
142
+ [tool.mypy]
143
+ python_version = "3.12"
144
+ warn_return_any = true
145
+ warn_unused_configs = true
146
+ disallow_untyped_defs = true
147
+ disallow_any_unimported = true
148
+ no_implicit_optional = true
149
+ check_untyped_defs = true
150
+ warn_unused_ignores = true
151
+ show_error_codes = true
@@ -0,0 +1,41 @@
1
+ """
2
+ Polymarket APIs - Unified interface for Polymarket's various APIs.
3
+
4
+ This package provides a comprehensive interface to Polymarket's APIs including:
5
+ - CLOB (Central Limit Order Book) API for trading
6
+ - Gamma API for event and market information
7
+ - Data API for user information
8
+ - Web3 API for blockchain interactions
9
+ - WebSocket API for real-time data streams
10
+ - GraphQL API for flexible data queries
11
+ """
12
+
13
+ __version__ = "0.3.2"
14
+ __author__ = "Razvan Gheorghe"
15
+ __email__ = "razvan@gheorghe.me"
16
+
17
+ from .clients import (
18
+ AsyncPolymarketGraphQLClient,
19
+ PolymarketClobClient,
20
+ PolymarketDataClient,
21
+ PolymarketGammaClient,
22
+ PolymarketGraphQLClient,
23
+ PolymarketWeb3Client,
24
+ PolymarketWebsocketsClient,
25
+ )
26
+ from .types.clob_types import MarketOrderArgs, OrderArgs
27
+
28
+ __all__ = [
29
+ "AsyncPolymarketGraphQLClient",
30
+ "MarketOrderArgs",
31
+ "OrderArgs",
32
+ "PolymarketClobClient",
33
+ "PolymarketDataClient",
34
+ "PolymarketGammaClient",
35
+ "PolymarketGraphQLClient",
36
+ "PolymarketWeb3Client",
37
+ "PolymarketWebsocketsClient",
38
+ "__author__",
39
+ "__email__",
40
+ "__version__",
41
+ ]
@@ -0,0 +1,23 @@
1
+ """
2
+ Client modules for Polymarket APIs.
3
+
4
+ This module contains all the client classes for interacting with different
5
+ Polymarket APIs including CLOB, Data, Gamma, GraphQL, Web3, and WebSocket clients.
6
+ """
7
+
8
+ from .clob_client import PolymarketClobClient
9
+ from .data_client import PolymarketDataClient
10
+ from .gamma_client import PolymarketGammaClient
11
+ from .graphql_client import AsyncPolymarketGraphQLClient, PolymarketGraphQLClient
12
+ from .web3_client import PolymarketWeb3Client
13
+ from .websockets_client import PolymarketWebsocketsClient
14
+
15
+ __all__ = [
16
+ "AsyncPolymarketGraphQLClient",
17
+ "PolymarketClobClient",
18
+ "PolymarketDataClient",
19
+ "PolymarketGammaClient",
20
+ "PolymarketGraphQLClient",
21
+ "PolymarketWeb3Client",
22
+ "PolymarketWebsocketsClient",
23
+ ]