Designed to take the heavy lifting out of working with django-tastypie APIs on the client side.
Features
Django model-like ORM API allowing you to GET, POST, PUT, PATCH, and DELETE:
factory = ResourceFactory('http://localhost:8000/myapp/api/v1/') current_resource = factory.resource.get(field='name') # GET new_resource = factory.resource(field='new_name').save() # POST new_resource.field = 'different_name' new_resource.save() # PUT / PATCH current_resource.delete() # DELETEEasily work with any related resources:
new_resource.children = [ factory.resource(field='new_name1').save(), factory.resource(field='new_name2').save(), ]QuerySets:
queryset1 = factory.resource.filter(field2__gt=20) queryset2 = queryset1.order_by('field2') # Evaluation happens here: resources = queryset2[5:-8]Simple way to set and update authentication per resource:
factory.resource.auth = HTTPApiKeyAuth('username', 'key12345')Access nested resources using simple methods:
new_resource.nested.nested_resource('arg1', arg2=3)Basic field validation before connecting to the API.
Bulk create / update / delete to minimise API access:
factory.resource.bulk( create=[{field='name1'}, {field='name2'}], update=[current_resource, new_resource], delete=[new_resource], )
Find more information on these features at read the docs!
Requirements
The following needs to be installed locally to run TastyTopping:
Python 2.7+ or Python 3.3+
requests >= 1.2.3
Tested with / against:
django >= 1.5.0
django-tastypie >= 0.9.14
requests >= 1.2.3
(see the tox.ini file for more information).
Example
A basic example of a simple workflow, using the following API on the server side:
# myapp/models.py
# ===============
from django.db import models
class Example(models.Model):
path = models.CharField(max_length=255, unique=True)
rating = models.IntegerField(default=50)
date = models.DateTimeField('date', null=True)
# myapp/api.py
# ============
from .models import Example
class ExampleResource(ModelResource):
class Meta:
queryset = Example.objects.all()
resource_name = 'example'
authorization = Authorization()
filtering = {'path': ALL, 'rating': ALL}
ordering = ['rating']
Using TastyTopping on the client side would look like this:
from datetime import datetime
from tastytopping import ResourceFactory
factory = ResourceFactory('http://localhost:8000/myapp/api/v1/')
ex1 = factory.example(path='any text', rating=80).save()
ex1.date = datetime.now()
ex1_copy = factory.example.get(rating=80)
ex1.delete()
Find more examples at read the docs!
Justification
Why another one? There are some other packages around that do something similar, but none are the complete package:
ORM. A lot of other packages use a C-style API, which involves passing a dict with your data to their functions. TastyTopping wraps it all up in an ORM-style object, which is more OO, more elegant, and more pythonic.
Python3 support.
Support for authentication.
Support for nested resources.
QuerySets!
A thorough set of unit tests.
Development has stagnated (none of them have released in close to a year, whereas tastypie has been releasing thick and fast).
Creating this was FUN!
Metadata
Release files for TastyTopping 1.2.5
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 | Actions |
|---|---|---|---|---|
| TastyTopping-1.2.5.tar.gz | 36.6 kB | Without provenance | Details for TastyTopping-1.2.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| TastyTopping-1.2.5-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details for TastyTopping-1.2.5-py2.py3-none-any.whl |
Total release size: 68.8 kB
Release files / TastyTopping-1.2.5.tar.gz
| Download URL | TastyTopping-1.2.5.tar.gz |
|---|---|
| Size | 36.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b21adf48bdb03b08b30ae459c55c584363331c335cde376cb07383ae9604b966
|
|
BLAKE2b-256 checksum How to use checksums |
d764afbb65138a24ec0ab3defebb7bd3f1eb9bf7f2b6cf08282f15990d632a55
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / TastyTopping-1.2.5-py2.py3-none-any.whl
| Download URL | TastyTopping-1.2.5-py2.py3-none-any.whl |
|---|---|
| Size | 32.2 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
0eab60a36901b8131cf7762d964f8e0a4c653286e8b8ecc0cd703d98e85355b7
|
|
BLAKE2b-256 checksum How to use checksums |
0e06c385fac7138701967c736d311bea7aaaad51f93db614b14aa921544eca55
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for TastyTopping 1.2.5
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.