kopia lustrzana https://github.com/jedie/PyInventory
Migrate "pip-tools" -> "uv" and remove tox
rodzic
f013895d10
commit
e795779b4f
|
@ -12,12 +12,12 @@ on:
|
|||
|
||||
jobs:
|
||||
test:
|
||||
name: 'Python ${{ matrix.python-version }} Django ${{ matrix.django-version }}'
|
||||
name: 'Python ${{ matrix.python-version }}'
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ['3.12', '3.11']
|
||||
python-version: ['3.13', '3.12', '3.11']
|
||||
steps:
|
||||
- name: Checkout
|
||||
run: |
|
||||
|
@ -32,7 +32,7 @@ jobs:
|
|||
with:
|
||||
python-version: '${{ matrix.python-version }}'
|
||||
cache: 'pip' # caching pip dependencies
|
||||
cache-dependency-path: '**/requirements.*.txt'
|
||||
cache-dependency-path: 'uv.lock'
|
||||
|
||||
- name: 'Bootstrap'
|
||||
# The first manage.py call will create the .venv
|
||||
|
@ -47,7 +47,7 @@ jobs:
|
|||
run: |
|
||||
./manage.py --help
|
||||
|
||||
- name: 'pip-audit'
|
||||
- name: 'Run pip-audit'
|
||||
run: |
|
||||
./manage.py pip_audit
|
||||
|
||||
|
@ -56,10 +56,10 @@ jobs:
|
|||
PYTHONUNBUFFERED: 1
|
||||
PYTHONWARNINGS: always
|
||||
run: |
|
||||
./manage.py tox -e $(echo py${{ matrix.python-version }} | tr -d .)
|
||||
./manage.py test
|
||||
|
||||
- name: 'Upload coverage report'
|
||||
uses: codecov/codecov-action@v4
|
||||
uses: codecov/codecov-action@v5
|
||||
# https://github.com/marketplace/actions/codecov
|
||||
with:
|
||||
fail_ci_if_error: false
|
||||
|
|
|
@ -2,8 +2,9 @@
|
|||
*.egg-info
|
||||
__pycache__
|
||||
/dist/
|
||||
/coverage.json
|
||||
/coverage.xml
|
||||
/build/
|
||||
/coverage.*
|
||||
*.orig
|
||||
|
||||
!.github
|
||||
!.editorconfig
|
||||
|
@ -21,59 +22,13 @@ __pycache__
|
|||
**/static/*
|
||||
**/media/*
|
||||
*.sqlite3
|
||||
*.json
|
||||
|
||||
# Include "ignored" *.json:
|
||||
!**/fixtures/*.json
|
||||
|
||||
# Django
|
||||
# Include all test snapshot files:
|
||||
!**/*.snapshot.*
|
||||
secret.txt
|
||||
|
||||
# Coverage HTML Report files:
|
||||
htmlcov
|
||||
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.tox
|
||||
.Python
|
||||
env/
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
db.sqlite3
|
||||
coverage_html/
|
||||
coverage.xml
|
||||
*,cover
|
||||
|
||||
# Translations
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
target/
|
||||
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
# pre-commit plugin configuration
|
||||
# See https://pre-commit.com for more information
|
||||
default_install_hook_types:
|
||||
- pre-commit
|
||||
- prepare-commit-msg
|
||||
- post-commit
|
||||
- post-rewrite
|
||||
- pre-push
|
||||
|
||||
repos:
|
||||
- repo: https://github.com/jedie/cli-base-utilities
|
||||
rev: v0.11.0
|
||||
rev: v0.17.0
|
||||
hooks:
|
||||
- id: update-readme-history
|
||||
|
|
8
LICENSE
8
LICENSE
|
@ -1,7 +1,7 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 3, 29 June 2007
|
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
|
@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
|||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
|
@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box".
|
|||
You should also get your employer (if you work as a programmer) or school,
|
||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||
For more information on this, and how to apply and follow the GNU GPL, see
|
||||
<http://www.gnu.org/licenses/>.
|
||||
<https://www.gnu.org/licenses/>.
|
||||
|
||||
The GNU General Public License does not permit incorporating your program
|
||||
into proprietary programs. If your program is a subroutine library, you
|
||||
may consider it more useful to permit linking proprietary applications with
|
||||
the library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License. But first, please read
|
||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
||||
|
|
|
@ -166,6 +166,8 @@ To make a new release, do this:
|
|||
|
||||
[comment]: <> (✂✂✂ auto generated history start ✂✂✂)
|
||||
|
||||
* [v0.21.0](https://github.com/jedie/PyInventory/compare/v0.20.1...v0.21.0)
|
||||
* 2025-03-23 - Migrate "pip-tools" -> "uv" and remove tox
|
||||
* [v0.20.1](https://github.com/jedie/PyInventory/compare/v0.20.0...v0.20.1)
|
||||
* 2024-09-05 - switched to https://github.com/jazzband/django-tinymce/
|
||||
* [v0.20.0](https://github.com/jedie/PyInventory/compare/v0.19.3...v0.20.0)
|
||||
|
@ -181,12 +183,12 @@ To make a new release, do this:
|
|||
* 2023-10-08 - Use playwrigth manage command from manage-django-project
|
||||
* 2023-09-24 - Update test snapshot files
|
||||
* 2023-09-24 - Add playwright CLI wrapper command
|
||||
* [v0.19.2](https://github.com/jedie/PyInventory/compare/v0.19.1...v0.19.2)
|
||||
* 2023-08-17 - Bugfix packaging by adding "requests" as normal dependencies
|
||||
* 2023-08-17 - Bugfix packageing by adding "requests" as normal dependencies
|
||||
|
||||
<details><summary>Expand older history entries ...</summary>
|
||||
|
||||
* [v0.19.2](https://github.com/jedie/PyInventory/compare/v0.19.1...v0.19.2)
|
||||
* 2023-08-17 - Bugfix packaging by adding "requests" as normal dependencies
|
||||
* 2023-08-17 - Bugfix packageing by adding "requests" as normal dependencies
|
||||
* [v0.19.1](https://github.com/jedie/PyInventory/compare/v0.19.0...v0.19.1)
|
||||
* 2023-08-17 - Update requirements
|
||||
* 2023-08-17 - Update from project template
|
||||
|
|
|
@ -7,5 +7,6 @@
|
|||
:license: GNU GPL v3 or above, see LICENSE for more details.
|
||||
"""
|
||||
|
||||
__version__ = '0.20.1'
|
||||
# See https://packaging.python.org/en/latest/specifications/version-specifiers/
|
||||
__version__ = '0.21.0'
|
||||
__author__ = 'Jens Diemer <PyInventory@jensdiemer.de>'
|
||||
|
|
|
@ -1,18 +1,10 @@
|
|||
"""
|
||||
https://docs.djangoproject.com/en/2.0/ref/applications/#configuring-applications-ref
|
||||
|
||||
created 14.20.2020 by Jens Diemer <opensource@jensdiemer.de>
|
||||
:copyleft: 2020 by the PyInventory team, see AUTHORS for more details.
|
||||
:license: GNU GPL v3 or above, see LICENSE for more details.
|
||||
"""
|
||||
from django.apps import AppConfig as BaseAppConfig
|
||||
|
||||
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class InventoryConfig(AppConfig):
|
||||
name = "inventory"
|
||||
verbose_name = "Inventory"
|
||||
class AppConfig(BaseAppConfig):
|
||||
name = 'inventory'
|
||||
verbose_name = 'Inventory'
|
||||
|
||||
def ready(self):
|
||||
import inventory.checks # noqa
|
||||
import inventory.signals # noqa
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
import os
|
||||
import unittest.util
|
||||
from pathlib import Path
|
||||
|
||||
import django
|
||||
from bx_py_utils.test_utils.deny_requests import deny_any_real_request
|
||||
from manage_django_project.config import project_info
|
||||
from rich import print
|
||||
from typeguard import install_import_hook
|
||||
|
||||
import inventory
|
||||
|
||||
|
||||
# Check type annotations via typeguard in all tests:
|
||||
install_import_hook(packages=('inventory', 'inventory_project'))
|
||||
|
||||
|
||||
PROJECT_ROOT = Path(inventory.__file__).parent.parent
|
||||
|
||||
|
||||
def pre_configure_tests() -> None:
|
||||
print(f'Configure unittests via "load_tests Protocol" from {Path(__file__).relative_to(Path.cwd())}')
|
||||
|
||||
# Hacky way to display more "assert"-Context in failing tests:
|
||||
_MIN_MAX_DIFF = unittest.util._MAX_LENGTH - unittest.util._MIN_DIFF_LEN
|
||||
unittest.util._MAX_LENGTH = int(os.environ.get('UNITTEST_MAX_LENGTH', 300))
|
||||
unittest.util._MIN_DIFF_LEN = unittest.util._MAX_LENGTH - _MIN_MAX_DIFF
|
||||
|
||||
# Deny any request via docket/urllib3 because tests they should mock all requests:
|
||||
deny_any_real_request()
|
||||
|
||||
|
||||
def init_django4unittests() -> None:
|
||||
"""
|
||||
Make it possible to run tests via:
|
||||
.venv/bin/python -m unittest
|
||||
by setup Django with test settings
|
||||
"""
|
||||
project_info.initialize()
|
||||
|
||||
DJANGO_SETTINGS_MODULE: str = project_info.config.test_settings
|
||||
print(f'Force {DJANGO_SETTINGS_MODULE=}')
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = DJANGO_SETTINGS_MODULE
|
||||
|
||||
django.setup()
|
||||
|
||||
|
||||
def load_tests(loader, tests, pattern):
|
||||
"""
|
||||
Use unittest "load_tests Protocol" as a hook to setup test environment before running tests.
|
||||
https://docs.python.org/3/library/unittest.html#load-tests-protocol
|
||||
"""
|
||||
pre_configure_tests()
|
||||
init_django4unittests()
|
||||
return loader.discover(start_dir=Path(__file__).parent, pattern=pattern)
|
|
@ -1,12 +1,5 @@
|
|||
from pathlib import Path
|
||||
|
||||
from bx_py_utils.path import assert_is_dir
|
||||
|
||||
import inventory
|
||||
|
||||
|
||||
PACKAGE_ROOT = Path(inventory.__file__).parent.parent
|
||||
assert_is_dir(PACKAGE_ROOT / 'inventory')
|
||||
|
||||
|
||||
# Just the same version as the real project:
|
||||
__version__ = inventory.__version__
|
||||
|
|
|
@ -26,8 +26,6 @@ INTERNAL_IPS = ('127.0.0.1', '0.0.0.0', 'localhost')
|
|||
|
||||
ALLOWED_HOSTS = INTERNAL_IPS
|
||||
|
||||
SECURE_SSL_REDIRECT = False
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
|
|
|
@ -65,7 +65,8 @@ INSTALLED_APPS = [
|
|||
'django_tools.serve_media_app.apps.UserMediaFilesConfig',
|
||||
# https://github.com/jedie/django-tools/tree/master/django_tools/model_version_protect
|
||||
'django_tools.model_version_protect.apps.ModelVersionProtectConfig',
|
||||
'inventory.apps.InventoryConfig',
|
||||
#
|
||||
'inventory.apps.AppConfig',
|
||||
]
|
||||
|
||||
ROOT_URLCONF = 'inventory_project.urls'
|
||||
|
|
|
@ -7,6 +7,9 @@ import os
|
|||
from inventory_project.settings.prod import * # noqa
|
||||
|
||||
|
||||
ALLOWED_HOSTS = ['testserver']
|
||||
|
||||
|
||||
# _____________________________________________________________________________
|
||||
# Manage Django Project
|
||||
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
import os
|
||||
import unittest.util
|
||||
from pathlib import Path
|
||||
|
||||
from bx_py_utils.test_utils.deny_requests import deny_any_real_request
|
||||
from typeguard import install_import_hook
|
||||
|
||||
|
||||
# Check type annotations via typeguard in all tests:
|
||||
install_import_hook(packages=('inventory', 'inventory_project'))
|
||||
|
||||
|
||||
def pre_configure_tests() -> None:
|
||||
print(f'Configure unittests via "load_tests Protocol" from {Path(__file__).relative_to(Path.cwd())}')
|
||||
|
||||
# Hacky way to display more "assert"-Context in failing tests:
|
||||
_MIN_MAX_DIFF = unittest.util._MAX_LENGTH - unittest.util._MIN_DIFF_LEN
|
||||
unittest.util._MAX_LENGTH = int(os.environ.get('UNITTEST_MAX_LENGTH', 300))
|
||||
unittest.util._MIN_DIFF_LEN = unittest.util._MAX_LENGTH - _MIN_MAX_DIFF
|
||||
|
||||
# Deny any request via docket/urllib3 because tests they should mock all requests:
|
||||
deny_any_real_request()
|
||||
|
||||
|
||||
def load_tests(loader, tests, pattern):
|
||||
"""
|
||||
Use unittest "load_tests Protocol" as a hook to setup test environment before running tests.
|
||||
https://docs.python.org/3/library/unittest.html#load-tests-protocol
|
||||
"""
|
||||
pre_configure_tests()
|
||||
return loader.discover(start_dir=Path(__file__).parent, pattern=pattern)
|
|
@ -6,10 +6,10 @@
|
|||
<form enctype="multipart/form-data" id="itemmodel_form" method="post" novalidate="">
|
||||
MockedCsrfTokenNode
|
||||
<div>
|
||||
<fieldset aria-labelledby="fieldset-0-internals-0-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-0-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-internals-0-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-0-heading">
|
||||
Internals
|
||||
</h2>
|
||||
</summary>
|
||||
|
@ -65,10 +65,10 @@
|
|||
</div>
|
||||
</details>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-meta-1-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-1-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-meta-1-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-1-heading">
|
||||
Meta
|
||||
</h2>
|
||||
</summary>
|
||||
|
@ -108,8 +108,8 @@
|
|||
</div>
|
||||
</details>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-basic-2-heading" class="module aligned">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-basic-2-heading">
|
||||
<fieldset aria-labelledby="fieldset-0-2-heading" class="module aligned">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-2-heading">
|
||||
Basic
|
||||
</h2>
|
||||
<div class="form-row field-kind">
|
||||
|
@ -268,10 +268,10 @@
|
|||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-related-items-3-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-3-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-related-items-3-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-3-heading">
|
||||
Related items
|
||||
</h2>
|
||||
</summary>
|
||||
|
@ -289,10 +289,10 @@
|
|||
</div>
|
||||
</details>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-lent-4-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-4-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-lent-4-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-4-heading">
|
||||
Lent
|
||||
</h2>
|
||||
</summary>
|
||||
|
@ -344,10 +344,10 @@
|
|||
</div>
|
||||
</details>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-received-5-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-5-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-received-5-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-5-heading">
|
||||
Received
|
||||
</h2>
|
||||
</summary>
|
||||
|
@ -395,10 +395,10 @@
|
|||
</div>
|
||||
</details>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-handed-over-6-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-6-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-handed-over-6-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-6-heading">
|
||||
Handed over
|
||||
</h2>
|
||||
</summary>
|
||||
|
|
|
@ -219,10 +219,10 @@
|
|||
Version error: Overwrite version 2 with 1 is forbidden!
|
||||
</li>
|
||||
</ul>
|
||||
<fieldset aria-labelledby="fieldset-0-internals-0-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-0-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-internals-0-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-0-heading">
|
||||
Internals
|
||||
</h2>
|
||||
</summary>
|
||||
|
@ -288,10 +288,10 @@
|
|||
</div>
|
||||
</details>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-meta-1-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-1-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-meta-1-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-1-heading">
|
||||
Meta
|
||||
</h2>
|
||||
</summary>
|
||||
|
@ -331,8 +331,8 @@
|
|||
</div>
|
||||
</details>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-basic-2-heading" class="module aligned">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-basic-2-heading">
|
||||
<fieldset aria-labelledby="fieldset-0-2-heading" class="module aligned">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-2-heading">
|
||||
Basic
|
||||
</h2>
|
||||
<div class="form-row field-kind">
|
||||
|
@ -498,10 +498,10 @@
|
|||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-related-items-3-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-3-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-related-items-3-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-3-heading">
|
||||
Related items
|
||||
</h2>
|
||||
</summary>
|
||||
|
@ -542,10 +542,10 @@
|
|||
</div>
|
||||
</details>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-lent-4-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-4-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-lent-4-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-4-heading">
|
||||
Lent
|
||||
</h2>
|
||||
</summary>
|
||||
|
@ -597,10 +597,10 @@
|
|||
</div>
|
||||
</details>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-received-5-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-5-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-received-5-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-5-heading">
|
||||
Received
|
||||
</h2>
|
||||
</summary>
|
||||
|
@ -648,10 +648,10 @@
|
|||
</div>
|
||||
</details>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-handed-over-6-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-6-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-handed-over-6-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-6-heading">
|
||||
Handed over
|
||||
</h2>
|
||||
</summary>
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
<form enctype="multipart/form-data" id="memomodel_form" method="post" novalidate="">
|
||||
MockedCsrfTokenNode
|
||||
<div>
|
||||
<fieldset aria-labelledby="fieldset-0-internals-0-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-0-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-internals-0-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-0-heading">
|
||||
Internals
|
||||
</h2>
|
||||
</summary>
|
||||
|
@ -65,10 +65,10 @@
|
|||
</div>
|
||||
</details>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-meta-1-heading" class="module aligned collapse">
|
||||
<fieldset aria-labelledby="fieldset-0-1-heading" class="module aligned collapse">
|
||||
<details>
|
||||
<summary>
|
||||
<h2 class="fieldset-heading" id="fieldset-0-meta-1-heading">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-1-heading">
|
||||
Meta
|
||||
</h2>
|
||||
</summary>
|
||||
|
@ -108,8 +108,8 @@
|
|||
</div>
|
||||
</details>
|
||||
</fieldset>
|
||||
<fieldset aria-labelledby="fieldset-0-basic-2-heading" class="module aligned">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-basic-2-heading">
|
||||
<fieldset aria-labelledby="fieldset-0-2-heading" class="module aligned">
|
||||
<h2 class="fieldset-heading" id="fieldset-0-2-heading">
|
||||
Basic
|
||||
</h2>
|
||||
<div class="form-row field-name">
|
||||
|
|
|
@ -34,15 +34,19 @@ dbshell makemessages sqlflush test
|
|||
diffsettings makemigrations sqlmigrate testserver
|
||||
dumpdata migrate sqlsequencereset
|
||||
|
||||
import_export
|
||||
=============
|
||||
export import
|
||||
|
||||
inventory
|
||||
=========
|
||||
seed_data tree
|
||||
|
||||
manage_django_project
|
||||
=====================
|
||||
code_style pip_audit publish update_req
|
||||
coverage playwright run_dev_server update_test_snapshot_files
|
||||
install project_info tox
|
||||
code_style nox project_info update_req
|
||||
coverage pip_audit publish update_test_snapshot_files
|
||||
install playwright run_dev_server
|
||||
|
||||
reversion
|
||||
=========
|
||||
|
|
22
manage.py
22
manage.py
|
@ -8,6 +8,7 @@
|
|||
"""
|
||||
|
||||
import hashlib
|
||||
import os
|
||||
import shlex
|
||||
import signal
|
||||
import subprocess
|
||||
|
@ -34,7 +35,7 @@ else:
|
|||
sys.exit(-1)
|
||||
|
||||
|
||||
assert sys.version_info >= (3, 10), f'Python version {sys.version_info} is too old!'
|
||||
assert sys.version_info >= (3, 11), f'Python version {sys.version_info} is too old!'
|
||||
|
||||
|
||||
if sys.platform == 'win32': # wtf
|
||||
|
@ -51,9 +52,9 @@ VENV_PATH = BASE_PATH / '.venv'
|
|||
BIN_PATH = VENV_PATH / BIN_NAME
|
||||
PYTHON_PATH = BIN_PATH / f'python3{FILE_EXT}'
|
||||
PIP_PATH = BIN_PATH / f'pip{FILE_EXT}'
|
||||
PIP_SYNC_PATH = BIN_PATH / f'pip-sync{FILE_EXT}'
|
||||
UV_PATH = BIN_PATH / f'uv{FILE_EXT}'
|
||||
|
||||
DEP_LOCK_PATH = BASE_PATH / 'requirements.dev.txt'
|
||||
DEP_LOCK_PATH = BASE_PATH / 'uv.lock'
|
||||
DEP_HASH_PATH = VENV_PATH / '.dep_hash'
|
||||
|
||||
# script file defined in pyproject.toml as [console_scripts]
|
||||
|
@ -99,23 +100,26 @@ def main(argv):
|
|||
builder = venv.EnvBuilder(symlinks=True, upgrade=True, with_pip=True)
|
||||
builder.create(env_dir=VENV_PATH)
|
||||
|
||||
# Set environment variable for uv to use '.venv-app' as project environment:
|
||||
os.environ['UV_PROJECT_ENVIRONMENT'] = str(VENV_PATH.absolute())
|
||||
|
||||
if not PROJECT_SHELL_SCRIPT.is_file() or not venv_up2date():
|
||||
# Update pip
|
||||
verbose_check_call(PYTHON_PATH, '-m', 'pip', 'install', '-U', 'pip')
|
||||
|
||||
# Install pip-tools
|
||||
verbose_check_call(PYTHON_PATH, '-m', 'pip', 'install', '-U', 'pip-tools')
|
||||
# Install uv
|
||||
verbose_check_call(PYTHON_PATH, '-m', 'pip', 'install', '-U', 'uv')
|
||||
|
||||
# install requirements via "pip-sync"
|
||||
verbose_check_call(PIP_SYNC_PATH, str(DEP_LOCK_PATH))
|
||||
# install requirements
|
||||
verbose_check_call(UV_PATH, 'sync', '--frozen')
|
||||
|
||||
# install project
|
||||
verbose_check_call(PIP_PATH, 'install', '--no-deps', '-e', '.')
|
||||
store_dep_hash()
|
||||
|
||||
# Activate git pre-commit hooks:
|
||||
verbose_check_call(PYTHON_PATH, '-m', 'pre_commit', 'install')
|
||||
verbose_check_call(PYTHON_PATH, '-m', 'pre_commit', 'autoupdate')
|
||||
|
||||
store_dep_hash()
|
||||
|
||||
signal.signal(signal.SIGINT, noop_sigint_handler) # ignore "Interrupt from keyboard" signals
|
||||
|
||||
|
|
|
@ -30,21 +30,21 @@ dependencies = [
|
|||
"django-debug-toolbar", # http://django-debug-toolbar.readthedocs.io/en/stable/changes.html
|
||||
"bx_py_utils", # https://github.com/boxine/bx_py_utils
|
||||
"bx_django_utils", # https://github.com/boxine/bx_django_utils
|
||||
"django-axes", # https://github.com/jazzband/django-axes
|
||||
]
|
||||
[project.optional-dependencies]
|
||||
[dependency-groups]
|
||||
dev = [
|
||||
"django-debug-toolbar", # http://django-debug-toolbar.readthedocs.io/en/stable/changes.html
|
||||
"manage_django_project", # https://github.com/jedie/manage_django_project
|
||||
# TODO: "autocron", # https://github.com/kbr/autocron
|
||||
|
||||
"cmd2_ext_test", # https://github.com/python-cmd2/cmd2/tree/master/plugins/ext_test
|
||||
"playwright", # https://playwright.dev/python/docs/intro
|
||||
"beautifulsoup4", # https://www.crummy.com/software/BeautifulSoup/
|
||||
'lxml', # https://github.com/lxml/lxml
|
||||
|
||||
"uv", # https://github.com/astral-sh/uv
|
||||
"playwright", # https://github.com/microsoft/playwright-python
|
||||
"tblib", # https://github.com/ionelmc/python-tblib
|
||||
"pip-tools", # https://github.com/jazzband/pip-tools/
|
||||
"tox", # https://github.com/tox-dev/tox
|
||||
"coverage", # https://github.com/nedbat/coveragepy
|
||||
"autopep8", # https://github.com/hhatto/autopep8
|
||||
"pyupgrade", # https://github.com/asottile/pyupgrade
|
||||
|
@ -56,8 +56,8 @@ dev = [
|
|||
"pip-audit", # https://github.com/pypa/pip-audit
|
||||
"mypy", # https://github.com/python/mypy
|
||||
"twine", # https://github.com/pypa/twine
|
||||
"typeguard", # https://github.com/agronholm/typeguard/
|
||||
"pre-commit", # https://github.com/pre-commit/pre-commit
|
||||
"typeguard", # https://github.com/agronholm/typeguard/
|
||||
|
||||
# https://github.com/akaihola/darker
|
||||
# https://github.com/ikamensh/flynt
|
||||
|
@ -68,11 +68,6 @@ dev = [
|
|||
"model_bakery", # https://github.com/model-bakers/model_bakery
|
||||
"requests-mock", # https://github.com/jamielennox/requests-mock
|
||||
"django-override-storage", # https://github.com/danifus/django-override-storage
|
||||
|
||||
# Work-a-round for: https://github.com/jazzband/pip-tools/issues/1866
|
||||
# see also: https://github.com/jazzband/pip-tools/issues/994#issuecomment-1321226661
|
||||
# backports.tarfile is needed for python <3.12
|
||||
'backports.tarfile', # via jaraco-context -> keyring -> twine
|
||||
]
|
||||
|
||||
[project.urls]
|
||||
|
@ -151,7 +146,7 @@ branch = true
|
|||
parallel = true
|
||||
concurrency = ["multiprocessing"]
|
||||
source = ['.']
|
||||
command_line = '-m inventory_project test --shuffle --parallel --buffer'
|
||||
command_line = '-m unittest --verbose --locals --buffer'
|
||||
|
||||
[tool.coverage.report]
|
||||
omit = ['.*', '*/tests/*', '*/migrations/*']
|
||||
|
@ -165,26 +160,6 @@ exclude_lines = [
|
|||
'if __name__ == .__main__.:',
|
||||
]
|
||||
|
||||
|
||||
[tool.tox] # https://tox.wiki/en/latest/config.html#pyproject-toml
|
||||
legacy_tox_ini = """
|
||||
[tox]
|
||||
isolated_build = True
|
||||
envlist = py{312,311}
|
||||
skip_missing_interpreters = True
|
||||
|
||||
[testenv]
|
||||
passenv = *
|
||||
skip_install = true
|
||||
commands_pre =
|
||||
pip install -U pip
|
||||
pip install -U pip-tools
|
||||
pip-sync requirements.dev.txt
|
||||
commands =
|
||||
{envpython} -m coverage run --context='{envname}'
|
||||
"""
|
||||
|
||||
|
||||
[tool.mypy]
|
||||
warn_unused_configs = true
|
||||
ignore_missing_imports = true
|
||||
|
@ -201,6 +176,7 @@ cookiecutter_template = "https://github.com/jedie/cookiecutter_templates/"
|
|||
cookiecutter_directory = "managed-django-project"
|
||||
applied_migrations = [
|
||||
"141b3e4", # 2024-09-05T17:53:31+02:00
|
||||
"a36dd75", # 2025-03-23T11:39:23+01:00
|
||||
]
|
||||
|
||||
[manageprojects.cookiecutter_context.cookiecutter]
|
||||
|
@ -208,7 +184,7 @@ full_name = "Jens Diemer"
|
|||
github_username = "jedie"
|
||||
author_email = "PyInventory@jensdiemer.de"
|
||||
package_name = "inventory"
|
||||
package_version = "0.18.0"
|
||||
package_version = "0.21.0"
|
||||
package_description = "Web based management to catalog things including state and location etc. using Python/Django."
|
||||
package_url = "https://github.com/jedie/PyInventory"
|
||||
issues_url = "https://github.com/jedie/PyInventory/issues"
|
||||
|
|
1490
requirements.dev.txt
1490
requirements.dev.txt
Plik diff jest za duży
Load Diff
340
requirements.txt
340
requirements.txt
|
@ -1,340 +0,0 @@
|
|||
#
|
||||
# This file is autogenerated by pip-compile with Python 3.12
|
||||
# by the following command:
|
||||
#
|
||||
# ./manage.py update_req
|
||||
#
|
||||
asgiref==3.8.1 \
|
||||
--hash=sha256:3e1e3ecc849832fe52ccf2cb6686b7a55f82bb1d6aee72a58826471390335e47 \
|
||||
--hash=sha256:c343bd80a0bec947a9860adb4c432ffa7db769836c64238fc34bdc3fec84d590
|
||||
# via django
|
||||
bleach==6.1.0 \
|
||||
--hash=sha256:0a31f1837963c41d46bbf1331b8778e1308ea0791db03cc4e7357b97cf42a8fe \
|
||||
--hash=sha256:3225f354cfc436b9789c66c4ee030194bee0568fbf9cbdad3bc8b5c26c5f12b6
|
||||
# via django-tools
|
||||
bx-django-utils==79 \
|
||||
--hash=sha256:cb66087d4e9396281acf5a4394b749cff3062b66082d5726f6a8a342fdd35d0e \
|
||||
--hash=sha256:d50b10ace24b0b363574542faecf04a81029e2fec6d6e6525fe063ed06238e04
|
||||
# via
|
||||
# PyInventory (pyproject.toml)
|
||||
# django-tools
|
||||
bx-py-utils==101 \
|
||||
--hash=sha256:2aa295cde55da99b77f5f2f8b5bf8c0bec7e0046511832989ecbb1a43183cf75 \
|
||||
--hash=sha256:eece1f0b1e3c091d38f3013984056b05f43c6a0fd716489cf337d89df802ab59
|
||||
# via
|
||||
# PyInventory (pyproject.toml)
|
||||
# bx-django-utils
|
||||
# django-tools
|
||||
certifi==2024.8.30 \
|
||||
--hash=sha256:922820b53db7a7257ffbda3f597266d435245903d80737e34f8a45ff3e3230d8 \
|
||||
--hash=sha256:bec941d2aa8195e248a60b31ff9f0558284cf01a52591ceda73ea9afffd69fd9
|
||||
# via requests
|
||||
charset-normalizer==3.3.2 \
|
||||
--hash=sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027 \
|
||||
--hash=sha256:06a81e93cd441c56a9b65d8e1d043daeb97a3d0856d177d5c90ba85acb3db087 \
|
||||
--hash=sha256:0a55554a2fa0d408816b3b5cedf0045f4b8e1a6065aec45849de2d6f3f8e9786 \
|
||||
--hash=sha256:0b2b64d2bb6d3fb9112bafa732def486049e63de9618b5843bcdd081d8144cd8 \
|
||||
--hash=sha256:10955842570876604d404661fbccbc9c7e684caf432c09c715ec38fbae45ae09 \
|
||||
--hash=sha256:122c7fa62b130ed55f8f285bfd56d5f4b4a5b503609d181f9ad85e55c89f4185 \
|
||||
--hash=sha256:1ceae2f17a9c33cb48e3263960dc5fc8005351ee19db217e9b1bb15d28c02574 \
|
||||
--hash=sha256:1d3193f4a680c64b4b6a9115943538edb896edc190f0b222e73761716519268e \
|
||||
--hash=sha256:1f79682fbe303db92bc2b1136016a38a42e835d932bab5b3b1bfcfbf0640e519 \
|
||||
--hash=sha256:2127566c664442652f024c837091890cb1942c30937add288223dc895793f898 \
|
||||
--hash=sha256:22afcb9f253dac0696b5a4be4a1c0f8762f8239e21b99680099abd9b2b1b2269 \
|
||||
--hash=sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3 \
|
||||
--hash=sha256:2e81c7b9c8979ce92ed306c249d46894776a909505d8f5a4ba55b14206e3222f \
|
||||
--hash=sha256:3287761bc4ee9e33561a7e058c72ac0938c4f57fe49a09eae428fd88aafe7bb6 \
|
||||
--hash=sha256:34d1c8da1e78d2e001f363791c98a272bb734000fcef47a491c1e3b0505657a8 \
|
||||
--hash=sha256:37e55c8e51c236f95b033f6fb391d7d7970ba5fe7ff453dad675e88cf303377a \
|
||||
--hash=sha256:3d47fa203a7bd9c5b6cee4736ee84ca03b8ef23193c0d1ca99b5089f72645c73 \
|
||||
--hash=sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc \
|
||||
--hash=sha256:42cb296636fcc8b0644486d15c12376cb9fa75443e00fb25de0b8602e64c1714 \
|
||||
--hash=sha256:45485e01ff4d3630ec0d9617310448a8702f70e9c01906b0d0118bdf9d124cf2 \
|
||||
--hash=sha256:4a78b2b446bd7c934f5dcedc588903fb2f5eec172f3d29e52a9096a43722adfc \
|
||||
--hash=sha256:4ab2fe47fae9e0f9dee8c04187ce5d09f48eabe611be8259444906793ab7cbce \
|
||||
--hash=sha256:4d0d1650369165a14e14e1e47b372cfcb31d6ab44e6e33cb2d4e57265290044d \
|
||||
--hash=sha256:549a3a73da901d5bc3ce8d24e0600d1fa85524c10287f6004fbab87672bf3e1e \
|
||||
--hash=sha256:55086ee1064215781fff39a1af09518bc9255b50d6333f2e4c74ca09fac6a8f6 \
|
||||
--hash=sha256:572c3763a264ba47b3cf708a44ce965d98555f618ca42c926a9c1616d8f34269 \
|
||||
--hash=sha256:573f6eac48f4769d667c4442081b1794f52919e7edada77495aaed9236d13a96 \
|
||||
--hash=sha256:5b4c145409bef602a690e7cfad0a15a55c13320ff7a3ad7ca59c13bb8ba4d45d \
|
||||
--hash=sha256:6463effa3186ea09411d50efc7d85360b38d5f09b870c48e4600f63af490e56a \
|
||||
--hash=sha256:65f6f63034100ead094b8744b3b97965785388f308a64cf8d7c34f2f2e5be0c4 \
|
||||
--hash=sha256:663946639d296df6a2bb2aa51b60a2454ca1cb29835324c640dafb5ff2131a77 \
|
||||
--hash=sha256:6897af51655e3691ff853668779c7bad41579facacf5fd7253b0133308cf000d \
|
||||
--hash=sha256:68d1f8a9e9e37c1223b656399be5d6b448dea850bed7d0f87a8311f1ff3dabb0 \
|
||||
--hash=sha256:6ac7ffc7ad6d040517be39eb591cac5ff87416c2537df6ba3cba3bae290c0fed \
|
||||
--hash=sha256:6b3251890fff30ee142c44144871185dbe13b11bab478a88887a639655be1068 \
|
||||
--hash=sha256:6c4caeef8fa63d06bd437cd4bdcf3ffefe6738fb1b25951440d80dc7df8c03ac \
|
||||
--hash=sha256:6ef1d82a3af9d3eecdba2321dc1b3c238245d890843e040e41e470ffa64c3e25 \
|
||||
--hash=sha256:753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8 \
|
||||
--hash=sha256:7cd13a2e3ddeed6913a65e66e94b51d80a041145a026c27e6bb76c31a853c6ab \
|
||||
--hash=sha256:7ed9e526742851e8d5cc9e6cf41427dfc6068d4f5a3bb03659444b4cabf6bc26 \
|
||||
--hash=sha256:7f04c839ed0b6b98b1a7501a002144b76c18fb1c1850c8b98d458ac269e26ed2 \
|
||||
--hash=sha256:802fe99cca7457642125a8a88a084cef28ff0cf9407060f7b93dca5aa25480db \
|
||||
--hash=sha256:80402cd6ee291dcb72644d6eac93785fe2c8b9cb30893c1af5b8fdd753b9d40f \
|
||||
--hash=sha256:8465322196c8b4d7ab6d1e049e4c5cb460d0394da4a27d23cc242fbf0034b6b5 \
|
||||
--hash=sha256:86216b5cee4b06df986d214f664305142d9c76df9b6512be2738aa72a2048f99 \
|
||||
--hash=sha256:87d1351268731db79e0f8e745d92493ee2841c974128ef629dc518b937d9194c \
|
||||
--hash=sha256:8bdb58ff7ba23002a4c5808d608e4e6c687175724f54a5dade5fa8c67b604e4d \
|
||||
--hash=sha256:8c622a5fe39a48f78944a87d4fb8a53ee07344641b0562c540d840748571b811 \
|
||||
--hash=sha256:8d756e44e94489e49571086ef83b2bb8ce311e730092d2c34ca8f7d925cb20aa \
|
||||
--hash=sha256:8f4a014bc36d3c57402e2977dada34f9c12300af536839dc38c0beab8878f38a \
|
||||
--hash=sha256:9063e24fdb1e498ab71cb7419e24622516c4a04476b17a2dab57e8baa30d6e03 \
|
||||
--hash=sha256:90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b \
|
||||
--hash=sha256:923c0c831b7cfcb071580d3f46c4baf50f174be571576556269530f4bbd79d04 \
|
||||
--hash=sha256:95f2a5796329323b8f0512e09dbb7a1860c46a39da62ecb2324f116fa8fdc85c \
|
||||
--hash=sha256:96b02a3dc4381e5494fad39be677abcb5e6634bf7b4fa83a6dd3112607547001 \
|
||||
--hash=sha256:9f96df6923e21816da7e0ad3fd47dd8f94b2a5ce594e00677c0013018b813458 \
|
||||
--hash=sha256:a10af20b82360ab00827f916a6058451b723b4e65030c5a18577c8b2de5b3389 \
|
||||
--hash=sha256:a50aebfa173e157099939b17f18600f72f84eed3049e743b68ad15bd69b6bf99 \
|
||||
--hash=sha256:a981a536974bbc7a512cf44ed14938cf01030a99e9b3a06dd59578882f06f985 \
|
||||
--hash=sha256:a9a8e9031d613fd2009c182b69c7b2c1ef8239a0efb1df3f7c8da66d5dd3d537 \
|
||||
--hash=sha256:ae5f4161f18c61806f411a13b0310bea87f987c7d2ecdbdaad0e94eb2e404238 \
|
||||
--hash=sha256:aed38f6e4fb3f5d6bf81bfa990a07806be9d83cf7bacef998ab1a9bd660a581f \
|
||||
--hash=sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d \
|
||||
--hash=sha256:b261ccdec7821281dade748d088bb6e9b69e6d15b30652b74cbbac25e280b796 \
|
||||
--hash=sha256:b2b0a0c0517616b6869869f8c581d4eb2dd83a4d79e0ebcb7d373ef9956aeb0a \
|
||||
--hash=sha256:b4a23f61ce87adf89be746c8a8974fe1c823c891d8f86eb218bb957c924bb143 \
|
||||
--hash=sha256:bd8f7df7d12c2db9fab40bdd87a7c09b1530128315d047a086fa3ae3435cb3a8 \
|
||||
--hash=sha256:beb58fe5cdb101e3a055192ac291b7a21e3b7ef4f67fa1d74e331a7f2124341c \
|
||||
--hash=sha256:c002b4ffc0be611f0d9da932eb0f704fe2602a9a949d1f738e4c34c75b0863d5 \
|
||||
--hash=sha256:c083af607d2515612056a31f0a8d9e0fcb5876b7bfc0abad3ecd275bc4ebc2d5 \
|
||||
--hash=sha256:c180f51afb394e165eafe4ac2936a14bee3eb10debc9d9e4db8958fe36afe711 \
|
||||
--hash=sha256:c235ebd9baae02f1b77bcea61bce332cb4331dc3617d254df3323aa01ab47bd4 \
|
||||
--hash=sha256:cd70574b12bb8a4d2aaa0094515df2463cb429d8536cfb6c7ce983246983e5a6 \
|
||||
--hash=sha256:d0eccceffcb53201b5bfebb52600a5fb483a20b61da9dbc885f8b103cbe7598c \
|
||||
--hash=sha256:d965bba47ddeec8cd560687584e88cf699fd28f192ceb452d1d7ee807c5597b7 \
|
||||
--hash=sha256:db364eca23f876da6f9e16c9da0df51aa4f104a972735574842618b8c6d999d4 \
|
||||
--hash=sha256:ddbb2551d7e0102e7252db79ba445cdab71b26640817ab1e3e3648dad515003b \
|
||||
--hash=sha256:deb6be0ac38ece9ba87dea880e438f25ca3eddfac8b002a2ec3d9183a454e8ae \
|
||||
--hash=sha256:e06ed3eb3218bc64786f7db41917d4e686cc4856944f53d5bdf83a6884432e12 \
|
||||
--hash=sha256:e27ad930a842b4c5eb8ac0016b0a54f5aebbe679340c26101df33424142c143c \
|
||||
--hash=sha256:e537484df0d8f426ce2afb2d0f8e1c3d0b114b83f8850e5f2fbea0e797bd82ae \
|
||||
--hash=sha256:eb00ed941194665c332bf8e078baf037d6c35d7c4f3102ea2d4f16ca94a26dc8 \
|
||||
--hash=sha256:eb6904c354526e758fda7167b33005998fb68c46fbc10e013ca97f21ca5c8887 \
|
||||
--hash=sha256:eb8821e09e916165e160797a6c17edda0679379a4be5c716c260e836e122f54b \
|
||||
--hash=sha256:efcb3f6676480691518c177e3b465bcddf57cea040302f9f4e6e191af91174d4 \
|
||||
--hash=sha256:f27273b60488abe721a075bcca6d7f3964f9f6f067c8c4c605743023d7d3944f \
|
||||
--hash=sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5 \
|
||||
--hash=sha256:fb69256e180cb6c8a894fee62b3afebae785babc1ee98b81cdf68bbca1987f33 \
|
||||
--hash=sha256:fd1abc0d89e30cc4e02e4064dc67fcc51bd941eb395c502aac3ec19fab46b519 \
|
||||
--hash=sha256:ff8fa367d09b717b2a17a052544193ad76cd49979c805768879cb63d9ca50561
|
||||
# via requests
|
||||
colorlog==6.8.2 \
|
||||
--hash=sha256:3e3e079a41feb5a1b64f978b5ea4f46040a94f11f0e8bbb8261e3dbbeca64d44 \
|
||||
--hash=sha256:4dcbb62368e2800cb3c5abd348da7e53f6c362dda502ec27c560b2e58a66bd33
|
||||
# via
|
||||
# PyInventory (pyproject.toml)
|
||||
# django-tools
|
||||
diff-match-patch==20230430 \
|
||||
--hash=sha256:953019cdb9c9d2c9e47b5b12bcff3cf4746fc4598eb406076fa1fc27e6a1f15c \
|
||||
--hash=sha256:dce43505fb7b1b317de7195579388df0746d90db07015ed47a85e5e44930ef93
|
||||
# via
|
||||
# django-import-export
|
||||
# django-reversion-compare
|
||||
django==5.1.1 \
|
||||
--hash=sha256:021ffb7fdab3d2d388bc8c7c2434eb9c1f6f4d09e6119010bbb1694dda286bc2 \
|
||||
--hash=sha256:71603f27dac22a6533fb38d83072eea9ddb4017fead6f67f2562a40402d61c3f
|
||||
# via
|
||||
# PyInventory (pyproject.toml)
|
||||
# bx-django-utils
|
||||
# django-admin-sortable2
|
||||
# django-dbbackup
|
||||
# django-debug-toolbar
|
||||
# django-import-export
|
||||
# django-reversion
|
||||
# django-reversion-compare
|
||||
# django-tagulous
|
||||
# django-tinymce
|
||||
# django-tools
|
||||
django-admin-sortable2==2.2.2 \
|
||||
--hash=sha256:efb28eed633e3a008c6938a887096a9887a213628a39458dc748d654f8f12d5c \
|
||||
--hash=sha256:fc6b62ac1e5f4c95001742d568a2c1ce371bafe9d79d809fc55779fba955e498
|
||||
# via PyInventory (pyproject.toml)
|
||||
django-dbbackup==4.2.1 \
|
||||
--hash=sha256:157a2ec10d482345cd75092e510ac40d6e2ee6084604a1d17abe178c2f06bc69 \
|
||||
--hash=sha256:b23265600ead0780ca781b1b4b594949aaa8a20d74f08701f91ee9d7eb1f08cd
|
||||
# via PyInventory (pyproject.toml)
|
||||
django-debug-toolbar==4.4.6 \
|
||||
--hash=sha256:36e421cb908c2f0675e07f9f41e3d1d8618dc386392ec82d23bcfcd5d29c7044 \
|
||||
--hash=sha256:3beb671c9ec44ffb817fad2780667f172bd1c067dbcabad6268ce39a81335f45
|
||||
# via PyInventory (pyproject.toml)
|
||||
django-import-export==4.1.1 \
|
||||
--hash=sha256:16ecc5a9f0df46bde6eb278a3e65ebda0ee1db55656f36440e9fb83f40ab85a3 \
|
||||
--hash=sha256:730ae2443a02b1ba27d8dba078a27ae9123adfcabb78161b4f130843607b3df9
|
||||
# via PyInventory (pyproject.toml)
|
||||
django-reversion==5.1.0 \
|
||||
--hash=sha256:084d4f117d9e2b4e8dfdfaad83ebb34410a03eed6071c96089e6811fdea82ad3 \
|
||||
--hash=sha256:3309821e5b6fceedcce6b6975f1a9c7fab6ae7c7d0e1276a90e345946fa0dcb8
|
||||
# via django-reversion-compare
|
||||
django-reversion-compare==0.17.0 \
|
||||
--hash=sha256:02d13ed7994d24d505671d84a005c6f99d13ed92531fa457c63245b518f835ff \
|
||||
--hash=sha256:bfb036f32943965d01132809f94b853531cf6c9e3607b8894149c82fe68eddaa
|
||||
# via PyInventory (pyproject.toml)
|
||||
django-tagulous==2.1.0 \
|
||||
--hash=sha256:5ebba5a51f049f6df5f9d2a30eef431c0bf7cd35758aa0a42fc3351be4d239cd \
|
||||
--hash=sha256:f629b54ad720052092785b0dce056dc6a68c7b63f8126075af9c25848b250bfd
|
||||
# via PyInventory (pyproject.toml)
|
||||
django-tinymce==4.1.0 \
|
||||
--hash=sha256:02e3b70e940fd299f0fbef4315aee5c185664e1eb8cd396b176963954e4357c9 \
|
||||
--hash=sha256:9804836e6d2b08de3b03a27c100f8c2e9633549913eff8b323678a10cd48b94e
|
||||
# via PyInventory (pyproject.toml)
|
||||
django-tools==0.56.2 \
|
||||
--hash=sha256:29c25be814d74cd9f554d7d45bc205f5570e5feaa4232cbd09cc913c46b20c07 \
|
||||
--hash=sha256:88a192f2873f0411b99ee1aba04f2779133284cd18a5c78976e8e4605ba5d7f7
|
||||
# via PyInventory (pyproject.toml)
|
||||
gunicorn==23.0.0 \
|
||||
--hash=sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d \
|
||||
--hash=sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec
|
||||
# via
|
||||
# PyInventory (pyproject.toml)
|
||||
# django-tools
|
||||
icdiff==2.0.7 \
|
||||
--hash=sha256:f05d1b3623223dd1c70f7848da7d699de3d9a2550b902a8234d9026292fb5762 \
|
||||
--hash=sha256:f79a318891adbf59a45e3a7694f5e1f18c5407065264637072ac8363b759866f
|
||||
# via django-tools
|
||||
idna==3.8 \
|
||||
--hash=sha256:050b4e5baadcd44d760cedbd2b8e639f2ff89bbc7a5730fcc662954303377aac \
|
||||
--hash=sha256:d838c2c0ed6fced7693d5e8ab8e734d5f8fda53a039c0164afb0b82e771e3603
|
||||
# via requests
|
||||
markdown-it-py==3.0.0 \
|
||||
--hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \
|
||||
--hash=sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb
|
||||
# via rich
|
||||
mdurl==0.1.2 \
|
||||
--hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
|
||||
--hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba
|
||||
# via markdown-it-py
|
||||
packaging==24.1 \
|
||||
--hash=sha256:026ed72c8ed3fcce5bf8950572258698927fd1dbda10a5e981cdf0ac37f4f002 \
|
||||
--hash=sha256:5b8f2217dbdbd2f7f384c41c628544e6d52f2d0f53c6d0c3ea61aa5d1d7ff124
|
||||
# via gunicorn
|
||||
pillow==10.4.0 \
|
||||
--hash=sha256:02a2be69f9c9b8c1e97cf2713e789d4e398c751ecfd9967c18d0ce304efbf885 \
|
||||
--hash=sha256:030abdbe43ee02e0de642aee345efa443740aa4d828bfe8e2eb11922ea6a21ea \
|
||||
--hash=sha256:06b2f7898047ae93fad74467ec3d28fe84f7831370e3c258afa533f81ef7f3df \
|
||||
--hash=sha256:0755ffd4a0c6f267cccbae2e9903d95477ca2f77c4fcf3a3a09570001856c8a5 \
|
||||
--hash=sha256:0a9ec697746f268507404647e531e92889890a087e03681a3606d9b920fbee3c \
|
||||
--hash=sha256:0ae24a547e8b711ccaaf99c9ae3cd975470e1a30caa80a6aaee9a2f19c05701d \
|
||||
--hash=sha256:134ace6dc392116566980ee7436477d844520a26a4b1bd4053f6f47d096997fd \
|
||||
--hash=sha256:166c1cd4d24309b30d61f79f4a9114b7b2313d7450912277855ff5dfd7cd4a06 \
|
||||
--hash=sha256:1b5dea9831a90e9d0721ec417a80d4cbd7022093ac38a568db2dd78363b00908 \
|
||||
--hash=sha256:1d846aea995ad352d4bdcc847535bd56e0fd88d36829d2c90be880ef1ee4668a \
|
||||
--hash=sha256:1ef61f5dd14c300786318482456481463b9d6b91ebe5ef12f405afbba77ed0be \
|
||||
--hash=sha256:297e388da6e248c98bc4a02e018966af0c5f92dfacf5a5ca22fa01cb3179bca0 \
|
||||
--hash=sha256:298478fe4f77a4408895605f3482b6cc6222c018b2ce565c2b6b9c354ac3229b \
|
||||
--hash=sha256:29dbdc4207642ea6aad70fbde1a9338753d33fb23ed6956e706936706f52dd80 \
|
||||
--hash=sha256:2db98790afc70118bd0255c2eeb465e9767ecf1f3c25f9a1abb8ffc8cfd1fe0a \
|
||||
--hash=sha256:32cda9e3d601a52baccb2856b8ea1fc213c90b340c542dcef77140dfa3278a9e \
|
||||
--hash=sha256:37fb69d905be665f68f28a8bba3c6d3223c8efe1edf14cc4cfa06c241f8c81d9 \
|
||||
--hash=sha256:416d3a5d0e8cfe4f27f574362435bc9bae57f679a7158e0096ad2beb427b8696 \
|
||||
--hash=sha256:43efea75eb06b95d1631cb784aa40156177bf9dd5b4b03ff38979e048258bc6b \
|
||||
--hash=sha256:4b35b21b819ac1dbd1233317adeecd63495f6babf21b7b2512d244ff6c6ce309 \
|
||||
--hash=sha256:4d9667937cfa347525b319ae34375c37b9ee6b525440f3ef48542fcf66f2731e \
|
||||
--hash=sha256:5161eef006d335e46895297f642341111945e2c1c899eb406882a6c61a4357ab \
|
||||
--hash=sha256:543f3dc61c18dafb755773efc89aae60d06b6596a63914107f75459cf984164d \
|
||||
--hash=sha256:551d3fd6e9dc15e4c1eb6fc4ba2b39c0c7933fa113b220057a34f4bb3268a060 \
|
||||
--hash=sha256:59291fb29317122398786c2d44427bbd1a6d7ff54017075b22be9d21aa59bd8d \
|
||||
--hash=sha256:5b001114dd152cfd6b23befeb28d7aee43553e2402c9f159807bf55f33af8a8d \
|
||||
--hash=sha256:5b4815f2e65b30f5fbae9dfffa8636d992d49705723fe86a3661806e069352d4 \
|
||||
--hash=sha256:5dc6761a6efc781e6a1544206f22c80c3af4c8cf461206d46a1e6006e4429ff3 \
|
||||
--hash=sha256:5e84b6cc6a4a3d76c153a6b19270b3526a5a8ed6b09501d3af891daa2a9de7d6 \
|
||||
--hash=sha256:6209bb41dc692ddfee4942517c19ee81b86c864b626dbfca272ec0f7cff5d9fb \
|
||||
--hash=sha256:673655af3eadf4df6b5457033f086e90299fdd7a47983a13827acf7459c15d94 \
|
||||
--hash=sha256:6c762a5b0997f5659a5ef2266abc1d8851ad7749ad9a6a5506eb23d314e4f46b \
|
||||
--hash=sha256:7086cc1d5eebb91ad24ded9f58bec6c688e9f0ed7eb3dbbf1e4800280a896496 \
|
||||
--hash=sha256:73664fe514b34c8f02452ffb73b7a92c6774e39a647087f83d67f010eb9a0cf0 \
|
||||
--hash=sha256:76a911dfe51a36041f2e756b00f96ed84677cdeb75d25c767f296c1c1eda1319 \
|
||||
--hash=sha256:780c072c2e11c9b2c7ca37f9a2ee8ba66f44367ac3e5c7832afcfe5104fd6d1b \
|
||||
--hash=sha256:7928ecbf1ece13956b95d9cbcfc77137652b02763ba384d9ab508099a2eca856 \
|
||||
--hash=sha256:7970285ab628a3779aecc35823296a7869f889b8329c16ad5a71e4901a3dc4ef \
|
||||
--hash=sha256:7a8d4bade9952ea9a77d0c3e49cbd8b2890a399422258a77f357b9cc9be8d680 \
|
||||
--hash=sha256:7c1ee6f42250df403c5f103cbd2768a28fe1a0ea1f0f03fe151c8741e1469c8b \
|
||||
--hash=sha256:7dfecdbad5c301d7b5bde160150b4db4c659cee2b69589705b6f8a0c509d9f42 \
|
||||
--hash=sha256:812f7342b0eee081eaec84d91423d1b4650bb9828eb53d8511bcef8ce5aecf1e \
|
||||
--hash=sha256:866b6942a92f56300012f5fbac71f2d610312ee65e22f1aa2609e491284e5597 \
|
||||
--hash=sha256:86dcb5a1eb778d8b25659d5e4341269e8590ad6b4e8b44d9f4b07f8d136c414a \
|
||||
--hash=sha256:87dd88ded2e6d74d31e1e0a99a726a6765cda32d00ba72dc37f0651f306daaa8 \
|
||||
--hash=sha256:8bc1a764ed8c957a2e9cacf97c8b2b053b70307cf2996aafd70e91a082e70df3 \
|
||||
--hash=sha256:8d4d5063501b6dd4024b8ac2f04962d661222d120381272deea52e3fc52d3736 \
|
||||
--hash=sha256:8f0aef4ef59694b12cadee839e2ba6afeab89c0f39a3adc02ed51d109117b8da \
|
||||
--hash=sha256:930044bb7679ab003b14023138b50181899da3f25de50e9dbee23b61b4de2126 \
|
||||
--hash=sha256:950be4d8ba92aca4b2bb0741285a46bfae3ca699ef913ec8416c1b78eadd64cd \
|
||||
--hash=sha256:961a7293b2457b405967af9c77dcaa43cc1a8cd50d23c532e62d48ab6cdd56f5 \
|
||||
--hash=sha256:9b885f89040bb8c4a1573566bbb2f44f5c505ef6e74cec7ab9068c900047f04b \
|
||||
--hash=sha256:9f4727572e2918acaa9077c919cbbeb73bd2b3ebcfe033b72f858fc9fbef0026 \
|
||||
--hash=sha256:a02364621fe369e06200d4a16558e056fe2805d3468350df3aef21e00d26214b \
|
||||
--hash=sha256:a985e028fc183bf12a77a8bbf36318db4238a3ded7fa9df1b9a133f1cb79f8fc \
|
||||
--hash=sha256:ac1452d2fbe4978c2eec89fb5a23b8387aba707ac72810d9490118817d9c0b46 \
|
||||
--hash=sha256:b15e02e9bb4c21e39876698abf233c8c579127986f8207200bc8a8f6bb27acf2 \
|
||||
--hash=sha256:b2724fdb354a868ddf9a880cb84d102da914e99119211ef7ecbdc613b8c96b3c \
|
||||
--hash=sha256:bbc527b519bd3aa9d7f429d152fea69f9ad37c95f0b02aebddff592688998abe \
|
||||
--hash=sha256:bcd5e41a859bf2e84fdc42f4edb7d9aba0a13d29a2abadccafad99de3feff984 \
|
||||
--hash=sha256:bd2880a07482090a3bcb01f4265f1936a903d70bc740bfcb1fd4e8a2ffe5cf5a \
|
||||
--hash=sha256:bee197b30783295d2eb680b311af15a20a8b24024a19c3a26431ff83eb8d1f70 \
|
||||
--hash=sha256:bf2342ac639c4cf38799a44950bbc2dfcb685f052b9e262f446482afaf4bffca \
|
||||
--hash=sha256:c76e5786951e72ed3686e122d14c5d7012f16c8303a674d18cdcd6d89557fc5b \
|
||||
--hash=sha256:cbed61494057c0f83b83eb3a310f0bf774b09513307c434d4366ed64f4128a91 \
|
||||
--hash=sha256:cfdd747216947628af7b259d274771d84db2268ca062dd5faf373639d00113a3 \
|
||||
--hash=sha256:d7480af14364494365e89d6fddc510a13e5a2c3584cb19ef65415ca57252fb84 \
|
||||
--hash=sha256:dbc6ae66518ab3c5847659e9988c3b60dc94ffb48ef9168656e0019a93dbf8a1 \
|
||||
--hash=sha256:dc3e2db6ba09ffd7d02ae9141cfa0ae23393ee7687248d46a7507b75d610f4f5 \
|
||||
--hash=sha256:dfe91cb65544a1321e631e696759491ae04a2ea11d36715eca01ce07284738be \
|
||||
--hash=sha256:e4d49b85c4348ea0b31ea63bc75a9f3857869174e2bf17e7aba02945cd218e6f \
|
||||
--hash=sha256:e4db64794ccdf6cb83a59d73405f63adbe2a1887012e308828596100a0b2f6cc \
|
||||
--hash=sha256:e553cad5179a66ba15bb18b353a19020e73a7921296a7979c4a2b7f6a5cd57f9 \
|
||||
--hash=sha256:e88d5e6ad0d026fba7bdab8c3f225a69f063f116462c49892b0149e21b6c0a0e \
|
||||
--hash=sha256:ecd85a8d3e79cd7158dec1c9e5808e821feea088e2f69a974db5edf84dc53141 \
|
||||
--hash=sha256:f5b92f4d70791b4a67157321c4e8225d60b119c5cc9aee8ecf153aace4aad4ef \
|
||||
--hash=sha256:f5f0c3e969c8f12dd2bb7e0b15d5c468b51e5017e01e2e867335c81903046a22 \
|
||||
--hash=sha256:f7baece4ce06bade126fb84b8af1c33439a76d8a6fd818970215e0560ca28c27 \
|
||||
--hash=sha256:ff25afb18123cea58a591ea0244b92eb1e61a1fd497bf6d6384f09bc3262ec3e \
|
||||
--hash=sha256:ff337c552345e95702c5fde3158acb0625111017d0e5f24bf3acdb9cc16b90d1
|
||||
# via PyInventory (pyproject.toml)
|
||||
pprintpp==0.4.0 \
|
||||
--hash=sha256:b6b4dcdd0c0c0d75e4d7b2f21a9e933e5b2ce62b26e1a54537f9651ae5a5c01d \
|
||||
--hash=sha256:ea826108e2c7f49dc6d66c752973c3fc9749142a798d6b254e1e301cfdbc6403
|
||||
# via django-tools
|
||||
pygments==2.18.0 \
|
||||
--hash=sha256:786ff802f32e91311bff3889f6e9a86e81505fe99f2735bb6d60ae0c5004f199 \
|
||||
--hash=sha256:b8e6aca0523f3ab76fee51799c488e38782ac06eafcf95e7ba832985c8e7b13a
|
||||
# via rich
|
||||
python-stdnum==1.20 \
|
||||
--hash=sha256:111008e10391d54fb2afad2a10df70d5cb0c6c0a7ec82fec6f022cb8712961d3 \
|
||||
--hash=sha256:ad2a2cf2eb025de408210235f36b4ae31252de3186240ccaa8126e117cb82690
|
||||
# via bx-django-utils
|
||||
pytz==2024.1 \
|
||||
--hash=sha256:2a29735ea9c18baf14b448846bde5a48030ed267578472d8955cd0e7443a9812 \
|
||||
--hash=sha256:328171f4e3623139da4983451950b28e95ac706e13f3f2630a879749e7a8b319
|
||||
# via django-dbbackup
|
||||
requests==2.32.3 \
|
||||
--hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \
|
||||
--hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6
|
||||
# via PyInventory (pyproject.toml)
|
||||
rich==13.8.0 \
|
||||
--hash=sha256:2e85306a063b9492dffc86278197a60cbece75bcb766022f3436f567cae11bdc \
|
||||
--hash=sha256:a5ac1f1cd448ade0d59cc3356f7db7a7ccda2c8cbae9c7a90c28ff463d3e91f4
|
||||
# via django-reversion-compare
|
||||
six==1.16.0 \
|
||||
--hash=sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926 \
|
||||
--hash=sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254
|
||||
# via bleach
|
||||
sqlparse==0.5.1 \
|
||||
--hash=sha256:773dcbf9a5ab44a090f3441e2180efe2560220203dc2f8c0b0fa141e18b505e4 \
|
||||
--hash=sha256:bb6b4df465655ef332548e24f08e205afc81b9ab86cb1c45657a7ff173a3a00e
|
||||
# via
|
||||
# django
|
||||
# django-debug-toolbar
|
||||
tablib==3.5.0 \
|
||||
--hash=sha256:9821caa9eca6062ff7299fa645e737aecff982e6b2b42046928a6413c8dabfd9 \
|
||||
--hash=sha256:f6661dfc45e1d4f51fa8a6239f9c8349380859a5bfaa73280645f046d6c96e33
|
||||
# via django-import-export
|
||||
urllib3==2.2.2 \
|
||||
--hash=sha256:a448b2f64d686155468037e1ace9f2d2199776e17f0a46610480d311f73e3472 \
|
||||
--hash=sha256:dd505485549a7a552833da5e6063639d0d177c04f23bc3864e41e5dc5f612168
|
||||
# via requests
|
||||
webencodings==0.5.1 \
|
||||
--hash=sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 \
|
||||
--hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923
|
||||
# via bleach
|
Plik diff jest za duży
Load Diff
Ładowanie…
Reference in New Issue