New demos for Python packages (#1734)
End-to-end demos of constructing and signing an order and submitting it to a Relayer. Docs are generated from the code, and include usage examples that are verified through automated testing.
This commit is contained in:
committed by
F. Eugene Aumson
parent
28c4ca73ab
commit
3099ba71eb
@@ -1,14 +1,16 @@
|
||||
#!/usr/bin/env python
|
||||
# coding: utf-8
|
||||
|
||||
"""setuptools module for sra_client package."""
|
||||
|
||||
import subprocess
|
||||
import subprocess # nosec
|
||||
import distutils.command.build_py
|
||||
|
||||
from setuptools import setup, find_packages # noqa: H301
|
||||
from setuptools.command.test import test as TestCommand
|
||||
|
||||
NAME = "0x-sra-client"
|
||||
VERSION = "1.0.0"
|
||||
VERSION = "1.0.1"
|
||||
# To install the library, run the following
|
||||
#
|
||||
# python setup.py install
|
||||
@@ -21,6 +23,17 @@ with open("README.md", "r") as file_handle:
|
||||
|
||||
REQUIRES = ["urllib3 >= 1.15", "six >= 1.10", "certifi", "python-dateutil"]
|
||||
|
||||
|
||||
class TestCommandExtension(TestCommand):
|
||||
"""Run pytest tests."""
|
||||
|
||||
def run_tests(self):
|
||||
"""Invoke pytest."""
|
||||
import pytest
|
||||
|
||||
exit(pytest.main(["--doctest-modules"]))
|
||||
|
||||
|
||||
class TestPublishCommand(distutils.command.build_py.build_py):
|
||||
"""Custom command to publish to test.pypi.org."""
|
||||
|
||||
@@ -38,6 +51,59 @@ class TestPublishCommand(distutils.command.build_py.build_py):
|
||||
)
|
||||
|
||||
|
||||
class GanacheCommand(distutils.command.build_py.build_py):
|
||||
"""Custom command to publish to pypi.org."""
|
||||
|
||||
description = "Run ganache daemon to support tests."
|
||||
|
||||
def run(self):
|
||||
"""Run ganache."""
|
||||
cmd_line = (
|
||||
"docker run -d -p 8545:8545 0xorg/ganache-cli:2.2.2"
|
||||
).split()
|
||||
subprocess.call(cmd_line) # nosec
|
||||
|
||||
|
||||
class LaunchKitCommand(distutils.command.build_py.build_py):
|
||||
"""Custom command to boot up a local 0x-launch-kit in docker."""
|
||||
|
||||
description = "Run launch-kit daemon to support sra_client demos."
|
||||
|
||||
def run(self):
|
||||
"""Run 0x-launch-kit."""
|
||||
cmd_line = ("docker run -d -p 3000:3000 0xorg/launch-kit-ci").split()
|
||||
subprocess.call(cmd_line) # nosec
|
||||
|
||||
|
||||
class LintCommand(distutils.command.build_py.build_py):
|
||||
"""Custom setuptools command class for running linters."""
|
||||
|
||||
description = "Run linters"
|
||||
|
||||
def run(self):
|
||||
"""Run linter shell commands."""
|
||||
lint_commands = [
|
||||
# formatter:
|
||||
"black --line-length 79 --check --diff test sra_client/__init__.py setup.py".split(), # noqa: E501 (line too long)
|
||||
# style guide checker (formerly pep8):
|
||||
"pycodestyle test sra_client/__init__.py setup.py".split(),
|
||||
# docstring style checker:
|
||||
"pydocstyle src test sra_client/__init__.py setup.py".split(),
|
||||
# static type checker:
|
||||
"bandit -r test sra_client/__init__.py setup.py".split(),
|
||||
# general linter:
|
||||
"pylint test sra_client/__init__.py setup.py".split(),
|
||||
# pylint takes relatively long to run, so it runs last, to enable
|
||||
# fast failures.
|
||||
]
|
||||
|
||||
for lint_command in lint_commands:
|
||||
print(
|
||||
"Running lint command `", " ".join(lint_command).strip(), "`"
|
||||
)
|
||||
subprocess.check_call(lint_command) # nosec
|
||||
|
||||
|
||||
class PublishCommand(distutils.command.build_py.build_py):
|
||||
"""Custom command to publish to pypi.org."""
|
||||
|
||||
@@ -48,13 +114,17 @@ class PublishCommand(distutils.command.build_py.build_py):
|
||||
subprocess.check_call("twine upload dist/*".split()) # nosec
|
||||
|
||||
|
||||
class LintCommand(distutils.command.build_py.build_py):
|
||||
"""No-op lint command to support top-level lint script."""
|
||||
class PublishDocsCommand(distutils.command.build_py.build_py):
|
||||
"""Custom command to publish docs to S3."""
|
||||
|
||||
description = "No-op"
|
||||
description = (
|
||||
"Publish docs to "
|
||||
+ "http://0x-sra-demos-py.s3-website-us-east-1.amazonaws.com/"
|
||||
)
|
||||
|
||||
def run(self):
|
||||
pass
|
||||
"""Run npm package `discharge` to build & upload docs."""
|
||||
subprocess.check_call("discharge deploy".split()) # nosec
|
||||
|
||||
|
||||
setup(
|
||||
@@ -72,6 +142,33 @@ setup(
|
||||
cmdclass={
|
||||
"test_publish": TestPublishCommand,
|
||||
"publish": PublishCommand,
|
||||
"launch_kit": LaunchKitCommand,
|
||||
"lint": LintCommand,
|
||||
"publish_docs": PublishDocsCommand,
|
||||
"test": TestCommandExtension,
|
||||
"ganache": GanacheCommand,
|
||||
},
|
||||
extras_require={
|
||||
"dev": [
|
||||
"0x-contract-addresses",
|
||||
"0x-order-utils",
|
||||
"0x-web3",
|
||||
"bandit",
|
||||
"black",
|
||||
"coverage",
|
||||
"coveralls",
|
||||
"pycodestyle",
|
||||
"pydocstyle",
|
||||
"pylint",
|
||||
"pytest",
|
||||
"sphinx",
|
||||
"sphinx-autodoc-typehints",
|
||||
]
|
||||
},
|
||||
command_options={
|
||||
"build_sphinx": {
|
||||
"source_dir": ("setup.py", "."),
|
||||
"build_dir": ("setup.py", "build/docs"),
|
||||
}
|
||||
},
|
||||
)
|
||||
|
Reference in New Issue
Block a user