From 140ce0c4bd68580771e14a4e47686d3da7b50616 Mon Sep 17 00:00:00 2001 From: Cesare Naldi <3353250+cesarenaldi@users.noreply.github.com> Date: Fri, 22 May 2026 12:35:09 +0200 Subject: [PATCH 1/3] chore: add issue templates --- .github/ISSUE_TEMPLATE/bug_report.yml | 52 +++++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 1 + .github/ISSUE_TEMPLATE/feature_request.yml | 35 +++++++++++++ .../general_feedback_question.yml | 36 +++++++++++++ 4 files changed, 124 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/ISSUE_TEMPLATE/general_feedback_question.yml diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..2e98aaa --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,52 @@ +name: Bug report +description: Report broken behavior, install failures, regressions, or incorrect Python behavior. +title: "[Bug]: " +labels: + - bug + - needs-triage +body: + - type: markdown + attributes: + value: | + Thanks for reporting a bug in the Python SDK. + + Please do not report security vulnerabilities in public issues. + - type: input + id: package-version + attributes: + label: SDK package and version + description: Include the package name and version from your package manager. + placeholder: "polymarket-client==0.1.0b1" + validations: + required: true + - type: input + id: runtime + attributes: + label: Runtime + description: Include your Python version, environment manager, and package manager. + placeholder: "Python 3.12.8, uv 0.7.0" + validations: + required: true + - type: textarea + id: summary + attributes: + label: What happened? + description: Describe the broken behavior or regression. + placeholder: "The SDK throws when..." + validations: + required: true + - type: textarea + id: reproduction + attributes: + label: Minimal reproduction + description: Provide the smallest code sample or steps that reproduce the issue. + render: python + validations: + required: true + - type: textarea + id: expected-actual + attributes: + label: Expected behavior, actual behavior, or logs + description: Add expected behavior, actual behavior, errors, or logs if helpful. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..3ba13e0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1 @@ +blank_issues_enabled: false diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..bf12169 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,35 @@ +name: Feature request +description: Request a new SDK capability, API improvement, or developer experience enhancement. +title: "[Feature]: " +labels: + - enhancement + - needs-triage +body: + - type: markdown + attributes: + value: | + Thanks for helping improve the Python SDK. + + Please focus this request on the SDK behavior or API surface you want to use. + - type: textarea + id: request + attributes: + label: What would you like the SDK to support? + description: Describe the new capability, API change, or developer experience improvement. + validations: + required: true + - type: textarea + id: use-case + attributes: + label: Why do you need this? + description: Describe the use case or current limitation. + validations: + required: true + - type: textarea + id: example + attributes: + label: Example API or additional context + description: Optional code sample, workaround, or related context. + render: python + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/general_feedback_question.yml b/.github/ISSUE_TEMPLATE/general_feedback_question.yml new file mode 100644 index 0000000..f0cb69c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/general_feedback_question.yml @@ -0,0 +1,36 @@ +name: General feedback or question +description: Ask a usage question or share feedback that is not clearly a bug or feature request. +title: "[Feedback]: " +labels: + - feedback + - needs-triage +body: + - type: markdown + attributes: + value: | + Use this form for Python SDK questions, launch feedback, and reports that are not yet actionable as a bug or feature request. + + Please do not report security vulnerabilities in public issues. + - type: textarea + id: question-feedback + attributes: + label: Question or feedback + description: Describe what you are trying to understand, share, or clarify. + validations: + required: true + - type: input + id: package-version + attributes: + label: SDK package and version + description: Include this if your question depends on a specific package version. + placeholder: "polymarket-client==0.1.0b1" + validations: + required: false + - type: textarea + id: context + attributes: + label: Additional context + description: Add a code sample, runtime details, link, or context if helpful. + render: python + validations: + required: false From f5185a9bea7ce9de71b224093329d980d11130f8 Mon Sep 17 00:00:00 2001 From: Cesare Naldi <3353250+cesarenaldi@users.noreply.github.com> Date: Fri, 22 May 2026 12:36:42 +0200 Subject: [PATCH 2/3] docs: polish public beta guidance --- .claude/CLAUDE.md => CLAUDE.md | 0 CONTRIBUTING.md | 8 ++++++++ README.md | 10 ++++++++-- SECURITY.md | 22 ++++++++++++++++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) rename .claude/CLAUDE.md => CLAUDE.md (100%) create mode 100644 SECURITY.md diff --git a/.claude/CLAUDE.md b/CLAUDE.md similarity index 100% rename from .claude/CLAUDE.md rename to CLAUDE.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 04b8af9..4894304 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,13 @@ # Contributing +The Python SDK is currently in beta. + +During beta, we are using GitHub Issues as the primary public feedback channel. Please open an issue for bug reports, feature requests, or general feedback. + +We are not broadly accepting external pull requests yet. Large changes should not be started without prior discussion and agreement with the Polymarket team. + +Once the SDK is stable and out of beta, we will expand these guidelines and start opening the project to external contributions. + ## Development Setup ```bash diff --git a/README.md b/README.md index 76f3823..cb380c2 100644 --- a/README.md +++ b/README.md @@ -4,16 +4,22 @@ Official Python SDK for Polymarket. The SDK gives Python developers one coherent, workflow-oriented interface for building on Polymarket, starting with public data access and expanding toward authenticated account, trading, builder attribution, and relayer-backed workflows. +## Beta Status + +The Python SDK is currently in beta. We are working toward a stable public API and will use feedback during the beta period to refine the developer experience. + +We welcome bug reports, feature requests, and general feedback through GitHub Issues. Please use the provided issue templates so we can triage reports consistently. + ## Installation ```bash -uv add polymarket-client +uv add --prerelease allow polymarket-client ``` or: ```bash -pip install polymarket-client +pip install --pre polymarket-client ``` ## Usage diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..32d33e0 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,22 @@ +# Security Policy + +## Reporting a Vulnerability + +Please do not report security vulnerabilities through public GitHub issues. + +Use GitHub private vulnerability reporting for this repository. Include enough detail for us to understand and reproduce the issue, including: + +- The affected package and version. +- A description of the vulnerability and potential impact. +- Reproduction steps or a proof of concept, if available. +- Any relevant environment details. + +We will review reports and coordinate fixes before public disclosure. + +## Supported Versions + +The Python SDK is currently in beta. Security fixes are focused on the latest published beta version and the current development branch. + +## Public Issues + +For non-security bugs, feature requests, and general feedback, use the repository's GitHub issue templates. From 59c361d2fb2d102c87b52633f3ad6c2de013310c Mon Sep 17 00:00:00 2001 From: Cesare Naldi <3353250+cesarenaldi@users.noreply.github.com> Date: Fri, 22 May 2026 12:38:01 +0200 Subject: [PATCH 3/3] docs: refresh SDK direction wording --- README.md | 2 +- docs/sdk-direction.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cb380c2..432ed77 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Official Python SDK for Polymarket. -The SDK gives Python developers one coherent, workflow-oriented interface for building on Polymarket, starting with public data access and expanding toward authenticated account, trading, builder attribution, and relayer-backed workflows. +The SDK gives Python developers one coherent, workflow-oriented interface for building on Polymarket across public data, authenticated account, trading, builder attribution, and wallet workflows. ## Beta Status diff --git a/docs/sdk-direction.md b/docs/sdk-direction.md index 71fd36e..3fe4e39 100644 --- a/docs/sdk-direction.md +++ b/docs/sdk-direction.md @@ -33,7 +33,7 @@ We evaluated common Python SDKs in trading, exchange, and Web3 ecosystems. The m The sync and async clients should share request builders, models, auth/signing, serialization, validation, response parsing, and namespace structure. Their implementations should differ at the transport boundary: sync clients use sync transports, async clients use async transports. -Write-heavy CLOB workflows may land on async clients first while we validate the Python interface for order placement, cancellation, signing, and related account operations. This is intentional planned tech debt, not a change to the default-client direction. Once the async shape is stable, follow-up work should extend the same workflows to the synchronous `PublicClient` and `SecureClient` without wrapping async implementations in `asyncio.run()`. +Supported workflows should be available on both sync and async clients where practical. Sync implementations should use sync transports rather than wrapping async implementations in `asyncio.run()`. Clients that own network transports should support explicit cleanup. Synchronous clients should be usable as context managers: