Easy to use Python SDK for the GitCode REST API, community-maintained.
Reason this release was yanked:
version.txt not bundled, fail to import
Project description
GitCode-API
gitcode-api is a community-maintained Python SDK for the GitCode REST API. It provides easy-to-use synchronous and asynchronous clients, repository-scoped helpers, and lightweight response models so you can work with GitCode from Python without hand-writing raw HTTP requests.
Why This Project
- Community project for developers who want a practical GitCode Python library.
- Sync and async clients with a consistent API surface.
- Resource namespaces such as
client.repos,client.pulls, andclient.users. - Repository defaults via
owner=andrepo=on the client. - Sphinx docs plus a mirrored GitCode REST API reference in
docs/.
Installation
Install from PyPI:
pip install gitcode-api
Authentication
Pass api_key= directly, or set GITCODE_ACCESS_TOKEN in your environment:
export GITCODE_ACCESS_TOKEN="your-token"
Quick Start
Sync client
from gitcode_api import GitCode
client = GitCode(
owner="SushiNinja",
repo="GitCode-API",
)
try:
repo = client.repos.get()
branches = client.branches.list(per_page=5)
print(repo.full_name)
for branch in branches:
print(branch.name)
finally:
client.close()
Async client
import asyncio
from gitcode_api import AsyncGitCode
async def main() -> None:
client = AsyncGitCode(owner="SushiNinja", repo="GitCode-API")
try:
pulls = await client.pulls.list(state="open", per_page=20)
print(len(pulls))
finally:
await client.close()
asyncio.run(main())
Context managers
GitCode and AsyncGitCode (and the lower-level SyncAPIClient / AsyncAPIClient) support with / async with. When the SDK creates the underlying httpx client for you, leaving the block calls close() / await close() on that client automatically.
from gitcode_api import GitCode
with GitCode(owner="SushiNinja", repo="GitCode-API") as client:
repo = client.repos.get()
print(repo.full_name)
import asyncio
from gitcode_api import AsyncGitCode
async def main() -> None:
async with AsyncGitCode(owner="SushiNinja", repo="GitCode-API") as client:
pulls = await client.pulls.list(state="open", per_page=20)
print(len(pulls))
asyncio.run(main())
If you pass a custom http_client=, the SDK does not close it; you still own that client’s lifecycle (for example async with httpx.AsyncClient(...) as http: plus AsyncGitCode(http_client=http)).
Common Workflows
Create a pull request:
from gitcode_api import GitCode
client = GitCode(owner="SushiNinja", repo="GitCode-API")
try:
pull = client.pulls.create(
title="Add feature",
head="feature-branch",
base="main",
body="Implements the new flow.",
)
print(pull.number)
finally:
client.close()
Get the authenticated user:
from gitcode_api import GitCode
client = GitCode()
try:
user = client.users.me()
print(user.login)
finally:
client.close()
Search repositories:
from gitcode_api import GitCode
client = GitCode()
try:
repos = client.search.repositories(q="sdk language:python", per_page=10)
for repo in repos:
print(repo.full_name)
finally:
client.close()
Available Resources
Both GitCode and AsyncGitCode expose:
reposandcontentsbranchesandcommitsissuesandpullslabels,milestones, andmembersreleases,tags, andwebhooksusers,orgs,search, andoauth
Examples
Runnable examples live in examples/:
get_current_user.pyget_repository_overview.pylist_pull_requests.pyasync_list_branches.py
Example scripts load shared configuration from examples/.env using python-dotenv.
uv run python examples/get_current_user.py
uv run python examples/get_repository_overview.py
uv run python examples/list_pull_requests.py
uv run python examples/async_list_branches.py
See examples/.env.example for the expected variables.
Documentation
- Project docs entry:
docs/index.rst - SDK docs:
docs/sdk/index.rst - REST API mirror:
docs/rest_api/index.rst
Build the docs locally with Sphinx:
uv run --group docs sphinx-build -b html docs docs/_build/html
Project Status
This is a community project and is still evolving. API coverage is already broad, but some endpoints and behaviors may continue to be refined as the SDK grows.
Contributing
Issues, bug reports, API coverage improvements, docs fixes, and pull requests are welcome. If you are using GitCode heavily and notice missing endpoints or awkward ergonomics, contributions are especially appreciated.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gitcode_api-1.1.1.tar.gz.
File metadata
- Download URL: gitcode_api-1.1.1.tar.gz
- Upload date:
- Size: 55.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17adbe6a518b6daf0ddf410e819a777d7de63c9da083d753c1768b6560a22008
|
|
| MD5 |
de3f80681ba22fe18d86c206bbd72ab9
|
|
| BLAKE2b-256 |
dc469a19873d318d26359d34f04b1e4d5e40865c145ed0904e7fcca3423ea9e6
|
Provenance
The following attestation bundles were made for gitcode_api-1.1.1.tar.gz:
Publisher:
python-publish.yml on Trenza1ore/GitCode-API
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gitcode_api-1.1.1.tar.gz -
Subject digest:
17adbe6a518b6daf0ddf410e819a777d7de63c9da083d753c1768b6560a22008 - Sigstore transparency entry: 1316108177
- Sigstore integration time:
-
Permalink:
Trenza1ore/GitCode-API@63e6954e671286b9dac1d7cee2b19af6df800d07 -
Branch / Tag:
refs/tags/1.1.1 - Owner: https://github.com/Trenza1ore
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@63e6954e671286b9dac1d7cee2b19af6df800d07 -
Trigger Event:
release
-
Statement type:
File details
Details for the file gitcode_api-1.1.1-py3-none-any.whl.
File metadata
- Download URL: gitcode_api-1.1.1-py3-none-any.whl
- Upload date:
- Size: 53.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
747e22b3eb974c0704d7d840f210cf1afe1fc7fb810f5322eaac70f46bcaefd4
|
|
| MD5 |
50ae27c01f6e11d648f04f07998c8be7
|
|
| BLAKE2b-256 |
36803c157ce3b41a1858a312743d2f869ab81f55e9bfac5225f5fcf016a2d56d
|
Provenance
The following attestation bundles were made for gitcode_api-1.1.1-py3-none-any.whl:
Publisher:
python-publish.yml on Trenza1ore/GitCode-API
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gitcode_api-1.1.1-py3-none-any.whl -
Subject digest:
747e22b3eb974c0704d7d840f210cf1afe1fc7fb810f5322eaac70f46bcaefd4 - Sigstore transparency entry: 1316108226
- Sigstore integration time:
-
Permalink:
Trenza1ore/GitCode-API@63e6954e671286b9dac1d7cee2b19af6df800d07 -
Branch / Tag:
refs/tags/1.1.1 - Owner: https://github.com/Trenza1ore
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@63e6954e671286b9dac1d7cee2b19af6df800d07 -
Trigger Event:
release
-
Statement type: