%global _empty_manifest_terminate_build 0 Name: python-TastyTopping Version: 1.2.5 Release: 1 Summary: An ORM for tastypie's API on the client-side. License: LGPLv3 URL: https://github.com/cboelsen/tastytopping Source0: https://mirrors.aliyun.com/pypi/web/packages/d7/64/afbb65138a24ec0ab3defebb7bd3f1eb9bf7f2b6cf08282f15990d632a55/TastyTopping-1.2.5.tar.gz BuildArch: noarch %description 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() # DELETE - Easily 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! %package -n python3-TastyTopping Summary: An ORM for tastypie's API on the client-side. Provides: python-TastyTopping BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-TastyTopping 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() # DELETE - Easily 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! %package help Summary: Development documents and examples for TastyTopping Provides: python3-TastyTopping-doc %description help 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() # DELETE - Easily 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! %prep %autosetup -n TastyTopping-1.2.5 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-TastyTopping -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Jun 20 2023 Python_Bot - 1.2.5-1 - Package Spec generated