summaryrefslogtreecommitdiff
path: root/python-tastytopping.spec
diff options
context:
space:
mode:
Diffstat (limited to 'python-tastytopping.spec')
-rw-r--r--python-tastytopping.spec351
1 files changed, 351 insertions, 0 deletions
diff --git a/python-tastytopping.spec b/python-tastytopping.spec
new file mode 100644
index 0000000..8b5a30d
--- /dev/null
+++ b/python-tastytopping.spec
@@ -0,0 +1,351 @@
+%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!
+<http://tastytopping.readthedocs.org/en/latest/>`_
+Requirements
+^^^^^^^^^^^^
+The following needs to be installed locally to run TastyTopping:
+- Python 2.7+ or Python 3.3+
+- `requests <http://requests.readthedocs.org/en/latest/>`_ >= 1.2.3
+Tested with / against:
+- `django <https://docs.djangoproject.com/en/1.6/>`_ >= 1.5.0
+- `django-tastypie <http://django-tastypie.readthedocs.org/en/latest/>`_ >= 0.9.14
+- `requests <http://requests.readthedocs.org/en/latest/>`_ >= 1.2.3
+(see the `tox.ini
+<https://github.com/cboelsen/tastytopping/blob/master/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!
+<http://tastytopping.readthedocs.org/en/latest/>`_
+Justification
+^^^^^^^^^^^^^
+Why another one? There are some other packages around that do something
+similar, but none are the complete package:
+- `ORM <http://en.wikipedia.org/wiki/Object-relational_mapping>`_. 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
+ <https://github.com/cboelsen/tastytopping/blob/master/tests/tests.py>`_.
+- 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!
+<http://tastytopping.readthedocs.org/en/latest/>`_
+Requirements
+^^^^^^^^^^^^
+The following needs to be installed locally to run TastyTopping:
+- Python 2.7+ or Python 3.3+
+- `requests <http://requests.readthedocs.org/en/latest/>`_ >= 1.2.3
+Tested with / against:
+- `django <https://docs.djangoproject.com/en/1.6/>`_ >= 1.5.0
+- `django-tastypie <http://django-tastypie.readthedocs.org/en/latest/>`_ >= 0.9.14
+- `requests <http://requests.readthedocs.org/en/latest/>`_ >= 1.2.3
+(see the `tox.ini
+<https://github.com/cboelsen/tastytopping/blob/master/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!
+<http://tastytopping.readthedocs.org/en/latest/>`_
+Justification
+^^^^^^^^^^^^^
+Why another one? There are some other packages around that do something
+similar, but none are the complete package:
+- `ORM <http://en.wikipedia.org/wiki/Object-relational_mapping>`_. 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
+ <https://github.com/cboelsen/tastytopping/blob/master/tests/tests.py>`_.
+- 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!
+<http://tastytopping.readthedocs.org/en/latest/>`_
+Requirements
+^^^^^^^^^^^^
+The following needs to be installed locally to run TastyTopping:
+- Python 2.7+ or Python 3.3+
+- `requests <http://requests.readthedocs.org/en/latest/>`_ >= 1.2.3
+Tested with / against:
+- `django <https://docs.djangoproject.com/en/1.6/>`_ >= 1.5.0
+- `django-tastypie <http://django-tastypie.readthedocs.org/en/latest/>`_ >= 0.9.14
+- `requests <http://requests.readthedocs.org/en/latest/>`_ >= 1.2.3
+(see the `tox.ini
+<https://github.com/cboelsen/tastytopping/blob/master/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!
+<http://tastytopping.readthedocs.org/en/latest/>`_
+Justification
+^^^^^^^^^^^^^
+Why another one? There are some other packages around that do something
+similar, but none are the complete package:
+- `ORM <http://en.wikipedia.org/wiki/Object-relational_mapping>`_. 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
+ <https://github.com/cboelsen/tastytopping/blob/master/tests/tests.py>`_.
+- 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 <Python_Bot@openeuler.org> - 1.2.5-1
+- Package Spec generated