codecraftai-restclient-oracle
A pure-Python client for Oracle Cloud Infrastructure, replacing the oci SDK.
Every OCI service is JSON over HTTPS with an HTTP-Signature Authorization header, differing only in hostname and API version, so one signed transport serves all seven clients.
Design notes
Which headers are signed depends on the method. A bodiless request signs (request-target), host and date. A request WITH a body also signs x-content-sha256, content-type and content-length — those are what bind the body to the signature. Omitting them on a POST produces a signature the service rejects and, worse, would leave the body unauthenticated if it were ever accepted. The query string is part of (request-target), so it is signed too.
The paginator is part of the surface. The venue calls oci.pagination.list_call_get_all_results directly rather than going through a client method, so replacing the clients alone would not have been enough. ocipagination follows next_page until the listing is exhausted and returns ONE response whose data is every page concatenated — a truncated listing would under-report owned resources, which on a teardown path means leaked infrastructure. It refuses a non-list operation rather than silently building a malformed aggregate.
Request models are one class. The SDK’s twenty-nine *Details types are all plain data holders, so OciModel serves them all; the named subclasses exist so call sites read the same as before and a mistyped class name still fails at import. Fields left unset are omitted rather than sent as null, because OCI distinguishes “not supplied” from “explicitly null” on updates.
SDK inconsistencies are reproduced, not tidied. The details keyword is create_vcn_details for one call and create_instance_configuration for another; identifiers are abbreviated for some resources (ig_id, rt_id) and not others (security_list_id). Consumer code already passes them that way.
Responses are absent-as-None, unlike the Google clients’ protobuf zero values — OCI’s optional fields really are absent.
Errors carry the OCI code. ServiceError keeps its oci.exceptions name and its status / code / message attributes, because consumer code branches on them: BucketNotEmpty and NotAuthorized need different handling, and a teardown that treated them alike would either leak storage or mask a permissions problem. Throttles and server faults raise TransientServiceError, separately, because those are worth retrying and a 4xx is not.
Metadata
Release files for codecraftai-restclient-oracle 1.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| codecraftai_restclient_oracle-1.3.1.tar.gz | 20.1 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| codecraftai_restclient_oracle-1.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 44.3 kB
Release files / codecraftai_restclient_oracle-1.3.1.tar.gz
| Download URL | codecraftai_restclient_oracle-1.3.1.tar.gz |
|---|---|
| Size | 20.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
398ce3b1360834a0c3c3199890ec78b33161d454309a8201bff66db314a07f24
|
|
BLAKE2b-256 checksum How to use checksums |
14c06ab4c9d9995f6b4b0627422c6d7412c5cf19a717d14fe543398fb1e750ce
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logRelease files / codecraftai_restclient_oracle-1.3.1-py3-none-any.whl
| Download URL | codecraftai_restclient_oracle-1.3.1-py3-none-any.whl |
|---|---|
| Size | 24.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3bcd3631e0da6f7bad788fa12ff7ad6c660db25ead018517f9e313060e510846
|
|
BLAKE2b-256 checksum How to use checksums |
58335024d40908271606976a1c89dcebf529f74843a91244947783031c24d249
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logSecurity for codecraftai-restclient-oracle 1.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for codecraftai_restclient_oracle-1.3.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 20, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.