diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8013f9608c6..74b41db9548 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -69,23 +69,14 @@ jobs: - name: Install dependencies if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' - run: poetry install --no-interaction --no-root - - - name: Install Extra Doc - run: poetry install --no-interaction -E doc - - - name: Install Extra Optimization run: poetry install --no-interaction -E optimization - - name: Run Extra prediction - run: poetry install --no-interaction -E prediction - - name: Run tests env: MPLBACKEND: Agg run: | source $VENV - pytest tests/ --autodoc + pytest tests/ --optimization - name: Start Terminal and exit run: | @@ -141,10 +132,7 @@ jobs: - name: Install dependencies if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' - run: poetry install --no-interaction --no-root - - - name: Install Package - run: poetry install --no-interaction -E doc + run: poetry install --no-interaction -E optimization - name: List installed packages shell: bash -l {0} @@ -157,7 +145,7 @@ jobs: MPLBACKEND: Agg run: | source $VENV - pytest tests/ + pytest tests/ --optimization - name: Start Terminal and exit run: | @@ -251,7 +239,6 @@ jobs: shell: bash -l {0} run: | pip install --requirement requirements-full.txt - pip install docstring_parser - name: List installed packages (Bash) shell: bash -l {0} @@ -263,7 +250,7 @@ jobs: env: MPLBACKEND: Agg shell: bash -l {0} - run: pytest tests/ -m "not linux" + run: pytest tests/ -m "not linux" --optimization - name: Start Terminal and exit shell: bash -l {0} diff --git a/openbb_terminal/dashboards/dashboards_controller.py b/openbb_terminal/dashboards/dashboards_controller.py index e81b7dd9d16..0b657707457 100644 --- a/openbb_terminal/dashboards/dashboards_controller.py +++ b/openbb_terminal/dashboards/dashboards_controller.py @@ -155,7 +155,7 @@ def create_call_voila(other_args: List[str], name: str, filename: str = None) -> console.print( f"Warning: opens a port on your computer to run a {cmd} server." ) - response = input("Would you like us to run the server for you? y/n\n") + response = input("Would you like us to run the server for you [yn]? ") args = "" if ns_parser.dark and not ns_parser.jupyter: args += "--theme=dark" @@ -201,7 +201,7 @@ def create_call_streamlit( console.print( f"Warning: opens a port on your computer to run a {cmd} server." ) - response = input("Would you like us to run the server for you? y/n\n") + response = input("Would you like us to run the server for you [yn]? ") args = "" if ns_parser.input or response.lower() == "y": subprocess.Popen( diff --git a/openbb_terminal/feature_flags.py b/openbb_terminal/feature_flags.py index 14e9d0c6479..7131e8d8052 100644 --- a/openbb_terminal/feature_flags.py +++ b/openbb_terminal/feature_flags.py @@ -4,7 +4,6 @@ import os.path # IMPORTATION THIRDPARTY from dotenv import load_dotenv -import pkg_resources import i18n # IMPORTATION INTERNAL @@ -143,6 +142,7 @@ GUESS_EASTER_EGG_FILE = str( try: if not WITH_GIT: + import pkg_resources version = pkg_resources.get_distribution("OpenBB").version else: raise Exception("Using git") diff --git a/poetry.lock b/poetry.lock index 6b4dec37aec..37db566a7f9 100644 --- a/poetry.lock +++ b/poetry.lock @@ -341,10 +341,10 @@ optional = false python-versions = ">=3.6.0" [package.extras] +dev = ["coverage (>=5.5)", "mypy (>=0.800)", "pytest (>=4.0.0)", "tox (>=3.20.1)", "sphinx (>=3.4.3)"] +doc-rtd = ["sphinx (==3.4.3)", "sphinx-rtd-theme (==0.5.1)"] +test-tox = ["mypy (>=0.800)", "pytest (>=4.0.0)"] test-tox-coverage = ["coverage (>=5.5)"] -test-tox = ["pytest (>=4.0.0)", "mypy (>=0.800)"] -doc-rtd = ["sphinx-rtd-theme (==0.5.1)", "sphinx (==3.4.3)"] -dev = ["sphinx (>=3.4.3)", "tox (>=3.20.1)", "pytest (>=4.0.0)", "mypy (>=0.800)", "coverage (>=5.5)"] [[package]] name = "beautifulsoup4" @@ -433,7 +433,7 @@ ffn = ">=0.3.5" pyprind = ">=2.11" [package.extras] -dev = ["pyprind (>=2.11)", "ffn (>=0.3.5)", "matplotlib (>=2)", "pandas (>=0.19)", "numpy (>=1)", "nose", "mock", "future", "flake8-black", "flake8", "cython (>=0.25)", "coverage", "codecov", "black (>=20.8b1)"] +dev = ["black (>=20.8b1)", "codecov", "coverage", "cython (>=0.25)", "flake8", "flake8-black", "future", "mock", "nose", "numpy (>=1)", "pandas (>=0.19)", "matplotlib (>=2)", "ffn (>=0.3.5)", "pyprind (>=2.11)"] [[package]] name = "cachetools" @@ -585,7 +585,7 @@ optional = false python-versions = "*" [package.extras] -test = ["hypothesis (==3.55.3)", "flake8 (==3.7.8)"] +test = ["flake8 (==3.7.8)", "hypothesis (==3.55.3)"] [[package]] name = "convertdate" @@ -889,7 +889,7 @@ optional = false python-versions = "*" [package.extras] -tests = ["rich", "littleutils", "pytest", "asttokens"] +tests = ["asttokens", "pytest", "littleutils", "rich"] [[package]] name = "fastjsonschema" @@ -1052,8 +1052,8 @@ scipy = ">=1.6" wrapt = ">=1.0" [package.extras] -calculus = ["sympy (>=1.3,<1.10)"] arrow = ["pyarrow (>=1)"] +calculus = ["sympy (>=1.3,<1.10)"] [[package]] name = "fred" @@ -1271,10 +1271,10 @@ six = ">=1.9" webencodings = "*" [package.extras] -lxml = ["lxml"] -genshi = ["genshi"] +all = ["genshi", "chardet (>=2.2)", "lxml"] chardet = ["chardet (>=2.2)"] -all = ["lxml", "chardet (>=2.2)", "genshi"] +genshi = ["genshi"] +lxml = ["lxml"] [[package]] name = "httpcore" @@ -1393,7 +1393,7 @@ python-versions = ">=3.8,<4.0" httpx = ">=0.23.0,<0.24.0" [package.extras] -docs = ["mkdocstrings[python] (>=0.19.0,<0.20.0)", "mkdocs-git-revision-date-localized-plugin (>=1.1.0,<2.0.0)", "mkdocs-material (>=8.5.4,<9.0.0)", "mkdocs (>=1.4.0,<2.0.0)"] +docs = ["mkdocs (>=1.4.0,<2.0.0)", "mkdocs-material (>=8.5.4,<9.0.0)", "mkdocs-git-revision-date-localized-plugin (>=1.1.0,<2.0.0)", "mkdocstrings[python] (>=0.19.0,<0.20.0)"] [[package]] name = "investpy" @@ -1430,8 +1430,8 @@ python-versions = ">=3.6" ipywidgets = ">=7.0.0" [package.extras] -test = ["nbval", "pytest-cov", "pytest (>=4.6)"] -docs = ["sphinx-rtd-theme", "sphinx (>=1.5)", "recommonmark", "pypandoc", "pytest-check-links", "nbsphinx-link", "nbsphinx", "jupyter-sphinx"] +docs = ["jupyter-sphinx", "nbsphinx", "nbsphinx-link", "pytest-check-links", "pypandoc", "recommonmark", "sphinx (>=1.5)", "sphinx-rtd-theme"] +test = ["pytest (>=4.6)", "pytest-cov", "nbval"] [[package]] name = "ipykernel" @@ -1460,20 +1460,16 @@ test = ["flaky", "ipyparallel", "pre-commit", "pytest-cov", "pytest-timeout", "p [[package]] name = "ipympl" -version = "0.8.8" +version = "0.8.4" description = "Matplotlib Jupyter Extension" category = "main" optional = false python-versions = "*" [package.dependencies] -ipython = "<9" -ipython-genutils = "*" -ipywidgets = ">=7.6.0,<8" -matplotlib = ">=2.0.0,<4" -numpy = "*" -pillow = "*" -traitlets = "<6" +ipykernel = ">=4.7" +ipywidgets = ">=7.6.0" +matplotlib = ">=2.0.0" [[package]] name = "ipython" @@ -1520,22 +1516,21 @@ python-versions = "*" [[package]] name = "ipywidgets" -version = "7.7.2" -description = "IPython HTML widgets for Jupyter" +version = "8.0.2" +description = "Jupyter interactive widgets" category = "main" optional = false -python-versions = "*" +python-versions = ">=3.7" [package.dependencies] ipykernel = ">=4.5.1" -ipython = {version = ">=4.0.0", markers = "python_version >= \"3.3\""} -ipython-genutils = ">=0.2.0,<0.3.0" -jupyterlab-widgets = {version = ">=1.0.0,<3", markers = "python_version >= \"3.6\""} +ipython = ">=6.1.0" +jupyterlab-widgets = ">=3.0,<4.0" traitlets = ">=4.3.1" -widgetsnbextension = ">=3.6.0,<3.7.0" +widgetsnbextension = ">=4.0,<5.0" [package.extras] -test = ["pytest (>=3.6.0)", "pytest-cov", "mock"] +test = ["jsonschema", "pytest (>=3.6.0)", "pytest-cov", "pytz"] [[package]] name = "iso8601" @@ -1638,25 +1633,9 @@ six = ">=1.11.0" format = ["idna", "jsonpointer (>1.13)", "rfc3987", "strict-rfc3339", "webcolors"] format_nongpl = ["idna", "jsonpointer (>1.13)", "webcolors", "rfc3986-validator (>0.1.0)", "rfc3339-validator"] -[[package]] -name = "jupyter" -version = "1.0.0" -description = "Jupyter metapackage. Install all the Jupyter components in one go." -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -ipykernel = "*" -ipywidgets = "*" -jupyter-console = "*" -nbconvert = "*" -notebook = "*" -qtconsole = "*" - [[package]] name = "jupyter-client" -version = "7.4.3" +version = "7.4.1" description = "Jupyter protocol implementation and client libraries" category = "main" optional = false @@ -1673,25 +1652,7 @@ traitlets = "*" [package.extras] doc = ["ipykernel", "myst-parser", "sphinx-rtd-theme", "sphinx (>=1.3.6)", "sphinxcontrib-github-alt"] -test = ["codecov", "coverage", "ipykernel (>=6.12)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "jupyter-console" -version = "6.4.4" -description = "Jupyter terminal console" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -ipykernel = "*" -ipython = "*" -jupyter-client = ">=7.0.0" -prompt-toolkit = ">=2.0.0,<3.0.0 || >3.0.0,<3.0.1 || >3.0.1,<3.1.0" -pygments = "*" - -[package.extras] -test = ["pexpect"] +test = ["codecov", "coverage", "ipykernel (>=6.5)", "ipython", "mypy", "pre-commit", "pytest", "pytest-asyncio (>=0.18)", "pytest-cov", "pytest-timeout"] [[package]] name = "jupyter-core" @@ -1829,11 +1790,11 @@ test = ["codecov", "ipykernel", "jupyter-server", "openapi-core (>=0.14.2,<0.15. [[package]] name = "jupyterlab-widgets" -version = "1.1.1" -description = "A JupyterLab extension." +version = "3.0.3" +description = "Jupyter interactive widgets for JupyterLab" category = "main" optional = false -python-versions = ">=3.6" +python-versions = ">=3.7" [[package]] name = "kiwisolver" @@ -1916,7 +1877,7 @@ colorama = {version = ">=0.3.4", markers = "sys_platform == \"win32\""} win32-setctime = {version = ">=1.0.0", markers = "sys_platform == \"win32\""} [package.extras] -dev = ["sphinx-rtd-theme (>=0.4.3)", "sphinx-autobuild (>=0.7.1)", "Sphinx (>=4.1.1)", "isort (>=5.1.1)", "black (>=19.10b0)", "pytest-cov (>=2.7.1)", "pytest (>=4.6.2)", "tox (>=3.9.0)", "flake8 (>=3.7.7)", "docutils (==0.16)", "colorama (>=0.3.4)"] +dev = ["colorama (>=0.3.4)", "docutils (==0.16)", "flake8 (>=3.7.7)", "tox (>=3.9.0)", "pytest (>=4.6.2)", "pytest-cov (>=2.7.1)", "black (>=19.10b0)", "isort (>=5.1.1)", "Sphinx (>=4.1.1)", "sphinx-autobuild (>=0.7.1)", "sphinx-rtd-theme (>=0.4.3)"] [[package]] name = "lunarcalendar" @@ -1982,12 +1943,12 @@ python-versions = "~=3.6" attrs = ">=19,<22" [package.extras] -testing = ["pytest-regressions", "pytest-cov", "pytest-benchmark (>=3.2,<4.0)", "pytest (>=3.6,<4)", "psutil", "coverage"] -rtd = ["sphinx-book-theme", "sphinx-panels (>=0.4.0,<0.5.0)", "sphinx-copybutton", "sphinx (>=2,<4)", "pyyaml", "myst-nb (==0.13.0a1)"] -plugins = ["mdit-py-plugins"] -linkify = ["linkify-it-py (>=1.0,<2.0)"] -compare = ["panflute (>=1.12,<2.0)", "mistune (>=0.8.4,<0.9.0)", "mistletoe-ebp (>=0.10.0,<0.11.0)", "markdown (>=3.2.2,<3.3.0)", "commonmark (>=0.9.1,<0.10.0)"] code_style = ["pre-commit (==2.6)"] +compare = ["commonmark (>=0.9.1,<0.10.0)", "markdown (>=3.2.2,<3.3.0)", "mistletoe-ebp (>=0.10.0,<0.11.0)", "mistune (>=0.8.4,<0.9.0)", "panflute (>=1.12,<2.0)"] +linkify = ["linkify-it-py (>=1.0,<2.0)"] +plugins = ["mdit-py-plugins"] +rtd = ["myst-nb (==0.13.0a1)", "pyyaml", "sphinx (>=2,<4)", "sphinx-copybutton", "sphinx-panels (>=0.4.0,<0.5.0)", "sphinx-book-theme"] +testing = ["coverage", "psutil", "pytest (>=3.6,<4)", "pytest-benchmark (>=3.2,<4.0)", "pytest-cov", "pytest-regressions"] [[package]] name = "markupsafe" @@ -2047,9 +2008,9 @@ python-versions = "~=3.6" markdown-it-py = ">=1.0,<2.0" [package.extras] -testing = ["pytest-regressions", "pytest-cov", "pytest (>=3.6,<4)", "coverage"] -rtd = ["sphinx-book-theme (>=0.1.0,<0.2.0)", "myst-parser (==0.14.0a3)"] code_style = ["pre-commit (==2.6)"] +rtd = ["myst-parser (==0.14.0a3)", "sphinx-book-theme (>=0.1.0,<0.2.0)"] +testing = ["coverage", "pytest (>=3.6,<4)", "pytest-cov", "pytest-regressions"] [[package]] name = "mistune" @@ -2568,7 +2529,7 @@ testing = ["docopt", "pytest (<6.0.0)"] [[package]] name = "pathspec" -version = "0.10.1" +version = "0.10.2" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false @@ -2587,7 +2548,7 @@ numpy = ">=1.4" six = "*" [package.extras] -test = ["scipy", "pytest-cov", "pytest"] +test = ["pytest", "pytest-cov", "scipy"] [[package]] name = "pbr" @@ -2671,8 +2632,8 @@ optional = false python-versions = ">=3.6" [package.extras] -testing = ["pytest-benchmark", "pytest"] -dev = ["tox", "pre-commit"] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] [[package]] name = "pmdarima" @@ -2724,10 +2685,10 @@ python-versions = "~=3.6" requests = ">=2.6.0,<3.0" [package.extras] -test = ["testfixtures (>4.13.2,<7)", "pytest", "mock (>=0.8)", "betamax-serializers (>=0.2.0,<0.3)", "betamax-matchers (>=0.4.0,<0.5)", "betamax (>=0.8,<0.9)"] -lint = ["flynt", "pydocstyle", "pre-commit", "flake8", "black"] -dev = ["testfixtures (>4.13.2,<7)", "pytest", "mock (>=0.8)", "betamax-serializers (>=0.2.0,<0.3)", "betamax-matchers (>=0.4.0,<0.5)", "betamax (>=0.8,<0.9)", "flynt", "pydocstyle", "pre-commit", "flake8", "black"] ci = ["coveralls"] +dev = ["black", "flake8", "pre-commit", "pydocstyle", "flynt", "betamax (>=0.8,<0.9)", "betamax-matchers (>=0.4.0,<0.5)", "betamax-serializers (>=0.2.0,<0.3)", "mock (>=0.8)", "pytest", "testfixtures (>4.13.2,<7)"] +lint = ["black", "flake8", "pre-commit", "pydocstyle", "flynt"] +test = ["betamax (>=0.8,<0.9)", "betamax-matchers (>=0.4.0,<0.5)", "betamax-serializers (>=0.2.0,<0.3)", "mock (>=0.8)", "pytest", "testfixtures (>4.13.2,<7)"] [[package]] name = "pre-commit" @@ -3012,9 +2973,9 @@ sseclient = ">=0.0.22" temporal-cache = ">=0.1.1" [package.extras] +async = ["deprecation (>=2.0.6)", "ipython (>=7.2.0)", "Pillow (>=5.3.0)", "pandas (>=0.22)", "pytz (>=2019.1)", "requests (>=2.21.0)", "six", "socketIO-client-nexus (>=0.7.6)", "sseclient (>=0.0.22)", "temporal-cache (>=0.1.1)", "aiohttp (>=3.2)", "aiohttp-sse-client (>=0.2.0)", "aiostream (>=0.3.1)"] +dev = ["deprecation (>=2.0.6)", "ipython (>=7.2.0)", "Pillow (>=5.3.0)", "pandas (>=0.22)", "pytz (>=2019.1)", "requests (>=2.21.0)", "six", "socketIO-client-nexus (>=0.7.6)", "sseclient (>=0.0.22)", "temporal-cache (>=0.1.1)", "aiohttp (>=3.2)", "aiohttp-sse-client (>=0.2.0)", "aiostream (>=0.3.1)", "TA-Lib (>=0.4.17)", "black (>=20)", "bump2version (>=1.0.0)", "flake8 (>=3.7.8)", "flake8-black (>=0.2.1)", "mock", "pytest (>=4.3.0)", "pytest-cov (>=2.6.1)", "recommonmark", "Sphinx (>=1.8.4)", "sphinx-markdown-builder (>=0.5.2)", "sphinx-rtd-theme"] studies = ["TA-Lib (>=0.4.17)"] -dev = ["sphinx-rtd-theme", "sphinx-markdown-builder (>=0.5.2)", "Sphinx (>=1.8.4)", "recommonmark", "pytest-cov (>=2.6.1)", "pytest (>=4.3.0)", "mock", "flake8-black (>=0.2.1)", "flake8 (>=3.7.8)", "bump2version (>=1.0.0)", "black (>=20)", "TA-Lib (>=0.4.17)", "aiostream (>=0.3.1)", "aiohttp-sse-client (>=0.2.0)", "aiohttp (>=3.2)", "temporal-cache (>=0.1.1)", "sseclient (>=0.0.22)", "socketIO-client-nexus (>=0.7.6)", "six", "requests (>=2.21.0)", "pytz (>=2019.1)", "pandas (>=0.22)", "Pillow (>=5.3.0)", "ipython (>=7.2.0)", "deprecation (>=2.0.6)"] -async = ["aiostream (>=0.3.1)", "aiohttp-sse-client (>=0.2.0)", "aiohttp (>=3.2)", "temporal-cache (>=0.1.1)", "sseclient (>=0.0.22)", "socketIO-client-nexus (>=0.7.6)", "six", "requests (>=2.21.0)", "pytz (>=2019.1)", "pandas (>=0.22)", "Pillow (>=5.3.0)", "ipython (>=7.2.0)", "deprecation (>=2.0.6)"] [[package]] name = "pyflakes" @@ -3066,8 +3027,8 @@ numpy = ">=1.12.0" scipy = ">=1.0.0" [package.extras] -tests = ["pytest-xdist", "pytest"] -docs = ["jupyter-client", "nbsphinx", "sphinx-rtd-theme", "astunparse", "ipython", "sphinx"] +docs = ["sphinx", "ipython", "astunparse", "sphinx-rtd-theme", "nbsphinx", "jupyter-client"] +tests = ["pytest", "pytest-xdist"] [[package]] name = "pyinstaller" @@ -3249,7 +3210,7 @@ coverage = {version = ">=5.2.1", extras = ["toml"]} pytest = ">=4.6" [package.extras] -testing = ["virtualenv", "pytest-xdist", "six", "process-tests", "hunter", "fields"] +testing = ["fields", "hunter", "process-tests", "six", "pytest-xdist", "virtualenv"] [[package]] name = "pytest-mock" @@ -3297,7 +3258,7 @@ loguru = "*" typing-extensions = "*" [package.extras] -testing = ["pytest-asyncio", "pytest-mock", "pytest-socket", "pytest-cov", "pytest", "mock", "typing-extensions", "loguru", "flake8", "dnspython", "base58", "backoff", "aiohttp (>=3.7.4)", "aiodns"] +testing = ["aiodns", "aiohttp (>=3.7.4)", "backoff", "base58", "dnspython", "flake8", "loguru", "typing-extensions", "mock", "pytest", "pytest-cov", "pytest-socket", "pytest-mock", "pytest-asyncio"] [[package]] name = "python-binance" @@ -3490,42 +3451,6 @@ python-versions = "*" numpy = ">=1.7" scipy = ">=0.13.2" -[[package]] -name = "qtconsole" -version = "5.3.2" -description = "Jupyter Qt console" -category = "main" -optional = false -python-versions = ">= 3.7" - -[package.dependencies] -ipykernel = ">=4.1" -ipython-genutils = "*" -jupyter-client = ">=4.1" -jupyter-core = "*" -pygments = "*" -pyzmq = ">=17.1" -qtpy = ">=2.0.1" -traitlets = "<5.2.1 || >5.2.1,<5.2.2 || >5.2.2" - -[package.extras] -doc = ["Sphinx (>=1.3)"] -test = ["flaky", "pytest", "pytest-qt"] - -[[package]] -name = "qtpy" -version = "2.2.1" -description = "Provides an abstraction layer on top of the various Qt bindings (PyQt5/6 and PySide2/6)." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -packaging = "*" - -[package.extras] -test = ["pytest (>=6,!=7.0.0,!=7.0.1)", "pytest-cov (>=3.0.0)", "pytest-qt"] - [[package]] name = "quandl" version = "3.7.0" @@ -3709,10 +3634,10 @@ scipy = ">=1.3.2" threadpoolctl = ">=2.0.0" [package.extras] -tests = ["numpydoc (>=1.2.0)", "pyamg (>=4.0.0)", "mypy (>=0.961)", "black (>=22.3.0)", "flake8 (>=3.8.2)", "pytest-cov (>=2.9.0)", "pytest (>=5.0.1)", "pandas (>=1.0.5)", "scikit-image (>=0.16.2)", "matplotlib (>=3.1.2)"] -examples = ["seaborn (>=0.9.0)", "pandas (>=1.0.5)", "scikit-image (>=0.16.2)", "matplotlib (>=3.1.2)"] -docs = ["sphinxext-opengraph (>=0.4.2)", "sphinx-prompt (>=1.3.0)", "Pillow (>=7.1.2)", "numpydoc (>=1.2.0)", "sphinx-gallery (>=0.7.0)", "sphinx (>=4.0.1)", "memory-profiler (>=0.57.0)", "seaborn (>=0.9.0)", "pandas (>=1.0.5)", "scikit-image (>=0.16.2)", "matplotlib (>=3.1.2)"] -benchmark = ["memory-profiler (>=0.57.0)", "pandas (>=1.0.5)", "matplotlib (>=3.1.2)"] +benchmark = ["matplotlib (>=3.1.2)", "pandas (>=1.0.5)", "memory-profiler (>=0.57.0)"] +docs = ["matplotlib (>=3.1.2)", "scikit-image (>=0.16.2)", "pandas (>=1.0.5)", "seaborn (>=0.9.0)", "memory-profiler (>=0.57.0)", "sphinx (>=4.0.1)", "sphinx-gallery (>=0.7.0)", "numpydoc (>=1.2.0)", "Pillow (>=7.1.2)", "sphinx-prompt (>=1.3.0)", "sphinxext-opengraph (>=0.4.2)"] +examples = ["matplotlib (>=3.1.2)", "scikit-image (>=0.16.2)", "pandas (>=1.0.5)", "seaborn (>=0.9.0)"] +tests = ["matplotlib (>=3.1.2)", "scikit-image (>=0.16.2)", "pandas (>=1.0.5)", "pytest (>=5.0.1)", "pytest-cov (>=2.9.0)", "flake8 (>=3.8.2)", "black (>=22.3.0)", "mypy (>=0.961)", "pyamg (>=4.0.0)", "numpydoc (>=1.2.0)"] [[package]] name = "scipy" @@ -3962,8 +3887,8 @@ optional = false python-versions = ">=3.5" [package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] test = ["pytest"] -lint = ["docutils-stubs", "mypy", "flake8"] [[package]] name = "sphinxcontrib-devhelp" @@ -3974,8 +3899,8 @@ optional = false python-versions = ">=3.5" [package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] test = ["pytest"] -lint = ["docutils-stubs", "mypy", "flake8"] [[package]] name = "sphinxcontrib-htmlhelp" @@ -3986,8 +3911,8 @@ optional = false python-versions = ">=3.6" [package.extras] -test = ["html5lib", "pytest"] -lint = ["docutils-stubs", "mypy", "flake8"] +lint = ["flake8", "mypy", "docutils-stubs"] +test = ["pytest", "html5lib"] [[package]] name = "sphinxcontrib-jsmath" @@ -3998,7 +3923,7 @@ optional = false python-versions = ">=3.5" [package.extras] -test = ["mypy", "flake8", "pytest"] +test = ["pytest", "flake8", "mypy"] [[package]] name = "sphinxcontrib-qthelp" @@ -4009,8 +3934,8 @@ optional = false python-versions = ">=3.5" [package.extras] +lint = ["flake8", "mypy", "docutils-stubs"] test = ["pytest"] -lint = ["docutils-stubs", "mypy", "flake8"] [[package]] name = "sphinxcontrib-serializinghtml" @@ -4058,7 +3983,7 @@ executing = "*" pure-eval = "*" [package.extras] -tests = ["cython", "littleutils", "pygments", "typeguard", "pytest"] +tests = ["pytest", "typeguard", "pygments", "littleutils", "cython"] [[package]] name = "statsforecast" @@ -4200,7 +4125,7 @@ frozendict = ">=1.2" tzlocal = ">=2.0.0" [package.extras] -dev = ["tzlocal (>=2.0.0)", "frozendict (>=1.2)", "sphinx-markdown-builder (>=0.5.2)", "Sphinx (>=1.8.4)", "pytest-cov (>=2.6.1)", "pytest (>=4.3.0)", "mock", "flake8-black (>=0.2.1)", "flake8 (>=3.7.8)", "bump2version (>=1.0.0)", "black (>=20)"] +dev = ["black (>=20)", "bump2version (>=1.0.0)", "flake8 (>=3.7.8)", "flake8-black (>=0.2.1)", "mock", "pytest (>=4.3.0)", "pytest-cov (>=2.6.1)", "Sphinx (>=1.8.4)", "sphinx-markdown-builder (>=0.5.2)", "frozendict (>=1.2)", "tzlocal (>=2.0.0)"] [[package]] name = "tenacity" @@ -4693,26 +4618,25 @@ testing = ["coverage (>=6.2)", "coverage-enable-subprocess (>=1)", "flaky (>=3.7 [[package]] name = "voila" -version = "0.3.6" +version = "0.4.0" description = "VoilĂ  turns Jupyter notebooks into standalone web applications" category = "main" optional = false python-versions = ">=3.7" [package.dependencies] -jupyter-client = ">=6.1.3,<8" +jupyter-client = ">=6.1.3,<=7.4.1" jupyter-core = ">=4.11.0" jupyter-server = ">=1.18,<2.0.0" jupyterlab-server = ">=2.3.0,<3" -nbclient = ">=0.4.0,<0.6" -nbconvert = ">=6.4.5,<7" +nbclient = ">=0.4.0,<0.8" +nbconvert = ">=6.4.5,<8" traitlets = ">=5.0.3,<6" websockets = ">=9.0" [package.extras] -dev = ["black", "bump2version", "jupyter-releaser (>=0.6,<1.0)"] -test = ["numpy", "pandas", "ipywidgets", "matplotlib", "mock", "pytest", "pytest-rerunfailures", "pytest-tornasync"] -visual_test = ["jupyterlab (>=3.0,<4.0)", "bqplot", "scipy", "ipympl (==0.8.7)", "ipyvolume", "jupyterlab-miami-nights (==0.3.2)"] +dev = ["black", "hatch", "jupyter-releaser"] +test = ["ipywidgets", "matplotlib", "mock", "numpy", "pandas", "papermill", "pytest", "pytest-rerunfailures", "pytest-tornasync"] [[package]] name = "watchdog" @@ -4778,14 +4702,11 @@ watchdog = ["watchdog"] [[package]] name = "widgetsnbextension" -version = "3.6.1" -description = "IPython HTML widgets for Jupyter" +version = "4.0.3" +description = "Jupyter interactive widgets for Jupyter Notebook" category = "main" optional = false -python-versions = "*" - -[package.dependencies] -notebook = ">=4.4.1" +python-versions = ">=3.7" [[package]] name = "win32-setctime" @@ -4796,7 +4717,7 @@ optional = false python-versions = ">=3.5" [package.extras] -dev = ["black (>=19.3b0)", "pytest (>=4.6.2)"] +dev = ["pytest (>=4.6.2)", "black (>=19.3b0)"] [[package]] name = "wrapt" @@ -4898,7 +4819,7 @@ prediction = ["torch", "pytorch-lightning", "u8darts"] [metadata] lock-version = "1.1" python-versions = "^3.8,<3.11, !=3.9.7" -content-hash = "3909cf6de72eaf90a525f982970d3020bb39fa0ff7c183b683cf476079955e14" +content-hash = "8ca9e9770f3a1000767ced3d201968914db06136cde19041d046b2ea8d2ca8c1" [metadata.files] absl-py = [] @@ -5028,9 +4949,7 @@ jinja2 = [] joblib = [] json5 = [] jsonschema = [] -jupyter = [] jupyter-client = [] -jupyter-console = [] jupyter-core = [] jupyter-lsp = [] jupyter-server = [] @@ -5167,8 +5086,6 @@ pywinpty = [] pyyaml = [] pyzmq = [] qdldl = [] -qtconsole = [] -qtpy = [] quandl = [] rapidfuzz = [] regex = [] diff --git a/pyproject.toml b/pyproject.toml index 9aa43b065e0..305574d41e7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,6 @@ pytrends = "^4.7.3" matplotlib = "^3.3.3" plotly = "^5.0.0" prompt-toolkit = "^3.0.16" -jupyter = "^1.0.0" jupyterlab = "^3.2.4" mplfinance = "^0.12.7-alpha.7" seaborn = "^0.11.0" @@ -69,7 +68,7 @@ jsonschema = "^3.2.0" pandas = "^1.5.0" pandas-market-calendars = "~3.2" ipympl = "^0.8.2" -voila = "^0.3.0" +voila = ">=0.3.0" rich = "^12.6.0" investpy = "^1.0.7" dnspython = "^2.1.0" @@ -79,7 +78,7 @@ ascii-magic = "^1.6" squarify = "^0.4.3" finnhub-python = "^2.4.10" linearmodels = "^4.25" -ipywidgets = "^7.7.0" +ipywidgets = "^8.0.2" Jinja2 = "^3.0.3" Riskfolio-Lib = {version = "^3.1.1", optional = true} ccxt = "^1.91.60" @@ -108,6 +107,7 @@ pytorch-lightning = {version = "1.6.5", optional = true} u8darts = {extras = ["torch"], version = "0.22.0", optional = true} docstring-parser = {version = "^0.15", optional = true} grpcio = "<1.51.0" +jupyterlab-widgets = "^3.0.3" [tool.poetry.dev-dependencies] pytest = "^6.2.2" @@ -119,7 +119,7 @@ codespell = "^2.0.0" pyupgrade = "^2.11.0" sphinx = "^4.5.0" myst-parser = "^0.15.2" -black = {extras = ["jupyter"], version = "^22.1.0"} +black = {version = "^22.1.0", extras = ["jupyter"]} bandit = "^1.7.0" coverage = ">=5.5" vcrpy = "^4.1.1" diff --git a/requirements-full.txt b/requirements-full.txt index 93246993d7f..b773f122109 100644 --- a/requirements-full.txt +++ b/requirements-full.txt @@ -14,12 +14,12 @@ ascii-magic==1.6; python_version >= "3.5" astor==0.8.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8" astroid==2.12.12; python_full_version >= "3.7.2" astropy==5.1.1; python_version >= "3.8" -asttokens==2.0.8; python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" +asttokens==2.0.8; python_version >= "3.8" async-timeout==4.0.2; python_version >= "3.6" and python_full_version >= "3.7.0" atomicwrites==1.4.1; sys_platform == "win32" and python_version >= "3.7" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" attrs==21.4.0; python_full_version >= "3.7.0" and python_version >= "3.7" and (python_version >= "3.6" and python_full_version < "3.0.0" and python_version < "4.0" or python_version >= "3.6" and python_version < "4.0" and python_full_version >= "3.5.0") and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0") babel==2.10.3; python_version >= "3.7" -backcall==0.2.0; python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" +backcall==0.2.0; python_version >= "3.8" backoff==2.2.1; python_version >= "3.7" and python_version < "4.0" and python_full_version >= "3.7.0" backports.zoneinfo==0.2.1; python_version >= "3.7" and python_full_version < "3.9.7" and python_version < "3.9" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.6") or python_full_version > "3.9.7" and python_version >= "3.6" and python_version < "3.9" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.6.0" or python_full_version > "3.9.7" and python_version >= "3.6") bandit==1.7.4; python_version >= "3.7" @@ -35,14 +35,14 @@ cachetools==5.2.0; python_version >= "3.7" and python_version < "4.0" and (pytho catboost==1.1.1; python_version >= "3.7" ccxt==1.95.43 certifi==2022.9.24; python_version >= "3.8" and python_version < "4" and python_full_version >= "3.7.1" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7") -cffi==1.15.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7" and implementation_name == "pypy" +cffi==1.15.1; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" cfgv==3.3.1; python_full_version >= "3.6.1" and python_version >= "3.7" charset-normalizer==2.1.1; python_full_version >= "3.6.0" click==8.1.3; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7" cloudpickle==2.2.0; python_version >= "3.7" cmdstanpy==1.0.8; python_version >= "3.7" codespell==2.2.2; python_version >= "3.7" -colorama==0.4.6; python_full_version >= "3.7.2" and python_version >= "3.8" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.7.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.7.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") or platform_system == "Windows" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and python_full_version >= "3.7.0") and python_full_version < "4.0.0" +colorama==0.4.6; python_full_version >= "3.7.2" and python_version >= "3.8" and sys_platform == "win32" and (python_version >= "3.6" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.6" and python_full_version >= "3.7.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" or platform_system == "Windows" and python_version >= "3.7" and python_full_version >= "3.7.0") and (python_version >= "3.7" and python_full_version < "3.0.0" and platform_system == "Windows" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") or platform_system == "Windows" and python_version >= "3.7" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7") and python_full_version >= "3.7.0") and (python_version >= "3.8" and python_full_version < "3.0.0" and sys_platform == "win32" or sys_platform == "win32" and python_version >= "3.8" and python_full_version >= "3.7.0") and python_full_version < "4.0.0" commonmark==0.9.1; python_full_version >= "3.6.3" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7") convertdate==2.4.0; python_version >= "3.7" and python_version < "4" coverage==6.5.0; python_version >= "3.7" @@ -54,7 +54,7 @@ cython==0.29.32; python_version >= "3.8" and python_full_version < "3.0.0" and s dateparser==1.1.2; python_version >= "3.5" datetime==4.7; python_version >= "3.5" debugpy==1.6.3; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7" -decorator==5.1.1; python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.5") and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.5") +decorator==5.1.1; python_version >= "3.8" and (python_version >= "3.5" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.5") and (python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.5") defusedxml==0.7.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7" degiro-connector==2.0.21; python_full_version >= "3.7.1" and python_full_version < "4.0.0" deprecation==2.1.0 @@ -68,7 +68,7 @@ entrypoints==0.4; python_full_version >= "3.7.0" and python_full_version < "4.0. ephem==4.1.3; python_version >= "3.7" and python_version < "4" et-xmlfile==1.1.0; python_version >= "3.6" exchange-calendars==4.2.3; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0" -executing==1.1.1; python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" +executing==1.1.1; python_version >= "3.8" fastjsonschema==2.16.2; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7" feedparser==6.0.10; python_version >= "3.6" ffn==0.3.6; python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" @@ -110,25 +110,23 @@ investiny==0.5.0; python_version >= "3.8" and python_version < "4.0" investpy==1.0.8; python_version >= "3.7" ipyflex==0.2.4; python_version >= "3.6" ipykernel==6.16.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7" -ipympl==0.8.8 +ipympl==0.8.4 ipython-genutils==0.2.0; python_version >= "3.7" ipython==8.5.0; python_version >= "3.8" -ipywidgets==7.7.2 +ipywidgets==8.0.2; python_version >= "3.7" iso8601==0.1.16 isort==5.10.1; python_full_version >= "3.7.2" and python_version < "4.0" -jedi==0.18.1; python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" +jedi==0.18.1; python_version >= "3.8" jinja2==3.1.2; python_version >= "3.7" joblib==1.2.0; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8" json5==0.9.10; python_version >= "3.7" jsonschema==3.2.0 -jupyter-client==7.4.3; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7" -jupyter-console==6.4.4; python_version >= "3.7" +jupyter-client==7.4.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7" jupyter-core==4.11.2; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7" jupyter-server==1.21.0; python_version >= "3.7" -jupyter==1.0.0 jupyterlab-pygments==0.2.2; python_version >= "3.7" jupyterlab-server==2.16.1; python_version >= "3.7" -jupyterlab-widgets==1.1.1; python_version >= "3.6" +jupyterlab-widgets==3.0.3; python_version >= "3.7" jupyterlab==3.5.0; python_version >= "3.7" kiwisolver==1.4.4; python_version >= "3.7" korean-lunar-calendar==0.3.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0" @@ -142,7 +140,7 @@ lxml==4.9.1; python_version >= "3.7" and python_full_version < "3.0.0" or python markdown-it-py==1.1.0; python_version >= "3.6" and python_version < "4.0" markdown==3.4.1; python_version >= "3.7" markupsafe==2.1.1; python_version >= "3.7" -matplotlib-inline==0.1.6; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8" +matplotlib-inline==0.1.6; python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" matplotlib==3.5.3; python_version >= "3.7" mccabe==0.6.1; python_full_version >= "3.7.2" mdit-py-plugins==0.2.8; python_version >= "3.6" and python_version < "4.0" @@ -180,12 +178,12 @@ pandas-ta==0.3.14b pandas==1.5.1; python_version >= "3.8" pandocfilters==1.5.0; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7" papermill @ git+https://github.com/nteract/papermill.git@main ; python_version >= "3.7" -parso==0.8.3; python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" -pathspec==0.10.1; python_version >= "3.7" +parso==0.8.3; python_version >= "3.8" +pathspec==0.10.2; python_version >= "3.7" patsy==0.5.3; python_version >= "3.8" pbr==5.11.0; python_version >= "3.8" -pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" -pickleshare==0.7.5; python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" +pexpect==4.8.0; sys_platform != "win32" and python_version >= "3.8" +pickleshare==0.7.5; python_version >= "3.8" pillow==9.2.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7" platformdirs==2.5.2; python_version >= "3.7" and python_full_version >= "3.7.2" plotly==5.10.0; python_version >= "3.6" @@ -201,8 +199,8 @@ prophet==1.1.1; python_version >= "3.7" protobuf==3.20.1; python_version >= "3.7" psaw==0.0.12; python_version >= "3" psutil==5.9.3; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7" -ptyprocess==0.7.0; sys_platform != "win32" and python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" and os_name != "nt" -pure-eval==0.2.2; python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" +ptyprocess==0.7.0; sys_platform != "win32" and python_version >= "3.8" and os_name != "nt" +pure-eval==0.2.2; python_version >= "3.8" py==1.11.0; python_full_version >= "3.7.0" and python_version >= "3.7" and python_full_version < "4.0.0" and implementation_name == "pypy" pyally==1.1.2 pyarrow==9.0.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7" @@ -211,7 +209,7 @@ pyasn1==0.4.8; python_version >= "3.7" and python_full_version < "3.0.0" and pyt pycares==4.2.2; python_version >= "3.5.2" and python_full_version >= "3.7.0" pycodestyle==2.7.0; python_full_version >= "3.7.0" pycoingecko==2.3.0 -pycparser==2.21; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7" and implementation_name == "pypy" +pycparser==2.21; implementation_name == "pypy" and python_version >= "3.7" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" pydantic==1.8.2; python_full_version >= "3.7.0" and python_full_version < "4.0.0" pydeck==0.8.0b4; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.7" pydeprecate==0.3.2; python_version >= "3.7" @@ -251,8 +249,6 @@ pywinpty==2.0.8; os_name == "nt" and python_version >= "3.7" pyyaml==6.0; python_version >= "3.8" pyzmq==24.0.1; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.7" qdldl==0.1.5.post2; python_version >= "3.7" -qtconsole==5.3.2; python_version >= "3.7" -qtpy==2.2.1; python_version >= "3.7" quandl==3.7.0; python_version >= "3.6" rapidfuzz==1.9.1; python_version >= "2.7" regex==2022.3.2; python_version >= "3.6" @@ -266,7 +262,7 @@ rsa==4.9; python_version >= "3.6" and python_version < "4" and (python_version > ruamel.yaml.clib==0.2.7; platform_python_implementation == "CPython" and python_version < "3.11" and python_version >= "3.5" ruamel.yaml==0.17.21; python_version >= "3" scikit-learn==1.1.2; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8" -scipy==1.8.1; python_version >= "3.8" and python_version < "3.11" +scipy==1.9.3; python_version >= "3.8" screeninfo==0.6.7 scs==3.2.0; python_version >= "3.7" seaborn==0.11.2; python_version >= "3.6" @@ -277,7 +273,7 @@ setuptools-git==1.2; python_version >= "3.7" setuptools-scm==6.4.2; python_version >= "3.8" sgmllib3k==1.0.0; python_version >= "3.6" shap==0.41.0; python_version >= "3.7" -six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") +six==1.16.0; python_full_version >= "3.7.1" and python_version >= "3.8" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0" and python_version >= "3.7") and (python_version >= "2.7" and python_full_version < "3.0.0" or python_full_version >= "3.3.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.3.0" or python_full_version > "3.9.7") and (python_version >= "3.8" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.8") and (python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0") and (python_version >= "3.8" and python_full_version < "3.0.0" or python_version >= "3.8" and python_full_version >= "3.3.0") and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.7") slicer==0.0.7; python_version >= "3.7" smmap==5.0.0; python_version >= "3.7" sniffio==1.3.0; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.6.2" @@ -293,7 +289,7 @@ sphinxcontrib-qthelp==1.0.3; python_version >= "3.6" sphinxcontrib-serializinghtml==1.1.5; python_version >= "3.6" squarify==0.4.3 sseclient==0.0.27 -stack-data==0.5.1; python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" +stack-data==0.5.1; python_version >= "3.8" statsforecast==1.3.1; python_version >= "3.7" statsmodels==0.13.2; python_version >= "3.7" stevedore==4.1.0; python_version >= "3.8" @@ -321,7 +317,7 @@ torchmetrics==0.10.3; python_version >= "3.7" tornado==6.2; python_version >= "3.7" and python_full_version < "3.9.7" and python_full_version >= "3.7.0" or python_full_version > "3.9.7" and python_version >= "3.7" and python_full_version < "4.0.0" tqdm==4.64.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.4.0" and python_version >= "3.7" tradingview-ta==3.3.0; python_version >= "3.6" -traitlets==5.5.0; python_full_version >= "3.7.0" and python_full_version < "4.0.0" and python_version >= "3.8" +traitlets==5.5.0; python_version >= "3.8" and python_full_version >= "3.7.0" and python_full_version < "4.0.0" types-python-dateutil==2.8.19.2 types-pytz==2021.3.8 types-pyyaml==6.0.12 @@ -343,14 +339,14 @@ validators==0.20.0; python_version >= "3.7" and python_full_version < "3.9.7" or valinvest==0.0.2; python_version >= "3.6" vcrpy==4.2.1; python_version >= "3.7" virtualenv==20.16.5; python_version >= "3.7" -voila==0.3.6; python_version >= "3.7" +voila==0.4.0; python_version >= "3.7" watchdog==2.1.9; python_version >= "3.6" -wcwidth==0.2.5; python_full_version >= "3.7.0" and python_version >= "3.8" and python_full_version < "4.0.0" +wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.8" webencodings==0.5.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7" websocket-client==1.4.1; python_version >= "3.8" and python_version < "4.0" websockets==10.3; python_version >= "3.7" werkzeug==2.2.2; python_version >= "3.7" -widgetsnbextension==3.6.1; python_version >= "3.6" +widgetsnbextension==4.0.3; python_version >= "3.7" win32-setctime==1.1.0; python_version >= "3.5" and python_full_version >= "3.7.0" and sys_platform == "win32" wrapt==1.14.1; python_full_version >= "3.7.2" and python_full_version < "4.0.0" and (python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7") and python_version >= "3.8" and python_version < "3.11" xarray==2022.11.0; python_version >= "3.8" diff --git a/requirements.txt b/requirements.txt index 7da316c09fa..878a5c58200 100644 --- a/requirements.txt +++ b/requirements.txt @@ -86,24 +86,22 @@ investiny==0.5.0; python_version >= "3.8" and python_version < "4.0" investpy==1.0.8; python_version >= "3.7" ipyflex==0.2.4; python_version >= "3.6" ipykernel==6.16.1; python_version >= "3.7" -ipympl==0.8.8 +ipympl==0.8.4 ipython-genutils==0.2.0; python_version >= "3.7" ipython==8.5.0; python_version >= "3.8" -ipywidgets==7.7.2 +ipywidgets==8.0.2; python_version >= "3.7" iso8601==0.1.16 jedi==0.18.1; python_version >= "3.8" jinja2==3.1.2; python_version >= "3.7" joblib==1.2.0; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8" json5==0.9.10; python_version >= "3.7" jsonschema==3.2.0 -jupyter-client==7.4.3; python_full_version >= "3.7.0" and python_version >= "3.7" -jupyter-console==6.4.4; python_version >= "3.7" +jupyter-client==7.4.1; python_full_version >= "3.7.0" and python_version >= "3.7" jupyter-core==4.11.2; python_full_version >= "3.7.0" and python_version >= "3.7" jupyter-server==1.21.0; python_version >= "3.7" -jupyter==1.0.0 jupyterlab-pygments==0.2.2; python_version >= "3.7" jupyterlab-server==2.16.1; python_version >= "3.7" -jupyterlab-widgets==1.1.1; python_version >= "3.6" +jupyterlab-widgets==3.0.3; python_version >= "3.7" jupyterlab==3.5.0; python_version >= "3.7" kiwisolver==1.4.4; python_version >= "3.7" korean-lunar-calendar==0.3.1; python_version >= "3.8" and python_version < "4.0" and python_full_version >= "3.7.0" @@ -194,8 +192,6 @@ pywinpty==2.0.8; os_name == "nt" and python_version >= "3.7" pyyaml==6.0; python_version >= "3.8" pyzmq==24.0.1; python_version >= "3.7" qdldl==0.1.5.post2; python_version >= "3.7" -qtconsole==5.3.2; python_version >= "3.7" -qtpy==2.2.1; python_version >= "3.7" quandl==3.7.0; python_version >= "3.6" rapidfuzz==1.9.1; python_version >= "2.7" regex==2022.3.2; python_version >= "3.6" @@ -208,7 +204,7 @@ robin-stocks==2.1.0; python_version >= "3" ruamel.yaml.clib==0.2.7; platform_python_implementation == "CPython" and python_version < "3.11" and python_version >= "3.5" ruamel.yaml==0.17.21; python_version >= "3" scikit-learn==1.1.2; python_version >= "3.8" and python_full_version < "3.0.0" or python_full_version >= "3.6.0" and python_version >= "3.8" -scipy==1.8.1; python_version >= "3.8" and python_version < "3.11" +scipy==1.9.3; python_version >= "3.8" screeninfo==0.6.7 scs==3.2.0; python_version >= "3.7" seaborn==0.11.2; python_version >= "3.6" @@ -254,13 +250,13 @@ user-agent==0.1.10 vadersentiment==3.3.2 validators==0.20.0; python_version >= "3.7" and python_full_version < "3.9.7" or python_full_version > "3.9.7" and python_version >= "3.4" valinvest==0.0.2; python_version >= "3.6" -voila==0.3.6; python_version >= "3.7" +voila==0.4.0; python_version >= "3.7" watchdog==2.1.9; python_version >= "3.6" wcwidth==0.2.5; python_full_version >= "3.6.2" and python_version >= "3.8" webencodings==0.5.1; python_version >= "3.7" and python_full_version < "3.0.0" or python_full_version >= "3.5.0" and python_version >= "3.7" websocket-client==1.4.1; python_version >= "3.8" and python_version < "4.0" websockets==10.3; python_version >= "3.7" -widgetsnbextension==3.6.1; python_version >= "3.6" +widgetsnbextension==4.0.3; python_version >= "3.7" win32-setctime==1.1.0; python_version >= "3.5" and python_full_version >= "3.7.0" and sys_platform == "win32" wrapt==1.14.1; python_full_version >= "3.7.1" and python_full_version < "4.0.0" and python_version >= "3.8" xlsxwriter==3.0.3; python_version >= "3.7" diff --git a/tests/README.md b/tests/README.md index 92bc3a7b17c..8f3d000f43e 100644 --- a/tests/README.md +++ b/tests/README.md @@ -549,7 +549,7 @@ After updating the `pyproject.toml` you will have to export the `requirements` f ```bash poetry export -f requirements.txt -o requirements.txt --without-hashes --dev -poetry export -f requirements.txt -o requirements-full.txt --extras prediction --without-hashes --dev +poetry export -f requirements.txt -o requirements-full.txt --extras prediction --extras optimization --without-hashes --dev ``` # 4. Maintain `unit tests` diff --git a/tests/conftest.py b/tests/conftest.py index a3503b6ddb8..8fc6deabac3 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -315,7 +315,7 @@ def pytest_addoption(parser: Parser): parser.addoption( "--optimization", action="store_true", - help="To run tests with the marker : @pytest.mark.prediction", + help="To run tests with the marker : @pytest.mark.optimization", ) parser.addoption( "--rewrite-expected", diff --git a/tests/openbb_terminal/portfolio/portfolio_optimization/test_optimizer_view.py b/tests/openbb_terminal/portfolio/portfolio_optimization/test_optimizer_view.py deleted file mode 100644 index 7b392e918d0..00000000000 --- a/tests/openbb_terminal/portfolio/portfolio_optimization/test_optimizer_view.py +++ /dev/null @@ -1,77 +0,0 @@ -from unittest import TestCase # , mock - -# import vcr - -# from openbb_terminal.portfolio.portfolio_optimization import optimizer_view -# from tests.helpers import check_print - - -class TestOptimizerView(TestCase): - pass - # @check_print(assert_in="TSLA") - # @vcr.use_cassette( - # "tests/openbb_terminal/portfolio/portfolio_optimization/cassettes/test_optimizer_view/test_equal_weights.yaml", - # record_mode="new_episodes", - # ) - # def test_equal_weights(self): - # optimizer_view.display_equal_weight(["TSLA", "GME"], []) - - # @check_print(assert_in="TSLA") - # @vcr.use_cassette( - # "tests/openbb_terminal/portfolio/portfolio_optimization/cassettes/test_optimizer_view/test_property_weights.yaml", - # record_mode="new_episodes", - # ) - # def test_property_weighting(self): - # optimizer_view.display_property_weighting( - # ["TSLA", "GME"], ["-p", "previousClose"] - # ) - - # @check_print(assert_in="TSLA") - # @vcr.use_cassette( - # "tests/openbb_terminal/portfolio/portfolio_optimization/cassettes/test_optimizer_view/general1.yaml", - # record_mode="new_episodes", - # ) - # def test_max_sharpe(self): - # optimizer_view.max_sharpe(["TSLA", "GME"], []) - - # @check_print(assert_in="TSLA") - # @vcr.use_cassette( - # "tests/openbb_terminal/portfolio/portfolio_optimization/cassettes/test_optimizer_view/general1.yaml", - # record_mode="new_episodes", - # ) - # def test_min_volatility(self): - # optimizer_view.min_volatility(["TSLA", "GME"], []) - - # @check_print(assert_in="TSLA") - # @vcr.use_cassette( - # "tests/openbb_terminal/portfolio/portfolio_optimization/cassettes/test_optimizer_view/general1.yaml", - # record_mode="new_episodes", - # ) - # def test_max_quadratic_utility(self): - # optimizer_view.max_quadratic_utility(["TSLA", "GME"], []) - - # @check_print(assert_in="The minimum volatility") - # @vcr.use_cassette( - # "tests/openbb_terminal/portfolio/portfolio_optimization/cassettes/test_optimizer_view/general1.yaml", - # record_mode="new_episodes", - # ) - # def test_efficient_risk(self): - # optimizer_view.efficient_risk(["TSLA", "GME"], []) - - # @check_print(assert_in="TSLA") - # @vcr.use_cassette( - # "tests/openbb_terminal/portfolio/portfolio_optimization/cassettes/test_optimizer_view/general1.yaml", - # record_mode="new_episodes", - # ) - # def test_efficiet_return(self): - # optimizer_view.efficient_return(["TSLA", "GME"], []) - - # @check_print(assert_in="\n") - # @vcr.use_cassette( - # "tests/openbb_terminal/portfolio/portfolio_optimization/cassettes/test_optimizer_view/test_show_eff.yaml", - # record_mode="new_episodes", - # ) - # @mock.patch("matplotlib.pyplot.show") - # def test_show_ef(self, mock_mlp): - # # pylint: disable=unused-argument - # optimizer_view.show_ef(["TSLA", "GME"], []) diff --git a/tests/openbb_terminal/portfolio/portfolio_optimization/test_po_controller.py b/tests/openbb_terminal/portfolio/portfolio_optimization/test_po_controller.py index 3459b22919f..ed9bcd3e18e 100644 --- a/tests/openbb_terminal/portfolio/portfolio_optimization/test_po_controller.py +++ b/tests/openbb_terminal/portfolio/portfolio_optimization/test_po_controller.py @@ -5,7 +5,10 @@ import os import pytest # IMPORTATION INTERNAL -from openbb_terminal.portfolio.portfolio_optimization import po_controller +try: + from openbb_terminal.portfolio.portfolio_optimization import po_controller +except ImportError: + pytest.skip(allow_module_level=True) # pylint: disable=E1101 # pylint: disable=W0603 diff --git a/tests/openbb_terminal/portfolio/test_portfolio_controller.py b/tests/openbb_terminal/portfolio/test_portfolio_controller.py index 4668339691c..221ed23d985 100644 --- a/tests/openbb_terminal/portfolio/test_portfolio_controller.py +++ b/tests/openbb_terminal/portfolio/test_portfolio_controller.py @@ -198,13 +198,6 @@ def test_call_func_expect_queue(expected_queue, func, queue): [], dict(), ), - ( - "call_po", - [], - "PortfolioController.load_class", - [], - dict(), - ), ( "call_show", [], diff --git a/tests/website/__init__.py b/tests/website/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/website/test_generate_docs.py b/tests/website/test_generate_docs.py index 99da2be2034..453da179588 100644 --- a/tests/website/test_generate_docs.py +++ b/tests/website/test_generate_docs.py @@ -1,9 +1,13 @@ from typing import Optional +import pytest -from website import ( - generate_sdk_markdown as gen_sdk, - generate_terminal_markdown as gen_term, -) +try: + from website import ( + generate_sdk_markdown as gen_sdk, + generate_terminal_markdown as gen_term, + ) +except ImportError: + pytest.skip(allow_module_level=True) def test_generate_terminal_markdown(): @@ -36,6 +40,7 @@ def mock_func(arg1: Optional[str] = "Test", arg2: Optional[bool] = True) -> bool return True +# pylint:disable=too-few-public-methods class MockTrailMap: """Mock trail map"""