Skip to main content

Grit requester client for Python

Project description

grit-requester

PRs Welcome

grit-requester-python is a python library to abstract requests to microservices built using Grit.

Features:

  • 🔁 Automatic retry on 401 Unauthorized
  • 🔐 Per-service token cache with concurrency safety
  • 💉 Config and HTTP client injection (perfect for testing)
  • 📦 Full support for generics (any) in request/response
  • 🧠 Context-aware: all requests support context.Context for cancellation, timeouts, and APM tracing

✨ Installation

pip install grit_requester

🚀 Usage Example

Configure and do a request

from grit_requester import GritService, GritConfig

# configure grit requester
config = GritConfig(
  base_url=os.getenv("SERVICE_BASE_URL"),
  auth_url=os.getenv("SERVICE_AUTH_URL"),
  token=os.getenv("SERVICE_TOKEN"),
  secret=os.getenv("SERVICE_SECRET"),
  context=os.getenv("SERVICE_CONTEXT"),
)

ms = GritService(config)

# doing a request
resp = ms.request(
  "GET",
  "/user/list",
)

Make crud requests from a domain

Here you can call a domain passing the type and path to access the following base routers:

Path Description
add Create a new record
bulk Fetch specific records by IDs
bulk_add Create up to 25 records in the same request
dead_detail Get a deleted record by ID
dead_list List deleted records (paginated)
delete Soft-delete a record by ID
detail Get an active record by ID
edit Update specific fields
list List active records (paginated)
list_one List one record based on params
select_raw Execute a predefined raw SQL query safely
from grit_requester import GritService, GritConfig

# configure grit requester
config = GritConfig(
  base_url=os.getenv("SERVICE_BASE_URL"),
  auth_url=os.getenv("SERVICE_AUTH_URL"),
  token=os.getenv("SERVICE_TOKEN"),
  secret=os.getenv("SERVICE_SECRET"),
  context=os.getenv("SERVICE_CONTEXT"),
)

ms = GritService(config)

# make a request from domain
users = ms.domain("user").list_all(
  filters=[{ "field": "name", "type": "eql", "value": "Admin" }]
)

# you can save the domain context to reuse
user_ms = ms.domain("user")

user = user_ms.detail(users[0]["id"])

🔧 License

MIT © Not Empty

Not Empty Foundation - Free codes, full minds

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

grit_requester-1.0.2.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

grit_requester-1.0.2-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file grit_requester-1.0.2.tar.gz.

File metadata

  • Download URL: grit_requester-1.0.2.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for grit_requester-1.0.2.tar.gz
Algorithm Hash digest
SHA256 8a49e75b84d5e4ed2e8b94c65b71e8fa7944332de13578a8e36de3e66a8825c6
MD5 d69b18f1c58e2ebc6818a114713ae182
BLAKE2b-256 b6af9abdb813559742c3979f6df089438720f26ec65196a67548f62d6678ad41

See more details on using hashes here.

File details

Details for the file grit_requester-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: grit_requester-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for grit_requester-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6a97fa092990890b3ef8719333b7783958a4a4531d346d57672a2336076ce87b
MD5 6e4012d65667554db654de6d3a2e818a
BLAKE2b-256 13b24453d1311112a7affc8fceb0991aada8c30782c43c85bc4a4fb36526c764

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page