summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2023-04-11 22:59:29 +0000
committerCoprDistGit <infra@openeuler.org>2023-04-11 22:59:29 +0000
commitbe7aaf41b62283c529be1d24974b797827e1ca96 (patch)
treeb574503be3d0be11ac20e717bd5196298d8e7ea3
parent97e951a3bdc0af1c523946b36ce4b76dc920a927 (diff)
automatic import of python-django-auto-prefetching
-rw-r--r--.gitignore1
-rw-r--r--python-django-auto-prefetching.spec383
-rw-r--r--sources1
3 files changed, 385 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..459b39f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/django_auto_prefetching-0.2.12.tar.gz
diff --git a/python-django-auto-prefetching.spec b/python-django-auto-prefetching.spec
new file mode 100644
index 0000000..ee185da
--- /dev/null
+++ b/python-django-auto-prefetching.spec
@@ -0,0 +1,383 @@
+%global _empty_manifest_terminate_build 0
+Name: python-django-auto-prefetching
+Version: 0.2.12
+Release: 1
+Summary: Tools for automatically prefetching related objects in Django and Django-rest-framework
+License: MIT
+URL: https://github.com/GeeWee/django-auto-prefetching
+Source0: https://mirrors.nju.edu.cn/pypi/web/packages/79/0d/56491db8df963fab7929a067e576353d7f6d118613ae4e1117b0154db092/django_auto_prefetching-0.2.12.tar.gz
+BuildArch: noarch
+
+Requires: python3-django
+Requires: python3-djangorestframework
+
+%description
+
+# Django Auto-Prefetching
+[![<GeeWee>](https://circleci.com/gh/GeeWee/django-auto-prefetching.svg?style=shield)](https://app.circleci.com/pipelines/github/GeeWee/django-auto-prefetching)
+
+*Never worry about n+1 performance problems again*
+
+This project aims to automatically perform the correct `select_related` and `prefetch_related`
+calls for your django-rest-framework code. It does this by inspecting your serializers, seeing what fields
+they use, and what models they refer to, and automatically calculating what needs to be prefetched.
+
+## Installation
+Installation via <a href="https://pypi.org/project/django-auto-prefetching/">pip</a>:
+
+`pip install django-auto-prefetching`
+
+## AutoPrefetchViewSetMixin
+This is a ViewSet mixin you can use, which will automatically prefetch the needed objects from the database, based on the ViewSets `queryset` and `serializer_class`. Under most circumstances this will be all the database optimizations you'll ever need to do:
+
+### Usage
+Simply add it after your ModelViewSet class.
+
+```python
+from django_auto_prefetching import AutoPrefetchViewSetMixin
+from rest_framework.viewsets import ModelViewSet
+
+class BaseModelViewSet(AutoPrefetchViewSetMixin, ModelViewSet):
+ queryset = YourModel.objects.all()
+ serializer_class = YourModelSerializer
+```
+It supports all types of relational fields (many to many, one to many, one to one etc.) out of the box.
+
+### Manually calling prefetch
+The `AutoPrefetchViewSetMixin` cannot see what objects are being accessed in e.g. a `SerializerMethodField`.
+If you use objects in there, you might need to do some additional prefetches.
+If you do this and override `get_queryset`, you will have to call `prefetch` manually as the mixin code is never reached.
+
+```python
+import django_auto_prefetching
+from rest_framework.viewsets import ModelViewSet
+
+class BaseModelViewSet(django_auto_prefetching.AutoPrefetchViewSetMixin, ModelViewSet):
+ serializer_class = YourModelSerializer
+
+ def get_queryset(self):
+ # Simply do the extra select_related / prefetch_related here
+ # and leave the mixin to do the rest of the work
+ queryset = YourModel.objects.all()
+ queryset = queryset.select_related('my_extra_field')
+ return django_auto_prefetching.prefetch(queryset, self.serializer_class)
+```
+You can override `get_prefetchable_queryset` instead of `get_queryset` if you don't want to manually call `django_auto_prefetching.prefetch()`. Example:
+```python
+import django_auto_prefetching
+from rest_framework.viewsets import ModelViewSet
+
+class BaseModelViewSet(django_auto_prefetching.AutoPrefetchViewSetMixin, ModelViewSet):
+ serializer_class = YourModelSerializer
+
+ def get_prefetchable_queryset(self):
+ return YourModel.objects.all()
+```
+Now `get_queryset()` will call our `get_prefetchable_queryset()` and will add automatic prefetches
+
+## Manually specifying which fields are needed
+
+If you need to explicitly specify some extra fields to be included or excluded, you can also override the following methods on your ViewSet to return a list or a set of fields to prefetch/exclude.
+
+```python
+import django_auto_prefetching
+from rest_framework.viewsets import ModelViewSet
+
+class BaseModelViewSet(django_auto_prefetching.AutoPrefetchViewSetMixin, ModelViewSet):
+ serializer_class = YourModelSerializer
+
+ def get_auto_prefetch_excluded_fields(self):
+ return {"exclude_this_field", "and_this_field"}
+
+ def get_auto_prefetch_extra_select_fields(self):
+ return {"select_related_on_this_field"}
+
+ def get_auto_prefetch_extra_prefetch_fields(self):
+ return {"prefetch_related_on_this_field"}
+}
+```
+
+
+## Supported Versions
+
+Python: 3.7, 3.8, 3.10<br>
+Django: 3.2, 4.0.4
+
+Pull Requests to support other versions are welcome.
+
+## Maturity
+The project is currently being used without issues in a medium-sized Django project (20.000 lines of code).
+
+## Contributing
+Contributions are welcome! To get the tests running, do the following:
+- Clone the repository.
+- If you don't have it, install [pipenv](https://pipenv.pypa.io/en/latest/#install-pipenv-today)
+- Install the dependencies with `pipenv sync --dev`
+- Activate the virtualenv created by pipenv by writing `pipenv shell`
+- Run the tests with `./manage.py test`
+
+
+%package -n python3-django-auto-prefetching
+Summary: Tools for automatically prefetching related objects in Django and Django-rest-framework
+Provides: python-django-auto-prefetching
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+BuildRequires: python3-pip
+%description -n python3-django-auto-prefetching
+
+# Django Auto-Prefetching
+[![<GeeWee>](https://circleci.com/gh/GeeWee/django-auto-prefetching.svg?style=shield)](https://app.circleci.com/pipelines/github/GeeWee/django-auto-prefetching)
+
+*Never worry about n+1 performance problems again*
+
+This project aims to automatically perform the correct `select_related` and `prefetch_related`
+calls for your django-rest-framework code. It does this by inspecting your serializers, seeing what fields
+they use, and what models they refer to, and automatically calculating what needs to be prefetched.
+
+## Installation
+Installation via <a href="https://pypi.org/project/django-auto-prefetching/">pip</a>:
+
+`pip install django-auto-prefetching`
+
+## AutoPrefetchViewSetMixin
+This is a ViewSet mixin you can use, which will automatically prefetch the needed objects from the database, based on the ViewSets `queryset` and `serializer_class`. Under most circumstances this will be all the database optimizations you'll ever need to do:
+
+### Usage
+Simply add it after your ModelViewSet class.
+
+```python
+from django_auto_prefetching import AutoPrefetchViewSetMixin
+from rest_framework.viewsets import ModelViewSet
+
+class BaseModelViewSet(AutoPrefetchViewSetMixin, ModelViewSet):
+ queryset = YourModel.objects.all()
+ serializer_class = YourModelSerializer
+```
+It supports all types of relational fields (many to many, one to many, one to one etc.) out of the box.
+
+### Manually calling prefetch
+The `AutoPrefetchViewSetMixin` cannot see what objects are being accessed in e.g. a `SerializerMethodField`.
+If you use objects in there, you might need to do some additional prefetches.
+If you do this and override `get_queryset`, you will have to call `prefetch` manually as the mixin code is never reached.
+
+```python
+import django_auto_prefetching
+from rest_framework.viewsets import ModelViewSet
+
+class BaseModelViewSet(django_auto_prefetching.AutoPrefetchViewSetMixin, ModelViewSet):
+ serializer_class = YourModelSerializer
+
+ def get_queryset(self):
+ # Simply do the extra select_related / prefetch_related here
+ # and leave the mixin to do the rest of the work
+ queryset = YourModel.objects.all()
+ queryset = queryset.select_related('my_extra_field')
+ return django_auto_prefetching.prefetch(queryset, self.serializer_class)
+```
+You can override `get_prefetchable_queryset` instead of `get_queryset` if you don't want to manually call `django_auto_prefetching.prefetch()`. Example:
+```python
+import django_auto_prefetching
+from rest_framework.viewsets import ModelViewSet
+
+class BaseModelViewSet(django_auto_prefetching.AutoPrefetchViewSetMixin, ModelViewSet):
+ serializer_class = YourModelSerializer
+
+ def get_prefetchable_queryset(self):
+ return YourModel.objects.all()
+```
+Now `get_queryset()` will call our `get_prefetchable_queryset()` and will add automatic prefetches
+
+## Manually specifying which fields are needed
+
+If you need to explicitly specify some extra fields to be included or excluded, you can also override the following methods on your ViewSet to return a list or a set of fields to prefetch/exclude.
+
+```python
+import django_auto_prefetching
+from rest_framework.viewsets import ModelViewSet
+
+class BaseModelViewSet(django_auto_prefetching.AutoPrefetchViewSetMixin, ModelViewSet):
+ serializer_class = YourModelSerializer
+
+ def get_auto_prefetch_excluded_fields(self):
+ return {"exclude_this_field", "and_this_field"}
+
+ def get_auto_prefetch_extra_select_fields(self):
+ return {"select_related_on_this_field"}
+
+ def get_auto_prefetch_extra_prefetch_fields(self):
+ return {"prefetch_related_on_this_field"}
+}
+```
+
+
+## Supported Versions
+
+Python: 3.7, 3.8, 3.10<br>
+Django: 3.2, 4.0.4
+
+Pull Requests to support other versions are welcome.
+
+## Maturity
+The project is currently being used without issues in a medium-sized Django project (20.000 lines of code).
+
+## Contributing
+Contributions are welcome! To get the tests running, do the following:
+- Clone the repository.
+- If you don't have it, install [pipenv](https://pipenv.pypa.io/en/latest/#install-pipenv-today)
+- Install the dependencies with `pipenv sync --dev`
+- Activate the virtualenv created by pipenv by writing `pipenv shell`
+- Run the tests with `./manage.py test`
+
+
+%package help
+Summary: Development documents and examples for django-auto-prefetching
+Provides: python3-django-auto-prefetching-doc
+%description help
+
+# Django Auto-Prefetching
+[![<GeeWee>](https://circleci.com/gh/GeeWee/django-auto-prefetching.svg?style=shield)](https://app.circleci.com/pipelines/github/GeeWee/django-auto-prefetching)
+
+*Never worry about n+1 performance problems again*
+
+This project aims to automatically perform the correct `select_related` and `prefetch_related`
+calls for your django-rest-framework code. It does this by inspecting your serializers, seeing what fields
+they use, and what models they refer to, and automatically calculating what needs to be prefetched.
+
+## Installation
+Installation via <a href="https://pypi.org/project/django-auto-prefetching/">pip</a>:
+
+`pip install django-auto-prefetching`
+
+## AutoPrefetchViewSetMixin
+This is a ViewSet mixin you can use, which will automatically prefetch the needed objects from the database, based on the ViewSets `queryset` and `serializer_class`. Under most circumstances this will be all the database optimizations you'll ever need to do:
+
+### Usage
+Simply add it after your ModelViewSet class.
+
+```python
+from django_auto_prefetching import AutoPrefetchViewSetMixin
+from rest_framework.viewsets import ModelViewSet
+
+class BaseModelViewSet(AutoPrefetchViewSetMixin, ModelViewSet):
+ queryset = YourModel.objects.all()
+ serializer_class = YourModelSerializer
+```
+It supports all types of relational fields (many to many, one to many, one to one etc.) out of the box.
+
+### Manually calling prefetch
+The `AutoPrefetchViewSetMixin` cannot see what objects are being accessed in e.g. a `SerializerMethodField`.
+If you use objects in there, you might need to do some additional prefetches.
+If you do this and override `get_queryset`, you will have to call `prefetch` manually as the mixin code is never reached.
+
+```python
+import django_auto_prefetching
+from rest_framework.viewsets import ModelViewSet
+
+class BaseModelViewSet(django_auto_prefetching.AutoPrefetchViewSetMixin, ModelViewSet):
+ serializer_class = YourModelSerializer
+
+ def get_queryset(self):
+ # Simply do the extra select_related / prefetch_related here
+ # and leave the mixin to do the rest of the work
+ queryset = YourModel.objects.all()
+ queryset = queryset.select_related('my_extra_field')
+ return django_auto_prefetching.prefetch(queryset, self.serializer_class)
+```
+You can override `get_prefetchable_queryset` instead of `get_queryset` if you don't want to manually call `django_auto_prefetching.prefetch()`. Example:
+```python
+import django_auto_prefetching
+from rest_framework.viewsets import ModelViewSet
+
+class BaseModelViewSet(django_auto_prefetching.AutoPrefetchViewSetMixin, ModelViewSet):
+ serializer_class = YourModelSerializer
+
+ def get_prefetchable_queryset(self):
+ return YourModel.objects.all()
+```
+Now `get_queryset()` will call our `get_prefetchable_queryset()` and will add automatic prefetches
+
+## Manually specifying which fields are needed
+
+If you need to explicitly specify some extra fields to be included or excluded, you can also override the following methods on your ViewSet to return a list or a set of fields to prefetch/exclude.
+
+```python
+import django_auto_prefetching
+from rest_framework.viewsets import ModelViewSet
+
+class BaseModelViewSet(django_auto_prefetching.AutoPrefetchViewSetMixin, ModelViewSet):
+ serializer_class = YourModelSerializer
+
+ def get_auto_prefetch_excluded_fields(self):
+ return {"exclude_this_field", "and_this_field"}
+
+ def get_auto_prefetch_extra_select_fields(self):
+ return {"select_related_on_this_field"}
+
+ def get_auto_prefetch_extra_prefetch_fields(self):
+ return {"prefetch_related_on_this_field"}
+}
+```
+
+
+## Supported Versions
+
+Python: 3.7, 3.8, 3.10<br>
+Django: 3.2, 4.0.4
+
+Pull Requests to support other versions are welcome.
+
+## Maturity
+The project is currently being used without issues in a medium-sized Django project (20.000 lines of code).
+
+## Contributing
+Contributions are welcome! To get the tests running, do the following:
+- Clone the repository.
+- If you don't have it, install [pipenv](https://pipenv.pypa.io/en/latest/#install-pipenv-today)
+- Install the dependencies with `pipenv sync --dev`
+- Activate the virtualenv created by pipenv by writing `pipenv shell`
+- Run the tests with `./manage.py test`
+
+
+%prep
+%autosetup -n django-auto-prefetching-0.2.12
+
+%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-django-auto-prefetching -f filelist.lst
+%dir %{python3_sitelib}/*
+
+%files help -f doclist.lst
+%{_docdir}/*
+
+%changelog
+* Tue Apr 11 2023 Python_Bot <Python_Bot@openeuler.org> - 0.2.12-1
+- Package Spec generated
diff --git a/sources b/sources
new file mode 100644
index 0000000..0202246
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+1cc5b2245ad728c8e2655c32af66308e django_auto_prefetching-0.2.12.tar.gz