%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