diff options
Diffstat (limited to 'python-collectfast.spec')
| -rw-r--r-- | python-collectfast.spec | 324 |
1 files changed, 324 insertions, 0 deletions
diff --git a/python-collectfast.spec b/python-collectfast.spec new file mode 100644 index 0000000..63dd0ed --- /dev/null +++ b/python-collectfast.spec @@ -0,0 +1,324 @@ +%global _empty_manifest_terminate_build 0 +Name: python-Collectfast +Version: 2.2.0 +Release: 1 +Summary: A Faster Collectstatic +License: MIT License +URL: https://github.com/antonagestam/collectfast/ +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/b0/6f/f648a790c833d50a19c66143a1cea10e5c7768d0d2599a04357d04a9845c/Collectfast-2.2.0.tar.gz +BuildArch: noarch + +Requires: python3-Django +Requires: python3-django-storages +Requires: python3-typing-extensions + +%description +collectfast.strategies.boto3.Boto3Strategy|storages.backends.s3boto3.S3Boto3Storage +collectfast.strategies.gcloud.GoogleCloudStrategy|storages.backends.gcloud.GoogleCloudStorage +collectfast.strategies.filesystem.FileSystemStrategy|django.core.files.storage.FileSystemStorage +Custom strategies can also be made for backends not listed above by +implementing the `collectfast.strategies.Strategy` ABC. +## Usage +Collectfast overrides Django's builtin `collectstatic` command so just run +`python manage.py collectstatic` as normal. +You can disable Collectfast by using the `--disable-collectfast` option or by +setting `COLLECTFAST_ENABLED = False` in your settings file. +### Setting Up a Dedicated Cache Backend +It's recommended to setup a dedicated cache backend for Collectfast. Every time +Collectfast does not find a lookup for a file in the cache it will trigger a +lookup to the storage backend, so it's recommended to have a fairly high +`TIMEOUT` setting. +Configure your dedicated cache with the `COLLECTFAST_CACHE` setting: +```python +CACHES = { + 'default': { + # Your default cache + }, + 'collectfast': { + # Your dedicated Collectfast cache + }, +} +COLLECTFAST_CACHE = 'collectfast' +``` +If `COLLECTFAST_CACHE` isn't set, the `default` cache will be used. +**Note:** Collectfast will never clean the cache of obsolete files. To clean +out the entire cache, use `cache.clear()`. [See docs for Django's cache +framework][django-cache]. +**Note:** We recommend you to set the `MAX_ENTRIES` setting if you have more +than 300 static files, see [#47][issue-47]. +[django-cache]: https://docs.djangoproject.com/en/stable/topics/cache/ +[issue-47]: https://github.com/antonagestam/collectfast/issues/47 +### Enable Parallel Uploads +The parallelization feature enables parallel file uploads using Python's +`concurrent.futures` module. Enable it by setting the `COLLECTFAST_THREADS` +setting. +To enable parallel uploads, a dedicated cache backend must be setup and it must +use a backend that is thread-safe, i.e. something other than Django's default +LocMemCache. +```python +COLLECTFAST_THREADS = 20 +``` +## Debugging +By default, Collectfast will suppress any exceptions that happens when copying +and let Django's `collectstatic` handle it. To debug those suppressed errors +you can set `COLLECTFAST_DEBUG = True` in your Django settings file. +## Contribution +Please feel free to contribute by using issues and pull requests. Discussion is +open and welcome. +### Testing +The test suite is built to run against live S3 and GCloud buckets. You can +disable live tests by setting `SKIP_LIVE_TESTS=true` or running `make +test-skip-live`. To run live tests locally you need to provide API credentials +to test against. Add the credentials to a file named `storage-credentials` in +the root of the project directory: +```bash +export AWS_ACCESS_KEY_ID='...' +export AWS_SECRET_ACCESS_KEY='...' +export GCLOUD_CREDENTIALS='{...}' # Google Cloud credentials as JSON +``` +Install test dependencies and target Django version: +```bash +python3 -m pip install -r test-requirements.txt +python3 -m pip install django==2.2 +``` +Run test suite: +```bash +make test +``` +Code quality tools are broken out from test requirements because some of them +only install on Python >= 3.7. +```bash +python3 -m pip install -r lint-requirements.txt +``` +Run linters and static type check: +```bash +make lint +``` +## License +Collectfast is licensed under the MIT License, see LICENSE file for more +information. + +%package -n python3-Collectfast +Summary: A Faster Collectstatic +Provides: python-Collectfast +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-Collectfast +collectfast.strategies.boto3.Boto3Strategy|storages.backends.s3boto3.S3Boto3Storage +collectfast.strategies.gcloud.GoogleCloudStrategy|storages.backends.gcloud.GoogleCloudStorage +collectfast.strategies.filesystem.FileSystemStrategy|django.core.files.storage.FileSystemStorage +Custom strategies can also be made for backends not listed above by +implementing the `collectfast.strategies.Strategy` ABC. +## Usage +Collectfast overrides Django's builtin `collectstatic` command so just run +`python manage.py collectstatic` as normal. +You can disable Collectfast by using the `--disable-collectfast` option or by +setting `COLLECTFAST_ENABLED = False` in your settings file. +### Setting Up a Dedicated Cache Backend +It's recommended to setup a dedicated cache backend for Collectfast. Every time +Collectfast does not find a lookup for a file in the cache it will trigger a +lookup to the storage backend, so it's recommended to have a fairly high +`TIMEOUT` setting. +Configure your dedicated cache with the `COLLECTFAST_CACHE` setting: +```python +CACHES = { + 'default': { + # Your default cache + }, + 'collectfast': { + # Your dedicated Collectfast cache + }, +} +COLLECTFAST_CACHE = 'collectfast' +``` +If `COLLECTFAST_CACHE` isn't set, the `default` cache will be used. +**Note:** Collectfast will never clean the cache of obsolete files. To clean +out the entire cache, use `cache.clear()`. [See docs for Django's cache +framework][django-cache]. +**Note:** We recommend you to set the `MAX_ENTRIES` setting if you have more +than 300 static files, see [#47][issue-47]. +[django-cache]: https://docs.djangoproject.com/en/stable/topics/cache/ +[issue-47]: https://github.com/antonagestam/collectfast/issues/47 +### Enable Parallel Uploads +The parallelization feature enables parallel file uploads using Python's +`concurrent.futures` module. Enable it by setting the `COLLECTFAST_THREADS` +setting. +To enable parallel uploads, a dedicated cache backend must be setup and it must +use a backend that is thread-safe, i.e. something other than Django's default +LocMemCache. +```python +COLLECTFAST_THREADS = 20 +``` +## Debugging +By default, Collectfast will suppress any exceptions that happens when copying +and let Django's `collectstatic` handle it. To debug those suppressed errors +you can set `COLLECTFAST_DEBUG = True` in your Django settings file. +## Contribution +Please feel free to contribute by using issues and pull requests. Discussion is +open and welcome. +### Testing +The test suite is built to run against live S3 and GCloud buckets. You can +disable live tests by setting `SKIP_LIVE_TESTS=true` or running `make +test-skip-live`. To run live tests locally you need to provide API credentials +to test against. Add the credentials to a file named `storage-credentials` in +the root of the project directory: +```bash +export AWS_ACCESS_KEY_ID='...' +export AWS_SECRET_ACCESS_KEY='...' +export GCLOUD_CREDENTIALS='{...}' # Google Cloud credentials as JSON +``` +Install test dependencies and target Django version: +```bash +python3 -m pip install -r test-requirements.txt +python3 -m pip install django==2.2 +``` +Run test suite: +```bash +make test +``` +Code quality tools are broken out from test requirements because some of them +only install on Python >= 3.7. +```bash +python3 -m pip install -r lint-requirements.txt +``` +Run linters and static type check: +```bash +make lint +``` +## License +Collectfast is licensed under the MIT License, see LICENSE file for more +information. + +%package help +Summary: Development documents and examples for Collectfast +Provides: python3-Collectfast-doc +%description help +collectfast.strategies.boto3.Boto3Strategy|storages.backends.s3boto3.S3Boto3Storage +collectfast.strategies.gcloud.GoogleCloudStrategy|storages.backends.gcloud.GoogleCloudStorage +collectfast.strategies.filesystem.FileSystemStrategy|django.core.files.storage.FileSystemStorage +Custom strategies can also be made for backends not listed above by +implementing the `collectfast.strategies.Strategy` ABC. +## Usage +Collectfast overrides Django's builtin `collectstatic` command so just run +`python manage.py collectstatic` as normal. +You can disable Collectfast by using the `--disable-collectfast` option or by +setting `COLLECTFAST_ENABLED = False` in your settings file. +### Setting Up a Dedicated Cache Backend +It's recommended to setup a dedicated cache backend for Collectfast. Every time +Collectfast does not find a lookup for a file in the cache it will trigger a +lookup to the storage backend, so it's recommended to have a fairly high +`TIMEOUT` setting. +Configure your dedicated cache with the `COLLECTFAST_CACHE` setting: +```python +CACHES = { + 'default': { + # Your default cache + }, + 'collectfast': { + # Your dedicated Collectfast cache + }, +} +COLLECTFAST_CACHE = 'collectfast' +``` +If `COLLECTFAST_CACHE` isn't set, the `default` cache will be used. +**Note:** Collectfast will never clean the cache of obsolete files. To clean +out the entire cache, use `cache.clear()`. [See docs for Django's cache +framework][django-cache]. +**Note:** We recommend you to set the `MAX_ENTRIES` setting if you have more +than 300 static files, see [#47][issue-47]. +[django-cache]: https://docs.djangoproject.com/en/stable/topics/cache/ +[issue-47]: https://github.com/antonagestam/collectfast/issues/47 +### Enable Parallel Uploads +The parallelization feature enables parallel file uploads using Python's +`concurrent.futures` module. Enable it by setting the `COLLECTFAST_THREADS` +setting. +To enable parallel uploads, a dedicated cache backend must be setup and it must +use a backend that is thread-safe, i.e. something other than Django's default +LocMemCache. +```python +COLLECTFAST_THREADS = 20 +``` +## Debugging +By default, Collectfast will suppress any exceptions that happens when copying +and let Django's `collectstatic` handle it. To debug those suppressed errors +you can set `COLLECTFAST_DEBUG = True` in your Django settings file. +## Contribution +Please feel free to contribute by using issues and pull requests. Discussion is +open and welcome. +### Testing +The test suite is built to run against live S3 and GCloud buckets. You can +disable live tests by setting `SKIP_LIVE_TESTS=true` or running `make +test-skip-live`. To run live tests locally you need to provide API credentials +to test against. Add the credentials to a file named `storage-credentials` in +the root of the project directory: +```bash +export AWS_ACCESS_KEY_ID='...' +export AWS_SECRET_ACCESS_KEY='...' +export GCLOUD_CREDENTIALS='{...}' # Google Cloud credentials as JSON +``` +Install test dependencies and target Django version: +```bash +python3 -m pip install -r test-requirements.txt +python3 -m pip install django==2.2 +``` +Run test suite: +```bash +make test +``` +Code quality tools are broken out from test requirements because some of them +only install on Python >= 3.7. +```bash +python3 -m pip install -r lint-requirements.txt +``` +Run linters and static type check: +```bash +make lint +``` +## License +Collectfast is licensed under the MIT License, see LICENSE file for more +information. + +%prep +%autosetup -n Collectfast-2.2.0 + +%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-Collectfast -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Mon Apr 10 2023 Python_Bot <Python_Bot@openeuler.org> - 2.2.0-1 +- Package Spec generated |
