kopia lustrzana https://github.com/jedie/PyInventory
Add docker-compose usage
rodzic
faafab9271
commit
4a1c0842d5
|
@ -23,5 +23,5 @@ indent_style = tab
|
|||
insert_final_newline = false
|
||||
|
||||
[*.yml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
indent_style = tab
|
||||
indent_size = 4
|
||||
|
|
|
@ -13,6 +13,9 @@
|
|||
/media/
|
||||
*.sqlite3
|
||||
|
||||
# docker-compose usage:
|
||||
volumes
|
||||
|
||||
# Coverage HTML Report files:
|
||||
htmlcov
|
||||
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
FROM python:3.7-slim-buster
|
||||
|
||||
# Install deps
|
||||
RUN apt-get update \
|
||||
&& apt-mark auto $(apt-mark showinstall) \
|
||||
&& apt-get install -y python3-pip \
|
||||
&& apt autoremove \
|
||||
&& apt -y full-upgrade \
|
||||
&& rm -rf /var/lib/apt \
|
||||
&& python3 -m pip install -U pip \
|
||||
&& python3 -m pip install poetry
|
||||
|
||||
WORKDIR /PyInventory
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN poetry install --extras "postgres"
|
||||
|
||||
|
68
Makefile
68
Makefile
|
@ -1,6 +1,7 @@
|
|||
SHELL := /bin/bash
|
||||
MAX_LINE_LENGTH := 119
|
||||
POETRY_VERSION := $(shell poetry --version 2>/dev/null)
|
||||
COMPOSE_VERSION := $(shell poetry run docker-compose --version 2>/dev/null)
|
||||
|
||||
help: ## List all commands
|
||||
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z0-9 -]+:.*?## / {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)
|
||||
|
@ -90,5 +91,72 @@ backup: ## Backup everything
|
|||
create-starter: ## Create starter file.
|
||||
poetry run inventory create-starter
|
||||
|
||||
##############################################################################
|
||||
# docker-compose usage
|
||||
|
||||
|
||||
check-compose:
|
||||
@if [[ "${COMPOSE_VERSION}" == *"docker-compose version"* ]] ; \
|
||||
then \
|
||||
echo "Found ${COMPOSE_VERSION}, ok." ; \
|
||||
else \
|
||||
echo 'Please install extras first, with e.g.:' ; \
|
||||
echo 'make install-compose' ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
|
||||
install-compose: check-poetry ## Install "docker-compose", too
|
||||
poetry install --extras "docker"
|
||||
|
||||
up: check-compose ## Start containers via docker-compose
|
||||
./compose.sh up -d
|
||||
./compose.sh logs --tail=500 --follow
|
||||
|
||||
down: ## Stop all containers
|
||||
./compose.sh down
|
||||
|
||||
prune: ## Cleanup docker
|
||||
docker system prune --force --all --filter until=4464h
|
||||
|
||||
build: check-compose ## Update docker container build
|
||||
./compose.sh build --pull
|
||||
|
||||
init_postgres: ## Create postgres database
|
||||
./compose.sh exec postgres ./docker/postgres_init.sh
|
||||
|
||||
##############################################################################
|
||||
|
||||
docker_createsuperuser: ## Create super user
|
||||
./compose.sh exec inventory ./manage.sh createsuperuser
|
||||
|
||||
shell_inventory: ## Go into bash shell in inventory container
|
||||
./compose.sh exec inventory /bin/bash
|
||||
|
||||
shell_postgres: ## Go into bash shell in postgres container
|
||||
./compose.sh exec postgres /bin/bash
|
||||
|
||||
##############################################################################
|
||||
|
||||
logs: ## Display docker logs from all containers
|
||||
./compose.sh logs --tail=500 --follow
|
||||
|
||||
logs_postgres: ## Display docker logs from postgres container
|
||||
./compose.sh logs --tail=500 --follow postgres
|
||||
|
||||
logs_inventory: ## Display docker logs from postgres container
|
||||
./compose.sh logs --tail=500 --follow inventory
|
||||
|
||||
##############################################################################
|
||||
|
||||
restart: down up ## Restart all containers
|
||||
|
||||
upgrade_inventory: ## Upgrade "inventory" container and restart it
|
||||
$(MAKE) build
|
||||
./compose.sh stop inventory
|
||||
$(MAKE) up
|
||||
|
||||
reload_inventory: ## Reload server in "inventory" container
|
||||
./compose.sh exec inventory ./docker/kill_python.sh
|
||||
./compose.sh logs --tail=500 --follow inventory
|
||||
|
||||
.PHONY: help install lint fix test publish
|
|
@ -39,7 +39,12 @@ any many more... ;)
|
|||
|
||||
== install
|
||||
|
||||
tbd
|
||||
There exists two kind of installation/usage:
|
||||
|
||||
* local virtualenv (without docker)
|
||||
* docker-compose
|
||||
|
||||
=== prepare
|
||||
|
||||
{{{
|
||||
~$ git clone https://github.com/jedie/PyInventory.git
|
||||
|
@ -48,6 +53,7 @@ tbd
|
|||
help List all commands
|
||||
install-poetry install or update poetry
|
||||
install install PyInventory via poetry
|
||||
manage-update Collectstatic + makemigration + migrate
|
||||
update update the sources and installation
|
||||
lint Run code formatters and linter
|
||||
fix-code-style Fix code formatting
|
||||
|
@ -60,13 +66,67 @@ pytest Run pytest
|
|||
update-rst-readme update README.rst from README.creole
|
||||
publish Release new version to PyPi
|
||||
run-dev-server Run the django dev server in endless loop.
|
||||
messages Make and compile locales message files
|
||||
run-server Run the gunicorn server in endless loop.
|
||||
backup Backup everything
|
||||
create-starter Create starter file.
|
||||
install-compose Install "docker-compose", too
|
||||
up Start containers via docker-compose
|
||||
down Stop all containers
|
||||
prune Cleanup docker
|
||||
build Update docker container build
|
||||
restart Restart all containers
|
||||
}}}
|
||||
|
||||
|
||||
=== .env
|
||||
|
||||
Create a {{{.env}}} file, for some settings, e.g.:
|
||||
{{{
|
||||
# enable Django-Debug-Toolbar:
|
||||
ENABLE_DJDT=1
|
||||
}}}
|
||||
|
||||
|
||||
=== local install without docker
|
||||
|
||||
{{{
|
||||
# install or update poetry:
|
||||
~/PyInventory$ make install-poetry
|
||||
|
||||
# install PyInventory via poetry:
|
||||
~/PyInventory$ make install
|
||||
...
|
||||
|
||||
# Collectstatic + makemigration + migrate:
|
||||
~/PyInventory$ make manage-update
|
||||
|
||||
# Create a django super user:
|
||||
~/PyInventory$ ./manage.sh createsuperuser
|
||||
|
||||
# start local dev. web server:
|
||||
~/PyInventory$ make run-dev-server
|
||||
}}}
|
||||
|
||||
|
||||
=== docker-compose usage
|
||||
|
||||
Install docker, e.g.: https://docs.docker.com/engine/install/ubuntu/
|
||||
|
||||
{{{
|
||||
# Install "docker-compose" via poetry extras:
|
||||
~/PyInventory$ make install-compose
|
||||
|
||||
# Start containers via docker-compose:
|
||||
~/PyInventory$ make up
|
||||
}}}
|
||||
|
||||
Notes:
|
||||
|
||||
* at the first start it takes a little while until the database is created
|
||||
* The web page is available via: {{{http://localhost:8000/}}}
|
||||
|
||||
|
||||
== Screenshots
|
||||
|
||||
{{https://raw.githubusercontent.com/jedie/jedie.github.io/master/screenshots/PyInventory/PyInventory v0.1.0 screenshot 1.png|PyInventory v0.1.0 screenshot 1.png}}
|
||||
|
|
67
README.rst
67
README.rst
|
@ -73,7 +73,14 @@ any many more... ;)
|
|||
install
|
||||
-------
|
||||
|
||||
tbd
|
||||
There exists two kind of installation/usage:
|
||||
|
||||
* local virtualenv (without docker)
|
||||
|
||||
* docker-compose
|
||||
|
||||
prepare
|
||||
=======
|
||||
|
||||
::
|
||||
|
||||
|
@ -83,6 +90,7 @@ tbd
|
|||
help List all commands
|
||||
install-poetry install or update poetry
|
||||
install install PyInventory via poetry
|
||||
manage-update Collectstatic + makemigration + migrate
|
||||
update update the sources and installation
|
||||
lint Run code formatters and linter
|
||||
fix-code-style Fix code formatting
|
||||
|
@ -95,11 +103,66 @@ tbd
|
|||
update-rst-readme update README.rst from README.creole
|
||||
publish Release new version to PyPi
|
||||
run-dev-server Run the django dev server in endless loop.
|
||||
messages Make and compile locales message files
|
||||
run-server Run the gunicorn server in endless loop.
|
||||
backup Backup everything
|
||||
create-starter Create starter file.
|
||||
install-compose Install "docker-compose", too
|
||||
up Start containers via docker-compose
|
||||
down Stop all containers
|
||||
prune Cleanup docker
|
||||
build Update docker container build
|
||||
restart Restart all containers
|
||||
|
||||
.env
|
||||
====
|
||||
|
||||
Create a ``.env`` file, for some settings, e.g.:
|
||||
|
||||
::
|
||||
|
||||
# enable Django-Debug-Toolbar:
|
||||
ENABLE_DJDT=1
|
||||
|
||||
local install without docker
|
||||
============================
|
||||
|
||||
::
|
||||
|
||||
# install or update poetry:
|
||||
~/PyInventory$ make install-poetry
|
||||
|
||||
# install PyInventory via poetry:
|
||||
~/PyInventory$ make install
|
||||
...
|
||||
|
||||
# Collectstatic + makemigration + migrate:
|
||||
~/PyInventory$ make manage-update
|
||||
|
||||
# Create a django super user:
|
||||
~/PyInventory$ ./manage.sh createsuperuser
|
||||
|
||||
# start local dev. web server:
|
||||
~/PyInventory$ make run-dev-server
|
||||
|
||||
docker-compose usage
|
||||
====================
|
||||
|
||||
Install docker, e.g.: `https://docs.docker.com/engine/install/ubuntu/ <https://docs.docker.com/engine/install/ubuntu/>`_
|
||||
|
||||
::
|
||||
|
||||
# Install "docker-compose" via poetry extras:
|
||||
~/PyInventory$ make install-compose
|
||||
|
||||
# Start containers via docker-compose:
|
||||
~/PyInventory$ make up
|
||||
|
||||
Notes:
|
||||
|
||||
* at the first start it takes a little while until the database is created
|
||||
|
||||
* The web page is available via: ``http://localhost:8000/``
|
||||
|
||||
-----------
|
||||
Screenshots
|
||||
|
@ -170,4 +233,4 @@ donation
|
|||
|
||||
------------
|
||||
|
||||
``Note: this file is generated from README.creole 2020-10-17 22:30:59 with "python-creole"``
|
||||
``Note: this file is generated from README.creole 2020-10-24 13:38:24 with "python-creole"``
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -ex
|
||||
|
||||
exec poetry run docker-compose "$@"
|
|
@ -0,0 +1,38 @@
|
|||
version: "3.7"
|
||||
|
||||
services:
|
||||
inventory:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile
|
||||
restart: "no"
|
||||
hostname: inventory
|
||||
ports:
|
||||
- "8000:8000"
|
||||
env_file: ./docker/common.env
|
||||
environment:
|
||||
- ENABLE_DJDT=$ENABLE_DJDT
|
||||
links:
|
||||
- postgres:postgres
|
||||
depends_on:
|
||||
- postgres
|
||||
volumes:
|
||||
- .:/PyInventory
|
||||
- ./volumes/static/:/PyInventory/static/:rw
|
||||
# e.g.: pip cache must be the same value as $XDG_CACHE_HOME !
|
||||
- ./volumes/cache/:/var/cache/:rw
|
||||
entrypoint: /PyInventory/docker/entrypoint.sh
|
||||
|
||||
postgres:
|
||||
# https://hub.docker.com/_/postgres
|
||||
image: postgres:13-alpine
|
||||
restart: "no"
|
||||
hostname: postgres
|
||||
ports:
|
||||
- "5432:5432"
|
||||
env_file: ./docker/common.env
|
||||
environment:
|
||||
- POSTGRES_HOST_AUTH_METHOD=trust
|
||||
volumes:
|
||||
- ./docker/init-postgres-user-db.sh:/docker-entrypoint-initdb.d/init-user-db.sh:ro
|
||||
- ./volumes/postgresql/data/:/var/lib/postgresql/data/:rw
|
|
@ -0,0 +1,10 @@
|
|||
DB_NAME=pyinventory
|
||||
DB_USER=postgres
|
||||
DB_PASS=postgres
|
||||
DB_HOST=postgres
|
||||
DB_PORT=5432
|
||||
|
||||
PYTHONUNBUFFERED=1
|
||||
|
||||
# e.g.: pip cache:
|
||||
XDG_CACHE_HOME="/var/cache"
|
|
@ -0,0 +1,34 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
restart_error_handler() {
|
||||
(
|
||||
echo "Restart ${0} in 3 sec..."
|
||||
sleep 1
|
||||
echo "Restart ${0} in 2 sec..."
|
||||
sleep 1
|
||||
echo "Restart ${0} in 1 sec..."
|
||||
sleep 1
|
||||
)
|
||||
exec ${0}
|
||||
}
|
||||
trap restart_error_handler 0
|
||||
|
||||
echo "_______________________________________________________________________"
|
||||
echo "$(date +%c) - ${0}"
|
||||
|
||||
(
|
||||
set -x
|
||||
|
||||
./manage.sh collectstatic --noinput --link
|
||||
./manage.sh makemigrations
|
||||
./manage.sh migrate
|
||||
|
||||
./manage.sh runserver 0.0.0.0:8000
|
||||
echo "runserver terminated with exit code: $?"
|
||||
sleep 3
|
||||
exit 1
|
||||
)
|
||||
|
||||
exit 2
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
psql -U postgres -c "CREATE DATABASE $DB_NAME OWNER $DB_USER"
|
|
@ -0,0 +1,5 @@
|
|||
#!/bin/sh
|
||||
|
||||
set -ex
|
||||
|
||||
for pid in $(pidof python3); do kill $pid; done
|
|
@ -13,3 +13,6 @@ from django.apps import AppConfig
|
|||
class InventoryConfig(AppConfig):
|
||||
name = "inventory"
|
||||
verbose_name = "Inventory"
|
||||
|
||||
def ready(self):
|
||||
import inventory.checks # noqa
|
||||
|
|
|
@ -0,0 +1,17 @@
|
|||
from pathlib import Path
|
||||
|
||||
from django.core.checks import Error, register
|
||||
|
||||
|
||||
@register()
|
||||
def inventory_checks(app_configs, **kwargs):
|
||||
errors = []
|
||||
if not Path('.env').is_file():
|
||||
errors.append(
|
||||
Error(
|
||||
'No ".env" file found!',
|
||||
hint='Create a ".env" file. See README for details',
|
||||
id='pyinventory.E001',
|
||||
)
|
||||
)
|
||||
return errors
|
|
@ -0,0 +1,23 @@
|
|||
import logging
|
||||
from pathlib import Path
|
||||
|
||||
from debug_toolbar.middleware import show_toolbar
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def djdt_show(request):
|
||||
"""
|
||||
Determining whether the Django Debug Toolbar should show or not.
|
||||
"""
|
||||
if not settings.DEBUG:
|
||||
return False
|
||||
|
||||
if Path('/.dockerenv').exists():
|
||||
# We run in a docker container
|
||||
# skip the `request.META['REMOTE_ADDR'] in settings.INTERNAL_IPS` check.
|
||||
return True
|
||||
|
||||
return show_toolbar(request)
|
|
@ -3,9 +3,10 @@
|
|||
"""
|
||||
|
||||
import logging
|
||||
import os as __os
|
||||
from pathlib import Path as __Path
|
||||
|
||||
from debug_toolbar.settings import CONFIG_DEFAULTS as DEBUG_TOOLBAR_CONFIG
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
|
@ -21,25 +22,22 @@ SECRET_KEY = 'TODO: Read secret.txt ;)'
|
|||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = True
|
||||
|
||||
SITE_ID = 1
|
||||
|
||||
# Required for the debug toolbar to be displayed:
|
||||
INTERNAL_IPS = '*'
|
||||
INTERNAL_IPS = ('127.0.0.1', '0.0.0.0', 'localhost')
|
||||
|
||||
ALLOWED_HOSTS = INTERNAL_IPS
|
||||
|
||||
|
||||
# Application definition
|
||||
|
||||
INSTALLED_APPS = (
|
||||
INSTALLED_APPS = [
|
||||
'django.contrib.admin',
|
||||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
'django.contrib.sessions',
|
||||
'django.contrib.messages',
|
||||
'django.contrib.staticfiles',
|
||||
'django.contrib.sites',
|
||||
'debug_toolbar', # https://github.com/jazzband/django-debug-toolbar
|
||||
|
||||
'bx_py_utils', # https://github.com/boxine/bx_py_utils
|
||||
'import_export', # https://github.com/django-import-export/django-import-export
|
||||
'ckeditor', # https://github.com/django-ckeditor/django-ckeditor
|
||||
|
@ -49,14 +47,12 @@ INSTALLED_APPS = (
|
|||
'adminsortable2', # https://github.com/jrief/django-admin-sortable2
|
||||
|
||||
'inventory.apps.InventoryConfig',
|
||||
)
|
||||
]
|
||||
|
||||
ROOT_URLCONF = 'inventory_project.urls'
|
||||
WSGI_APPLICATION = 'inventory_project.wsgi.application'
|
||||
|
||||
MIDDLEWARE = (
|
||||
'debug_toolbar.middleware.DebugToolbarMiddleware',
|
||||
|
||||
MIDDLEWARE = [
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'django.middleware.locale.LocaleMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
|
@ -66,7 +62,7 @@ MIDDLEWARE = (
|
|||
'django.middleware.clickjacking.XFrameOptionsMiddleware',
|
||||
'django.middleware.security.SecurityMiddleware',
|
||||
'django_tools.middlewares.ThreadLocal.ThreadLocalMiddleware',
|
||||
)
|
||||
]
|
||||
|
||||
TEMPLATES = [
|
||||
{
|
||||
|
@ -93,15 +89,32 @@ if DEBUG:
|
|||
# Database
|
||||
# https://docs.djangoproject.com/en/1.8/ref/settings/#databases
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': str(__Path(BASE_PATH.parent, 'PyInventory-database.sqlite3')),
|
||||
# 'NAME': ':memory:'
|
||||
# https://docs.djangoproject.com/en/dev/ref/databases/#database-is-locked-errors
|
||||
'timeout': 30,
|
||||
|
||||
if 'DB_HOST' in __os.environ:
|
||||
# docker-compose usage with postgres database
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.postgresql',
|
||||
'NAME': __os.environ['DB_NAME'],
|
||||
'USER': __os.environ['DB_USER'],
|
||||
'PASSWORD': __os.environ['DB_PASS'],
|
||||
'HOST': __os.environ['DB_HOST'],
|
||||
'PORT': __os.environ['DB_PORT'],
|
||||
'DEBUG_NAME': 'default',
|
||||
'CONN_MAX_AGE': 600,
|
||||
},
|
||||
}
|
||||
else:
|
||||
# local run with SQLite
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'NAME': str(__Path(BASE_PATH.parent, 'PyInventory-database.sqlite3')),
|
||||
# 'NAME': ':memory:'
|
||||
# https://docs.djangoproject.com/en/dev/ref/databases/#database-is-locked-errors
|
||||
'timeout': 30,
|
||||
}
|
||||
}
|
||||
}
|
||||
print(f'Use Database: {DATABASES["default"]["NAME"]!r}')
|
||||
|
||||
# _____________________________________________________________________________
|
||||
|
@ -133,14 +146,25 @@ MEDIA_ROOT = str(__Path(BASE_PATH, 'media'))
|
|||
# _____________________________________________________________________________
|
||||
# Django-Debug-Toolbar
|
||||
|
||||
# Disable some more panels that will slow down the page:
|
||||
DEBUG_TOOLBAR_CONFIG['DISABLE_PANELS'].add('debug_toolbar.panels.sql.SQLPanel')
|
||||
DEBUG_TOOLBAR_CONFIG['DISABLE_PANELS'].add('debug_toolbar.panels.cache.CachePanel')
|
||||
ENABLE_DJDT = __os.environ.get('ENABLE_DJDT') in ('true', '1')
|
||||
if ENABLE_DJDT:
|
||||
print('Enable Django-Debug-Toolbar')
|
||||
INSTALLED_APPS += ['debug_toolbar']
|
||||
MIDDLEWARE += ['debug_toolbar.middleware.DebugToolbarMiddleware']
|
||||
|
||||
# don't load jquery from ajax.googleapis.com, just use django's version:
|
||||
DEBUG_TOOLBAR_CONFIG['JQUERY_URL'] = STATIC_URL + 'admin/js/vendor/jquery/jquery.min.js'
|
||||
DEBUG_TOOLBAR_PATCH_SETTINGS = True
|
||||
from debug_toolbar.settings import CONFIG_DEFAULTS as DEBUG_TOOLBAR_CONFIG
|
||||
|
||||
DEBUG_TOOLBAR_CONFIG['SHOW_COLLAPSED'] = True # Show toolbar collapsed by default.
|
||||
# Disable some more panels that will slow down the page:
|
||||
DEBUG_TOOLBAR_CONFIG['DISABLE_PANELS'].add('debug_toolbar.panels.sql.SQLPanel')
|
||||
DEBUG_TOOLBAR_CONFIG['DISABLE_PANELS'].add('debug_toolbar.panels.cache.CachePanel')
|
||||
|
||||
# don't load jquery from ajax.googleapis.com, just use django's version:
|
||||
DEBUG_TOOLBAR_CONFIG['JQUERY_URL'] = STATIC_URL + 'admin/js/vendor/jquery/jquery.min.js'
|
||||
|
||||
DEBUG_TOOLBAR_CONFIG['SHOW_TEMPLATE_CONTEXT'] = True
|
||||
DEBUG_TOOLBAR_CONFIG['SHOW_COLLAPSED'] = True # Show toolbar collapsed by default.
|
||||
DEBUG_TOOLBAR_CONFIG['SHOW_TOOLBAR_CALLBACK'] = 'inventory_project.middlewares.djdt_show'
|
||||
|
||||
# _____________________________________________________________________________
|
||||
# django-ckeditor
|
||||
|
|
|
@ -26,7 +26,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
|||
name = "attrs"
|
||||
version = "20.2.0"
|
||||
description = "Classes Without Boilerplate"
|
||||
category = "dev"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
|
||||
|
@ -48,6 +48,22 @@ python-versions = "*"
|
|||
pycodestyle = ">=2.6.0"
|
||||
toml = "*"
|
||||
|
||||
[[package]]
|
||||
name = "bcrypt"
|
||||
version = "3.2.0"
|
||||
description = "Modern password hashing for your software and your servers"
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = ">=3.6"
|
||||
|
||||
[package.dependencies]
|
||||
cffi = ">=1.1"
|
||||
six = ">=1.4.1"
|
||||
|
||||
[package.extras]
|
||||
tests = ["pytest (>=3.2.1,<3.3.0 || >3.3.0)"]
|
||||
typecheck = ["mypy"]
|
||||
|
||||
[[package]]
|
||||
name = "bleach"
|
||||
version = "3.2.1"
|
||||
|
@ -72,6 +88,14 @@ python-versions = ">=3.6,<4.0.0"
|
|||
[package.dependencies]
|
||||
django = "*"
|
||||
|
||||
[[package]]
|
||||
name = "cached-property"
|
||||
version = "1.5.2"
|
||||
description = "A decorator for caching properties in classes."
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "certifi"
|
||||
version = "2020.6.20"
|
||||
|
@ -84,7 +108,7 @@ python-versions = "*"
|
|||
name = "cffi"
|
||||
version = "1.14.3"
|
||||
description = "Foreign Function Interface for Python calling C code."
|
||||
category = "dev"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
|
@ -149,7 +173,7 @@ yaml = ["PyYAML (>=3.10)"]
|
|||
name = "cryptography"
|
||||
version = "3.1.1"
|
||||
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
|
||||
category = "dev"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*"
|
||||
|
||||
|
@ -188,6 +212,14 @@ category = "dev"
|
|||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "distro"
|
||||
version = "1.5.0"
|
||||
description = "Distro - an OS platform information API"
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "django"
|
||||
version = "2.2.16"
|
||||
|
@ -313,11 +345,67 @@ django = "*"
|
|||
icdiff = "*"
|
||||
pprintpp = "*"
|
||||
|
||||
[[package]]
|
||||
name = "docker"
|
||||
version = "4.3.1"
|
||||
description = "A Python library for the Docker Engine API."
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*"
|
||||
|
||||
[package.dependencies]
|
||||
paramiko = {version = ">=2.4.2", optional = true, markers = "extra == \"ssh\""}
|
||||
pywin32 = {version = "227", markers = "sys_platform == \"win32\""}
|
||||
requests = ">=2.14.2,<2.18.0 || >2.18.0"
|
||||
six = ">=1.4.0"
|
||||
websocket-client = ">=0.32.0"
|
||||
|
||||
[package.extras]
|
||||
ssh = ["paramiko (>=2.4.2)"]
|
||||
tls = ["pyOpenSSL (>=17.5.0)", "cryptography (>=1.3.4)", "idna (>=2.0.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "docker-compose"
|
||||
version = "1.27.4"
|
||||
description = "Multi-container orchestration for Docker"
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = ">=3.4"
|
||||
|
||||
[package.dependencies]
|
||||
cached-property = ">=1.2.0,<2"
|
||||
colorama = {version = ">=0.4,<1", markers = "sys_platform == \"win32\""}
|
||||
distro = ">=1.5.0,<2"
|
||||
docker = {version = ">=4.3.1,<5", extras = ["ssh"]}
|
||||
dockerpty = ">=0.4.1,<1"
|
||||
docopt = ">=0.6.1,<1"
|
||||
jsonschema = ">=2.5.1,<4"
|
||||
python-dotenv = ">=0.13.0,<1"
|
||||
PyYAML = ">=3.10,<6"
|
||||
requests = ">=2.20.0,<3"
|
||||
texttable = ">=0.9.0,<2"
|
||||
websocket-client = ">=0.32.0,<1"
|
||||
|
||||
[package.extras]
|
||||
socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2)"]
|
||||
tests = ["ddt (>=1.2.2,<2)", "pytest (<6)"]
|
||||
|
||||
[[package]]
|
||||
name = "dockerpty"
|
||||
version = "0.4.1"
|
||||
description = "Python library to use the pseudo-tty of a docker container"
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = "*"
|
||||
|
||||
[package.dependencies]
|
||||
six = ">=1.3.0"
|
||||
|
||||
[[package]]
|
||||
name = "docopt"
|
||||
version = "0.6.2"
|
||||
description = "Pythonic argument parser, that will make you smile"
|
||||
category = "dev"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
|
@ -404,7 +492,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
|||
name = "importlib-metadata"
|
||||
version = "2.0.0"
|
||||
description = "Read metadata from Python packages"
|
||||
category = "dev"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7"
|
||||
|
||||
|
@ -455,6 +543,24 @@ python-versions = ">=3.5"
|
|||
[package.extras]
|
||||
dev = ["testpath"]
|
||||
|
||||
[[package]]
|
||||
name = "jsonschema"
|
||||
version = "3.2.0"
|
||||
description = "An implementation of JSON Schema validation for Python"
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = "*"
|
||||
|
||||
[package.dependencies]
|
||||
attrs = ">=17.4.0"
|
||||
importlib-metadata = {version = "*", markers = "python_version < \"3.8\""}
|
||||
pyrsistent = ">=0.14.0"
|
||||
six = ">=1.11.0"
|
||||
|
||||
[package.extras]
|
||||
format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"]
|
||||
format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator (>0.1.0)", "rfc3339-validator"]
|
||||
|
||||
[[package]]
|
||||
name = "keyring"
|
||||
version = "21.4.0"
|
||||
|
@ -524,9 +630,28 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
|||
pyparsing = ">=2.0.2"
|
||||
six = "*"
|
||||
|
||||
[[package]]
|
||||
name = "paramiko"
|
||||
version = "2.7.2"
|
||||
description = "SSH2 protocol library"
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = "*"
|
||||
|
||||
[package.dependencies]
|
||||
bcrypt = ">=3.1.3"
|
||||
cryptography = ">=2.5"
|
||||
pynacl = ">=1.0.1"
|
||||
|
||||
[package.extras]
|
||||
all = ["pyasn1 (>=0.1.7)", "pynacl (>=1.0.1)", "bcrypt (>=3.1.3)", "invoke (>=1.3)", "gssapi (>=1.4.1)", "pywin32 (>=2.1.8)"]
|
||||
ed25519 = ["pynacl (>=1.0.1)", "bcrypt (>=3.1.3)"]
|
||||
gssapi = ["pyasn1 (>=0.1.7)", "gssapi (>=1.4.1)", "pywin32 (>=2.1.8)"]
|
||||
invoke = ["invoke (>=1.3)"]
|
||||
|
||||
[[package]]
|
||||
name = "pkginfo"
|
||||
version = "1.5.0.1"
|
||||
version = "1.6.0"
|
||||
description = "Query metadatdata from sdists / bdists / installed packages."
|
||||
category = "dev"
|
||||
optional = false
|
||||
|
@ -551,7 +676,7 @@ dev = ["pre-commit", "tox"]
|
|||
|
||||
[[package]]
|
||||
name = "poetry-publish"
|
||||
version = "0.3.2"
|
||||
version = "0.4.0"
|
||||
description = "Helper to build and upload a project that used poetry to PyPi, with prechecks"
|
||||
category = "dev"
|
||||
optional = false
|
||||
|
@ -569,6 +694,14 @@ category = "main"
|
|||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "psycopg2-binary"
|
||||
version = "2.8.6"
|
||||
description = "psycopg2 - Python-PostgreSQL Database Adapter"
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = ">=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*"
|
||||
|
||||
[[package]]
|
||||
name = "py"
|
||||
version = "1.9.0"
|
||||
|
@ -589,7 +722,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
|||
name = "pycparser"
|
||||
version = "2.20"
|
||||
description = "C parser in Python"
|
||||
category = "dev"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
|
||||
|
@ -609,6 +742,22 @@ category = "dev"
|
|||
optional = false
|
||||
python-versions = ">=3.5"
|
||||
|
||||
[[package]]
|
||||
name = "pynacl"
|
||||
version = "1.4.0"
|
||||
description = "Python binding to the Networking and Cryptography (NaCl) library"
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
|
||||
[package.dependencies]
|
||||
cffi = ">=1.4.1"
|
||||
six = "*"
|
||||
|
||||
[package.extras]
|
||||
docs = ["sphinx (>=1.6.5)", "sphinx-rtd-theme"]
|
||||
tests = ["pytest (>=3.2.1,<3.3.0 || >3.3.0)", "hypothesis (>=3.27.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "pyparsing"
|
||||
version = "2.4.7"
|
||||
|
@ -617,6 +766,14 @@ category = "main"
|
|||
optional = false
|
||||
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*"
|
||||
|
||||
[[package]]
|
||||
name = "pyrsistent"
|
||||
version = "0.17.3"
|
||||
description = "Persistent/Functional/Immutable data structures"
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = ">=3.5"
|
||||
|
||||
[[package]]
|
||||
name = "pytest"
|
||||
version = "6.1.1"
|
||||
|
@ -684,7 +841,7 @@ pytest = "*"
|
|||
|
||||
[[package]]
|
||||
name = "python-creole"
|
||||
version = "1.4.7"
|
||||
version = "1.4.8"
|
||||
description = "python-creole is an open-source (GPL) markup converter in pure Python for: creole2html, html2creole, html2ReSt, html2textile"
|
||||
category = "dev"
|
||||
optional = false
|
||||
|
@ -693,6 +850,17 @@ python-versions = ">=3.6,<4.0.0"
|
|||
[package.dependencies]
|
||||
docutils = "*"
|
||||
|
||||
[[package]]
|
||||
name = "python-dotenv"
|
||||
version = "0.14.0"
|
||||
description = "Add .env support to your django/flask apps in development and deployments"
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = "*"
|
||||
|
||||
[package.extras]
|
||||
cli = ["click (>=5.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "pytz"
|
||||
version = "2020.1"
|
||||
|
@ -712,6 +880,14 @@ python-versions = ">=3.6.1"
|
|||
[package.dependencies]
|
||||
tokenize-rt = ">=3.2.0"
|
||||
|
||||
[[package]]
|
||||
name = "pywin32"
|
||||
version = "227"
|
||||
description = "Python for Window Extensions"
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "pywin32-ctypes"
|
||||
version = "0.2.0"
|
||||
|
@ -839,6 +1015,14 @@ xls = ["xlrd", "xlwt"]
|
|||
xlsx = ["openpyxl (>=2.6.0)"]
|
||||
yaml = ["pyyaml"]
|
||||
|
||||
[[package]]
|
||||
name = "texttable"
|
||||
version = "1.6.3"
|
||||
description = "module for creating simple ASCII tables"
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "tokenize-rt"
|
||||
version = "4.0.0"
|
||||
|
@ -910,7 +1094,7 @@ tqdm = ">=4.14"
|
|||
|
||||
[[package]]
|
||||
name = "urllib3"
|
||||
version = "1.25.10"
|
||||
version = "1.25.11"
|
||||
description = "HTTP library with thread-safe connection pooling, file post, and more."
|
||||
category = "main"
|
||||
optional = false
|
||||
|
@ -918,7 +1102,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4"
|
|||
|
||||
[package.extras]
|
||||
brotli = ["brotlipy (>=0.6.0)"]
|
||||
secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "pyOpenSSL (>=0.14)", "ipaddress"]
|
||||
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"]
|
||||
socks = ["PySocks (>=1.5.6,<1.5.7 || >1.5.7,<2.0)"]
|
||||
|
||||
[[package]]
|
||||
|
@ -948,6 +1132,17 @@ category = "main"
|
|||
optional = false
|
||||
python-versions = "*"
|
||||
|
||||
[[package]]
|
||||
name = "websocket-client"
|
||||
version = "0.57.0"
|
||||
description = "WebSocket client for Python. hybi13 is supported."
|
||||
category = "main"
|
||||
optional = true
|
||||
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*"
|
||||
|
||||
[package.dependencies]
|
||||
six = "*"
|
||||
|
||||
[[package]]
|
||||
name = "xlrd"
|
||||
version = "1.2.0"
|
||||
|
@ -968,7 +1163,7 @@ python-versions = "*"
|
|||
name = "zipp"
|
||||
version = "3.3.1"
|
||||
description = "Backport of pathlib-compatible object wrapper for zip files"
|
||||
category = "dev"
|
||||
category = "main"
|
||||
optional = false
|
||||
python-versions = ">=3.6"
|
||||
|
||||
|
@ -976,10 +1171,14 @@ python-versions = ">=3.6"
|
|||
docs = ["sphinx", "jaraco.packaging (>=3.2)", "rst.linker (>=1.9)"]
|
||||
testing = ["pytest (>=3.5,<3.7.3 || >3.7.3)", "pytest-checkdocs (>=1.2.3)", "pytest-flake8", "pytest-cov", "jaraco.test (>=3.2.0)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy"]
|
||||
|
||||
[extras]
|
||||
docker = ["docker-compose"]
|
||||
postgres = ["psycopg2-binary"]
|
||||
|
||||
[metadata]
|
||||
lock-version = "1.1"
|
||||
python-versions = ">=3.7,<4.0.0"
|
||||
content-hash = "1d04353be2d22444baeac57568ab372c021a7735bd893245887a8a342589f19f"
|
||||
content-hash = "4ad32caba18b4f973eee3d59a129b1ccd5750289a60c07939e1ab2f973fb4940"
|
||||
|
||||
[metadata.files]
|
||||
appdirs = [
|
||||
|
@ -1001,6 +1200,15 @@ attrs = [
|
|||
autopep8 = [
|
||||
{file = "autopep8-1.5.4.tar.gz", hash = "sha256:d21d3901cb0da6ebd1e83fc9b0dfbde8b46afc2ede4fe32fbda0c7c6118ca094"},
|
||||
]
|
||||
bcrypt = [
|
||||
{file = "bcrypt-3.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:c95d4cbebffafcdd28bd28bb4e25b31c50f6da605c81ffd9ad8a3d1b2ab7b1b6"},
|
||||
{file = "bcrypt-3.2.0-cp36-abi3-manylinux1_x86_64.whl", hash = "sha256:63d4e3ff96188e5898779b6057878fecf3f11cfe6ec3b313ea09955d587ec7a7"},
|
||||
{file = "bcrypt-3.2.0-cp36-abi3-manylinux2010_x86_64.whl", hash = "sha256:cd1ea2ff3038509ea95f687256c46b79f5fc382ad0aa3664d200047546d511d1"},
|
||||
{file = "bcrypt-3.2.0-cp36-abi3-manylinux2014_aarch64.whl", hash = "sha256:cdcdcb3972027f83fe24a48b1e90ea4b584d35f1cc279d76de6fc4b13376239d"},
|
||||
{file = "bcrypt-3.2.0-cp36-abi3-win32.whl", hash = "sha256:a67fb841b35c28a59cebed05fbd3e80eea26e6d75851f0574a9273c80f3e9b55"},
|
||||
{file = "bcrypt-3.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:81fec756feff5b6818ea7ab031205e1d323d8943d237303baca2c5f9c7846f34"},
|
||||
{file = "bcrypt-3.2.0.tar.gz", hash = "sha256:5b93c1726e50a93a033c36e5ca7fdcd29a5c7395af50a6892f5d9e7c6cfbfb29"},
|
||||
]
|
||||
bleach = [
|
||||
{file = "bleach-3.2.1-py2.py3-none-any.whl", hash = "sha256:9f8ccbeb6183c6e6cddea37592dfb0167485c1e3b13b3363bc325aa8bda3adbd"},
|
||||
{file = "bleach-3.2.1.tar.gz", hash = "sha256:52b5919b81842b1854196eaae5ca29679a2f2e378905c346d3ca8227c2c66080"},
|
||||
|
@ -1009,6 +1217,10 @@ bx-py-utils = [
|
|||
{file = "bx_py_utils-0.0.2-py3-none-any.whl", hash = "sha256:c39c6be8d18c959dd314febfc8a3b7d8f73315cd1cba91fbbb4e602e5e97fd0c"},
|
||||
{file = "bx_py_utils-0.0.2.tar.gz", hash = "sha256:f956772cbf84329c3d9cd22b00d5e01a37ca578104bd9474e15dabc6e6bf6529"},
|
||||
]
|
||||
cached-property = [
|
||||
{file = "cached-property-1.5.2.tar.gz", hash = "sha256:9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"},
|
||||
{file = "cached_property-1.5.2-py2.py3-none-any.whl", hash = "sha256:df4f613cf7ad9a588cc381aaf4a512d26265ecebd5eb9e1ba12f1319eb85a6a0"},
|
||||
]
|
||||
certifi = [
|
||||
{file = "certifi-2020.6.20-py2.py3-none-any.whl", hash = "sha256:8fc0819f1f30ba15bdb34cceffb9ef04d99f420f68eb75d901e9560b8749fc41"},
|
||||
{file = "certifi-2020.6.20.tar.gz", hash = "sha256:5930595817496dd21bb8dc35dad090f1c2cd0adfaf21204bf6732ca5d8ee34d3"},
|
||||
|
@ -1138,6 +1350,10 @@ distlib = [
|
|||
{file = "distlib-0.3.1-py2.py3-none-any.whl", hash = "sha256:8c09de2c67b3e7deef7184574fc060ab8a793e7adbb183d942c389c8b13c52fb"},
|
||||
{file = "distlib-0.3.1.zip", hash = "sha256:edf6116872c863e1aa9d5bb7cb5e05a022c519a4594dc703843343a9ddd9bff1"},
|
||||
]
|
||||
distro = [
|
||||
{file = "distro-1.5.0-py2.py3-none-any.whl", hash = "sha256:df74eed763e18d10d0da624258524ae80486432cd17392d9c3d96f5e83cd2799"},
|
||||
{file = "distro-1.5.0.tar.gz", hash = "sha256:0e58756ae38fbd8fc3020d54badb8eae17c5b9dcbed388b17bb55b8a5928df92"},
|
||||
]
|
||||
django = [
|
||||
{file = "Django-2.2.16-py3-none-any.whl", hash = "sha256:83ced795a0f239f41d8ecabf51cc5fad4b97462a6008dc12e5af3cb9288724ec"},
|
||||
{file = "Django-2.2.16.tar.gz", hash = "sha256:62cf45e5ee425c52e411c0742e641a6588b7e8af0d2c274a27940931b2786594"},
|
||||
|
@ -1176,6 +1392,17 @@ django-tools = [
|
|||
{file = "django-tools-0.46.1.tar.gz", hash = "sha256:0a289c230d908417a0a72d1a7884ebc0508894b1ac7be888ed333170d4c97291"},
|
||||
{file = "django_tools-0.46.1-py3-none-any.whl", hash = "sha256:e10c13b382b14ecfb589fd194719d44210a26a542869cbb298e0c2a1ede7f90d"},
|
||||
]
|
||||
docker = [
|
||||
{file = "docker-4.3.1-py2.py3-none-any.whl", hash = "sha256:13966471e8bc23b36bfb3a6fb4ab75043a5ef1dac86516274777576bed3b9828"},
|
||||
{file = "docker-4.3.1.tar.gz", hash = "sha256:bad94b8dd001a8a4af19ce4becc17f41b09f228173ffe6a4e0355389eef142f2"},
|
||||
]
|
||||
docker-compose = [
|
||||
{file = "docker-compose-1.27.4.tar.gz", hash = "sha256:5a5690f24c27d4b43dcbe6b3fae91ba680713208e99ee863352b3bae37bcaa83"},
|
||||
{file = "docker_compose-1.27.4-py2.py3-none-any.whl", hash = "sha256:84ca2edad226435e3a378ea24ca2ca4e1a77cc7c8de057e2812124c6dcb55147"},
|
||||
]
|
||||
dockerpty = [
|
||||
{file = "dockerpty-0.4.1.tar.gz", hash = "sha256:69a9d69d573a0daa31bcd1c0774eeed5c15c295fe719c61aca550ed1393156ce"},
|
||||
]
|
||||
docopt = [
|
||||
{file = "docopt-0.6.2.tar.gz", hash = "sha256:49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"},
|
||||
]
|
||||
|
@ -1228,6 +1455,10 @@ jeepney = [
|
|||
{file = "jeepney-0.4.3-py3-none-any.whl", hash = "sha256:d6c6b49683446d2407d2fe3acb7a368a77ff063f9182fe427da15d622adc24cf"},
|
||||
{file = "jeepney-0.4.3.tar.gz", hash = "sha256:3479b861cc2b6407de5188695fa1a8d57e5072d7059322469b62628869b8e36e"},
|
||||
]
|
||||
jsonschema = [
|
||||
{file = "jsonschema-3.2.0-py2.py3-none-any.whl", hash = "sha256:4e5b3cf8216f577bee9ce139cbe72eca3ea4f292ec60928ff24758ce626cd163"},
|
||||
{file = "jsonschema-3.2.0.tar.gz", hash = "sha256:c8a85b28d377cc7737e46e2d9f2b4f44ee3c0e1deac6bf46ddefc7187d30797a"},
|
||||
]
|
||||
keyring = [
|
||||
{file = "keyring-21.4.0-py3-none-any.whl", hash = "sha256:4e34ea2fdec90c1c43d6610b5a5fafa1b9097db1802948e90caf5763974b8f8d"},
|
||||
{file = "keyring-21.4.0.tar.gz", hash = "sha256:9aeadd006a852b78f4b4ef7c7556c2774d2432bbef8ee538a3e9089ac8b11466"},
|
||||
|
@ -1251,22 +1482,61 @@ packaging = [
|
|||
{file = "packaging-20.4-py2.py3-none-any.whl", hash = "sha256:998416ba6962ae7fbd6596850b80e17859a5753ba17c32284f67bfff33784181"},
|
||||
{file = "packaging-20.4.tar.gz", hash = "sha256:4357f74f47b9c12db93624a82154e9b120fa8293699949152b22065d556079f8"},
|
||||
]
|
||||
paramiko = [
|
||||
{file = "paramiko-2.7.2-py2.py3-none-any.whl", hash = "sha256:4f3e316fef2ac628b05097a637af35685183111d4bc1b5979bd397c2ab7b5898"},
|
||||
{file = "paramiko-2.7.2.tar.gz", hash = "sha256:7f36f4ba2c0d81d219f4595e35f70d56cc94f9ac40a6acdf51d6ca210ce65035"},
|
||||
]
|
||||
pkginfo = [
|
||||
{file = "pkginfo-1.5.0.1-py2.py3-none-any.whl", hash = "sha256:a6d9e40ca61ad3ebd0b72fbadd4fba16e4c0e4df0428c041e01e06eb6ee71f32"},
|
||||
{file = "pkginfo-1.5.0.1.tar.gz", hash = "sha256:7424f2c8511c186cd5424bbf31045b77435b37a8d604990b79d4e70d741148bb"},
|
||||
{file = "pkginfo-1.6.0-py2.py3-none-any.whl", hash = "sha256:78d032b5888ec06d7f9d18fbf8c0549a6a3477081b34cb769119a07183624fc1"},
|
||||
{file = "pkginfo-1.6.0.tar.gz", hash = "sha256:dd008e95b13141ddd05d7e8881f0c0366a998ab90b25c2db794a1714b71583cc"},
|
||||
]
|
||||
pluggy = [
|
||||
{file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"},
|
||||
{file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"},
|
||||
]
|
||||
poetry-publish = [
|
||||
{file = "poetry-publish-0.3.2.tar.gz", hash = "sha256:28dd696f0c0948f9fea3cbd203e9971e41b8623ca65200e5ecac347a21c5a911"},
|
||||
{file = "poetry_publish-0.3.2-py3-none-any.whl", hash = "sha256:b388b4d506ae0110642768419a1167412bbb6b72d5fe7df7cab9b26627eea604"},
|
||||
{file = "poetry-publish-0.4.0.tar.gz", hash = "sha256:9936ac587d9b94fa735ef53226f5f21242c8ecb0321195cc3c5cc55d4fda4bae"},
|
||||
{file = "poetry_publish-0.4.0-py3-none-any.whl", hash = "sha256:de449fe0ff24f753e2d62e7dc7812b328b32df6fd3f3e6e84ec3d8cf352239f5"},
|
||||
]
|
||||
pprintpp = [
|
||||
{file = "pprintpp-0.4.0-py2.py3-none-any.whl", hash = "sha256:b6b4dcdd0c0c0d75e4d7b2f21a9e933e5b2ce62b26e1a54537f9651ae5a5c01d"},
|
||||
{file = "pprintpp-0.4.0.tar.gz", hash = "sha256:ea826108e2c7f49dc6d66c752973c3fc9749142a798d6b254e1e301cfdbc6403"},
|
||||
]
|
||||
psycopg2-binary = [
|
||||
{file = "psycopg2-binary-2.8.6.tar.gz", hash = "sha256:11b9c0ebce097180129e422379b824ae21c8f2a6596b159c7659e2e5a00e1aa0"},
|
||||
{file = "psycopg2_binary-2.8.6-cp27-cp27m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:d14b140a4439d816e3b1229a4a525df917d6ea22a0771a2a78332273fd9528a4"},
|
||||
{file = "psycopg2_binary-2.8.6-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:1fabed9ea2acc4efe4671b92c669a213db744d2af8a9fc5d69a8e9bc14b7a9db"},
|
||||
{file = "psycopg2_binary-2.8.6-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:f5ab93a2cb2d8338b1674be43b442a7f544a0971da062a5da774ed40587f18f5"},
|
||||
{file = "psycopg2_binary-2.8.6-cp27-cp27m-win32.whl", hash = "sha256:b4afc542c0ac0db720cf516dd20c0846f71c248d2b3d21013aa0d4ef9c71ca25"},
|
||||
{file = "psycopg2_binary-2.8.6-cp27-cp27m-win_amd64.whl", hash = "sha256:e74a55f6bad0e7d3968399deb50f61f4db1926acf4a6d83beaaa7df986f48b1c"},
|
||||
{file = "psycopg2_binary-2.8.6-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:0deac2af1a587ae12836aa07970f5cb91964f05a7c6cdb69d8425ff4c15d4e2c"},
|
||||
{file = "psycopg2_binary-2.8.6-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:ad20d2eb875aaa1ea6d0f2916949f5c08a19c74d05b16ce6ebf6d24f2c9f75d1"},
|
||||
{file = "psycopg2_binary-2.8.6-cp34-cp34m-win32.whl", hash = "sha256:950bc22bb56ee6ff142a2cb9ee980b571dd0912b0334aa3fe0fe3788d860bea2"},
|
||||
{file = "psycopg2_binary-2.8.6-cp34-cp34m-win_amd64.whl", hash = "sha256:b8a3715b3c4e604bcc94c90a825cd7f5635417453b253499664f784fc4da0152"},
|
||||
{file = "psycopg2_binary-2.8.6-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:d1b4ab59e02d9008efe10ceabd0b31e79519da6fb67f7d8e8977118832d0f449"},
|
||||
{file = "psycopg2_binary-2.8.6-cp35-cp35m-manylinux1_i686.whl", hash = "sha256:ac0c682111fbf404525dfc0f18a8b5f11be52657d4f96e9fcb75daf4f3984859"},
|
||||
{file = "psycopg2_binary-2.8.6-cp35-cp35m-manylinux1_x86_64.whl", hash = "sha256:7d92a09b788cbb1aec325af5fcba9fed7203897bbd9269d5691bb1e3bce29550"},
|
||||
{file = "psycopg2_binary-2.8.6-cp35-cp35m-win32.whl", hash = "sha256:aaa4213c862f0ef00022751161df35804127b78adf4a2755b9f991a507e425fd"},
|
||||
{file = "psycopg2_binary-2.8.6-cp35-cp35m-win_amd64.whl", hash = "sha256:c2507d796fca339c8fb03216364cca68d87e037c1f774977c8fc377627d01c71"},
|
||||
{file = "psycopg2_binary-2.8.6-cp36-cp36m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:ee69dad2c7155756ad114c02db06002f4cded41132cc51378e57aad79cc8e4f4"},
|
||||
{file = "psycopg2_binary-2.8.6-cp36-cp36m-manylinux1_i686.whl", hash = "sha256:e82aba2188b9ba309fd8e271702bd0d0fc9148ae3150532bbb474f4590039ffb"},
|
||||
{file = "psycopg2_binary-2.8.6-cp36-cp36m-manylinux1_x86_64.whl", hash = "sha256:d5227b229005a696cc67676e24c214740efd90b148de5733419ac9aaba3773da"},
|
||||
{file = "psycopg2_binary-2.8.6-cp36-cp36m-win32.whl", hash = "sha256:a0eb43a07386c3f1f1ebb4dc7aafb13f67188eab896e7397aa1ee95a9c884eb2"},
|
||||
{file = "psycopg2_binary-2.8.6-cp36-cp36m-win_amd64.whl", hash = "sha256:e1f57aa70d3f7cc6947fd88636a481638263ba04a742b4a37dd25c373e41491a"},
|
||||
{file = "psycopg2_binary-2.8.6-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:833709a5c66ca52f1d21d41865a637223b368c0ee76ea54ca5bad6f2526c7679"},
|
||||
{file = "psycopg2_binary-2.8.6-cp37-cp37m-manylinux1_i686.whl", hash = "sha256:ba28584e6bca48c59eecbf7efb1576ca214b47f05194646b081717fa628dfddf"},
|
||||
{file = "psycopg2_binary-2.8.6-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:6a32f3a4cb2f6e1a0b15215f448e8ce2da192fd4ff35084d80d5e39da683e79b"},
|
||||
{file = "psycopg2_binary-2.8.6-cp37-cp37m-win32.whl", hash = "sha256:0e4dc3d5996760104746e6cfcdb519d9d2cd27c738296525d5867ea695774e67"},
|
||||
{file = "psycopg2_binary-2.8.6-cp37-cp37m-win_amd64.whl", hash = "sha256:cec7e622ebc545dbb4564e483dd20e4e404da17ae07e06f3e780b2dacd5cee66"},
|
||||
{file = "psycopg2_binary-2.8.6-cp38-cp38-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:ba381aec3a5dc29634f20692349d73f2d21f17653bda1decf0b52b11d694541f"},
|
||||
{file = "psycopg2_binary-2.8.6-cp38-cp38-manylinux1_i686.whl", hash = "sha256:a0c50db33c32594305b0ef9abc0cb7db13de7621d2cadf8392a1d9b3c437ef77"},
|
||||
{file = "psycopg2_binary-2.8.6-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:2dac98e85565d5688e8ab7bdea5446674a83a3945a8f416ad0110018d1501b94"},
|
||||
{file = "psycopg2_binary-2.8.6-cp38-cp38-win32.whl", hash = "sha256:bd1be66dde2b82f80afb9459fc618216753f67109b859a361cf7def5c7968729"},
|
||||
{file = "psycopg2_binary-2.8.6-cp38-cp38-win_amd64.whl", hash = "sha256:8cd0fb36c7412996859cb4606a35969dd01f4ea34d9812a141cd920c3b18be77"},
|
||||
{file = "psycopg2_binary-2.8.6-cp39-cp39-macosx_10_9_x86_64.macosx_10_9_intel.macosx_10_10_intel.macosx_10_10_x86_64.whl", hash = "sha256:89705f45ce07b2dfa806ee84439ec67c5d9a0ef20154e0e475e2b2ed392a5b83"},
|
||||
{file = "psycopg2_binary-2.8.6-cp39-cp39-manylinux1_i686.whl", hash = "sha256:42ec1035841b389e8cc3692277a0bd81cdfe0b65d575a2c8862cec7a80e62e52"},
|
||||
{file = "psycopg2_binary-2.8.6-cp39-cp39-manylinux1_x86_64.whl", hash = "sha256:7312e931b90fe14f925729cde58022f5d034241918a5c4f9797cac62f6b3a9dd"},
|
||||
]
|
||||
py = [
|
||||
{file = "py-1.9.0-py2.py3-none-any.whl", hash = "sha256:366389d1db726cd2fcfc79732e75410e5fe4d31db13692115529d34069a043c2"},
|
||||
{file = "py-1.9.0.tar.gz", hash = "sha256:9ca6883ce56b4e8da7e79ac18787889fa5206c79dcc67fb065376cd2fe03f342"},
|
||||
|
@ -1287,10 +1557,33 @@ pygments = [
|
|||
{file = "Pygments-2.7.1-py3-none-any.whl", hash = "sha256:307543fe65c0947b126e83dd5a61bd8acbd84abec11f43caebaf5534cbc17998"},
|
||||
{file = "Pygments-2.7.1.tar.gz", hash = "sha256:926c3f319eda178d1bd90851e4317e6d8cdb5e292a3386aac9bd75eca29cf9c7"},
|
||||
]
|
||||
pynacl = [
|
||||
{file = "PyNaCl-1.4.0-cp27-cp27m-macosx_10_10_x86_64.whl", hash = "sha256:ea6841bc3a76fa4942ce00f3bda7d436fda21e2d91602b9e21b7ca9ecab8f3ff"},
|
||||
{file = "PyNaCl-1.4.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:d452a6746f0a7e11121e64625109bc4468fc3100452817001dbe018bb8b08514"},
|
||||
{file = "PyNaCl-1.4.0-cp27-cp27m-win32.whl", hash = "sha256:2fe0fc5a2480361dcaf4e6e7cea00e078fcda07ba45f811b167e3f99e8cff574"},
|
||||
{file = "PyNaCl-1.4.0-cp27-cp27m-win_amd64.whl", hash = "sha256:f8851ab9041756003119368c1e6cd0b9c631f46d686b3904b18c0139f4419f80"},
|
||||
{file = "PyNaCl-1.4.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:7757ae33dae81c300487591c68790dfb5145c7d03324000433d9a2c141f82af7"},
|
||||
{file = "PyNaCl-1.4.0-cp35-abi3-macosx_10_10_x86_64.whl", hash = "sha256:757250ddb3bff1eecd7e41e65f7f833a8405fede0194319f87899690624f2122"},
|
||||
{file = "PyNaCl-1.4.0-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:30f9b96db44e09b3304f9ea95079b1b7316b2b4f3744fe3aaecccd95d547063d"},
|
||||
{file = "PyNaCl-1.4.0-cp35-abi3-win32.whl", hash = "sha256:4e10569f8cbed81cb7526ae137049759d2a8d57726d52c1a000a3ce366779634"},
|
||||
{file = "PyNaCl-1.4.0-cp35-abi3-win_amd64.whl", hash = "sha256:c914f78da4953b33d4685e3cdc7ce63401247a21425c16a39760e282075ac4a6"},
|
||||
{file = "PyNaCl-1.4.0-cp35-cp35m-win32.whl", hash = "sha256:06cbb4d9b2c4bd3c8dc0d267416aaed79906e7b33f114ddbf0911969794b1cc4"},
|
||||
{file = "PyNaCl-1.4.0-cp35-cp35m-win_amd64.whl", hash = "sha256:511d269ee845037b95c9781aa702f90ccc36036f95d0f31373a6a79bd8242e25"},
|
||||
{file = "PyNaCl-1.4.0-cp36-cp36m-win32.whl", hash = "sha256:11335f09060af52c97137d4ac54285bcb7df0cef29014a1a4efe64ac065434c4"},
|
||||
{file = "PyNaCl-1.4.0-cp36-cp36m-win_amd64.whl", hash = "sha256:cd401ccbc2a249a47a3a1724c2918fcd04be1f7b54eb2a5a71ff915db0ac51c6"},
|
||||
{file = "PyNaCl-1.4.0-cp37-cp37m-win32.whl", hash = "sha256:8122ba5f2a2169ca5da936b2e5a511740ffb73979381b4229d9188f6dcb22f1f"},
|
||||
{file = "PyNaCl-1.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:537a7ccbea22905a0ab36ea58577b39d1fa9b1884869d173b5cf111f006f689f"},
|
||||
{file = "PyNaCl-1.4.0-cp38-cp38-win32.whl", hash = "sha256:9c4a7ea4fb81536c1b1f5cc44d54a296f96ae78c1ebd2311bd0b60be45a48d96"},
|
||||
{file = "PyNaCl-1.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:7c6092102219f59ff29788860ccb021e80fffd953920c4a8653889c029b2d420"},
|
||||
{file = "PyNaCl-1.4.0.tar.gz", hash = "sha256:54e9a2c849c742006516ad56a88f5c74bf2ce92c9f67435187c3c5953b346505"},
|
||||
]
|
||||
pyparsing = [
|
||||
{file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"},
|
||||
{file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"},
|
||||
]
|
||||
pyrsistent = [
|
||||
{file = "pyrsistent-0.17.3.tar.gz", hash = "sha256:2e636185d9eb976a18a8a8e96efce62f2905fea90041958d8cc2a189756ebf3e"},
|
||||
]
|
||||
pytest = [
|
||||
{file = "pytest-6.1.1-py3-none-any.whl", hash = "sha256:7a8190790c17d79a11f847fba0b004ee9a8122582ebff4729a082c109e81a4c9"},
|
||||
{file = "pytest-6.1.1.tar.gz", hash = "sha256:8f593023c1a0f916110285b6efd7f99db07d59546e3d8c36fc60e2ab05d3be92"},
|
||||
|
@ -1308,8 +1601,12 @@ pytest-randomly = [
|
|||
{file = "pytest_randomly-3.4.1-py3-none-any.whl", hash = "sha256:2c4df1390db72a33a4f44fac0c780e7883cd5968238efa2a2bdbdd54e3fc6681"},
|
||||
]
|
||||
python-creole = [
|
||||
{file = "python-creole-1.4.7.tar.gz", hash = "sha256:eb27bc3f31a4dcd896ab47098c283fed738993be1c1d91b3e33cbdf31e85910d"},
|
||||
{file = "python_creole-1.4.7-py3-none-any.whl", hash = "sha256:9f7c59b16a07cd26de971b5bc6e648e4ce8f60c926f0d65ef33b3f819cc04b6e"},
|
||||
{file = "python-creole-1.4.8.tar.gz", hash = "sha256:ea3a6d4db3fc028fd4fe524c8ff1080181fdc3efa8aacacc7f55e136ac7abb1a"},
|
||||
{file = "python_creole-1.4.8-py3-none-any.whl", hash = "sha256:b1c509f559457321a0228b12621261ff3a53316eb537892ac70e23193cb6cb85"},
|
||||
]
|
||||
python-dotenv = [
|
||||
{file = "python-dotenv-0.14.0.tar.gz", hash = "sha256:8c10c99a1b25d9a68058a1ad6f90381a62ba68230ca93966882a4dbc3bc9c33d"},
|
||||
{file = "python_dotenv-0.14.0-py2.py3-none-any.whl", hash = "sha256:c10863aee750ad720f4f43436565e4c1698798d763b63234fb5021b6c616e423"},
|
||||
]
|
||||
pytz = [
|
||||
{file = "pytz-2020.1-py2.py3-none-any.whl", hash = "sha256:a494d53b6d39c3c6e44c3bec237336e14305e4f29bbf800b599253057fbb79ed"},
|
||||
|
@ -1319,6 +1616,20 @@ pyupgrade = [
|
|||
{file = "pyupgrade-2.7.2-py2.py3-none-any.whl", hash = "sha256:24cbd268be09c3df8ab431dfb31d7c84dee7adccfa27b8af4443386484ad736d"},
|
||||
{file = "pyupgrade-2.7.2.tar.gz", hash = "sha256:44df36f581fa4c61f599993595c23a46d79e4f67e3768aeaf789e42422b94900"},
|
||||
]
|
||||
pywin32 = [
|
||||
{file = "pywin32-227-cp27-cp27m-win32.whl", hash = "sha256:371fcc39416d736401f0274dd64c2302728c9e034808e37381b5e1b22be4a6b0"},
|
||||
{file = "pywin32-227-cp27-cp27m-win_amd64.whl", hash = "sha256:4cdad3e84191194ea6d0dd1b1b9bdda574ff563177d2adf2b4efec2a244fa116"},
|
||||
{file = "pywin32-227-cp35-cp35m-win32.whl", hash = "sha256:f4c5be1a293bae0076d93c88f37ee8da68136744588bc5e2be2f299a34ceb7aa"},
|
||||
{file = "pywin32-227-cp35-cp35m-win_amd64.whl", hash = "sha256:a929a4af626e530383a579431b70e512e736e9588106715215bf685a3ea508d4"},
|
||||
{file = "pywin32-227-cp36-cp36m-win32.whl", hash = "sha256:300a2db938e98c3e7e2093e4491439e62287d0d493fe07cce110db070b54c0be"},
|
||||
{file = "pywin32-227-cp36-cp36m-win_amd64.whl", hash = "sha256:9b31e009564fb95db160f154e2aa195ed66bcc4c058ed72850d047141b36f3a2"},
|
||||
{file = "pywin32-227-cp37-cp37m-win32.whl", hash = "sha256:47a3c7551376a865dd8d095a98deba954a98f326c6fe3c72d8726ca6e6b15507"},
|
||||
{file = "pywin32-227-cp37-cp37m-win_amd64.whl", hash = "sha256:31f88a89139cb2adc40f8f0e65ee56a8c585f629974f9e07622ba80199057511"},
|
||||
{file = "pywin32-227-cp38-cp38-win32.whl", hash = "sha256:7f18199fbf29ca99dff10e1f09451582ae9e372a892ff03a28528a24d55875bc"},
|
||||
{file = "pywin32-227-cp38-cp38-win_amd64.whl", hash = "sha256:7c1ae32c489dc012930787f06244426f8356e129184a02c25aef163917ce158e"},
|
||||
{file = "pywin32-227-cp39-cp39-win32.whl", hash = "sha256:c054c52ba46e7eb6b7d7dfae4dbd987a1bb48ee86debe3f245a2884ece46e295"},
|
||||
{file = "pywin32-227-cp39-cp39-win_amd64.whl", hash = "sha256:f27cec5e7f588c3d1051651830ecc00294f90728d19c3bf6916e6dba93ea357c"},
|
||||
]
|
||||
pywin32-ctypes = [
|
||||
{file = "pywin32-ctypes-0.2.0.tar.gz", hash = "sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942"},
|
||||
{file = "pywin32_ctypes-0.2.0-py2.py3-none-any.whl", hash = "sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98"},
|
||||
|
@ -1368,6 +1679,10 @@ tablib = [
|
|||
{file = "tablib-2.0.0-py3-none-any.whl", hash = "sha256:c5a77c96ad306d5b380def1309d521ad5e98b4f83726f84857ad87e142d13279"},
|
||||
{file = "tablib-2.0.0.tar.gz", hash = "sha256:8cc2fa10bc37219ac5e76850eb7fbd50de313c7a1a7895c44af2a8dd206b7be7"},
|
||||
]
|
||||
texttable = [
|
||||
{file = "texttable-1.6.3-py2.py3-none-any.whl", hash = "sha256:f802f2ef8459058736264210f716c757cbf85007a30886d8541aa8c3404f1dda"},
|
||||
{file = "texttable-1.6.3.tar.gz", hash = "sha256:ce0faf21aa77d806bbff22b107cc22cce68dc9438f97a2df32c93e9afa4ce436"},
|
||||
]
|
||||
tokenize-rt = [
|
||||
{file = "tokenize_rt-4.0.0-py2.py3-none-any.whl", hash = "sha256:c47d3bd00857c24edefccdd6dc99c19d4ceed77c5971a3e2fac007fb0c02e39d"},
|
||||
{file = "tokenize_rt-4.0.0.tar.gz", hash = "sha256:07d5f88b6a953612159b160129bcf9425677c8d062b0cb83250968ba803e1c64"},
|
||||
|
@ -1389,8 +1704,8 @@ twine = [
|
|||
{file = "twine-3.2.0.tar.gz", hash = "sha256:34352fd52ec3b9d29837e6072d5a2a7c6fe4290e97bba46bb8d478b5c598f7ab"},
|
||||
]
|
||||
urllib3 = [
|
||||
{file = "urllib3-1.25.10-py2.py3-none-any.whl", hash = "sha256:e7983572181f5e1522d9c98453462384ee92a0be7fac5f1413a1e35c56cc0461"},
|
||||
{file = "urllib3-1.25.10.tar.gz", hash = "sha256:91056c15fa70756691db97756772bb1eb9678fa585d9184f24534b100dc60f4a"},
|
||||
{file = "urllib3-1.25.11-py2.py3-none-any.whl", hash = "sha256:f5321fbe4bf3fefa0efd0bfe7fb14e90909eb62a48ccda331726b4319897dd5e"},
|
||||
{file = "urllib3-1.25.11.tar.gz", hash = "sha256:8d7eaa5a82a1cac232164990f04874c594c9453ec55eef02eab885aa02fc17a2"},
|
||||
]
|
||||
virtualenv = [
|
||||
{file = "virtualenv-20.0.35-py2.py3-none-any.whl", hash = "sha256:0ebc633426d7468664067309842c81edab11ae97fcaf27e8ad7f5748c89b431b"},
|
||||
|
@ -1400,6 +1715,10 @@ webencodings = [
|
|||
{file = "webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78"},
|
||||
{file = "webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923"},
|
||||
]
|
||||
websocket-client = [
|
||||
{file = "websocket_client-0.57.0-py2.py3-none-any.whl", hash = "sha256:0fc45c961324d79c781bab301359d5a1b00b13ad1b10415a4780229ef71a5549"},
|
||||
{file = "websocket_client-0.57.0.tar.gz", hash = "sha256:d735b91d6d1692a6a181f2a8c9e0238e5f6373356f561bb9dc4c7af36f452010"},
|
||||
]
|
||||
xlrd = [
|
||||
{file = "xlrd-1.2.0-py2.py3-none-any.whl", hash = "sha256:e551fb498759fa3a5384a94ccd4c3c02eb7c00ea424426e212ac0c57be9dfbde"},
|
||||
{file = "xlrd-1.2.0.tar.gz", hash = "sha256:546eb36cee8db40c3eaa46c351e67ffee6eeb5fa2650b71bc4c758a29a1b29b2"},
|
||||
|
|
|
@ -52,6 +52,12 @@ bx_py_utils = "*" # https://github.com/boxine/bx_py_utils
|
|||
django-tagulous = "*" # https://github.com/radiac/django-tagulous
|
||||
django-admin-sortable2 = "*" # https://github.com/jrief/django-admin-sortable2
|
||||
requests = "*" # https://github.com/psf/requests
|
||||
docker-compose = { version = "*", optional = true } # install via: poetry install --extras "docker"
|
||||
psycopg2-binary = { version = "*", optional = true } # install via: poetry install --extras "postgres"
|
||||
|
||||
[tool.poetry.extras]
|
||||
docker = ["docker-compose"]
|
||||
postgres = ["psycopg2-binary"]
|
||||
|
||||
[tool.poetry.dev-dependencies]
|
||||
poetry-publish = "*" # https://github.com/jedie/poetry-publish
|
||||
|
|
Ładowanie…
Reference in New Issue