diff options
Diffstat (limited to 'python-packages/order_utils/setup.py')
-rwxr-xr-x | python-packages/order_utils/setup.py | 230 |
1 files changed, 0 insertions, 230 deletions
diff --git a/python-packages/order_utils/setup.py b/python-packages/order_utils/setup.py deleted file mode 100755 index 6f9465680..000000000 --- a/python-packages/order_utils/setup.py +++ /dev/null @@ -1,230 +0,0 @@ -#!/usr/bin/env python - -"""setuptools module for order_utils package.""" - -import subprocess # nosec -from shutil import rmtree -from os import environ, path -from pathlib import Path -from sys import argv - -from distutils.command.clean import clean -import distutils.command.build_py -from setuptools import find_packages, setup -from setuptools.command.test import test as TestCommand - - -class TestCommandExtension(TestCommand): - """Run pytest tests.""" - - def run_tests(self): - """Invoke pytest.""" - import pytest - - exit(pytest.main(["--doctest-modules"])) - - -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 src test setup.py".split(), - # style guide checker (formerly pep8): - "pycodestyle src test setup.py".split(), - # docstring style checker: - "pydocstyle src test setup.py".split(), - # static type checker: - "mypy src test setup.py".split(), - # security issue checker: - "bandit -r src ./setup.py".split(), - # general linter: - "pylint src test setup.py".split(), - # pylint takes relatively long to run, so it runs last, to enable - # fast failures. - ] - - # tell mypy where to find interface stubs for 3rd party libs - environ["MYPYPATH"] = path.join( - path.dirname(path.realpath(argv[0])), "stubs" - ) - - # HACK(gene): until eth_abi releases - # https://github.com/ethereum/eth-abi/pull/107 , we need to simply - # create an empty file `py.typed` in the eth_abi package directory. - import eth_abi - - eth_abi_dir = path.dirname(path.realpath(eth_abi.__file__)) - Path(path.join(eth_abi_dir, "py.typed")).touch() - - # HACK(gene): until eth_utils fixes - # https://github.com/ethereum/eth-utils/issues/140 , we need to simply - # create an empty file `py.typed` in the eth_abi package directory. - import eth_utils - - eth_utils_dir = path.dirname(path.realpath(eth_utils.__file__)) - Path(path.join(eth_utils_dir, "py.typed")).touch() - - for lint_command in lint_commands: - print( - "Running lint command `", " ".join(lint_command).strip(), "`" - ) - subprocess.check_call(lint_command) # nosec - - -class CleanCommandExtension(clean): - """Custom command to do custom cleanup.""" - - def run(self): - """Run the regular clean, followed by our custom commands.""" - super().run() - rmtree("dist", ignore_errors=True) - rmtree(".mypy_cache", ignore_errors=True) - rmtree(".tox", ignore_errors=True) - rmtree(".pytest_cache", ignore_errors=True) - rmtree("src/0x_order_utils.egg-info", ignore_errors=True) - - -class TestPublishCommand(distutils.command.build_py.build_py): - """Custom command to publish to test.pypi.org.""" - - description = ( - "Publish dist/* to test.pypi.org. Run sdist & bdist_wheel first." - ) - - def run(self): - """Run twine to upload to test.pypi.org.""" - subprocess.check_call( # nosec - ( - "twine upload --repository-url https://test.pypi.org/legacy/" - + " --verbose dist/*" - ).split() - ) - - -class PublishCommand(distutils.command.build_py.build_py): - """Custom command to publish to pypi.org.""" - - description = "Publish dist/* to pypi.org. Run sdist & bdist_wheel first." - - def run(self): - """Run twine to upload to pypi.org.""" - subprocess.check_call("twine upload dist/*".split()) # nosec - - -class PublishDocsCommand(distutils.command.build_py.build_py): - """Custom command to publish docs to S3.""" - - description = ( - "Publish docs to " - + "http://0x-order-utils-py.s3-website-us-east-1.amazonaws.com/" - ) - - def run(self): - """Run npm package `discharge` to build & upload docs.""" - subprocess.check_call("discharge deploy".split()) # nosec - - -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 - - -with open("README.md", "r") as file_handle: - README_MD = file_handle.read() - - -setup( - name="0x-order-utils", - version="1.0.1", - description="Order utilities for 0x applications", - long_description=README_MD, - long_description_content_type="text/markdown", - url="https://github.com/0xproject/0x-monorepo/python-packages/order_utils", - author="F. Eugene Aumson", - author_email="feuGeneA@users.noreply.github.com", - cmdclass={ - "clean": CleanCommandExtension, - "lint": LintCommand, - "test": TestCommandExtension, - "test_publish": TestPublishCommand, - "publish": PublishCommand, - "publish_docs": PublishDocsCommand, - "ganache": GanacheCommand, - }, - install_requires=[ - "0x-contract-addresses", - "0x-contract-artifacts", - "0x-json-schemas", - "eth-abi", - "eth_utils", - "hypothesis>=3.31.2", # HACK! this is web3's dependency! - # above works around https://github.com/ethereum/web3.py/issues/1179 - "mypy_extensions", - "web3", - ], - extras_require={ - "dev": [ - "bandit", - "black", - "coverage", - "coveralls", - "mypy", - "mypy_extensions", - "pycodestyle", - "pydocstyle", - "pylint", - "pytest", - "sphinx", - "sphinx-autodoc-typehints", - "tox", - "twine", - ] - }, - python_requires=">=3.6, <4", - package_data={"zero_ex.order_utils": ["py.typed"]}, - package_dir={"": "src"}, - license="Apache 2.0", - keywords=( - "ethereum cryptocurrency 0x decentralized blockchain dex exchange" - ), - namespace_packages=["zero_ex"], - packages=find_packages("src"), - classifiers=[ - "Development Status :: 2 - Pre-Alpha", - "Intended Audience :: Developers", - "Intended Audience :: Financial and Insurance Industry", - "License :: OSI Approved :: Apache Software License", - "Natural Language :: English", - "Operating System :: OS Independent", - "Programming Language :: Python", - "Programming Language :: Python :: 3 :: Only", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Topic :: Internet :: WWW/HTTP", - "Topic :: Office/Business :: Financial", - "Topic :: Other/Nonlisted Topic", - "Topic :: Security :: Cryptography", - "Topic :: Software Development :: Libraries", - "Topic :: Utilities", - ], - zip_safe=False, # required per mypy - command_options={ - "build_sphinx": { - "source_dir": ("setup.py", "src"), - "build_dir": ("setup.py", "build/docs"), - } - }, -) |