diff --git a/.tool-versions b/.tool-versions index 2bb5081..df134ef 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ python 3.7.12 -poetry 1.3.1 +poetry 1.3.2 diff --git a/poetry.lock b/poetry.lock index d8bf1e4..7e56399 100644 --- a/poetry.lock +++ b/poetry.lock @@ -12,6 +12,18 @@ files = [ {file = "alabaster-0.7.12.tar.gz", hash = "sha256:a661d72d58e6ea8a57f7a86e37d86716863ee5e92788398526d58b26a4e4dc02"}, ] +[[package]] +name = "appdirs" +version = "1.4.4" +description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"}, + {file = "appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41"}, +] + [[package]] name = "atomicwrites" version = "1.4.1" @@ -357,6 +369,26 @@ pipfile-deprecated-finder = ["pipreqs", "requirementslib"] plugins = ["setuptools"] requirements-deprecated-finder = ["pip-api", "pipreqs"] +[[package]] +name = "jedi" +version = "0.18.2" +description = "An autocompletion tool for Python that can be used for text editors." +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "jedi-0.18.2-py2.py3-none-any.whl", hash = "sha256:203c1fd9d969ab8f2119ec0a3342e0b49910045abe6af0a3ae83a5764d54639e"}, + {file = "jedi-0.18.2.tar.gz", hash = "sha256:bae794c30d07f6d910d32a7048af09b5a39ed740918da923c6b780790ebac612"}, +] + +[package.dependencies] +parso = ">=0.8.0,<0.9.0" + +[package.extras] +docs = ["Jinja2 (==2.11.3)", "MarkupSafe (==1.1.1)", "Pygments (==2.8.1)", "alabaster (==0.7.12)", "babel (==2.9.1)", "chardet (==4.0.0)", "commonmark (==0.8.1)", "docutils (==0.17.1)", "future (==0.18.2)", "idna (==2.10)", "imagesize (==1.2.0)", "mock (==1.0.1)", "packaging (==20.9)", "pyparsing (==2.4.7)", "pytz (==2021.1)", "readthedocs-sphinx-ext (==2.1.4)", "recommonmark (==0.5.0)", "requests (==2.25.1)", "six (==1.15.0)", "snowballstemmer (==2.1.0)", "sphinx (==1.8.5)", "sphinx-rtd-theme (==0.4.3)", "sphinxcontrib-serializinghtml (==1.1.4)", "sphinxcontrib-websupport (==1.2.4)", "urllib3 (==1.26.4)"] +qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +testing = ["Django (<3.1)", "attrs", "colorama", "docopt", "pytest (<7.0.0)"] + [[package]] name = "jinja2" version = "3.1.2" @@ -715,6 +747,22 @@ files = [ [package.dependencies] typing-extensions = {version = ">=3.7.4.3", markers = "python_version < \"3.8\""} +[[package]] +name = "parso" +version = "0.8.3" +description = "A Python Parser" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, + {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, +] + +[package.extras] +qa = ["flake8 (==3.8.3)", "mypy (==0.782)"] +testing = ["docopt", "pytest (<6.0.0)"] + [[package]] name = "pathspec" version = "0.10.3" @@ -777,6 +825,44 @@ files = [ {file = "pp_ez-0.2.0-py2.py3-none-any.whl", hash = "sha256:554dc28eff8b2df864fcd3326bd5fa0ec3f2b85bc9590fd96771a7c49e45c121"}, ] +[[package]] +name = "prompt-toolkit" +version = "3.0.36" +description = "Library for building powerful interactive command lines in Python" +category = "dev" +optional = false +python-versions = ">=3.6.2" +files = [ + {file = "prompt_toolkit-3.0.36-py3-none-any.whl", hash = "sha256:aa64ad242a462c5ff0363a7b9cfe696c20d55d9fc60c11fd8e632d064804d305"}, + {file = "prompt_toolkit-3.0.36.tar.gz", hash = "sha256:3e163f254bef5a03b146397d7c1963bd3e2812f0964bb9a24e6ec761fd28db63"}, +] + +[package.dependencies] +wcwidth = "*" + +[[package]] +name = "ptpython" +version = "3.0.22" +description = "Python REPL build on top of prompt_toolkit" +category = "dev" +optional = false +python-versions = ">=3.6" +files = [ + {file = "ptpython-3.0.22-py2.py3-none-any.whl", hash = "sha256:2b06f28e63b8bfe30736ac07d23c00adb4161c4f0e1c1a26a51344b07e2100bd"}, + {file = "ptpython-3.0.22.tar.gz", hash = "sha256:c097b324406014a005c6b09f493bbbdde571e412360af2ba1551873a10c36cf8"}, +] + +[package.dependencies] +appdirs = "*" +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} +jedi = ">=0.16.0" +prompt-toolkit = ">=3.0.18,<3.1.0" +pygments = "*" + +[package.extras] +all = ["black"] +ptipython = ["ipython"] + [[package]] name = "py" version = "1.11.0" @@ -1444,6 +1530,18 @@ files = [ [package.extras] watchmedo = ["PyYAML (>=3.10)"] +[[package]] +name = "wcwidth" +version = "0.2.6" +description = "Measures the displayed width of unicode strings in a terminal" +category = "dev" +optional = false +python-versions = "*" +files = [ + {file = "wcwidth-0.2.6-py2.py3-none-any.whl", hash = "sha256:795b138f6875577cd91bba52baf9e445cd5118fd32723b460e30a0af30ea230e"}, + {file = "wcwidth-0.2.6.tar.gz", hash = "sha256:a5220780a404dbe3353789870978e472cfe477761f06ee55077256e509b156d0"}, +] + [[package]] name = "wrapt" version = "1.14.1" @@ -1626,4 +1724,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.7.1" -content-hash = "ddad84bbfbef4f3a17f953244c87e8b4f797cfa78f0d21007f20e52551bb7e98" +content-hash = "3289cebc7d6e208eb6c810234b2c2a551c7541d1f109ebd4d017b04ff2a3d870" diff --git a/pyproject.toml b/pyproject.toml index b03e9f3..b961c8b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,7 @@ python = "^3.7.1" pandas = "^1.1" requests = "^2.0" -[tool.poetry.dev-dependencies] +[tool.poetry.group.dev.dependencies] black = "^21.12b0" isort = "^5.10.1" coveralls = "^3.3.1" @@ -42,6 +42,7 @@ Sphinx = "^4.3.2" sphinx-rtd-theme = "^1.0.0" sphinx-autodoc-typehints = "^1.12.0" pp-ez = "^0.2.0" +ptpython = "^3.0.22" [tool.black] target-version = ['py37'] diff --git a/src/blueskyapi/client.py b/src/blueskyapi/client.py index 8334e67..cc916bf 100644 --- a/src/blueskyapi/client.py +++ b/src/blueskyapi/client.py @@ -98,7 +98,7 @@ def forecast_history( self, lat: float, lon: float, - min_forecast_moment: Union[datetime, str], + min_forecast_moment: Optional[Union[datetime, str]] = None, max_forecast_moment: Optional[Union[datetime, str]] = None, forecast_distances: Optional[Iterable[int]] = None, columns: Optional[Iterable[str]] = None, diff --git a/tests/blueskyapi/client_test.py b/tests/blueskyapi/client_test.py index ec138a7..518d204 100644 --- a/tests/blueskyapi/client_test.py +++ b/tests/blueskyapi/client_test.py @@ -185,6 +185,14 @@ def with_string(client): max_forecast_moment="2021-12-28T00:00:00", ) + @responses.activate + def with_none(client): + add_api_response( + "/forecasts/history" + "?lat=53.5&lon=13.5" + ) + client.forecast_history(53.5, 13.5) + @responses.activate def with_invalid_value(client): with pytest.raises(TypeError, match="min_forecast_moment should be"): @@ -196,12 +204,10 @@ def with_none(client): add_api_response( "/forecasts/history" "?lat=53.5&lon=13.5" - "&min_forecast_moment=2021-12-27T18:00:00" ) client.forecast_history( 53.5, 13.5, - min_forecast_moment=datetime(2021, 12, 27, 18, 0), max_forecast_moment=None, )