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.1.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.1-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: grit_requester-1.0.1.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.1.tar.gz
Algorithm Hash digest
SHA256 ba839b8a92558277e3bb33f9a410923102413bd2b127c3e602535c8b6c6071ec
MD5 f72527f666fa2b5e2d23782df69c312b
BLAKE2b-256 85a5b1b2d12ad77c52ef3fb4c2888e818942453119856da715bde92d60deb522

See more details on using hashes here.

File details

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

File metadata

  • Download URL: grit_requester-1.0.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bb3069568372f8879dc9876423692299326e52abad0b7dd9193fb4b662aeb786
MD5 7e91664f987545db48e18c9bc61f2b3f
BLAKE2b-256 80e3d20d514f5278085a833acf8a96719b1f6564e3cb221109ff38de2495e61f

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