Remove keyring tag - zenroom improvements/fixes (#291)

* removed keyring tag from zenroom tests
* removed keyring tag mishandling (zenroom) from cryptoconditions. using cyptoconditions 1.1.0 from now on
* fixed doc-build
* fixed docstring issue
* removed doc-building workflow and tox usage
* fixed import issue
* fixed connectionerror obj resolution in tests

Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
This commit is contained in:
Jürgen Eckel 2022-12-21 16:38:25 +01:00 committed by GitHub
parent f104b0979d
commit 8730d516a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
25 changed files with 56 additions and 128 deletions

View File

@ -1,35 +0,0 @@
# Copyright © 2020 Interplanetary Database Association e.V.,
# Planetmint and IPDB software contributors.
# SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0)
# Code is Apache-2.0 and docs are CC-BY-4.0
name: Documentation
on: [push, pull_request]
jobs:
documentation:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v3
- name: Setup python
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install tox
run: python -m pip install --upgrade tox tox-gh-actions
- name: Install dependencies
run: pip install .'[dev]'
- name: Run tox
run: tox -e docsroot

1
.gitignore vendored
View File

@ -53,7 +53,6 @@ pip-delete-this-directory.txt
# Unit test / coverage reports # Unit test / coverage reports
htmlcov/ htmlcov/
.tox/
.coverage .coverage
.coverage.* .coverage.*
.cache .cache

View File

@ -25,6 +25,9 @@ For reference, the possible headings are:
* **Known Issues** * **Known Issues**
* **Notes** * **Notes**
## [1.4.1] - 2022-21-12
* **fixed** inconsistent cryptocondition keyring tag handling. Using cryptoconditions > 1.1.0 from now on.
## [1.4.0] - 2022-12-12 ## [1.4.0] - 2022-12-12
* **Added** added upgrade compatibility to older nodes to support v2.0 TX validity for nodes supporting v3.0 transactions (planetmint-transactions >= 0.4.1) * **Added** added upgrade compatibility to older nodes to support v2.0 TX validity for nodes supporting v3.0 transactions (planetmint-transactions >= 0.4.1)

View File

@ -41,7 +41,6 @@ services:
- ./setup.py:/usr/src/app/setup.py - ./setup.py:/usr/src/app/setup.py
- ./setup.cfg:/usr/src/app/setup.cfg - ./setup.cfg:/usr/src/app/setup.cfg
- ./pytest.ini:/usr/src/app/pytest.ini - ./pytest.ini:/usr/src/app/pytest.ini
- ./tox.ini:/usr/src/app/tox.ini
environment: environment:
PLANETMINT_DATABASE_BACKEND: tarantool_db PLANETMINT_DATABASE_BACKEND: tarantool_db
PLANETMINT_DATABASE_HOST: tarantool PLANETMINT_DATABASE_HOST: tarantool

View File

@ -54,13 +54,13 @@ import sphinx_rtd_theme
extensions = [ extensions = [
"myst_parser", "myst_parser",
"sphinx.ext.napoleon",
"sphinx.ext.autosectionlabel", "sphinx.ext.autosectionlabel",
"sphinx.ext.autodoc", "sphinx.ext.autodoc",
"sphinx.ext.intersphinx", "sphinx.ext.intersphinx",
"sphinx.ext.coverage", "sphinx.ext.coverage",
"sphinx.ext.viewcode", "sphinx.ext.viewcode",
"sphinx.ext.todo", "sphinx.ext.todo",
"sphinx.ext.napoleon",
"sphinxcontrib.httpdomain", "sphinxcontrib.httpdomain",
"aafigure.sphinxext", "aafigure.sphinxext",
#'sphinx_toolbox.collapse', #'sphinx_toolbox.collapse',

View File

@ -4,7 +4,7 @@ Content-Type: application/json
{ {
"assets": "/assets/", "assets": "/assets/",
"blocks": "/blocks/", "blocks": "/blocks/",
"docs": "https://docs.planetmint.io/projects/server/en/v1.3.1/http-client-server-api.html", "docs": "https://docs.planetmint.io/projects/server/en/v1.4.1/http-client-server-api.html",
"metadata": "/metadata/", "metadata": "/metadata/",
"outputs": "/outputs/", "outputs": "/outputs/",
"streamedblocks": "ws://localhost:9985/api/v1/streams/valid_blocks", "streamedblocks": "ws://localhost:9985/api/v1/streams/valid_blocks",

View File

@ -7,15 +7,13 @@ Content-Type: application/json
{ {
"assets": [ "assets": [
{ {
"data": { "data": "QmQP5C3PmhH9oB84n7YqSY4WVqmYatdoo1BdwhH4zmcwqM"
"msg": "Hello Planetmint!"
}
} }
], ],
"id": "61e1312b80705e0dabb948c9d78dae7f62d64832abda822b13d89c4a7305d4ac", "id": "0fdeb547670bbea980389df53cf5a91e60159339084c6b0b5cc0b5494a679530",
"inputs": [ "inputs": [
{ {
"fulfillment": "pGSAIDE5i63cn4X8T8N1sZ2mGkJD5lNRnBM4PZgI_zvzbr-cgUCWcUaLa2U-nkmZ6oYj14aeV6B4TJH2NvZ8k2ZTwcGiaiCGXDQT2dEPfMCFwM8lwSousafCu4c7EgVZ1GzUDjsN", "fulfillment": "pGSAIDE5i63cn4X8T8N1sZ2mGkJD5lNRnBM4PZgI_zvzbr-cgUDklzRb5aUQz9slbaqSWap1AfC-cacTCN3CGtFy2LPK7JKEqKG2b0KQXnUcFksk_KH_v6ImFXHsclKSp1OJkIEI",
"fulfills": null, "fulfills": null,
"owners_before": [ "owners_before": [
"4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD" "4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD"
@ -39,7 +37,7 @@ Content-Type: application/json
] ]
} }
], ],
"version": "2.0" "version": "3.0"
} }
] ]
} }

View File

@ -1,3 +1,3 @@
GET /api/v1/blocks?transaction_id=61e1312b80705e0dabb948c9d78dae7f62d64832abda822b13d89c4a7305d4ac HTTP/1.1 GET /api/v1/blocks?transaction_id=0fdeb547670bbea980389df53cf5a91e60159339084c6b0b5cc0b5494a679530 HTTP/1.1
Host: example.com Host: example.com

View File

@ -1,3 +1,3 @@
GET /api/v1/transactions?operation=TRANSFER&asset_id=61e1312b80705e0dabb948c9d78dae7f62d64832abda822b13d89c4a7305d4ac HTTP/1.1 GET /api/v1/transactions?operation=TRANSFER&asset_id=0fdeb547670bbea980389df53cf5a91e60159339084c6b0b5cc0b5494a679530 HTTP/1.1
Host: example.com Host: example.com

View File

@ -4,16 +4,16 @@ Content-Type: application/json
[{ [{
"assets": [ "assets": [
{ {
"id": "61e1312b80705e0dabb948c9d78dae7f62d64832abda822b13d89c4a7305d4ac" "id": "0fdeb547670bbea980389df53cf5a91e60159339084c6b0b5cc0b5494a679530"
} }
], ],
"id": "b6e1ab3d48bbbbb0e40b952e70ec5d439b2745e0ba0c44b4ee877657e9ac33f0", "id": "8d11fe2bd91c4747a41e0c3dbe1400c511175be42f008d6cff92cbfa9e04f799",
"inputs": [ "inputs": [
{ {
"fulfillment": "pGSAIDE5i63cn4X8T8N1sZ2mGkJD5lNRnBM4PZgI_zvzbr-cgUA4BB4fxDXK3CQTbKpH5gTAN76NG-iopNuuDEfBbZ1Fl-ipNU46t8VCvK9ghm9Q53aFRW6DDiW5wcWXxY0sS4EJ", "fulfillment": "pGSAIDE5i63cn4X8T8N1sZ2mGkJD5lNRnBM4PZgI_zvzbr-cgUCh-rpO-xqDm2fngjzxnKc39G16FpFMo0y50sHT7_uo1Itzvh4jsxnSGco2HjG6ZF-lSiGsASZ4uIIHuPM57yUI",
"fulfills": { "fulfills": {
"output_index": 0, "output_index": 0,
"transaction_id": "61e1312b80705e0dabb948c9d78dae7f62d64832abda822b13d89c4a7305d4ac" "transaction_id": "0fdeb547670bbea980389df53cf5a91e60159339084c6b0b5cc0b5494a679530"
}, },
"owners_before": [ "owners_before": [
"4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD" "4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD"
@ -37,21 +37,21 @@ Content-Type: application/json
] ]
} }
], ],
"version": "2.0" "version": "3.0"
}, },
{ {
"assets": [ "assets": [
{ {
"id": "61e1312b80705e0dabb948c9d78dae7f62d64832abda822b13d89c4a7305d4ac" "id": "0fdeb547670bbea980389df53cf5a91e60159339084c6b0b5cc0b5494a679530"
} }
], ],
"id": "e43d3f93d90d22ef11c21607e3415bfcda4e0c7dd60412fbb55daf32978a3126", "id": "45c929b66d1b10db6c3c3e6b1adddc0778b473fced4a1f403c2646b25f3fd983",
"inputs": [ "inputs": [
{ {
"fulfillment": "pGSAICw7Ul-c2lG6NFbHp3FbKRC7fivQcNGO7GS4wV3A-1QggUBjj_XTjB3yJdG8JMNKnkkHvcX_BTOkl-YacRD4yKqxUCeL-VTgbrLgi5a3gGxNJcTkZP1gF0nsby8cgV4xmOcB", "fulfillment": "pGSAICw7Ul-c2lG6NFbHp3FbKRC7fivQcNGO7GS4wV3A-1QggUAc6OAQcXppDxCazw0UK2nwghctKNiZYDDsSOkAn0eQE8QjZ7GLzJpVb92oGXw_4FF7cLE0gg3nNxu7taQ8xakE",
"fulfills": { "fulfills": {
"output_index": 0, "output_index": 0,
"transaction_id": "b6e1ab3d48bbbbb0e40b952e70ec5d439b2745e0ba0c44b4ee877657e9ac33f0" "transaction_id": "8d11fe2bd91c4747a41e0c3dbe1400c511175be42f008d6cff92cbfa9e04f799"
}, },
"owners_before": [ "owners_before": [
"3yfQPHeWAa1MxTX9Zf9176QqcpcnWcanVZZbaHb8B3h9" "3yfQPHeWAa1MxTX9Zf9176QqcpcnWcanVZZbaHb8B3h9"
@ -75,5 +75,5 @@ Content-Type: application/json
] ]
} }
], ],
"version": "2.0" "version": "3.0"
}] }]

View File

@ -1,3 +1,3 @@
GET /api/v1/transactions/61e1312b80705e0dabb948c9d78dae7f62d64832abda822b13d89c4a7305d4ac HTTP/1.1 GET /api/v1/transactions/0fdeb547670bbea980389df53cf5a91e60159339084c6b0b5cc0b5494a679530 HTTP/1.1
Host: example.com Host: example.com

View File

@ -4,15 +4,13 @@ Content-Type: application/json
{ {
"assets": [ "assets": [
{ {
"data": { "data": "QmQP5C3PmhH9oB84n7YqSY4WVqmYatdoo1BdwhH4zmcwqM"
"msg": "Hello Planetmint!"
}
} }
], ],
"id": "61e1312b80705e0dabb948c9d78dae7f62d64832abda822b13d89c4a7305d4ac", "id": "0fdeb547670bbea980389df53cf5a91e60159339084c6b0b5cc0b5494a679530",
"inputs": [ "inputs": [
{ {
"fulfillment": "pGSAIDE5i63cn4X8T8N1sZ2mGkJD5lNRnBM4PZgI_zvzbr-cgUCWcUaLa2U-nkmZ6oYj14aeV6B4TJH2NvZ8k2ZTwcGiaiCGXDQT2dEPfMCFwM8lwSousafCu4c7EgVZ1GzUDjsN", "fulfillment": "pGSAIDE5i63cn4X8T8N1sZ2mGkJD5lNRnBM4PZgI_zvzbr-cgUDklzRb5aUQz9slbaqSWap1AfC-cacTCN3CGtFy2LPK7JKEqKG2b0KQXnUcFksk_KH_v6ImFXHsclKSp1OJkIEI",
"fulfills": null, "fulfills": null,
"owners_before": [ "owners_before": [
"4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD" "4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD"
@ -36,5 +34,5 @@ Content-Type: application/json
] ]
} }
], ],
"version": "2.0" "version": "3.0"
} }

View File

@ -6,7 +6,7 @@ Content-Type: application/json
"v1": { "v1": {
"assets": "/api/v1/assets/", "assets": "/api/v1/assets/",
"blocks": "/api/v1/blocks/", "blocks": "/api/v1/blocks/",
"docs": "https://docs.planetmint.io/projects/server/en/v1.2.2/http-client-server-api.html", "docs": "https://docs.planetmint.io/projects/server/en/v1.4.1/http-client-server-api.html",
"metadata": "/api/v1/metadata/", "metadata": "/api/v1/metadata/",
"outputs": "/api/v1/outputs/", "outputs": "/api/v1/outputs/",
"streamedblocks": "ws://localhost:9985/api/v1/streams/valid_blocks", "streamedblocks": "ws://localhost:9985/api/v1/streams/valid_blocks",
@ -15,7 +15,7 @@ Content-Type: application/json
"validators": "/api/v1/validators" "validators": "/api/v1/validators"
} }
}, },
"docs": "https://docs.planetmint.io/projects/server/en/v1.2.2/", "docs": "https://docs.planetmint.io/projects/server/en/v1.4.1/",
"software": "Planetmint", "software": "Planetmint",
"version": "1.3.1" "version": "1.4.1"
} }

View File

@ -5,15 +5,13 @@ Content-Type: application/json
{ {
"assets": [ "assets": [
{ {
"data": { "data": "QmQP5C3PmhH9oB84n7YqSY4WVqmYatdoo1BdwhH4zmcwqM"
"msg": "Hello Planetmint!"
}
} }
], ],
"id": "61e1312b80705e0dabb948c9d78dae7f62d64832abda822b13d89c4a7305d4ac", "id": "0fdeb547670bbea980389df53cf5a91e60159339084c6b0b5cc0b5494a679530",
"inputs": [ "inputs": [
{ {
"fulfillment": "pGSAIDE5i63cn4X8T8N1sZ2mGkJD5lNRnBM4PZgI_zvzbr-cgUCWcUaLa2U-nkmZ6oYj14aeV6B4TJH2NvZ8k2ZTwcGiaiCGXDQT2dEPfMCFwM8lwSousafCu4c7EgVZ1GzUDjsN", "fulfillment": "pGSAIDE5i63cn4X8T8N1sZ2mGkJD5lNRnBM4PZgI_zvzbr-cgUDklzRb5aUQz9slbaqSWap1AfC-cacTCN3CGtFy2LPK7JKEqKG2b0KQXnUcFksk_KH_v6ImFXHsclKSp1OJkIEI",
"fulfills": null, "fulfills": null,
"owners_before": [ "owners_before": [
"4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD" "4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD"
@ -37,5 +35,5 @@ Content-Type: application/json
] ]
} }
], ],
"version": "2.0" "version": "3.0"
} }

View File

@ -4,15 +4,13 @@ Content-Type: application/json
{ {
"assets": [ "assets": [
{ {
"data": { "data": "QmQP5C3PmhH9oB84n7YqSY4WVqmYatdoo1BdwhH4zmcwqM"
"msg": "Hello Planetmint!"
}
} }
], ],
"id": "61e1312b80705e0dabb948c9d78dae7f62d64832abda822b13d89c4a7305d4ac", "id": "0fdeb547670bbea980389df53cf5a91e60159339084c6b0b5cc0b5494a679530",
"inputs": [ "inputs": [
{ {
"fulfillment": "pGSAIDE5i63cn4X8T8N1sZ2mGkJD5lNRnBM4PZgI_zvzbr-cgUCWcUaLa2U-nkmZ6oYj14aeV6B4TJH2NvZ8k2ZTwcGiaiCGXDQT2dEPfMCFwM8lwSousafCu4c7EgVZ1GzUDjsN", "fulfillment": "pGSAIDE5i63cn4X8T8N1sZ2mGkJD5lNRnBM4PZgI_zvzbr-cgUDklzRb5aUQz9slbaqSWap1AfC-cacTCN3CGtFy2LPK7JKEqKG2b0KQXnUcFksk_KH_v6ImFXHsclKSp1OJkIEI",
"fulfills": null, "fulfills": null,
"owners_before": [ "owners_before": [
"4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD" "4K9sWUMFwTgaDGPfdynrbxWqWS6sWmKbZoTjxLtVUibD"
@ -36,5 +34,5 @@ Content-Type: application/json
] ]
} }
], ],
"version": "2.0" "version": "3.0"
} }

View File

@ -3,14 +3,12 @@
# SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0) # SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0)
# Code is Apache-2.0 and docs are CC-BY-4.0 # Code is Apache-2.0 and docs are CC-BY-4.0
import tarantool
import logging import logging
from itertools import repeat from itertools import repeat
from importlib import import_module from importlib import import_module
from transactions.common.exceptions import ConfigurationError from transactions.common.exceptions import ConfigurationError
from planetmint.config import Config from planetmint.config import Config
from planetmint.backend.exceptions import ConnectionError
BACKENDS = { BACKENDS = {
"tarantool_db": "planetmint.backend.tarantool.connection.TarantoolDBConnection", "tarantool_db": "planetmint.backend.tarantool.connection.TarantoolDBConnection",
@ -69,6 +67,7 @@ class DBConnection(metaclass=DBSingleton):
**kwargs **kwargs
): ):
"""Create a new :class:`~.Connection` instance. """Create a new :class:`~.Connection` instance.
Args: Args:
host (str): the host to connect to. host (str): the host to connect to.
port (int): the port to connect to. port (int): the port to connect to.

View File

@ -27,12 +27,12 @@ def store_asset(asset: dict, connection):
@singledispatch @singledispatch
def store_assets(assets: list, connection): def store_assets(assets: list, connection):
"""Write a list of assets to the assets table. """Write a list of assets to the assets table.
backend
Args:
assets (list): a list of assets to write.
Returns: Args:
The database response. assets (list): a list of assets to write.
Returns:
The database response.
""" """
raise NotImplementedError raise NotImplementedError
@ -193,6 +193,7 @@ def get_metadata(connection, transaction_ids):
@singledispatch @singledispatch
def get_assets(connection, asset_ids) -> list: def get_assets(connection, asset_ids) -> list:
"""Get a list of assets from the assets table. """Get a list of assets from the assets table.
Args: Args:
asset_ids (list): a list of ids for the assets to be retrieved from asset_ids (list): a list of ids for the assets to be retrieved from
the database. the database.

View File

@ -9,7 +9,8 @@ import tarantool
from planetmint.config import Config from planetmint.config import Config
from transactions.common.exceptions import ConfigurationError from transactions.common.exceptions import ConfigurationError
from planetmint.utils import Lazy from planetmint.utils import Lazy
from planetmint.backend.connection import DBConnection, ConnectionError from planetmint.backend.connection import DBConnection
from planetmint.backend.exceptions import ConnectionError
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)

View File

@ -579,7 +579,7 @@ class Planetmint(object):
asset from the asset table and reconstructs the transaction. asset from the asset table and reconstructs the transaction.
Args: Args:
tx_dict_list (:list:`dict` or :obj:`dict`): The transaction dict or tx_dict_list (:obj:`list` of :dict: or :obj:`dict`): The transaction dict or
list of transaction dict as returned from the database. list of transaction dict as returned from the database.
Returns: Returns:

View File

@ -3,7 +3,7 @@
# SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0) # SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0)
# Code is Apache-2.0 and docs are CC-BY-4.0 # Code is Apache-2.0 and docs are CC-BY-4.0
__version__ = "1.4.0" __version__ = "1.4.1"
__short_version__ = "1.4" __short_version__ = "1.4"
# Supported Tendermint versions # Supported Tendermint versions

View File

@ -103,7 +103,6 @@ tests_require = [
"pytest-flask", "pytest-flask",
"pytest-aiohttp", "pytest-aiohttp",
"pytest-asyncio", "pytest-asyncio",
"tox",
] + docs_require ] + docs_require
install_requires = [ install_requires = [
@ -130,7 +129,7 @@ install_requires = [
"planetmint-ipld>=0.0.3", "planetmint-ipld>=0.0.3",
"pyasn1>=0.4.8", "pyasn1>=0.4.8",
"python-decouple", "python-decouple",
"planetmint-transactions>=0.4.1", "planetmint-transactions>=0.5.0",
] ]
setup( setup(

View File

@ -56,11 +56,11 @@ def test_zenroom_signing():
biolabs = generate_key_pair() biolabs = generate_key_pair()
version = "3.0" version = "3.0"
alice = json.loads(zencode_exec(GENERATE_KEYPAIR).output)["keyring"] alice = json.loads(zencode_exec(GENERATE_KEYPAIR).output)
bob = json.loads(zencode_exec(GENERATE_KEYPAIR).output)["keyring"] bob = json.loads(zencode_exec(GENERATE_KEYPAIR).output)
zen_public_keys = json.loads(zencode_exec(SK_TO_PK.format("Alice"), keys=json.dumps({"keyring": alice})).output) zen_public_keys = json.loads(zencode_exec(SK_TO_PK.format("Alice"), keys=json.dumps(alice)).output)
zen_public_keys.update(json.loads(zencode_exec(SK_TO_PK.format("Bob"), keys=json.dumps({"keyring": bob})).output)) zen_public_keys.update(json.loads(zencode_exec(SK_TO_PK.format("Bob"), keys=json.dumps(bob)).output))
zenroomscpt = ZenroomSha256(script=FULFILL_SCRIPT, data=INITIAL_STATE, keys=zen_public_keys) zenroomscpt = ZenroomSha256(script=FULFILL_SCRIPT, data=INITIAL_STATE, keys=zen_public_keys)
print(f"zenroom is: {zenroomscpt.script}") print(f"zenroom is: {zenroomscpt.script}")

View File

@ -7,7 +7,7 @@ import pytest
def test_get_connection_raises_a_configuration_error(monkeypatch): def test_get_connection_raises_a_configuration_error(monkeypatch):
from planetmint.backend.connection import ConnectionError from planetmint.backend.exceptions import ConnectionError
from planetmint.backend.tarantool.connection import TarantoolDBConnection from planetmint.backend.tarantool.connection import TarantoolDBConnection
with pytest.raises(ConnectionError): with pytest.raises(ConnectionError):

View File

@ -9,7 +9,8 @@ from planetmint.version import __tm_supported_versions__
from transactions.types.assets.create import Create from transactions.types.assets.create import Create
from transactions.types.assets.transfer import Transfer from transactions.types.assets.transfer import Transfer
from transactions.common.exceptions import ConfigurationError from transactions.common.exceptions import ConfigurationError
from planetmint.backend.connection import Connection, ConnectionError from planetmint.backend.connection import Connection
from planetmint.backend.exceptions import ConnectionError
@pytest.fixture @pytest.fixture

31
tox.ini
View File

@ -1,31 +0,0 @@
[tox]
skipsdist = true
envlist = py{39}, docsroot
[gh-actions]
python =
3.9 = docsroot
[base]
basepython = python3.9
deps = pip>=9.0.1
[testenv]
usedevelop = True
setenv =
PYTHONPATH={toxinidir}:{toxinidir}/planetmint
deps = {[base]deps}
install_command = pip install {opts} {packages}
extras = test
commands = pytest -v -n auto --cov=planetmint --basetemp={envtmpdir}
[testenv:docsroot]
basepython = {[base]basepython}
changedir = docs/root/source
deps =
{[base]deps}
typing-extensions
-r{toxinidir}/docs/root/requirements.txt
extras = None
commands = sphinx-build -b html -d {envtmpdir}/doctrees . {envtmpdir}/html