Anisodactyl
One CRUD to rule them all.
This tries to solve the following problems:
- Headless CRUD Wrapper - Programmatic and configurable CRUD system for models.
- Automatic CRUD API Endpoints - Create, Get, Get All, Patch Update and Delete REST API Endpoints for any database table.
- Schema Driven URL Sorting and Filtering - URL based sorting and filtering automatically available to all properties listed in schema.
- Swappable URL Conventions - Pick and choose between different URL conventions.
- Nested Database Mutations - Generic CRUD for nested databases. Eliminate N+1 network requests.
👀 Vision
A typical CRUD interfaces db structure in a way where each table is a node:
Parent? --- Current --< Children?
Every table in your interconnected database sits at the center of it's own
relationship graph; optional Parent pointing inwards and optional Children
pointing outwards.
graph TD
c1(
<b>Child 1</b>
Timetable
Appointments
)
c2(
<b>Child 2</b>
Schedule
Designations
)
c3(
<b>Child N</b>
Address
Contacts
)
s(
<b>Self</b>
Staffs,Teachers
Employees,Trainees
Students,etc.
)
p(
<b>Parent</b>
Company
School
Library
Bakery
etc.
)
c1 & c2 & c3 === s === p
The diagram above forms the shape of an anisodactyl "crow foot" - digits (children), hallux (parent), connected through the central tarsometatarsus self.
Current object can be anything. It can be one of the children as well, being able to create any graph like structure imaginable.
📚 Notes
Query Parameter Conventions
JSON API
// ?filter[key_name][operator]=value&[key_name][operator]=value
?filter%5Bkey_name%5D%5Boperator%5D=value&%5Bkey_name%5D%5Boperator%5D=value
but
[and]gets encoded into%5Band%5Dwhich makes URLs ugly and unreadable.
Django REST Framework
// ?post_tag=fiction&comment_count__gt=10
?key_name__operator=value&key_name__operator=value
The python standard due to Django influence.
Anisodactyl
// ?post_tag=fiction&comment_count=gt:10
?key_name=operator:value&key_name=operator:value
// ?fields=name,email
?fields=key1,key2,key3
// ?sort=-name
?sort=-field,field
Super clean, simple and developer centric.
Metadata
Release files for anisodactyl 0.1.0
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 | |
|---|---|---|---|---|
| anisodactyl-0.1.0.tar.gz | 106.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| anisodactyl-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 117.8 kB
Release files / anisodactyl-0.1.0.tar.gz
| Download URL | anisodactyl-0.1.0.tar.gz |
|---|---|
| Size | 106.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3a8aa81d97e92736c52bf6cdff54c58174708460aa570e9c86d5bc33f7439b27
|
|
BLAKE2b-256 checksum How to use checksums |
2eae82a6c8aa4ac6c113fedf479603e0d035c59a751903b8080cfe79fb73e647
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Release files / anisodactyl-0.1.0-py3-none-any.whl
| Download URL | anisodactyl-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9a847108126f1972ea0b4388a97ffc906e17e4fc6c6ff6eeeb7773cfe6fa68ce
|
|
BLAKE2b-256 checksum How to use checksums |
cefca3a500afe8e50f1554bdec2a84cfcbcfadaa8b57e34764015c20d73188a9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.6
|
Security for anisodactyl 0.1.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A 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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.