Metadata-Version: 2.4
Name: openwisp-utils
Version: 1.2.2
Summary: OpenWISP 2 Utilities
Home-page: http://openwisp.org
Download-URL: https://github.com/openwisp/openwisp-utils/releases
Author: Various
Author-email: support@openwisp.io
License: BSD-3-Clause
Keywords: django,netjson,openwrt,networking,openwisp
Platform: Platform Independent
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Web Environment
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: System :: Networking
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Framework :: Django
Classifier: Programming Language :: Python :: 3
License-File: LICENSE
Requires-Dist: django-model-utils<5.1,>=4.5
Requires-Dist: django-compress-staticfiles~=1.0.1b
Requires-Dist: django-admin-autocomplete-filter~=0.7.1
Requires-Dist: swapper~=1.4.0
Requires-Dist: urllib3<3.0.0,>=2.0.0
Requires-Dist: distro~=1.9.0
Provides-Extra: qa
Requires-Dist: black<25.10,>=25.1; extra == "qa"
Requires-Dist: flake8~=7.3.0; extra == "qa"
Requires-Dist: isort~=6.0.1; extra == "qa"
Requires-Dist: coverage~=7.10.6; extra == "qa"
Requires-Dist: tblib~=3.1.0; extra == "qa"
Requires-Dist: sphinx<9; extra == "qa"
Requires-Dist: docstrfmt~=1.11.1; extra == "qa"
Provides-Extra: rest
Requires-Dist: djangorestframework~=3.16.0; extra == "rest"
Requires-Dist: django-filter<26.0,>=25.1; extra == "rest"
Requires-Dist: drf-yasg==1.21.11; extra == "rest"
Provides-Extra: channels
Requires-Dist: channels[daphne]~=4.3.0; extra == "channels"
Requires-Dist: channels_redis<4.4.0,>=4.2.1; extra == "channels"
Provides-Extra: channels-test
Requires-Dist: pytest-asyncio<1.3,>=0.24; extra == "channels-test"
Requires-Dist: pytest-django<4.12,>=4.10; extra == "channels-test"
Provides-Extra: celery
Requires-Dist: celery~=5.5.3; extra == "celery"
Provides-Extra: selenium
Requires-Dist: selenium<4.36,>=4.10; extra == "selenium"
Provides-Extra: releaser
Requires-Dist: git-cliff~=2.10.0; extra == "releaser"
Requires-Dist: questionary~=2.1.0; extra == "releaser"
Requires-Dist: pypandoc~=1.15; extra == "releaser"
Requires-Dist: pypandoc-binary~=1.15; extra == "releaser"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: download-url
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: platform
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: summary

openwisp-utils
==============

.. image:: https://github.com/openwisp/openwisp-utils/actions/workflows/ci.yml/badge.svg
    :target: https://github.com/openwisp/openwisp-utils/actions/workflows/ci.yml
    :alt: CI build status

.. image:: https://coveralls.io/repos/github/openwisp/openwisp-utils/badge.svg
    :target: https://coveralls.io/github/openwisp/openwisp-utils
    :alt: Test coverage

.. image:: https://img.shields.io/librariesio/release/github/openwisp/openwisp-utils
    :target: https://libraries.io/github/openwisp/openwisp-utils#repository_dependencies
    :alt: Dependency monitoring

.. image:: https://badge.fury.io/py/openwisp-utils.svg
    :target: http://badge.fury.io/py/openwisp-utils
    :alt: pypi

.. image:: https://pepy.tech/badge/openwisp-utils
    :target: https://pepy.tech/project/openwisp-utils
    :alt: downloads

.. image:: https://img.shields.io/gitter/room/nwjs/nw.js.svg?style=flat-square
    :target: https://gitter.im/openwisp/general
    :alt: support chat

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
    :target: https://pypi.org/project/black/
    :alt: code style: black

----

Python and Django functions, classes and settings re-used across different
OpenWISP modules, stored here with the aim of avoiding code duplication
and ease maintenance.

**Don't repeat yourself!**

.. image:: https://raw.githubusercontent.com/openwisp/openwisp2-docs/master/assets/design/openwisp-logo-black.svg
    :target: http://openwisp.org

Documentation
-------------

- `Usage documentation <https://openwisp.io/docs/stable/utils/>`_
- `Developer documentation
  <https://openwisp.io/docs/stable/utils/developer/>`_

Contributing
------------

Please refer to the `OpenWISP contributing guidelines
<http://openwisp.io/docs/developer/contributing.html>`_.

Support
-------

See `OpenWISP Support Channels <http://openwisp.org/support.html>`_.

Changelog
---------

See `CHANGES
<https://github.com/openwisp/openwisp-utils/blob/master/CHANGES.rst>`_.

License
-------

See `LICENSE
<https://github.com/openwisp/openwisp-utils/blob/master/LICENSE>`_.

Attribution
-----------

- `Wireless icon
  <https://github.com/openwisp/openwisp-utils/blob/master/openwisp_utils/admin_theme/static/ui/openwisp/images/monitoring-wifi.svg>`_
  is licensed by Gregbaker, under `CC BY-SA 4.0
  <https://creativecommons.org/licenses/by-sa/4.0>`_ , via `Wikimedia
  Commons <https://commons.wikimedia.org/wiki/File:Wireless-icon.svg>`_.
- `Roboto webfont <https://www.google.com/fonts/specimen/Roboto>`_ is
  licensed under the `Apache License, Version 2.0
  <https://www.apache.org/licenses/LICENSE-2.0>`_. WOFF files extracted
  using https://github.com/majodev/google-webfonts-helper.
