From 9686f90b81dc04867c7ccb39f997d49539be0983 Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sat, 16 Jul 2022 21:15:56 -0500 Subject: [PATCH 01/18] feat: add poetry toml and lock files --- poetry.lock | 1194 ++++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 118 +++++ 2 files changed, 1312 insertions(+) create mode 100644 poetry.lock create mode 100644 pyproject.toml diff --git a/poetry.lock b/poetry.lock new file mode 100644 index 000000000..b88f0d1ea --- /dev/null +++ b/poetry.lock @@ -0,0 +1,1194 @@ +[[package]] +name = "alabaster" +version = "0.7.12" +description = "A configurable sidebar-enabled Sphinx theme" +category = "main" +optional = true +python-versions = "*" + +[[package]] +name = "atomicwrites" +version = "1.4.1" +description = "Atomic file writes." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "attrs" +version = "21.4.0" +description = "Classes Without Boilerplate" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[package.extras] +dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit", "cloudpickle"] +docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] +tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "cloudpickle"] +tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "cloudpickle"] + +[[package]] +name = "babel" +version = "2.10.3" +description = "Internationalization utilities" +category = "main" +optional = true +python-versions = ">=3.6" + +[package.dependencies] +pytz = ">=2015.7" + +[[package]] +name = "beautifulsoup4" +version = "4.11.1" +description = "Screen-scraping library" +category = "main" +optional = true +python-versions = ">=3.6.0" + +[package.dependencies] +soupsieve = ">1.2" + +[package.extras] +html5lib = ["html5lib"] +lxml = ["lxml"] + +[[package]] +name = "black" +version = "21.12b0" +description = "The uncompromising code formatter." +category = "dev" +optional = false +python-versions = ">=3.6.2" + +[package.dependencies] +click = ">=7.1.2" +mypy-extensions = ">=0.4.3" +pathspec = ">=0.9.0,<1" +platformdirs = ">=2" +tomli = ">=0.2.6,<2.0.0" +typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} +typing-extensions = ">=3.10.0.0" + +[package.extras] +colorama = ["colorama (>=0.4.3)"] +d = ["aiohttp (>=3.7.4)"] +jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] +python2 = ["typed-ast (>=1.4.3)"] +uvloop = ["uvloop (>=0.15.2)"] + +[[package]] +name = "certifi" +version = "2022.6.15" +description = "Python package for providing Mozilla's CA Bundle." +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "charset-normalizer" +version = "2.1.0" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "main" +optional = false +python-versions = ">=3.6.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + +[[package]] +name = "click" +version = "8.0.0" +description = "Composable command line interface toolkit" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[[package]] +name = "codecov" +version = "2.1.12" +description = "Hosted coverage reports for GitHub, Bitbucket and Gitlab" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[package.dependencies] +coverage = "*" +requests = ">=2.7.9" + +[[package]] +name = "colorama" +version = "0.4.5" +description = "Cross-platform colored terminal text." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "coverage" +version = "6.4.2" +description = "Code coverage measurement for Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +tomli = {version = "*", optional = true, markers = "python_full_version <= \"3.11.0a6\" and extra == \"toml\""} + +[package.extras] +toml = ["tomli"] + +[[package]] +name = "cycler" +version = "0.11.0" +description = "Composable style cycles" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "docutils" +version = "0.17.1" +description = "Docutils -- Python Documentation Utilities" +category = "main" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "flake8" +version = "3.8.3" +description = "the modular source code checker: pep8 pyflakes and co" +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" + +[package.dependencies] +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +mccabe = ">=0.6.0,<0.7.0" +pycodestyle = ">=2.6.0a1,<2.7.0" +pyflakes = ">=2.2.0,<2.3.0" + +[[package]] +name = "fonttools" +version = "4.34.4" +description = "Tools to manipulate font files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +all = ["fs (>=2.2.0,<3)", "lxml (>=4.0,<5)", "zopfli (>=0.1.4)", "lz4 (>=1.7.4.2)", "matplotlib", "sympy", "skia-pathops (>=0.5.0)", "uharfbuzz (>=0.23.0)", "brotlicffi (>=0.8.0)", "scipy", "brotli (>=1.0.1)", "munkres", "unicodedata2 (>=14.0.0)", "xattr"] +graphite = ["lz4 (>=1.7.4.2)"] +interpolatable = ["scipy", "munkres"] +lxml = ["lxml (>=4.0,<5)"] +pathops = ["skia-pathops (>=0.5.0)"] +plot = ["matplotlib"] +repacker = ["uharfbuzz (>=0.23.0)"] +symfont = ["sympy"] +type1 = ["xattr"] +ufo = ["fs (>=2.2.0,<3)"] +unicode = ["unicodedata2 (>=14.0.0)"] +woff = ["zopfli (>=0.1.4)", "brotlicffi (>=0.8.0)", "brotli (>=1.0.1)"] + +[[package]] +name = "idna" +version = "3.3" +description = "Internationalized Domain Names in Applications (IDNA)" +category = "main" +optional = false +python-versions = ">=3.5" + +[[package]] +name = "imagesize" +version = "1.4.1" +description = "Getting image size from png/jpeg/jpeg2000/gif file" +category = "main" +optional = true +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "importlib-metadata" +version = "4.12.0" +description = "Read metadata from Python packages" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} +zipp = ">=0.5" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)"] +perf = ["ipython"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "packaging", "pyfakefs", "flufl.flake8", "pytest-perf (>=0.9.2)", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)", "importlib-resources (>=1.3)"] + +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "jinja2" +version = "3.1.2" +description = "A very fast and expressive template engine." +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +MarkupSafe = ">=2.0" + +[package.extras] +i18n = ["Babel (>=2.7)"] + +[[package]] +name = "kiwisolver" +version = "1.4.4" +description = "A fast implementation of the Cassowary constraint solver" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +typing-extensions = {version = "*", markers = "python_version < \"3.8\""} + +[[package]] +name = "llvmlite" +version = "0.36.0" +description = "lightweight wrapper around basic LLVM functionality" +category = "main" +optional = false +python-versions = ">=3.6,<3.10" + +[[package]] +name = "markdown-it-py" +version = "2.1.0" +description = "Python port of markdown-it. Markdown parsing, done right!" +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +mdurl = ">=0.1,<1.0" +typing_extensions = {version = ">=3.7.4", markers = "python_version < \"3.8\""} + +[package.extras] +benchmarking = ["psutil", "pytest", "pytest-benchmark (>=3.2,<4.0)"] +code_style = ["pre-commit (==2.6)"] +compare = ["commonmark (>=0.9.1,<0.10.0)", "markdown (>=3.3.6,<3.4.0)", "mistletoe (>=0.8.1,<0.9.0)", "mistune (>=2.0.2,<2.1.0)", "panflute (>=2.1.3,<2.2.0)"] +linkify = ["linkify-it-py (>=1.0,<2.0)"] +plugins = ["mdit-py-plugins"] +profiling = ["gprof2dot"] +rtd = ["attrs", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx-book-theme"] +testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "markupsafe" +version = "2.1.1" +description = "Safely add untrusted strings to HTML/XML markup." +category = "main" +optional = true +python-versions = ">=3.7" + +[[package]] +name = "matplotlib" +version = "3.5.2" +description = "Python plotting package" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +cycler = ">=0.10" +fonttools = ">=4.22.0" +kiwisolver = ">=1.0.1" +numpy = ">=1.17" +packaging = ">=20.0" +pillow = ">=6.2.0" +pyparsing = ">=2.2.1" +python-dateutil = ">=2.7" +setuptools_scm = ">=4" + +[[package]] +name = "mccabe" +version = "0.6.1" +description = "McCabe checker, plugin for flake8" +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "mdit-py-plugins" +version = "0.3.0" +description = "Collection of plugins for markdown-it-py" +category = "main" +optional = true +python-versions = "~=3.6" + +[package.dependencies] +markdown-it-py = ">=1.0.0,<3.0.0" + +[package.extras] +code_style = ["pre-commit (==2.6)"] +rtd = ["myst-parser (>=0.14.0,<0.15.0)", "sphinx-book-theme (>=0.1.0,<0.2.0)"] +testing = ["coverage", "pytest (>=3.6,<4)", "pytest-cov", "pytest-regressions"] + +[[package]] +name = "mdurl" +version = "0.1.1" +description = "Markdown URL utilities" +category = "main" +optional = true +python-versions = ">=3.7" + +[[package]] +name = "mypy-extensions" +version = "0.4.3" +description = "Experimental type system extensions for programs checked with the mypy typechecker." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "myst-parser" +version = "0.17.2" +description = "An extended commonmark compliant parser, with bridges to docutils & sphinx." +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +docutils = ">=0.15,<0.18" +jinja2 = "*" +markdown-it-py = ">=1.0.0,<3.0.0" +mdit-py-plugins = ">=0.3.0,<0.4.0" +pyyaml = "*" +sphinx = ">=3.1,<5" +typing-extensions = "*" + +[package.extras] +code_style = ["pre-commit (>=2.12,<3.0)"] +linkify = ["linkify-it-py (>=1.0,<2.0)"] +rtd = ["ipython", "sphinx-book-theme", "sphinx-panels", "sphinxcontrib-bibtex (>=2.4,<3.0)", "sphinxext-rediraffe (>=0.2.7,<0.3.0)", "sphinxcontrib.mermaid (>=0.7.1,<0.8.0)", "sphinxext-opengraph (>=0.6.3,<0.7.0)"] +testing = ["beautifulsoup4", "coverage", "docutils (>=0.17.0,<0.18.0)", "pytest (>=6,<7)", "pytest-cov", "pytest-regressions", "pytest-param-files (>=0.3.4,<0.4.0)"] + +[[package]] +name = "numba" +version = "0.53.1" +description = "compiling Python code using LLVM" +category = "main" +optional = false +python-versions = ">=3.6,<3.10" + +[package.dependencies] +llvmlite = ">=0.36.0rc1,<0.37" +numpy = ">=1.15" + +[[package]] +name = "numpy" +version = "1.21.6" +description = "NumPy is the fundamental package for array computing with Python." +category = "main" +optional = false +python-versions = ">=3.7,<3.11" + +[[package]] +name = "numpydoc" +version = "1.4.0" +description = "Sphinx extension to support docstrings in Numpy format" +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +Jinja2 = ">=2.10" +sphinx = ">=3.0" + +[package.extras] +testing = ["pytest", "pytest-cov", "matplotlib"] + +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "main" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + +[[package]] +name = "pathspec" +version = "0.9.0" +description = "Utility library for gitignore style pattern matching of file paths." +category = "dev" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,>=2.7" + +[[package]] +name = "pillow" +version = "9.2.0" +description = "Python Imaging Library (Fork)" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] +tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] + +[[package]] +name = "platformdirs" +version = "2.5.2" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["furo (>=2021.7.5b38)", "proselint (>=0.10.2)", "sphinx-autodoc-typehints (>=1.12)", "sphinx (>=4)"] +test = ["appdirs (==1.4.4)", "pytest-cov (>=2.7)", "pytest-mock (>=3.6)", "pytest (>=6)"] + +[[package]] +name = "pluggy" +version = "1.0.0" +description = "plugin and hook calling mechanisms for python" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} + +[package.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" + +[[package]] +name = "pycodestyle" +version = "2.6.0" +description = "Python style guide checker" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pydata-sphinx-theme" +version = "0.8.1" +description = "Bootstrap-based Sphinx theme from the PyData community" +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +beautifulsoup4 = "*" +docutils = "!=0.17.0" +packaging = "*" +sphinx = ">=3.5.4,<5" + +[package.extras] +doc = ["numpydoc", "myst-parser", "pandas", "pytest", "pytest-regressions", "sphinxext-rediraffe", "sphinx-sitemap", "jupyter-sphinx", "plotly", "numpy", "xarray"] +test = ["pytest", "pydata-sphinx-theme"] +coverage = ["pytest-cov", "codecov", "pydata-sphinx-theme"] +dev = ["pyyaml", "pre-commit", "nox", "pydata-sphinx-theme"] + +[[package]] +name = "pyflakes" +version = "2.2.0" +description = "passive checker of Python programs" +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" + +[[package]] +name = "pygments" +version = "2.12.0" +description = "Pygments is a syntax highlighting package written in Python." +category = "main" +optional = true +python-versions = ">=3.6" + +[[package]] +name = "pyparsing" +version = "3.0.9" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "main" +optional = false +python-versions = ">=3.6.8" + +[package.extras] +diagrams = ["railroad-diagrams", "jinja2"] + +[[package]] +name = "pytest" +version = "7.1.2" +description = "pytest: simple powerful testing with Python" +category = "dev" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=19.2.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +iniconfig = "*" +packaging = "*" +pluggy = ">=0.12,<2.0" +py = ">=1.8.2" +tomli = ">=1.0.0" + +[package.extras] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] + +[[package]] +name = "pytest-cov" +version = "3.0.0" +description = "Pytest plugin for measuring coverage." +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +coverage = {version = ">=5.2.1", extras = ["toml"]} +pytest = ">=4.6" + +[package.extras] +testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"] + +[[package]] +name = "pytest-html" +version = "3.1.1" +description = "pytest plugin for generating HTML reports" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pytest = ">=5.0,<6.0.0 || >6.0.0" +pytest-metadata = "*" + +[[package]] +name = "pytest-metadata" +version = "2.0.2" +description = "pytest plugin for test session metadata" +category = "dev" +optional = false +python-versions = ">=3.7,<4.0" + +[package.dependencies] +pytest = ">=3.0.0,<8.0.0" + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pytz" +version = "2022.1" +description = "World timezone definitions, modern and historical" +category = "main" +optional = true +python-versions = "*" + +[[package]] +name = "pyyaml" +version = "6.0" +description = "YAML parser and emitter for Python" +category = "main" +optional = true +python-versions = ">=3.6" + +[[package]] +name = "readthedocs-sphinx-search" +version = "0.1.2" +description = "Sphinx extension to enable search as you type for docs hosted on Read the Docs." +category = "main" +optional = true +python-versions = ">=3.6" + +[[package]] +name = "requests" +version = "2.28.1" +description = "Python HTTP for Humans." +category = "main" +optional = false +python-versions = ">=3.7, <4" + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<3" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "scipy" +version = "1.7.3" +description = "SciPy: Scientific Library for Python" +category = "main" +optional = false +python-versions = ">=3.7,<3.11" + +[package.dependencies] +numpy = ">=1.16.5,<1.23.0" + +[[package]] +name = "setuptools-scm" +version = "7.0.5" +description = "the blessed package to manage your versions by scm tags" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.dependencies] +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +packaging = ">=20.0" +tomli = ">=1.0.0" +typing-extensions = "*" + +[package.extras] +test = ["pytest (>=6.2)", "virtualenv (>20)"] +toml = ["setuptools (>=42)"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" + +[[package]] +name = "snowballstemmer" +version = "2.2.0" +description = "This package provides 29 stemmers for 28 languages generated from Snowball algorithms." +category = "main" +optional = true +python-versions = "*" + +[[package]] +name = "soupsieve" +version = "2.3.2.post1" +description = "A modern CSS selector implementation for Beautiful Soup." +category = "main" +optional = true +python-versions = ">=3.6" + +[[package]] +name = "sphinx" +version = "4.5.0" +description = "Python documentation generator" +category = "main" +optional = true +python-versions = ">=3.6" + +[package.dependencies] +alabaster = ">=0.7,<0.8" +babel = ">=1.3" +colorama = {version = ">=0.3.5", markers = "sys_platform == \"win32\""} +docutils = ">=0.14,<0.18" +imagesize = "*" +importlib-metadata = {version = ">=4.4", markers = "python_version < \"3.10\""} +Jinja2 = ">=2.3" +packaging = "*" +Pygments = ">=2.0" +requests = ">=2.5.0" +snowballstemmer = ">=1.1" +sphinxcontrib-applehelp = "*" +sphinxcontrib-devhelp = "*" +sphinxcontrib-htmlhelp = ">=2.0.0" +sphinxcontrib-jsmath = "*" +sphinxcontrib-qthelp = "*" +sphinxcontrib-serializinghtml = ">=1.1.5" +sphinxcontrib-websupport = {version = "*", optional = true, markers = "extra == \"docs\""} + +[package.extras] +docs = ["sphinxcontrib-websupport"] +lint = ["flake8 (>=3.5.0)", "isort", "mypy (>=0.931)", "docutils-stubs", "types-typed-ast", "types-requests"] +test = ["pytest", "pytest-cov", "html5lib", "cython", "typed-ast"] + +[[package]] +name = "sphinx-autodoc-typehints" +version = "1.18.3" +description = "Type hints (PEP 484) support for the Sphinx autodoc extension" +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +Sphinx = ">=4.5" + +[package.extras] +testing = ["covdefaults (>=2.2)", "coverage (>=6.3)", "diff-cover (>=6.4)", "nptyping (>=2.1.2)", "pytest (>=7.1)", "pytest-cov (>=3)", "sphobjinv (>=2)", "typing-extensions (>=4.1)"] +type_comments = ["typed-ast (>=1.5.2)"] + +[[package]] +name = "sphinx-book-theme" +version = "0.3.2" +description = "A clean book theme for scientific explanations and documentation with Sphinx" +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +pydata-sphinx-theme = ">=0.8.0,<0.9.0" +pyyaml = "*" +sphinx = ">=3,<5" + +[package.extras] +code_style = ["pre-commit (>=2.7.0,<2.8.0)"] +doc = ["ablog (>=0.10.13,<0.11.0)", "ipywidgets", "folium", "numpy", "matplotlib", "numpydoc", "myst-nb (>=0.13,<1.0)", "nbclient", "pandas", "plotly", "sphinx (>=4.0,<5.0)", "sphinx-design", "sphinx-copybutton", "sphinx-tabs", "sphinx-togglebutton (>=0.2.1)", "sphinx-thebe (>=0.1.1)", "sphinxcontrib-bibtex (>=2.2,<3.0)", "sphinxcontrib-youtube", "sphinxext-opengraph"] +test = ["beautifulsoup4 (>=4.6.1,<5)", "coverage", "myst_nb (>=0.13,<1.0)", "pytest (>=6.0.1,<6.1.0)", "pytest-cov", "pytest-regressions (>=2.0.1,<2.1.0)", "sphinx-thebe"] + +[[package]] +name = "sphinxcontrib-applehelp" +version = "1.0.2" +description = "sphinxcontrib-applehelp is a sphinx extension which outputs Apple help books" +category = "main" +optional = true +python-versions = ">=3.5" + +[package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-devhelp" +version = "1.0.2" +description = "sphinxcontrib-devhelp is a sphinx extension which outputs Devhelp document." +category = "main" +optional = true +python-versions = ">=3.5" + +[package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-htmlhelp" +version = "2.0.0" +description = "sphinxcontrib-htmlhelp is a sphinx extension which renders HTML help files" +category = "main" +optional = true +python-versions = ">=3.6" + +[package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] +test = ["pytest", "html5lib"] + +[[package]] +name = "sphinxcontrib-jsmath" +version = "1.0.1" +description = "A sphinx extension which renders display math in HTML via JavaScript" +category = "main" +optional = true +python-versions = ">=3.5" + +[package.extras] +test = ["pytest", "flake8", "mypy"] + +[[package]] +name = "sphinxcontrib-qthelp" +version = "1.0.3" +description = "sphinxcontrib-qthelp is a sphinx extension which outputs QtHelp document." +category = "main" +optional = true +python-versions = ">=3.5" + +[package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-serializinghtml" +version = "1.1.5" +description = "sphinxcontrib-serializinghtml is a sphinx extension which outputs \"serialized\" HTML files (json and pickle)." +category = "main" +optional = true +python-versions = ">=3.5" + +[package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] +test = ["pytest"] + +[[package]] +name = "sphinxcontrib-websupport" +version = "1.2.4" +description = "Sphinx API for Web Apps" +category = "main" +optional = true +python-versions = ">=3.5" + +[package.dependencies] +sphinxcontrib-serializinghtml = "*" + +[package.extras] +lint = ["flake8"] +test = ["pytest", "sqlalchemy", "whoosh", "sphinx"] + +[[package]] +name = "tomli" +version = "1.2.3" +description = "A lil' TOML parser" +category = "main" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "tqdm" +version = "4.64.0" +description = "Fast, Extensible Progress Meter" +category = "main" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,>=2.7" + +[package.dependencies] +colorama = {version = "*", markers = "platform_system == \"Windows\""} + +[package.extras] +dev = ["py-make (>=0.1.0)", "twine", "wheel"] +notebook = ["ipywidgets (>=6)"] +slack = ["slack-sdk"] +telegram = ["requests"] + +[[package]] +name = "typed-ast" +version = "1.5.4" +description = "a fork of Python 2 and 3 ast modules with type comment support" +category = "dev" +optional = false +python-versions = ">=3.6" + +[[package]] +name = "typing-extensions" +version = "4.3.0" +description = "Backported and Experimental Type Hints for Python 3.7+" +category = "main" +optional = false +python-versions = ">=3.7" + +[[package]] +name = "urllib3" +version = "1.26.10" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "main" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*, <4" + +[package.extras] +brotli = ["brotlicffi (>=0.8.0)", "brotli (>=1.0.9)", "brotlipy (>=0.6.0)"] +secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "zipp" +version = "3.8.1" +description = "Backport of pathlib-compatible object wrapper for zip files" +category = "main" +optional = false +python-versions = ">=3.7" + +[package.extras] +docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tidelift (>=1.4)"] +testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] + +[extras] +docs = ["Sphinx", "sphinx-book-theme", "readthedocs-sphinx-search", "sphinx-autodoc-typehints", "myst-parser", "numpydoc"] + +[metadata] +lock-version = "1.1" +python-versions = ">=3.7,<3.10" +content-hash = "59e9b89074c0709e5766c2b93ff721bd3de680d26b51de05cd8122c6b1dbe5ea" + +[metadata.files] +alabaster = [ + {file = "alabaster-0.7.12-py2.py3-none-any.whl", hash = "sha256:446438bdcca0e05bd45ea2de1668c1d9b032e1a9154c2c259092d77031ddd359"}, + {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, +] +atomicwrites = [] +attrs = [ + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, +] +babel = [] +beautifulsoup4 = [ + {file = "beautifulsoup4-4.11.1-py3-none-any.whl", hash = "sha256:58d5c3d29f5a36ffeb94f02f0d786cd53014cf9b3b3951d42e0080d8a9498d30"}, + {file = "beautifulsoup4-4.11.1.tar.gz", hash = "sha256:ad9aa55b65ef2808eb405f46cf74df7fcb7044d5cbc26487f96eb2ef2e436693"}, +] +black = [] +certifi = [] +charset-normalizer = [] +click = [] +codecov = [] +colorama = [] +coverage = [] +cycler = [] +docutils = [] +flake8 = [] +fonttools = [] +idna = [ + {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, + {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, +] +imagesize = [] +importlib-metadata = [] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] +jinja2 = [ + {file = "Jinja2-3.1.2-py3-none-any.whl", hash = "sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61"}, + {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, +] +kiwisolver = [] +llvmlite = [] +markdown-it-py = [] +markupsafe = [ + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f121a1420d4e173a5d96e47e9a0c0dcff965afdf1626d28de1460815f7c4ee7a"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a49907dd8420c5685cfa064a1335b6754b74541bbb3706c259c02ed65b644b3e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10c1bfff05d95783da83491be968e8fe789263689c02724e0c691933c52994f5"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b7bd98b796e2b6553da7225aeb61f447f80a1ca64f41d83612e6139ca5213aa4"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b09bf97215625a311f669476f44b8b318b075847b49316d3e28c08e41a7a573f"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:694deca8d702d5db21ec83983ce0bb4b26a578e71fbdbd4fdcd387daa90e4d5e"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:efc1913fd2ca4f334418481c7e595c00aad186563bbc1ec76067848c7ca0a933"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win32.whl", hash = "sha256:4a33dea2b688b3190ee12bd7cfa29d39c9ed176bda40bfa11099a3ce5d3a7ac6"}, + {file = "MarkupSafe-2.1.1-cp310-cp310-win_amd64.whl", hash = "sha256:dda30ba7e87fbbb7eab1ec9f58678558fd9a6b8b853530e176eabd064da81417"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:671cd1187ed5e62818414afe79ed29da836dde67166a9fac6d435873c44fdd02"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3799351e2336dc91ea70b034983ee71cf2f9533cdff7c14c90ea126bfd95d65a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e72591e9ecd94d7feb70c1cbd7be7b3ebea3f548870aa91e2732960fa4d57a37"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fbf47b5d3728c6aea2abb0589b5d30459e369baa772e0f37a0320185e87c980"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:d5ee4f386140395a2c818d149221149c54849dfcfcb9f1debfe07a8b8bd63f9a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:bcb3ed405ed3222f9904899563d6fc492ff75cce56cba05e32eff40e6acbeaa3"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e1c0b87e09fa55a220f058d1d49d3fb8df88fbfab58558f1198e08c1e1de842a"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win32.whl", hash = "sha256:8dc1c72a69aa7e082593c4a203dcf94ddb74bb5c8a731e4e1eb68d031e8498ff"}, + {file = "MarkupSafe-2.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:97a68e6ada378df82bc9f16b800ab77cbf4b2fada0081794318520138c088e4a"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:e8c843bbcda3a2f1e3c2ab25913c80a3c5376cd00c6e8c4a86a89a28c8dc5452"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0212a68688482dc52b2d45013df70d169f542b7394fc744c02a57374a4207003"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e576a51ad59e4bfaac456023a78f6b5e6e7651dcd383bcc3e18d06f9b55d6d1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b9fe39a2ccc108a4accc2676e77da025ce383c108593d65cc909add5c3bd601"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96e37a3dc86e80bf81758c152fe66dbf60ed5eca3d26305edf01892257049925"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d0072fea50feec76a4c418096652f2c3238eaa014b2f94aeb1d56a66b41403f"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:089cf3dbf0cd6c100f02945abeb18484bd1ee57a079aefd52cffd17fba910b88"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6a074d34ee7a5ce3effbc526b7083ec9731bb3cbf921bbe1d3005d4d2bdb3a63"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win32.whl", hash = "sha256:421be9fbf0ffe9ffd7a378aafebbf6f4602d564d34be190fc19a193232fd12b1"}, + {file = "MarkupSafe-2.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:fc7b548b17d238737688817ab67deebb30e8073c95749d55538ed473130ec0c7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e04e26803c9c3851c931eac40c695602c6295b8d432cbe78609649ad9bd2da8a"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b87db4360013327109564f0e591bd2a3b318547bcef31b468a92ee504d07ae4f"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99a2a507ed3ac881b975a2976d59f38c19386d128e7a9a18b7df6fff1fd4c1d6"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:56442863ed2b06d19c37f94d999035e15ee982988920e12a5b4ba29b62ad1f77"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3ce11ee3f23f79dbd06fb3d63e2f6af7b12db1d46932fe7bd8afa259a5996603"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:33b74d289bd2f5e527beadcaa3f401e0df0a89927c1559c8566c066fa4248ab7"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:43093fb83d8343aac0b1baa75516da6092f58f41200907ef92448ecab8825135"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:8e3dcf21f367459434c18e71b2a9532d96547aef8a871872a5bd69a715c15f96"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win32.whl", hash = "sha256:d4306c36ca495956b6d568d276ac11fdd9c30a36f1b6eb928070dc5360b22e1c"}, + {file = "MarkupSafe-2.1.1-cp39-cp39-win_amd64.whl", hash = "sha256:46d00d6cfecdde84d40e572d63735ef81423ad31184100411e6e3388d405e247"}, + {file = "MarkupSafe-2.1.1.tar.gz", hash = "sha256:7f91197cc9e48f989d12e4e6fbc46495c446636dfc81b9ccf50bb0ec74b91d4b"}, +] +matplotlib = [] +mccabe = [ + {file = "mccabe-0.6.1-py2.py3-none-any.whl", hash = "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42"}, + {file = "mccabe-0.6.1.tar.gz", hash = "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"}, +] +mdit-py-plugins = [] +mdurl = [] +mypy-extensions = [ + {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, + {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, +] +myst-parser = [] +numba = [] +numpy = [ + {file = "numpy-1.21.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25"}, + {file = "numpy-1.21.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e"}, + {file = "numpy-1.21.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3820724272f9913b597ccd13a467cc492a0da6b05df26ea09e78b171a0bb9da6"}, + {file = "numpy-1.21.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f17e562de9edf691a42ddb1eb4a5541c20dd3f9e65b09ded2beb0799c0cf29bb"}, + {file = "numpy-1.21.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5f30427731561ce75d7048ac254dbe47a2ba576229250fb60f0fb74db96501a1"}, + {file = "numpy-1.21.6-cp310-cp310-win32.whl", hash = "sha256:d4bf4d43077db55589ffc9009c0ba0a94fa4908b9586d6ccce2e0b164c86303c"}, + {file = "numpy-1.21.6-cp310-cp310-win_amd64.whl", hash = "sha256:d136337ae3cc69aa5e447e78d8e1514be8c3ec9b54264e680cf0b4bd9011574f"}, + {file = "numpy-1.21.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6aaf96c7f8cebc220cdfc03f1d5a31952f027dda050e5a703a0d1c396075e3e7"}, + {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:67c261d6c0a9981820c3a149d255a76918278a6b03b6a036800359aba1256d46"}, + {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a6be4cb0ef3b8c9250c19cc122267263093eee7edd4e3fa75395dfda8c17a8e2"}, + {file = "numpy-1.21.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c4068a8c44014b2d55f3c3f574c376b2494ca9cc73d2f1bd692382b6dffe3db"}, + {file = "numpy-1.21.6-cp37-cp37m-win32.whl", hash = "sha256:7c7e5fa88d9ff656e067876e4736379cc962d185d5cd808014a8a928d529ef4e"}, + {file = "numpy-1.21.6-cp37-cp37m-win_amd64.whl", hash = "sha256:bcb238c9c96c00d3085b264e5c1a1207672577b93fa666c3b14a45240b14123a"}, + {file = "numpy-1.21.6-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:82691fda7c3f77c90e62da69ae60b5ac08e87e775b09813559f8901a88266552"}, + {file = "numpy-1.21.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:643843bcc1c50526b3a71cd2ee561cf0d8773f062c8cbaf9ffac9fdf573f83ab"}, + {file = "numpy-1.21.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:357768c2e4451ac241465157a3e929b265dfac85d9214074985b1786244f2ef3"}, + {file = "numpy-1.21.6-cp38-cp38-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:9f411b2c3f3d76bba0865b35a425157c5dcf54937f82bbeb3d3c180789dd66a6"}, + {file = "numpy-1.21.6-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:4aa48afdce4660b0076a00d80afa54e8a97cd49f457d68a4342d188a09451c1a"}, + {file = "numpy-1.21.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6a96eef20f639e6a97d23e57dd0c1b1069a7b4fd7027482a4c5c451cd7732f4"}, + {file = "numpy-1.21.6-cp38-cp38-win32.whl", hash = "sha256:5c3c8def4230e1b959671eb959083661b4a0d2e9af93ee339c7dada6759a9470"}, + {file = "numpy-1.21.6-cp38-cp38-win_amd64.whl", hash = "sha256:bf2ec4b75d0e9356edea834d1de42b31fe11f726a81dfb2c2112bc1eaa508fcf"}, + {file = "numpy-1.21.6-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:4391bd07606be175aafd267ef9bea87cf1b8210c787666ce82073b05f202add1"}, + {file = "numpy-1.21.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:67f21981ba2f9d7ba9ade60c9e8cbaa8cf8e9ae51673934480e45cf55e953673"}, + {file = "numpy-1.21.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee5ec40fdd06d62fe5d4084bef4fd50fd4bb6bfd2bf519365f569dc470163ab0"}, + {file = "numpy-1.21.6-cp39-cp39-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:1dbe1c91269f880e364526649a52eff93ac30035507ae980d2fed33aaee633ac"}, + {file = "numpy-1.21.6-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d9caa9d5e682102453d96a0ee10c7241b72859b01a941a397fd965f23b3e016b"}, + {file = "numpy-1.21.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58459d3bad03343ac4b1b42ed14d571b8743dc80ccbf27444f266729df1d6f5b"}, + {file = "numpy-1.21.6-cp39-cp39-win32.whl", hash = "sha256:7f5ae4f304257569ef3b948810816bc87c9146e8c446053539947eedeaa32786"}, + {file = "numpy-1.21.6-cp39-cp39-win_amd64.whl", hash = "sha256:e31f0bb5928b793169b87e3d1e070f2342b22d5245c755e2b81caa29756246c3"}, + {file = "numpy-1.21.6-pp37-pypy37_pp73-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:dd1c8f6bd65d07d3810b90d02eba7997e32abbdf1277a481d698969e921a3be0"}, + {file = "numpy-1.21.6.zip", hash = "sha256:ecb55251139706669fdec2ff073c98ef8e9a84473e51e716211b41aa0f18e656"}, +] +numpydoc = [] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] +pathspec = [ + {file = "pathspec-0.9.0-py2.py3-none-any.whl", hash = "sha256:7d15c4ddb0b5c802d161efc417ec1a2558ea2653c2e8ad9c19098201dc1c993a"}, + {file = "pathspec-0.9.0.tar.gz", hash = "sha256:e564499435a2673d586f6b2130bb5b95f04a3ba06f81b8f895b651a3c76aabb1"}, +] +pillow = [] +platformdirs = [ + {file = "platformdirs-2.5.2-py3-none-any.whl", hash = "sha256:027d8e83a2d7de06bbac4e5ef7e023c02b863d7ea5d079477e722bb41ab25788"}, + {file = "platformdirs-2.5.2.tar.gz", hash = "sha256:58c8abb07dcb441e6ee4b11d8df0ac856038f944ab98b7be6b27b2a3c7feef19"}, +] +pluggy = [ + {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, + {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, +] +py = [ + {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, + {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, +] +pycodestyle = [] +pydata-sphinx-theme = [] +pyflakes = [] +pygments = [ + {file = "Pygments-2.12.0-py3-none-any.whl", hash = "sha256:dc9c10fb40944260f6ed4c688ece0cd2048414940f1cea51b8b226318411c519"}, + {file = "Pygments-2.12.0.tar.gz", hash = "sha256:5eb116118f9612ff1ee89ac96437bb6b49e8f04d8a13b514ba26f620208e26eb"}, +] +pyparsing = [ + {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, + {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, +] +pytest = [ + {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, + {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, +] +pytest-cov = [ + {file = "pytest-cov-3.0.0.tar.gz", hash = "sha256:e7f0f5b1617d2210a2cabc266dfe2f4c75a8d32fb89eafb7ad9d06f6d076d470"}, + {file = "pytest_cov-3.0.0-py3-none-any.whl", hash = "sha256:578d5d15ac4a25e5f961c938b85a05b09fdaae9deef3bb6de9a6e766622ca7a6"}, +] +pytest-html = [] +pytest-metadata = [] +python-dateutil = [] +pytz = [ + {file = "pytz-2022.1-py2.py3-none-any.whl", hash = "sha256:e68985985296d9a66a881eb3193b0906246245294a881e7c8afe623866ac6a5c"}, + {file = "pytz-2022.1.tar.gz", hash = "sha256:1e760e2fe6a8163bc0b3d9a19c4f84342afa0a2affebfaa84b01b978a02ecaa7"}, +] +pyyaml = [ + {file = "PyYAML-6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4db7c7aef085872ef65a8fd7d6d09a14ae91f691dec3e87ee5ee0539d516f53"}, + {file = "PyYAML-6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9df7ed3b3d2e0ecfe09e14741b857df43adb5a3ddadc919a2d94fbdf78fea53c"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:77f396e6ef4c73fdc33a9157446466f1cff553d979bd00ecb64385760c6babdc"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a80a78046a72361de73f8f395f1f1e49f956c6be882eed58505a15f3e430962b"}, + {file = "PyYAML-6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f84fbc98b019fef2ee9a1cb3ce93e3187a6df0b2538a651bfb890254ba9f90b5"}, + {file = "PyYAML-6.0-cp310-cp310-win32.whl", hash = "sha256:2cd5df3de48857ed0544b34e2d40e9fac445930039f3cfe4bcc592a1f836d513"}, + {file = "PyYAML-6.0-cp310-cp310-win_amd64.whl", hash = "sha256:daf496c58a8c52083df09b80c860005194014c3698698d1a57cbcfa182142a3a"}, + {file = "PyYAML-6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:897b80890765f037df3403d22bab41627ca8811ae55e9a722fd0392850ec4d86"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50602afada6d6cbfad699b0c7bb50d5ccffa7e46a3d738092afddc1f9758427f"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:48c346915c114f5fdb3ead70312bd042a953a8ce5c7106d5bfb1a5254e47da92"}, + {file = "PyYAML-6.0-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:98c4d36e99714e55cfbaaee6dd5badbc9a1ec339ebfc3b1f52e293aee6bb71a4"}, + {file = "PyYAML-6.0-cp36-cp36m-win32.whl", hash = "sha256:0283c35a6a9fbf047493e3a0ce8d79ef5030852c51e9d911a27badfde0605293"}, + {file = "PyYAML-6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:07751360502caac1c067a8132d150cf3d61339af5691fe9e87803040dbc5db57"}, + {file = "PyYAML-6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:819b3830a1543db06c4d4b865e70ded25be52a2e0631ccd2f6a47a2822f2fd7c"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:473f9edb243cb1935ab5a084eb238d842fb8f404ed2193a915d1784b5a6b5fc0"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ce82d761c532fe4ec3f87fc45688bdd3a4c1dc5e0b4a19814b9009a29baefd4"}, + {file = "PyYAML-6.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:231710d57adfd809ef5d34183b8ed1eeae3f76459c18fb4a0b373ad56bedcdd9"}, + {file = "PyYAML-6.0-cp37-cp37m-win32.whl", hash = "sha256:c5687b8d43cf58545ade1fe3e055f70eac7a5a1a0bf42824308d868289a95737"}, + {file = "PyYAML-6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:d15a181d1ecd0d4270dc32edb46f7cb7733c7c508857278d3d378d14d606db2d"}, + {file = "PyYAML-6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0b4624f379dab24d3725ffde76559cff63d9ec94e1736b556dacdfebe5ab6d4b"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:213c60cd50106436cc818accf5baa1aba61c0189ff610f64f4a3e8c6726218ba"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fa600030013c4de8165339db93d182b9431076eb98eb40ee068700c9c813e34"}, + {file = "PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:277a0ef2981ca40581a47093e9e2d13b3f1fbbeffae064c1d21bfceba2030287"}, + {file = "PyYAML-6.0-cp38-cp38-win32.whl", hash = "sha256:d4eccecf9adf6fbcc6861a38015c2a64f38b9d94838ac1810a9023a0609e1b78"}, + {file = "PyYAML-6.0-cp38-cp38-win_amd64.whl", hash = "sha256:1e4747bc279b4f613a09eb64bba2ba602d8a6664c6ce6396a4d0cd413a50ce07"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:055d937d65826939cb044fc8c9b08889e8c743fdc6a32b33e2390f66013e449b"}, + {file = "PyYAML-6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:e61ceaab6f49fb8bdfaa0f92c4b57bcfbea54c09277b1b4f7ac376bfb7a7c174"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d67d839ede4ed1b28a4e8909735fc992a923cdb84e618544973d7dfc71540803"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cba8c411ef271aa037d7357a2bc8f9ee8b58b9965831d9e51baf703280dc73d3"}, + {file = "PyYAML-6.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:40527857252b61eacd1d9af500c3337ba8deb8fc298940291486c465c8b46ec0"}, + {file = "PyYAML-6.0-cp39-cp39-win32.whl", hash = "sha256:b5b9eccad747aabaaffbc6064800670f0c297e52c12754eb1d976c57e4f74dcb"}, + {file = "PyYAML-6.0-cp39-cp39-win_amd64.whl", hash = "sha256:b3d267842bf12586ba6c734f89d1f5b871df0273157918b0ccefa29deb05c21c"}, + {file = "PyYAML-6.0.tar.gz", hash = "sha256:68fb519c14306fec9720a2a5b45bc9f0c8d1b9c72adf45c37baedfcd949c35a2"}, +] +readthedocs-sphinx-search = [] +requests = [] +scipy = [] +setuptools-scm = [] +six = [] +snowballstemmer = [ + {file = "snowballstemmer-2.2.0-py2.py3-none-any.whl", hash = "sha256:c8e1716e83cc398ae16824e5572ae04e0d9fc2c6b985fb0f900f5f0c96ecba1a"}, + {file = "snowballstemmer-2.2.0.tar.gz", hash = "sha256:09b16deb8547d3412ad7b590689584cd0fe25ec8db3be37788be3810cbf19cb1"}, +] +soupsieve = [ + {file = "soupsieve-2.3.2.post1-py3-none-any.whl", hash = "sha256:3b2503d3c7084a42b1ebd08116e5f81aadfaea95863628c80a3b774a11b7c759"}, + {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, +] +sphinx = [] +sphinx-autodoc-typehints = [ + {file = "sphinx_autodoc_typehints-1.18.3-py3-none-any.whl", hash = "sha256:20294de2a818bda04953c5cb302ec5af46138c81980ad9efa6d8fc1fc4242518"}, + {file = "sphinx_autodoc_typehints-1.18.3.tar.gz", hash = "sha256:c04d8f8d70e988960e25b206af39a90df84e7e2c085bb24e123bc3684021b313"}, +] +sphinx-book-theme = [] +sphinxcontrib-applehelp = [ + {file = "sphinxcontrib-applehelp-1.0.2.tar.gz", hash = "sha256:a072735ec80e7675e3f432fcae8610ecf509c5f1869d17e2eecff44389cdbc58"}, + {file = "sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:806111e5e962be97c29ec4c1e7fe277bfd19e9652fb1a4392105b43e01af885a"}, +] +sphinxcontrib-devhelp = [ + {file = "sphinxcontrib-devhelp-1.0.2.tar.gz", hash = "sha256:ff7f1afa7b9642e7060379360a67e9c41e8f3121f2ce9164266f61b9f4b338e4"}, + {file = "sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl", hash = "sha256:8165223f9a335cc1af7ffe1ed31d2871f325254c0423bc0c4c7cd1c1e4734a2e"}, +] +sphinxcontrib-htmlhelp = [ + {file = "sphinxcontrib-htmlhelp-2.0.0.tar.gz", hash = "sha256:f5f8bb2d0d629f398bf47d0d69c07bc13b65f75a81ad9e2f71a63d4b7a2f6db2"}, + {file = "sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl", hash = "sha256:d412243dfb797ae3ec2b59eca0e52dac12e75a241bf0e4eb861e450d06c6ed07"}, +] +sphinxcontrib-jsmath = [ + {file = "sphinxcontrib-jsmath-1.0.1.tar.gz", hash = "sha256:a9925e4a4587247ed2191a22df5f6970656cb8ca2bd6284309578f2153e0c4b8"}, + {file = "sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl", hash = "sha256:2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178"}, +] +sphinxcontrib-qthelp = [ + {file = "sphinxcontrib-qthelp-1.0.3.tar.gz", hash = "sha256:4c33767ee058b70dba89a6fc5c1892c0d57a54be67ddd3e7875a18d14cba5a72"}, + {file = "sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl", hash = "sha256:bd9fc24bcb748a8d51fd4ecaade681350aa63009a347a8c14e637895444dfab6"}, +] +sphinxcontrib-serializinghtml = [ + {file = "sphinxcontrib-serializinghtml-1.1.5.tar.gz", hash = "sha256:aa5f6de5dfdf809ef505c4895e51ef5c9eac17d0f287933eb49ec495280b6952"}, + {file = "sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl", hash = "sha256:352a9a00ae864471d3a7ead8d7d79f5fc0b57e8b3f95e9867eb9eb28999b92fd"}, +] +sphinxcontrib-websupport = [] +tomli = [] +tqdm = [] +typed-ast = [] +typing-extensions = [] +urllib3 = [] +zipp = [] diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..bf494cb37 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,118 @@ +# Poetry pyproject.toml: https://python-poetry.org/docs/pyproject/ +[build-system] +requires = ["poetry_core>=1.0.0"] +build-backend = "poetry.core.masonry.api" + +[tool.poetry] +name = "pyelastica" +version = "0.3.0" +description = "Elastica is a software to simulate the dynamics of filaments that, at every cross-section, can undergo all six possible modes of deformation, allowing the filament to bend, twist, stretch and shear, while interacting with complex environments via muscular activity, surface contact, friction and hydrodynamics." +readme = "README.md" +authors = ["GazzolaLab "] +license = "MIT" +repository = "https://github.com/GazzolaLab/PyElastica" +homepage = "https://www.cosseratrods.org/" +documentation = "https://docs.cosseratrods.org/en/latest/" +keywords = [] + +# Pypi classifiers: https://pypi.org/classifiers/ +classifiers = [ +# Trove classifiers +# Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers +"License :: OSI Approved :: MIT License", +"Development Status :: 3 - Alpha", +"Programming Language :: Python", +"Programming Language :: Python :: 3.7", +"Programming Language :: Python :: 3.8", +"Programming Language :: Python :: 3.9", +"Programming Language :: Python :: Implementation :: CPython", +"Intended Audience :: Science/Research", +"Intended Audience :: Education", +] + +# ... +packages = [ + { include = "elastica" } +] + +[tool.poetry.dependencies] +python = ">=3.7,<3.10" +numba = "^0.53.0" +numpy = "^1.19.2" +scipy = "^1.5.2" +matplotlib = "^3.3.2" +tqdm = "^4.61.1" +Sphinx = {version = "^4.4.0", optional = true, extras = ["docs"]} +sphinx-book-theme = {version = "^0.3.2", optional = true, extras = ["docs"]} +readthedocs-sphinx-search = {version = "^0.1.1", optional = true, extras = ["docs"]} +sphinx-autodoc-typehints = {version = "^1.17.1", optional = true, extras = ["docs"]} +myst-parser = {version = "^0.17.2", optional = true, extras = ["docs"]} +numpydoc = {version = "^1.3.1", optional = true, extras = ["docs"]} +docutils = {version = "^0.17.1", optional = true, extras = ["docs"]} + +[tool.poetry.dev-dependencies] +black = "21.12b0" +pytest = "^7.1.1" +coverage = "^6.3.3" +pytest-html = "^3.1.1" +pytest-cov = "^3.0.0" +flake8 = "3.8.3" +codecov = "^2.1" +click = "8.0.0" + +[tool.poetry.extras] +docs = [ + "sphinx", + "sphinx-book-theme", + "readthedocs-sphinx-search", + "sphinx-autodoc-typehints", + "myst-parser", + "numpydoc", +] + +[tool.black] +# https://github.com/psf/black +target-version = ["py38"] +line-length = 88 +color = true +exclude = ''' +/( + \.git + | \.hg + | \.mypy_cache + | \.tox + | \.venv + | _build + | buck-out + | build + | dist + | env + | venv +)/ +''' + +[tool.pytest.ini_options] +# https://docs.pytest.org/en/6.2.x/customize.html#pyproject-toml +# Directories that are not visited by pytest collector: +norecursedirs =["hooks", "*.egg", ".eggs", "dist", "build", "docs", ".tox", ".git", "__pycache__"] +doctest_optionflags = ["NUMBER", "NORMALIZE_WHITESPACE", "IGNORE_EXCEPTION_DETAIL", "ELLIPSIS"] + +# Extra options: +addopts = [ + "--strict-markers", + "--tb=short", +# "--doctest-modules", TODO: Try to include pytest.doctest +# "--doctest-continue-on-failure", +] + +[tool.coverage.run] +source = ["tests"] + +[coverage.paths] +source = "elastica" + +[coverage.run] +branch = true + +[coverage.report] +show_missing = true From 1f905181a959465514d6bc7362eea03d71f8bc37 Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sat, 16 Jul 2022 21:16:23 -0500 Subject: [PATCH 02/18] refac: makefile modify for poetry --- Makefile | 81 ++++++++++++++++--- elastica/boundary_conditions.py | 2 +- elastica/rod/cosserat_rod.py | 4 +- elastica/timestepper/__init__.py | 2 +- .../flexible_swinging_pendulum.py | 2 +- .../PlectonemesCase/plectoneme_case.py | 2 +- .../SolenoidsCase/solenoid_case.py | 2 +- tests/test_rod_initialisation.py | 4 +- 8 files changed, 78 insertions(+), 21 deletions(-) diff --git a/Makefile b/Makefile index 4c032cbb6..ef794e370 100644 --- a/Makefile +++ b/Makefile @@ -1,19 +1,76 @@ -black: - @black --version - @black --required-version 21.12b0 elastica tests examples +#* Variables +PYTHON := python +PYTHONPATH := `pwd` + +#* Poetry +.PHONY: poetry-download +poetry-download: + curl -sSL https://install.python-poetry.org/ | $(PYTHON) - + +.PHONY: poetry-remove +poetry-remove: + curl -sSL https://install.python-poetry.org/ | $(PYTHON) - --uninstall + +#* Installation +.PHONY: install +install: + poetry lock -n && poetry export --without-hashes > requirements.txt + poetry install -n +#* Formatters +.PHONY: black +black: + poetry run black --version + poetry run black --config pyproject.toml --required-version 21.12b0 elastica tests examples -black_check: - @black --version - @find . -maxdepth 3 -name '*.py'\ - | while read -r src; do black --check "$$src"; done +.PHONY: black-check +black-check: + poetry run black --version + poetry run black --diff --check --config pyproject.toml elastica tests examples +.PHONY: flake8 flake8: - @flake8 --version - @flake8 elastica tests + poetry run flake8 --version + poetry run flake8 elastica tests + +.PHONY: format-codestyle +format-codestyle: black flake8 +.PHONY: test test: - @python -m pytest + poetry run pytest -c pyproject.toml --cov-report=html --cov=elastica tests/ + +.PHONY: check-codestyle +check-codestyle: black-check flake8 + +.PHONY: update-dev-deps +update-dev-deps: + poetry add -D pytest@latest coverage@latest pytest-html@latest pytest-cov@latest black@latest + +#* Cleaning +.PHONY: pycache-remove +pycache-remove: + find . | grep -E "(__pycache__|\.pyc|\.pyo$$)" | xargs rm -rf + +.PHONY: dsstore-remove +dsstore-remove: + find . | grep -E ".DS_Store" | xargs rm -rf + +.PHONY: ipynbcheckpoints-remove +ipynbcheckpoints-remove: + find . | grep -E ".ipynb_checkpoints" | xargs rm -rf + +.PHONY: pytestcache-remove +pytestcache-remove: + find . | grep -E ".pytest_cache" | xargs rm -rf + +.PHONY: build-remove +build-remove: + rm -rf build/ + +.PHONY: cleanup +cleanup: pycache-remove dsstore-remove ipynbcheckpoints-remove pytestcache-remove + +all: format-codestyle cleanup -all:black flake8 -ci:black_check flake8 +ci: check-codestyle \ No newline at end of file diff --git a/elastica/boundary_conditions.py b/elastica/boundary_conditions.py index cd8fa5b40..cc8823e5d 100644 --- a/elastica/boundary_conditions.py +++ b/elastica/boundary_conditions.py @@ -476,7 +476,7 @@ def __init__( twisting_time: float, slack: float, number_of_rotations: float, - **kwargs + **kwargs, ): """ diff --git a/elastica/rod/cosserat_rod.py b/elastica/rod/cosserat_rod.py index 8c9754b92..6af88e6b2 100644 --- a/elastica/rod/cosserat_rod.py +++ b/elastica/rod/cosserat_rod.py @@ -228,7 +228,7 @@ def straight_rod( nu: float, youngs_modulus: float, *args, - **kwargs + **kwargs, ): """ Cosserat rod constructor for straight-rod geometry. @@ -320,7 +320,7 @@ def straight_rod( nu, youngs_modulus, *args, - **kwargs + **kwargs, ) return cls( diff --git a/elastica/timestepper/__init__.py b/elastica/timestepper/__init__.py index e38a34f8d..5e275ec5f 100644 --- a/elastica/timestepper/__init__.py +++ b/elastica/timestepper/__init__.py @@ -78,7 +78,7 @@ def integrate( n_steps: int = 1000, restart_time: float = 0.0, progress_bar: bool = True, - **kwargs + **kwargs, ): """ diff --git a/examples/FlexibleSwingingPendulumCase/flexible_swinging_pendulum.py b/examples/FlexibleSwingingPendulumCase/flexible_swinging_pendulum.py index 4bb7e2033..78353226a 100644 --- a/examples/FlexibleSwingingPendulumCase/flexible_swinging_pendulum.py +++ b/examples/FlexibleSwingingPendulumCase/flexible_swinging_pendulum.py @@ -144,7 +144,7 @@ def plot_video( fps=60, step=1, *args, - **kwargs + **kwargs, ): # (time step, x/y/z, node) import matplotlib.animation as manimation diff --git a/examples/RodContactCase/RodSelfContact/PlectonemesCase/plectoneme_case.py b/examples/RodContactCase/RodSelfContact/PlectonemesCase/plectoneme_case.py index c844ecc08..fe99a9f9b 100644 --- a/examples/RodContactCase/RodSelfContact/PlectonemesCase/plectoneme_case.py +++ b/examples/RodContactCase/RodSelfContact/PlectonemesCase/plectoneme_case.py @@ -98,7 +98,7 @@ def __init__( twisting_time, time_twis_start, number_of_rotations, - **kwargs + **kwargs, ): super().__init__(**kwargs) self.twisting_time = twisting_time diff --git a/examples/RodContactCase/RodSelfContact/SolenoidsCase/solenoid_case.py b/examples/RodContactCase/RodSelfContact/SolenoidsCase/solenoid_case.py index 11b3958f3..91e78282f 100644 --- a/examples/RodContactCase/RodSelfContact/SolenoidsCase/solenoid_case.py +++ b/examples/RodContactCase/RodSelfContact/SolenoidsCase/solenoid_case.py @@ -95,7 +95,7 @@ def __init__( twisting_time, time_twis_start, number_of_rotations, - **kwargs + **kwargs, ): super().__init__(**kwargs) self.twisting_time = twisting_time diff --git a/tests/test_rod_initialisation.py b/tests/test_rod_initialisation.py index 28f522caa..308e845aa 100644 --- a/tests/test_rod_initialisation.py +++ b/tests/test_rod_initialisation.py @@ -103,7 +103,7 @@ def straight_rod( youngs_modulus, # poisson_ratio, *args, - **kwargs + **kwargs, ): ( @@ -155,7 +155,7 @@ def straight_rod( youngs_modulus, alpha_c=(27.0 / 28.0), *args, - **kwargs + **kwargs, ) return cls( From ee384934e19f21a45a9d966ff9db0c747f9b4de3 Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sat, 16 Jul 2022 21:34:37 -0500 Subject: [PATCH 03/18] refac: modify main CI for poetry --- .github/workflows/main.yml | 253 +++++++++++++++++++++++++------------ 1 file changed, 170 insertions(+), 83 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c85b14c84..697081428 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,110 +1,197 @@ -# This is a basic workflow to help you get started with Actions +## This is a basic workflow to help you get started with Actions +# +#name: CI +# +## Controls when the action will run. Triggers the workflow on push request +## events for the master branch, and pull request events for all branches. +#on: +# push: +# branches: [ master ] +# pull_request: +# branches: [ '**' ] +# +## A workflow run is made up of one or more jobs that can run sequentially or in parallel +#jobs: +# # This workflow contains a single job called "build" +# build: +# # The type of runner that the job will run on +# runs-on: ${{ matrix.os }} #ubuntu-latest +# +# strategy: +# matrix: +# os: [ubuntu-latest, macos-latest] #, windows-latest] # Run macos tests if really required, since they charge 10 times more for macos +# python-version: [3.6, 3.7, 3.8] +# +# # Steps represent a sequence of tasks that will be executed as part of the job +# steps: +# # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it +# - uses: actions/checkout@v2 +# +# # Ref: https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-python +# - name: Set up Python ${{ matrix.python-version }} +# uses: actions/setup-python@v2 +# with: +# python-version: ${{ matrix.python-version }} +# +# # You can test your matrix by printing the current Python version +# - name: Display Python version +# run: python -c "import sys; print(sys.version)" +# +# # Cache the pip requirmenets for other tests. If requirements cached use them to speed up the build. +# # Ref: https://github.com/actions/cache/blob/main/examples.md#python---pip +# - name: Cache pip Linux +# uses: actions/cache@v2 +# if: startsWith(runner.os, 'Linux') +# with: +# path: ~/.cache/pip +# key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} +# restore-keys: | +# ${{ runner.os }}-pip- +# - name: Cache pip MacOS +# uses: actions/cache@v2 +# if: startsWith(runner.os, 'macOS') +# with: +# path: ~/Library/Caches/pip +# key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} +# restore-keys: | +# ${{ runner.os }}-pip- +# +# - name: Cache pip Windows +# uses: actions/cache@v2 +# if: startsWith(runner.os, 'Windows') +# with: +# path: ~\AppData\Local\pip\Cache +# key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} +# restore-keys: | +# ${{ runner.os }}-pip- +# - name: Install dependencies +# run: | +# echo update pip +# python -m pip install --upgrade pip +# echo update requirments +# if [ -f requirements.txt ]; then pip install -r requirements.txt; fi +# echo update test requirements +# if [ -f tests/requirements.txt ]; then pip install -r tests/requirements.txt; fi +# +# # Runs a single command using the runners shell +# - name: Welcome message +# run: echo Hello, world! Welcome PyElastica Build, lets start testing! +# +# # Formatting test with black and flake8 +# - name: Black and Flake8 formatting tests +# run: | +# if [[ "${{ matrix.python-version }}" == "3.6" ]]; then +# black --version +# black --check elastica tests +# flake8 --version +# flake8 elastica tests +# fi +# +# # Set environment variables for coverage test. Coverage test is done using python 3.6 +# # For the coverage test we disable numba jit compilation, since it prevents generating coverage data. +# - name: Set environment variables for coverage test +# run: | +# if [[ "${{ matrix.python-version }}" == "3.6" ]]; then +# echo "NUMBA_DISABLE_JIT=1" >> $GITHUB_ENV +# fi +# +# # Test Pyelastica using pytest +# - name: Test PyElastica using pytest +# run: | +# if [[ "${{ matrix.python-version }}" == "3.6" ]]; then +# python3 -m pytest --cov=elastica --cov-report=xml +# codecov +# else +# python3 -m pytest +# fi +# - name: Upload coverage reports to Codecov with GitHub Action +# uses: codecov/codecov-action@v3 +# with: +# token: ${{ secrets.CODECOV_TOKEN }} name: CI -# Controls when the action will run. Triggers the workflow on push request -# events for the master branch, and pull request events for all branches. -on: - push: - branches: [ master ] - pull_request: - branches: [ '**' ] +on: [push, pull_request] -# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - # This workflow contains a single job called "build" build: - # The type of runner that the job will run on - runs-on: ${{ matrix.os }} #ubuntu-latest - + runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-latest, macos-latest] #, windows-latest] # Run macos tests if really required, since they charge 10 times more for macos - python-version: [3.6, 3.7, 3.8] - - # Steps represent a sequence of tasks that will be executed as part of the job + python-version: ["3.7", "3.8", "3.9"] + os: [ubuntu-latest, macos-latest, windows-latest] # Run macos tests if really required, since they charge 10 times more for macos + include: + - os: ubuntu-latest + path: ~/.cache/pip + - os: macos-latest + path: ~/Library/Caches/pip + - os: windows-latest + path: ~\AppData\Local\pip\Cache steps: - # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 - - # Ref: https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-python - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v2.2.2 with: python-version: ${{ matrix.python-version }} - - # You can test your matrix by printing the current Python version - - name: Display Python version - run: python -c "import sys; print(sys.version)" - - # Cache the pip requirmenets for other tests. If requirements cached use them to speed up the build. - # Ref: https://github.com/actions/cache/blob/main/examples.md#python---pip - - name: Cache pip Linux - uses: actions/cache@v2 - if: startsWith(runner.os, 'Linux') + - name: Install Poetry + uses: snok/install-poetry@v1 + - name: Set up cache + uses: actions/cache@v3 with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + path: ${{ matrix.path }} + key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}-${{ hashFiles('poetry.lock') }} restore-keys: | ${{ runner.os }}-pip- - - name: Cache pip MacOS - uses: actions/cache@v2 - if: startsWith(runner.os, 'macOS') + - name: Install dependencies + run: | + poetry config virtualenvs.in-project true + poetry install + # Test PyElastica using pytest + - name: Run tests + run: | + make test + report-coverage: # Report coverage from python 3.8 and mac-os. May change later + runs-on: ${{ matrix.os }} + strategy: + matrix: + python-version: ["3.8"] + os: [macos-latest] + include: + - os: macos-latest + path: ~/Library/Caches/pip + steps: + - uses: actions/checkout@v2 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2.2.2 with: - path: ~/Library/Caches/pip - key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} - restore-keys: | - ${{ runner.os }}-pip- - - - name: Cache pip Windows - uses: actions/cache@v2 - if: startsWith(runner.os, 'Windows') + python-version: ${{ matrix.python-version }} + - name: Install Poetry + uses: snok/install-poetry@v1 + - name: Set up cache + uses: actions/cache@v3 with: - path: ~\AppData\Local\pip\Cache - key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + path: ${{ matrix.path }} + key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('pyproject.toml') }}-${{ hashFiles('poetry.lock') }} restore-keys: | ${{ runner.os }}-pip- - name: Install dependencies run: | - echo update pip - python -m pip install --upgrade pip - echo update requirments - if [ -f requirements.txt ]; then pip install -r requirements.txt; fi - echo update test requirements - if [ -f tests/requirements.txt ]; then pip install -r tests/requirements.txt; fi - - # Runs a single command using the runners shell - - name: Welcome message - run: echo Hello, world! Welcome PyElastica Build, lets start testing! - - # Formatting test with black and flake8 - - name: Black and Flake8 formatting tests + poetry config virtualenvs.in-project true + poetry install + # Set environment variables for coverage test. Coverage test is done using python 3.8 + - name: Run style checks run: | - if [[ "${{ matrix.python-version }}" == "3.6" ]]; then - black --version - black --check elastica tests - flake8 --version - flake8 elastica tests - fi - - # Set environment variables for coverage test. Coverage test is done using python 3.6 - # For the coverage test we disable numba jit compilation, since it prevents generating coverage data. - - name: Set environment variables for coverage test - run: | - if [[ "${{ matrix.python-version }}" == "3.6" ]]; then - echo "NUMBA_DISABLE_JIT=1" >> $GITHUB_ENV - fi - - # Test Pyelastica using pytest + make check-codestyle - name: Test PyElastica using pytest + if: startsWith(runner.os, 'macOS') run: | - if [[ "${{ matrix.python-version }}" == "3.6" ]]; then - python3 -m pytest --cov=elastica --cov-report=xml - codecov - else - python3 -m pytest - fi - - name: Upload coverage reports to Codecov with GitHub Action - uses: codecov/codecov-action@v3 + poetry run pytest -c pyproject.toml --cov=elastica --cov-report=xml + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v2 with: token: ${{ secrets.CODECOV_TOKEN }} + env_vars: OS,PYTHON + fail_ci_if_error: true + flags: unittests + name: codecov-umbrella + verbose: true \ No newline at end of file From 9f8a5689cfaf96a571f69a706f2bbd13ede40c86 Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sat, 16 Jul 2022 21:52:45 -0500 Subject: [PATCH 04/18] refac: remove old CI from main.yml --- .github/workflows/main.yml | 139 +++++++------------------------------ 1 file changed, 26 insertions(+), 113 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 697081428..830f63f40 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,125 +1,24 @@ -## This is a basic workflow to help you get started with Actions -# -#name: CI -# -## Controls when the action will run. Triggers the workflow on push request -## events for the master branch, and pull request events for all branches. -#on: -# push: -# branches: [ master ] -# pull_request: -# branches: [ '**' ] -# -## A workflow run is made up of one or more jobs that can run sequentially or in parallel -#jobs: -# # This workflow contains a single job called "build" -# build: -# # The type of runner that the job will run on -# runs-on: ${{ matrix.os }} #ubuntu-latest -# -# strategy: -# matrix: -# os: [ubuntu-latest, macos-latest] #, windows-latest] # Run macos tests if really required, since they charge 10 times more for macos -# python-version: [3.6, 3.7, 3.8] -# -# # Steps represent a sequence of tasks that will be executed as part of the job -# steps: -# # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it -# - uses: actions/checkout@v2 -# -# # Ref: https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-python -# - name: Set up Python ${{ matrix.python-version }} -# uses: actions/setup-python@v2 -# with: -# python-version: ${{ matrix.python-version }} -# -# # You can test your matrix by printing the current Python version -# - name: Display Python version -# run: python -c "import sys; print(sys.version)" -# -# # Cache the pip requirmenets for other tests. If requirements cached use them to speed up the build. -# # Ref: https://github.com/actions/cache/blob/main/examples.md#python---pip -# - name: Cache pip Linux -# uses: actions/cache@v2 -# if: startsWith(runner.os, 'Linux') -# with: -# path: ~/.cache/pip -# key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} -# restore-keys: | -# ${{ runner.os }}-pip- -# - name: Cache pip MacOS -# uses: actions/cache@v2 -# if: startsWith(runner.os, 'macOS') -# with: -# path: ~/Library/Caches/pip -# key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} -# restore-keys: | -# ${{ runner.os }}-pip- -# -# - name: Cache pip Windows -# uses: actions/cache@v2 -# if: startsWith(runner.os, 'Windows') -# with: -# path: ~\AppData\Local\pip\Cache -# key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} -# restore-keys: | -# ${{ runner.os }}-pip- -# - name: Install dependencies -# run: | -# echo update pip -# python -m pip install --upgrade pip -# echo update requirments -# if [ -f requirements.txt ]; then pip install -r requirements.txt; fi -# echo update test requirements -# if [ -f tests/requirements.txt ]; then pip install -r tests/requirements.txt; fi -# -# # Runs a single command using the runners shell -# - name: Welcome message -# run: echo Hello, world! Welcome PyElastica Build, lets start testing! -# -# # Formatting test with black and flake8 -# - name: Black and Flake8 formatting tests -# run: | -# if [[ "${{ matrix.python-version }}" == "3.6" ]]; then -# black --version -# black --check elastica tests -# flake8 --version -# flake8 elastica tests -# fi -# -# # Set environment variables for coverage test. Coverage test is done using python 3.6 -# # For the coverage test we disable numba jit compilation, since it prevents generating coverage data. -# - name: Set environment variables for coverage test -# run: | -# if [[ "${{ matrix.python-version }}" == "3.6" ]]; then -# echo "NUMBA_DISABLE_JIT=1" >> $GITHUB_ENV -# fi -# -# # Test Pyelastica using pytest -# - name: Test PyElastica using pytest -# run: | -# if [[ "${{ matrix.python-version }}" == "3.6" ]]; then -# python3 -m pytest --cov=elastica --cov-report=xml -# codecov -# else -# python3 -m pytest -# fi -# - name: Upload coverage reports to Codecov with GitHub Action -# uses: codecov/codecov-action@v3 -# with: -# token: ${{ secrets.CODECOV_TOKEN }} - +# This is a basic workflow to help you get started with Actions name: CI -on: [push, pull_request] +# Controls when the action will run. Triggers the workflow on push request +# events for the master branch, and pull request events for all branches. +on: + push: + branches: [ master ] + pull_request: + branches: [ '**' ] +# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: + # This workflow contains a single job called "build" build: + # The type of runner that the job will run on runs-on: ${{ matrix.os }} strategy: matrix: python-version: ["3.7", "3.8", "3.9"] - os: [ubuntu-latest, macos-latest, windows-latest] # Run macos tests if really required, since they charge 10 times more for macos + os: [ubuntu-latest, macos-latest] #, windows-latest] # Run macos tests if really required, since they charge 10 times more for macos include: - os: ubuntu-latest path: ~/.cache/pip @@ -127,12 +26,19 @@ jobs: path: ~/Library/Caches/pip - os: windows-latest path: ~\AppData\Local\pip\Cache + # Steps represent a sequence of tasks that will be executed as part of the job steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v2 + # Ref: https://docs.github.com/en/free-pro-team@latest/actions/guides/building-and-testing-python - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v2.2.2 with: python-version: ${{ matrix.python-version }} + # You can test your matrix by printing the current Python version + - name: Display Python version + run: python -c "import sys; print(sys.version)" + # Install Poetry and dependencies - name: Install Poetry uses: snok/install-poetry@v1 - name: Set up cache @@ -146,6 +52,13 @@ jobs: run: | poetry config virtualenvs.in-project true poetry install + # Runs a single command using the runners shell + - name: Welcome message + run: echo Hello, world! Welcome PyElastica Build, lets start testing! + # Run style checks (black and flake8) + - name: Run style checks + run: | + make check-codestyle # Test PyElastica using pytest - name: Run tests run: | From 60fbb0bc808ac4935787ad1eeb1ab05ee3c50f8c Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sat, 16 Jul 2022 22:07:38 -0500 Subject: [PATCH 05/18] fix: remove codecov unwanted options and windows cache call --- .github/workflows/main.yml | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 830f63f40..fb52d8b7d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -24,8 +24,8 @@ jobs: path: ~/.cache/pip - os: macos-latest path: ~/Library/Caches/pip - - os: windows-latest - path: ~\AppData\Local\pip\Cache +# - os: windows-latest +# path: ~\AppData\Local\pip\Cache # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it @@ -102,9 +102,4 @@ jobs: - name: Upload coverage to Codecov uses: codecov/codecov-action@v2 with: - token: ${{ secrets.CODECOV_TOKEN }} - env_vars: OS,PYTHON - fail_ci_if_error: true - flags: unittests - name: codecov-umbrella - verbose: true \ No newline at end of file + token: ${{ secrets.CODECOV_TOKEN }} \ No newline at end of file From cc19687e79eea8d16a551bc691686edd5eca3087 Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 01:38:53 -0500 Subject: [PATCH 06/18] feat: add missing line option --- .coveragerc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.coveragerc b/.coveragerc index 6b26b7a50..fffd31429 100644 --- a/.coveragerc +++ b/.coveragerc @@ -8,7 +8,7 @@ exclude_lines = def __repr__ from import - +show_missing = true [run] branch = True @@ -20,6 +20,7 @@ omit = elastica/systems/analytical.py # omit deprecation warning message elastica/_elastica_numpy.py + elastica/_elastica_numba.py # omit experimental modules elastica/experimental/* setup.py From b7bbbee0f486b2172e91cf351b41f31dd0b83f0d Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 01:39:27 -0500 Subject: [PATCH 07/18] modify test call --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ef794e370..51d513cb9 100644 --- a/Makefile +++ b/Makefile @@ -38,7 +38,7 @@ format-codestyle: black flake8 .PHONY: test test: - poetry run pytest -c pyproject.toml --cov-report=html --cov=elastica tests/ + poetry run pytest .PHONY: check-codestyle check-codestyle: black-check flake8 From d82fa0d55a35cdd52fb083e275a95adc670d39dd Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 01:39:53 -0500 Subject: [PATCH 08/18] refac: remove repeated coverage statements --- pyproject.toml | 23 +---------------------- 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index bf494cb37..0afd9869b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -94,25 +94,4 @@ exclude = ''' [tool.pytest.ini_options] # https://docs.pytest.org/en/6.2.x/customize.html#pyproject-toml # Directories that are not visited by pytest collector: -norecursedirs =["hooks", "*.egg", ".eggs", "dist", "build", "docs", ".tox", ".git", "__pycache__"] -doctest_optionflags = ["NUMBER", "NORMALIZE_WHITESPACE", "IGNORE_EXCEPTION_DETAIL", "ELLIPSIS"] - -# Extra options: -addopts = [ - "--strict-markers", - "--tb=short", -# "--doctest-modules", TODO: Try to include pytest.doctest -# "--doctest-continue-on-failure", -] - -[tool.coverage.run] -source = ["tests"] - -[coverage.paths] -source = "elastica" - -[coverage.run] -branch = true - -[coverage.report] -show_missing = true +norecursedirs =["hooks", "*.egg", ".eggs", "dist", "build", "docs", ".tox", ".git", "__pycache__"] \ No newline at end of file From 2a077f53a6e163e907635db8f9d435dde0099b78 Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 01:40:24 -0500 Subject: [PATCH 09/18] feat: add njit disable for coverage generation fix: wip PR yaml extension refac: publish pypi yaml for poetry refac: ci-sphinx yaml for poetry --- .github/workflows/ci-sphinx.yml | 16 ++++++++-------- .github/workflows/main.yml | 6 +++++- .github/workflows/publish-to-pypi.yml | 7 ++++--- .github/workflows/{wip_PR => wip_PR.yml} | 0 4 files changed, 17 insertions(+), 12 deletions(-) rename .github/workflows/{wip_PR => wip_PR.yml} (100%) diff --git a/.github/workflows/ci-sphinx.yml b/.github/workflows/ci-sphinx.yml index 785051dbd..f8c6366a7 100644 --- a/.github/workflows/ci-sphinx.yml +++ b/.github/workflows/ci-sphinx.yml @@ -23,10 +23,12 @@ jobs: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 - - name: Set up Python - uses: actions/setup-python@v3.1.0 + - name: Setup Poetry + # You may pin to the exact commit or the version. + # uses: Gr1N/setup-poetry@09236184f6c1ab47c0dc9c1001c7fe200cf2afb0 + uses: Gr1N/setup-poetry@v7 with: - python-version: "3.x" + poetry-preview: false - name: Sphinx Build # You may pin to the exact commit or the version. @@ -36,10 +38,8 @@ jobs: # The folder containing your sphinx docs. docs-folder: docs/ # The command used to build your documentation. - build-command: make html SPHINXOPTS+="-W --keep-going" # -n" + build-command: make html # SPHINXOPTS="-W --keep-going" # -n" # Run before the build command, you can use this to install system level dependencies, for example with "apt-get update -y && apt-get install -y perl" pre-build-command: | - pwd - python --version - pip install -r requirements.txt - pip install -r docs/requirements.txt + poetry config virtualenvs.in-project true + poetry install -E docs \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fb52d8b7d..fef14bd94 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -91,10 +91,14 @@ jobs: run: | poetry config virtualenvs.in-project true poetry install - # Set environment variables for coverage test. Coverage test is done using python 3.8 - name: Run style checks run: | make check-codestyle + # Set environment variables for coverage test. + # For the coverage test we disable numba jit compilation, since it prevents generating coverage data. + - name: Set environment variables for coverage test + run: | + echo "NUMBA_DISABLE_JIT=1" >> $GITHUB_ENV - name: Test PyElastica using pytest if: startsWith(runner.os, 'macOS') run: | diff --git a/.github/workflows/publish-to-pypi.yml b/.github/workflows/publish-to-pypi.yml index eeb5e0635..2deec3a1e 100644 --- a/.github/workflows/publish-to-pypi.yml +++ b/.github/workflows/publish-to-pypi.yml @@ -13,12 +13,13 @@ jobs: uses: actions/setup-python@v3.1.0 with: python-version: "3.x" + - name: Install Poetry + uses: snok/install-poetry@v1.3 - name: Build run: | - python setup.py sdist - ls dist + poetry build - name: Publish distribution 📦 to PyPI if: startsWith(github.ref, 'refs/tags') uses: pypa/gh-action-pypi-publish@master with: - password: ${{ secrets.PYPI_API_TOKEN }} + password: ${{ secrets.PYPI_API_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/wip_PR b/.github/workflows/wip_PR.yml similarity index 100% rename from .github/workflows/wip_PR rename to .github/workflows/wip_PR.yml From 04916079f74f2f39911f712f18d80302c5c4deed Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 16:00:39 -0500 Subject: [PATCH 10/18] update: add docutils as poetry extra dep --- poetry.lock | 10 +++++----- pyproject.toml | 1 + 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/poetry.lock b/poetry.lock index b88f0d1ea..89250de08 100644 --- a/poetry.lock +++ b/poetry.lock @@ -752,7 +752,7 @@ type_comments = ["typed-ast (>=1.5.2)"] [[package]] name = "sphinx-book-theme" -version = "0.3.2" +version = "0.3.3" description = "A clean book theme for scientific explanations and documentation with Sphinx" category = "main" optional = true @@ -765,8 +765,8 @@ sphinx = ">=3,<5" [package.extras] code_style = ["pre-commit (>=2.7.0,<2.8.0)"] -doc = ["ablog (>=0.10.13,<0.11.0)", "ipywidgets", "folium", "numpy", "matplotlib", "numpydoc", "myst-nb (>=0.13,<1.0)", "nbclient", "pandas", "plotly", "sphinx (>=4.0,<5.0)", "sphinx-design", "sphinx-copybutton", "sphinx-tabs", "sphinx-togglebutton (>=0.2.1)", "sphinx-thebe (>=0.1.1)", "sphinxcontrib-bibtex (>=2.2,<3.0)", "sphinxcontrib-youtube", "sphinxext-opengraph"] -test = ["beautifulsoup4 (>=4.6.1,<5)", "coverage", "myst_nb (>=0.13,<1.0)", "pytest (>=6.0.1,<6.1.0)", "pytest-cov", "pytest-regressions (>=2.0.1,<2.1.0)", "sphinx-thebe"] +doc = ["ablog (>=0.10.13,<0.11.0)", "ipywidgets", "folium", "numpy", "matplotlib", "numpydoc", "myst-nb (>=0.13.2,<0.14.0)", "nbclient", "pandas", "plotly", "sphinx (>=4.0,<5.0)", "sphinx-design", "sphinx-examples", "sphinx-copybutton", "sphinx-tabs", "sphinx-togglebutton (>=0.2.1)", "sphinx-thebe (>=0.1.1)", "sphinxcontrib-bibtex (>=2.2,<3.0)", "sphinxcontrib-youtube", "sphinxext-opengraph"] +test = ["beautifulsoup4 (>=4.6.1,<5)", "coverage", "myst-nb (>=0.13.2,<0.14.0)", "pytest (>=6.0.1,<6.1.0)", "pytest-cov", "pytest-regressions (>=2.0.1,<2.1.0)", "sphinx-thebe"] [[package]] name = "sphinxcontrib-applehelp" @@ -921,12 +921,12 @@ docs = ["sphinx", "jaraco.packaging (>=9)", "rst.linker (>=1.9)", "jaraco.tideli testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest-cov", "pytest-enabler (>=1.3)", "jaraco.itertools", "func-timeout", "pytest-black (>=0.3.7)", "pytest-mypy (>=0.9.1)"] [extras] -docs = ["Sphinx", "sphinx-book-theme", "readthedocs-sphinx-search", "sphinx-autodoc-typehints", "myst-parser", "numpydoc"] +docs = ["Sphinx", "sphinx-book-theme", "readthedocs-sphinx-search", "sphinx-autodoc-typehints", "myst-parser", "numpydoc", "docutils"] [metadata] lock-version = "1.1" python-versions = ">=3.7,<3.10" -content-hash = "59e9b89074c0709e5766c2b93ff721bd3de680d26b51de05cd8122c6b1dbe5ea" +content-hash = "dc0538c4c418d8634e130f4fb0bbbfe97930b8478c609f732fc549553aea5f54" [metadata.files] alabaster = [ diff --git a/pyproject.toml b/pyproject.toml index 0afd9869b..748cb57d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -68,6 +68,7 @@ docs = [ "sphinx-autodoc-typehints", "myst-parser", "numpydoc", + "docutils", ] [tool.black] From 30ed2c307415a02cb4797ae21098d326fde9a4ee Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 16:13:05 -0500 Subject: [PATCH 11/18] update: trigger main CI for any push, pull request --- .github/workflows/main.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fef14bd94..b1c73b99c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,13 +1,16 @@ # This is a basic workflow to help you get started with Actions name: CI -# Controls when the action will run. Triggers the workflow on push request -# events for the master branch, and pull request events for all branches. -on: - push: - branches: [ master ] - pull_request: - branches: [ '**' ] +# Controls when the action will run. +on: [push, pull_request] +# Older settings: +# Triggers the workflow on push request events for the master branch, +# and pull request events for all branches. +#on: +# push: +# branches: [ master ] +# pull_request: +# branches: [ '**' ] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: From a92b9989d4a6f3803dd8693d16ba2693a423b5da Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 16:37:25 -0500 Subject: [PATCH 12/18] update: contributing guidelines to reflect poetry --- CONTRIBUTING.md | 42 ++++++++++++++++++++++++++++-------------- Makefile | 7 +++++-- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b1b7daa5a..0dc33dec6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -33,15 +33,37 @@ The following is a set of guidelines for contributing to PyElastica. These are m ## Before I get started -### Installation and packages +### Setup development environment + +Below are steps of how to setup development environment. We mainly use `poetry` to manage +the project, although most of the important commands will be provided in `Makefile`. + +1. Clone! First **create the fork repository and clone** to your local machine. -We provide [requirements.txt](requirements.txt) to include all the dependencies. + +2. Virtual python workspace: `conda`, `pyenv`, or `venv`. + +We recommend using python version above 3.8.0. + +```bash +conda create --name pyelastica-dev +conda activate pyelastica-dev +conda install python==3.8 +``` + +3. Setup [`poetry`](https://python-poetry.org) and `dependencies`! + ```bash -$ pip install -r requirements.txt +make poetry-download +make install ``` -> **Note:** Make sure that **PyElastica** is not installed using pip. +If you are planning to contribute on documentation, extra dependencies can be installed +using `poetry install -E docs`. The detail instruction is included +[here](https://github.com/GazzolaLab/PyElastica/blob/main/docs/README.md). + +4. Now your working environment is set! ### Project workflow @@ -116,7 +138,7 @@ Please follow these steps to have your contribution considered by the maintainer In order to run pytest, run the following line from the top directory: ` - python3 -m pytest + make test ` 3. After you submit your pull request, verify that all status checks are passing
What if the status checks are failing?If a status check is failing, and you believe that the failure is unrelated to your change, please leave a comment on the pull request explaining why you believe the failure is unrelated. A maintainer will re-run the status check for you. If we conclude that the failure was a false positive, then we will open an issue to track that problem with our status check suite.
@@ -139,17 +161,9 @@ Ask any question about **how to use PyElastica and detail implementation** in th We use [flake8](https://pypi.org/project/flake8/) and [Black](https://pypi.org/project/black/) for python style. -You can install flake8 using pip: - -`pip install flake8==3.8.3` - -You can install black using pip: - -`pip install black` - In order to format the code: -`make all` +`make formatting` > **Note:** Format/refactoring patches that are not anything substantial to the context or functionality will likely be rejected. diff --git a/Makefile b/Makefile index 51d513cb9..374fd4d03 100644 --- a/Makefile +++ b/Makefile @@ -38,11 +38,14 @@ format-codestyle: black flake8 .PHONY: test test: - poetry run pytest + poetry run pytest --cov=elastica .PHONY: check-codestyle check-codestyle: black-check flake8 +.PHONY: formatting +formatting: format-codestyle + .PHONY: update-dev-deps update-dev-deps: poetry add -D pytest@latest coverage@latest pytest-html@latest pytest-cov@latest black@latest @@ -71,6 +74,6 @@ build-remove: .PHONY: cleanup cleanup: pycache-remove dsstore-remove ipynbcheckpoints-remove pytestcache-remove -all: format-codestyle cleanup +all: format-codestyle cleanup test ci: check-codestyle \ No newline at end of file From 3340339b453889c16e5bf6e3cf0ee964db9d426c Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 16:42:33 -0500 Subject: [PATCH 13/18] fix: docs readme link in contrib guidelines update: docs readme for poetry --- CONTRIBUTING.md | 2 +- docs/README.md | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 0dc33dec6..1954ee77d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -61,7 +61,7 @@ make install If you are planning to contribute on documentation, extra dependencies can be installed using `poetry install -E docs`. The detail instruction is included -[here](https://github.com/GazzolaLab/PyElastica/blob/main/docs/README.md). +[here](https://github.com/GazzolaLab/PyElastica/blob/master/docs/README.md). 4. Now your working environment is set! diff --git a/docs/README.md b/docs/README.md index 865281f2a..ab97d9e18 100644 --- a/docs/README.md +++ b/docs/README.md @@ -8,11 +8,13 @@ In addition, we utilize the following extensions to enhance the documentation :c ## Build documentation -The `sphinx` is already initialized in `docs` directory. In order to build the documentation, you will need additional packages listed in `docs/requirements.txt`. +The `sphinx` is already initialized in `docs` directory. +In order to build the documentation, you will need additional +packages listed in extra dependencies. ```bash +poetry install -E docs cd docs -pip install -r requirements.txt make clean make html ``` From bc34554bf74274630e52819bacbedb8f79285cfc Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 17:03:44 -0500 Subject: [PATCH 14/18] update: include optional deps from examples --- poetry.lock | 114 ++++++++++++++++++++++++++++++++++++++++++++++++- pyproject.toml | 10 +++++ 2 files changed, 123 insertions(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index 89250de08..18db1bf30 100644 --- a/poetry.lock +++ b/poetry.lock @@ -108,6 +108,21 @@ python-versions = ">=3.6" [package.dependencies] colorama = {version = "*", markers = "platform_system == \"Windows\""} +[[package]] +name = "cma" +version = "3.2.2" +description = "CMA-ES, Covariance Matrix Adaptation Evolution Strategy for non-linear numerical optimization in Python" +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +numpy = "*" + +[package.extras] +constrained-solution-tracking = ["moarchiving"] +plotting = ["matplotlib"] + [[package]] name = "codecov" version = "2.1.12" @@ -150,6 +165,14 @@ category = "main" optional = false python-versions = ">=3.6" +[[package]] +name = "decorator" +version = "4.4.2" +description = "Decorators for Humans" +category = "main" +optional = true +python-versions = ">=2.6, !=3.0.*, !=3.1.*" + [[package]] name = "docutils" version = "0.17.1" @@ -158,6 +181,14 @@ category = "main" optional = true python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +[[package]] +name = "ffmpeg" +version = "1.4" +description = "ffmpeg python package url [https://github.com/jiashaokun/ffmpeg]" +category = "main" +optional = true +python-versions = "*" + [[package]] name = "flake8" version = "3.8.3" @@ -202,6 +233,43 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "imageio" +version = "2.19.3" +description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats." +category = "main" +optional = true +python-versions = ">=3.7" + +[package.dependencies] +numpy = "*" +pillow = ">=8.3.2" + +[package.extras] +all-plugins = ["astropy", "av", "imageio-ffmpeg", "opencv-python", "psutil", "tifffile"] +all-plugins-pypy = ["av", "imageio-ffmpeg", "psutil", "tifffile"] +build = ["wheel"] +dev = ["invoke", "pytest", "pytest-cov", "fsspec", "black", "flake8"] +docs = ["sphinx", "numpydoc", "pydata-sphinx-theme"] +ffmpeg = ["imageio-ffmpeg", "psutil"] +fits = ["astropy"] +full = ["astropy", "av", "black", "flake8", "fsspec", "gdal", "imageio-ffmpeg", "invoke", "itk", "numpydoc", "opencv-python", "psutil", "pydata-sphinx-theme", "pytest", "pytest-cov", "sphinx", "tifffile", "wheel"] +gdal = ["gdal"] +itk = ["itk"] +linting = ["black", "flake8"] +opencv = ["opencv-python"] +pyav = ["av"] +test = ["invoke", "pytest", "pytest-cov", "fsspec"] +tifffile = ["tifffile"] + +[[package]] +name = "imageio-ffmpeg" +version = "0.4.7" +description = "FFMPEG wrapper for Python" +category = "main" +optional = true +python-versions = ">=3.5" + [[package]] name = "imagesize" version = "1.4.1" @@ -349,6 +417,31 @@ category = "main" optional = true python-versions = ">=3.7" +[[package]] +name = "moviepy" +version = "1.0.3" +description = "Video editing with Python" +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +decorator = ">=4.0.2,<5.0" +imageio = {version = ">=2.5,<3.0", markers = "python_version >= \"3.4\""} +imageio_ffmpeg = {version = ">=0.2.0", markers = "python_version >= \"3.4\""} +numpy = [ + {version = ">=1.17.3", markers = "python_version != \"2.7\""}, + {version = "*", markers = "python_version >= \"2.7\""}, +] +proglog = "<=1.0.0" +requests = ">=2.8.1,<3.0" +tqdm = ">=4.11.2,<5.0" + +[package.extras] +doc = ["numpydoc (>=0.6.0,<1.0)", "sphinx_rtd_theme (>=0.1.10b0,<1.0)", "Sphinx (>=1.5.2,<2.0)", "pygame (>=1.9.3,<2.0)"] +optional = ["youtube-dl", "opencv-python (>=3.0,<4.0)", "scipy (>=0.19.0,<1.5)", "scikit-image (>=0.13.0,<1.0)", "scikit-learn", "matplotlib (>=2.0.0,<3.0)"] +test = ["coverage (<5.0)", "coveralls (>=1.1,<2.0)", "pytest-cov (>=2.5.1,<3.0)", "pytest (>=3.0.0,<4.0)", "requests (>=2.8.1,<3.0)"] + [[package]] name = "mypy-extensions" version = "0.4.3" @@ -473,6 +566,17 @@ importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} dev = ["pre-commit", "tox"] testing = ["pytest", "pytest-benchmark"] +[[package]] +name = "proglog" +version = "0.1.10" +description = "Log and progress bar manager for console, notebooks, web..." +category = "main" +optional = true +python-versions = "*" + +[package.dependencies] +tqdm = "*" + [[package]] name = "py" version = "1.11.0" @@ -922,11 +1026,12 @@ testing = ["pytest (>=6)", "pytest-checkdocs (>=2.4)", "pytest-flake8", "pytest- [extras] docs = ["Sphinx", "sphinx-book-theme", "readthedocs-sphinx-search", "sphinx-autodoc-typehints", "myst-parser", "numpydoc", "docutils"] +examples = ["cma", "ffmpeg", "moviepy"] [metadata] lock-version = "1.1" python-versions = ">=3.7,<3.10" -content-hash = "dc0538c4c418d8634e130f4fb0bbbfe97930b8478c609f732fc549553aea5f54" +content-hash = "3b17079e57c3b5e75f1326ac9d5231c94188fc10f3af2ec75da01e2924ca3351" [metadata.files] alabaster = [ @@ -947,17 +1052,22 @@ black = [] certifi = [] charset-normalizer = [] click = [] +cma = [] codecov = [] colorama = [] coverage = [] cycler = [] +decorator = [] docutils = [] +ffmpeg = [] flake8 = [] fonttools = [] idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] +imageio = [] +imageio-ffmpeg = [] imagesize = [] importlib-metadata = [] iniconfig = [ @@ -1020,6 +1130,7 @@ mccabe = [ ] mdit-py-plugins = [] mdurl = [] +moviepy = [] mypy-extensions = [ {file = "mypy_extensions-0.4.3-py2.py3-none-any.whl", hash = "sha256:090fedd75945a69ae91ce1303b5824f428daf5a028d2f6ab8a299250a846f15d"}, {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, @@ -1077,6 +1188,7 @@ pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, {file = "pluggy-1.0.0.tar.gz", hash = "sha256:4224373bacce55f955a878bf9cfa763c1e360858e330072059e10bad68531159"}, ] +proglog = [] py = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, diff --git a/pyproject.toml b/pyproject.toml index 748cb57d4..134033cb1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,6 +42,8 @@ numpy = "^1.19.2" scipy = "^1.5.2" matplotlib = "^3.3.2" tqdm = "^4.61.1" +# A list of all of the optional dependencies, some of which are included in the +# below `extras`. They can be opted into by apps. Sphinx = {version = "^4.4.0", optional = true, extras = ["docs"]} sphinx-book-theme = {version = "^0.3.2", optional = true, extras = ["docs"]} readthedocs-sphinx-search = {version = "^0.1.1", optional = true, extras = ["docs"]} @@ -49,6 +51,9 @@ sphinx-autodoc-typehints = {version = "^1.17.1", optional = true, extras = ["doc myst-parser = {version = "^0.17.2", optional = true, extras = ["docs"]} numpydoc = {version = "^1.3.1", optional = true, extras = ["docs"]} docutils = {version = "^0.17.1", optional = true, extras = ["docs"]} +cma = {version = "^3.2.2", optional = true, extras = ["examples"]} +ffmpeg = {version = "^1.4", optional = true, extras = ["examples"]} +moviepy = {version = "^1.0.3", optional = true, extras = ["examples"]} [tool.poetry.dev-dependencies] black = "21.12b0" @@ -70,6 +75,11 @@ docs = [ "numpydoc", "docutils", ] +examples = [ + "cma", + "ffmpeg", + "moviepy", +] [tool.black] # https://github.com/psf/black From 86819fefc534ce65663d60458a4a15be10558198 Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 17:05:59 -0500 Subject: [PATCH 15/18] remove req.txt and setup.py --- docs/requirements.txt | 10 --- examples/optional-requirements.txt | 3 - requirements.txt | 7 -- setup.py | 118 ----------------------------- tests/requirements.txt | 6 -- 5 files changed, 144 deletions(-) delete mode 100644 docs/requirements.txt delete mode 100644 examples/optional-requirements.txt delete mode 100644 requirements.txt delete mode 100644 setup.py delete mode 100644 tests/requirements.txt diff --git a/docs/requirements.txt b/docs/requirements.txt deleted file mode 100644 index 4521909dd..000000000 --- a/docs/requirements.txt +++ /dev/null @@ -1,10 +0,0 @@ -# File: docs/requirements.txt - -sphinx==4.4.0 -sphinx-book-theme -readthedocs-sphinx-search==0.1.1 -sphinx-autodoc-typehints -myst-parser -numpydoc -docutils --r ../requirements.txt diff --git a/examples/optional-requirements.txt b/examples/optional-requirements.txt deleted file mode 100644 index 71cc32b5b..000000000 --- a/examples/optional-requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -cma -moviepy -ffmpeg diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index a19790ca6..000000000 --- a/requirements.txt +++ /dev/null @@ -1,7 +0,0 @@ -numpy>=1.19.2 -scipy>=1.5.2 -matplotlib>=3.3.2 -tqdm>=4.61.1 -numba>=0.51.0 -flake8==3.8.3 -black==21.12b0 diff --git a/setup.py b/setup.py deleted file mode 100644 index 386b34612..000000000 --- a/setup.py +++ /dev/null @@ -1,118 +0,0 @@ -#!/usr/bin/env python -# Thanks and credits to https://github.com/navdeep-G/setup.py for setup.py format -import io -import os -import sys -from shutil import rmtree - -from setuptools import Command, find_packages, setup - -# Package meta-data. -NAME = "pyelastica" -DESCRIPTION = "Elastica is a software to simulate the dynamics of filaments that, at every cross-section, can undergo all six possible modes of deformation, allowing the filament to bend, twist, stretch and shear, while interacting with complex environments via muscular activity, surface contact, friction and hydrodynamics." -URL = "https://github.com/GazzolaLab/PyElastica" -EMAIL = "armant2@illinois.edu" -AUTHOR = "GazzolaLab" -REQUIRES_PYTHON = ">=3.6.0" -VERSION = "0.2.4" - -# What packages are required for this module to be executed? -REQUIRED = ["numpy>=1.19.2", "matplotlib>=3.3.2", "scipy>=1.5.2", "tqdm>=4.61.1", "numba>=0.51.0"] - -# What packages are optional? -EXTRAS = { - "Optimization and Inverse Design": ["cma"], -} - -here = os.path.abspath(os.path.dirname(__file__)) - -# Import the README and use it as the long-description. -# Note: this will only work if 'README.md' is present in your MANIFEST.in file! -try: - with io.open(os.path.join(here, "README.md"), encoding="utf-8") as f: - long_description = "\n" + f.read() -except FileNotFoundError: - long_description = DESCRIPTION - -# Load the package's __version__.py module as a dictionary. -about = {} -if not VERSION: - project_slug = NAME.lower().replace("-", "_").replace(" ", "_") - with open(os.path.join(here, project_slug, "__version__.py")) as f: - exec(f.read(), about) -else: - about["__version__"] = VERSION - -class UploadCommand(Command): - """Support setup.py upload.""" - - description = 'Build and publish the package.' - user_options = [] - - @staticmethod - def status(s): - """Prints things in bold.""" - print('\033[1m{0}\033[0m'.format(s)) - - def initialize_options(self): - pass - - def finalize_options(self): - pass - - def run(self): - try: - self.status('Removing previous builds…') - rmtree(os.path.join(here, 'dist')) - except OSError: - pass - - self.status('Building Source and Wheel (universal) distribution…') - os.system('{0} setup.py sdist bdist_wheel --universal'.format(sys.executable)) - - self.status('Uploading the package to PyPI via Twine…') - os.system('twine upload dist/*') - - self.status('Pushing git tags…') - os.system('git tag v{0}'.format(about['__version__'])) - os.system('git push --tags') - - sys.exit() - - -setup( - name=NAME, - version=about["__version__"], - description=DESCRIPTION, - long_description=long_description, - long_description_content_type="text/markdown", # This is important! - author=AUTHOR, - author_email=EMAIL, - python_requires=REQUIRES_PYTHON, - url=URL, - #packages=["elastica"], - package_dir={"elastica": "./elastica"}, - packages=find_packages(), - license="MIT", - classifiers=[ - # Trove classifiers - # Full list: https://pypi.python.org/pypi?%3Aaction=list_classifiers - "License :: OSI Approved :: MIT License", - "Development Status :: 3 - Alpha", - "Programming Language :: Python", - "Programming Language :: Python :: 3.5", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", - "Programming Language :: Python :: Implementation :: CPython", - "Intended Audience :: Science/Research", - "Intended Audience :: Education", - ], - download_url=f"https://github.com/GazzolaLab/PyElastica/archive/refs/tags/{VERSION}.tar.gz", - install_requires=REQUIRED, - extras_require=EXTRAS, - # $ setup.py publish support: We don't know how to use this part. We already know how to publish.! - cmdclass={ - 'upload': UploadCommand, - }, -) diff --git a/tests/requirements.txt b/tests/requirements.txt deleted file mode 100644 index 48e85d124..000000000 --- a/tests/requirements.txt +++ /dev/null @@ -1,6 +0,0 @@ -pytest -pytest-cov -flake8 -codecov -black -pylint From 274c19592e213354804a46ccd91508efc7dceb46 Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 17:23:30 -0500 Subject: [PATCH 16/18] fix: sphinx build CI --- .github/workflows/ci-sphinx.yml | 8 ++-- poetry.lock | 83 ++++++++++++++++++++++++++++----- pyproject.toml | 4 +- 3 files changed, 78 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci-sphinx.yml b/.github/workflows/ci-sphinx.yml index f8c6366a7..25d7a6d8c 100644 --- a/.github/workflows/ci-sphinx.yml +++ b/.github/workflows/ci-sphinx.yml @@ -22,13 +22,13 @@ jobs: steps: # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it - uses: actions/checkout@v3 - - name: Setup Poetry - # You may pin to the exact commit or the version. - # uses: Gr1N/setup-poetry@09236184f6c1ab47c0dc9c1001c7fe200cf2afb0 uses: Gr1N/setup-poetry@v7 with: poetry-preview: false + - name: Export requirements file for sphinx + run: | + poetry export -E docs --without-hashes -f requirements.txt --output docs/requirements.txt - name: Sphinx Build # You may pin to the exact commit or the version. @@ -38,7 +38,7 @@ jobs: # The folder containing your sphinx docs. docs-folder: docs/ # The command used to build your documentation. - build-command: make html # SPHINXOPTS="-W --keep-going" # -n" + build-command: make html #"-W --keep-going" # -n" # Run before the build command, you can use this to install system level dependencies, for example with "apt-get update -y && apt-get install -y perl" pre-build-command: | poetry config virtualenvs.in-project true diff --git a/poetry.lock b/poetry.lock index 18db1bf30..d9372b496 100644 --- a/poetry.lock +++ b/poetry.lock @@ -69,7 +69,10 @@ pathspec = ">=0.9.0,<1" platformdirs = ">=2" tomli = ">=0.2.6,<2.0.0" typed-ast = {version = ">=1.4.2", markers = "python_version < \"3.8\" and implementation_name == \"cpython\""} -typing-extensions = ">=3.10.0.0" +typing-extensions = [ + {version = ">=3.10.0.0", markers = "python_version < \"3.10\""}, + {version = "!=3.10.0.1", markers = "python_version >= \"3.10\""}, +] [package.extras] colorama = ["colorama (>=0.4.3)"] @@ -330,11 +333,11 @@ typing-extensions = {version = "*", markers = "python_version < \"3.8\""} [[package]] name = "llvmlite" -version = "0.36.0" +version = "0.38.1" description = "lightweight wrapper around basic LLVM functionality" category = "main" optional = false -python-versions = ">=3.6,<3.10" +python-versions = ">=3.7,<3.11" [[package]] name = "markdown-it-py" @@ -475,15 +478,15 @@ testing = ["beautifulsoup4", "coverage", "docutils (>=0.17.0,<0.18.0)", "pytest [[package]] name = "numba" -version = "0.53.1" +version = "0.55.2" description = "compiling Python code using LLVM" category = "main" optional = false -python-versions = ">=3.6,<3.10" +python-versions = ">=3.7,<3.11" [package.dependencies] -llvmlite = ">=0.36.0rc1,<0.37" -numpy = ">=1.15" +llvmlite = ">=0.38.0rc1,<0.39" +numpy = ">=1.18,<1.23" [[package]] name = "numpy" @@ -1030,8 +1033,8 @@ examples = ["cma", "ffmpeg", "moviepy"] [metadata] lock-version = "1.1" -python-versions = ">=3.7,<3.10" -content-hash = "3b17079e57c3b5e75f1326ac9d5231c94188fc10f3af2ec75da01e2924ca3351" +python-versions = ">=3.7,<3.11" +content-hash = "b78119b43c77c71ffd772388e060e3a8973b92da4619f75acdb52f0876af9ab8" [metadata.files] alabaster = [ @@ -1079,7 +1082,36 @@ jinja2 = [ {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] kiwisolver = [] -llvmlite = [] +llvmlite = [ + {file = "llvmlite-0.38.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a7dd2bd1d6406e7789273e3f8a304ed5d9adcfaa5768052fca7dc233a857be98"}, + {file = "llvmlite-0.38.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:7a5e0ed215a576f0f872f47a70b8cb49864e0aefc8586aff5ce83e3bff47bc23"}, + {file = "llvmlite-0.38.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:633c9026eb43b9903cc4ffbc1c7d5293b2e3ad95d06fa9eab0f6ce6ff6ea15b3"}, + {file = "llvmlite-0.38.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b98da8436dbc29013ea301f1fdb0d596ab53bf0ab65c976d96d00bb6faa0b479"}, + {file = "llvmlite-0.38.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c0adce1793d66d009c554809f27baeb6258bf13f6fbaa12eff7443500caec25"}, + {file = "llvmlite-0.38.1-cp310-cp310-win32.whl", hash = "sha256:8c64c90a8b0b7b7e1ed1912ba82c1a3f43cf25affbe06aa3c56c84050edee8ac"}, + {file = "llvmlite-0.38.1-cp310-cp310-win_amd64.whl", hash = "sha256:ab070266f0f51304789a6c20d4be91a9e69683ad9bd4861eb89980e8eb613b3a"}, + {file = "llvmlite-0.38.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ed7528b8b85de930b76407e44b080e4f376b7a007c2879749599ff8e2fe32753"}, + {file = "llvmlite-0.38.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7db018da2863034ad9c73c946625637f3a89635bc70576068bab4bd085eea90d"}, + {file = "llvmlite-0.38.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4c1e5805c92e049b4956ed01204c6647de6160ab9aefb0d67ea83ca02a1d889a"}, + {file = "llvmlite-0.38.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5559e46c79b4017c3c25edc3b9512d11adc3689b9046120c685b0905c08d48a5"}, + {file = "llvmlite-0.38.1-cp37-cp37m-win32.whl", hash = "sha256:ef9aa574eff2e15f8c47b255da0db5dab326dc7f76384c307ae35490e2d2489a"}, + {file = "llvmlite-0.38.1-cp37-cp37m-win_amd64.whl", hash = "sha256:84d5a0163c172db2b2ae561d2fc0866fbd9f716cf13f92c0d41ca4338e682672"}, + {file = "llvmlite-0.38.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:a263252a68d85450110ec1f2b406c0414e49b04a4d216d31c0515ea1d59c3882"}, + {file = "llvmlite-0.38.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:de8bd61480173930f2a029673e7cd0738fbbb5171dfe490340839ad7301d4cf0"}, + {file = "llvmlite-0.38.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fbfbe546394c39db39a6898a51972aa131c8d6b0628517728b350552f58bdc19"}, + {file = "llvmlite-0.38.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8c4f26c6c370e134a909ac555a671fa1376e74c69af0208f25c0979472577a9d"}, + {file = "llvmlite-0.38.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f95f455697c44d7c04ef95fdfce04629f48df08a832d0a0d9eb2363186dbb969"}, + {file = "llvmlite-0.38.1-cp38-cp38-win32.whl", hash = "sha256:41e638a71c85a9a4a33f279c4cd812bc2f84122505b1f6ab8984ec7debb8548b"}, + {file = "llvmlite-0.38.1-cp38-cp38-win_amd64.whl", hash = "sha256:5c07d63df4578f31b39b764d3b4291f70157af7f42e171a8884ae7aaf989d1f7"}, + {file = "llvmlite-0.38.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4e11bd9929dcbd55d5eb5cd7b08bf71b0097ea48cc192b69d102a90dd6e9816f"}, + {file = "llvmlite-0.38.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:edfa2c761cfa56cf76e783290d82e117f829bb691d8d90aa375505204888abac"}, + {file = "llvmlite-0.38.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0e609f7312a439b53b6f622d99180c3ff6a3e1e4ceca4d18aca1c5b46f4e3664"}, + {file = "llvmlite-0.38.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9f53c3448410cc84d0e1af84dbc0d60ad32779853d40bcc8b1ee3c67ebbe94b1"}, + {file = "llvmlite-0.38.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c8fac4edbadefa4dddf5dc6cca76bc2ae81df211dcd16a6638d60cc41249e56"}, + {file = "llvmlite-0.38.1-cp39-cp39-win32.whl", hash = "sha256:3d76c0fa42390bef56979ed213fbf0150c3fef36f5ea68d3d780d5d725da8c01"}, + {file = "llvmlite-0.38.1-cp39-cp39-win_amd64.whl", hash = "sha256:66462d768c30d5f648ca3361d657b434efa8b09f6cf04d6b6eae66e62e993644"}, + {file = "llvmlite-0.38.1.tar.gz", hash = "sha256:0622a86301fcf81cc50d7ed5b4bebe992c030580d413a8443b328ed4f4d82561"}, +] markdown-it-py = [] markupsafe = [ {file = "MarkupSafe-2.1.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:86b1f75c4e7c2ac2ccdaec2b9022845dbb81880ca318bb7a0a01fbf7813e3812"}, @@ -1136,7 +1168,36 @@ mypy-extensions = [ {file = "mypy_extensions-0.4.3.tar.gz", hash = "sha256:2d82818f5bb3e369420cb3c4060a7970edba416647068eb4c5343488a6c604a8"}, ] myst-parser = [] -numba = [] +numba = [ + {file = "numba-0.55.2-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:dd05f7c0ce64b6977596aa4e5a44747c6ef414d7989da1c7672337c54381a5ef"}, + {file = "numba-0.55.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e36232eccd172c583b1f021c5c48744c087ae6fc9dc5c5f0dd2cb2286e517bf8"}, + {file = "numba-0.55.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:25410557d0deb1d97397b71e142a36772133986a7dd4fe2935786e2dd149245f"}, + {file = "numba-0.55.2-cp310-cp310-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:676c081162cc9403706071c1d1d42e479c0741551ab28096ba13859a2e3e9b80"}, + {file = "numba-0.55.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2665ef28e900b3a55bf370daa81c12ebc64cd434116accd60c38a95a159a3182"}, + {file = "numba-0.55.2-cp310-cp310-win32.whl", hash = "sha256:d7ac9ea5feef9536ab8bfbbb3ded1a0617ea8794d7547800d535b7857800f996"}, + {file = "numba-0.55.2-cp310-cp310-win_amd64.whl", hash = "sha256:29b89a68af162acf87adeb8fbf01f6bb1effae4711b28146f95108d82e905624"}, + {file = "numba-0.55.2-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:6e0f9b5d1c8ea1bdef39b0ad921a9bbf0cc4a88e76d722d756c68f1653787c35"}, + {file = "numba-0.55.2-cp37-cp37m-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:135fb7694928f9f57b4ff5b1be58f20f4771fedd1680636a9affdead96051959"}, + {file = "numba-0.55.2-cp37-cp37m-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:de1f93bd7e2d431451aec20a52ac651a020e98a4ba46797fad860bba338a7e64"}, + {file = "numba-0.55.2-cp37-cp37m-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3eaf53e73e700370163e58257257299ac0d46fea4f244bf5476e4635bc31d808"}, + {file = "numba-0.55.2-cp37-cp37m-win32.whl", hash = "sha256:da4485e0f0b9562f39c78887149b33d13d787aa696553c9257b95575122905ed"}, + {file = "numba-0.55.2-cp37-cp37m-win_amd64.whl", hash = "sha256:5559c6684bf6cce7a22c656d8fef3e7c38ff5fec5153abef5955f6f7cae9f102"}, + {file = "numba-0.55.2-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:a85779adc5234f7857615d1bd2c7b514314521f9f0163c33017707ed9816e6e6"}, + {file = "numba-0.55.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:16a52a0641c342b09b39f6762dcbe3846e44aa9baaaf4703b2ca42a3aee7346f"}, + {file = "numba-0.55.2-cp38-cp38-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:46715180f87d5a1f3e4077d207ade66c96fc01159f5b7d49cee2d6ffb9e6539f"}, + {file = "numba-0.55.2-cp38-cp38-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:d1c3cef3289fefb5673ceae32024ab5a8a08d4f4380bcb8348d01f1ba570ccff"}, + {file = "numba-0.55.2-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:68bb33eaef1d6155fc1ae4fa6c915b8a42e5052c89a58742254eaad072eab118"}, + {file = "numba-0.55.2-cp38-cp38-win32.whl", hash = "sha256:dfddd633141608a09cbce275fb9fe7aa514918625ace20b0e587898a2d93c030"}, + {file = "numba-0.55.2-cp38-cp38-win_amd64.whl", hash = "sha256:a669212aa66ffee4ad778016ac3819add33f9bcb96b4c384d3099531dd175085"}, + {file = "numba-0.55.2-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:dcde1a1a3a430fb5f83c7e095b0b6ac7adb5595f50a3ee05babb2964f31613c4"}, + {file = "numba-0.55.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:69b2e823efa40d32b259f5c094476dde2226b92032f17015d8cd7c10472654ce"}, + {file = "numba-0.55.2-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:20de0139d2267c8f0e2470d4f88540446cd1bf40de0f29f31b7ab9bf25d49b45"}, + {file = "numba-0.55.2-cp39-cp39-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:09ff4d690abb05ffbb8a29a96d1cf35b46887a26796d3670de104beeec73d639"}, + {file = "numba-0.55.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1105449247f338e49d63eb04a4aaa5c440bb5435df00f718c8e6e7afad841bb0"}, + {file = "numba-0.55.2-cp39-cp39-win32.whl", hash = "sha256:32649584144c35ced239937ab2c416ab22bbc1490ef8d90609c30fff9f6aa1b8"}, + {file = "numba-0.55.2-cp39-cp39-win_amd64.whl", hash = "sha256:8d5760a1e6a48d98d6b9cf774e4d2a64813d981cca60d7b7356af61195a6ca17"}, + {file = "numba-0.55.2.tar.gz", hash = "sha256:e428d9e11d9ba592849ccc9f7a009003eb7d30612007e365afe743ce7118c6f4"}, +] numpy = [ {file = "numpy-1.21.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:8737609c3bbdd48e380d463134a35ffad3b22dc56295eff6f79fd85bd0eeeb25"}, {file = "numpy-1.21.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:fdffbfb6832cd0b300995a2b08b8f6fa9f6e856d562800fea9182316d99c4e8e"}, diff --git a/pyproject.toml b/pyproject.toml index 134033cb1..f581874da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,8 +36,8 @@ packages = [ ] [tool.poetry.dependencies] -python = ">=3.7,<3.10" -numba = "^0.53.0" +python = ">=3.7,<3.11" +numba = "^0.55.0" numpy = "^1.19.2" scipy = "^1.5.2" matplotlib = "^3.3.2" From 1196d035a05eb6086334285d95dc1d0b2a4c82b6 Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 22:47:36 -0500 Subject: [PATCH 17/18] remove unwanted poetry installs from sphinix-build --- .github/workflows/ci-sphinx.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/ci-sphinx.yml b/.github/workflows/ci-sphinx.yml index 25d7a6d8c..e3d24e02e 100644 --- a/.github/workflows/ci-sphinx.yml +++ b/.github/workflows/ci-sphinx.yml @@ -38,8 +38,4 @@ jobs: # The folder containing your sphinx docs. docs-folder: docs/ # The command used to build your documentation. - build-command: make html #"-W --keep-going" # -n" - # Run before the build command, you can use this to install system level dependencies, for example with "apt-get update -y && apt-get install -y perl" - pre-build-command: | - poetry config virtualenvs.in-project true - poetry install -E docs \ No newline at end of file + build-command: make html #"-W --keep-going" # -n" \ No newline at end of file From 973eb806a177aa192806a196a924d4f7e9f5fa30 Mon Sep 17 00:00:00 2001 From: Bhosale Date: Sun, 17 Jul 2022 23:09:31 -0500 Subject: [PATCH 18/18] update: add py 3.10 to pyproject and CI --- .github/workflows/main.yml | 2 +- pyproject.toml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b1c73b99c..2af428ce8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -20,7 +20,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - python-version: ["3.7", "3.8", "3.9"] + python-version: ["3.7", "3.8", "3.9", "3.10"] os: [ubuntu-latest, macos-latest] #, windows-latest] # Run macos tests if really required, since they charge 10 times more for macos include: - os: ubuntu-latest diff --git a/pyproject.toml b/pyproject.toml index f581874da..b72572e05 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,6 +25,7 @@ classifiers = [ "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", +"Programming Language :: Python :: 3.10", "Programming Language :: Python :: Implementation :: CPython", "Intended Audience :: Science/Research", "Intended Audience :: Education",