From 1532e4cad687cc18f3e5d9678f7bed4569647c89 Mon Sep 17 00:00:00 2001 From: Marko Vejnovic Date: Sun, 3 Dec 2023 18:29:30 -0800 Subject: [PATCH] CI Integration, Readme and Licensing --- .github/res/badges/code-style.svg | 1 + .github/res/badges/python-version.svg | 1 + .github/workflows/lint-test.yaml | 39 ++++--- .gitignore | 3 +- LICENSE | 21 ++++ Makefile | 28 ------ README.md | 140 +++++++++++++++++++++++++- aiomarketstack/__init__.py | 15 ++- aiomarketstack/exceptions.py | 2 +- aiomarketstack/types.py | 4 +- docs/examples/matplotlib_plot.py | 45 +++++++++ docs/res/example_matplotlib_plot.png | Bin 0 -> 58788 bytes poetry.lock | 72 ++++++------- pyproject.toml | 28 ++++-- tests/__init__.py | 6 +- tests/__main__.py | 6 -- tox.ini | 21 ++++ 17 files changed, 320 insertions(+), 112 deletions(-) create mode 100644 .github/res/badges/code-style.svg create mode 100644 .github/res/badges/python-version.svg create mode 100644 LICENSE delete mode 100644 Makefile create mode 100644 docs/examples/matplotlib_plot.py create mode 100644 docs/res/example_matplotlib_plot.png delete mode 100644 tests/__main__.py create mode 100644 tox.ini diff --git a/.github/res/badges/code-style.svg b/.github/res/badges/code-style.svg new file mode 100644 index 0000000..0f81b57 --- /dev/null +++ b/.github/res/badges/code-style.svg @@ -0,0 +1 @@ +Code StyleCode Styleblackblack \ No newline at end of file diff --git a/.github/res/badges/python-version.svg b/.github/res/badges/python-version.svg new file mode 100644 index 0000000..1e7d84c --- /dev/null +++ b/.github/res/badges/python-version.svg @@ -0,0 +1 @@ +pythonpython3.8-3.113.8-3.11 \ No newline at end of file diff --git a/.github/workflows/lint-test.yaml b/.github/workflows/lint-test.yaml index 9b27d5b..8d11c36 100644 --- a/.github/workflows/lint-test.yaml +++ b/.github/workflows/lint-test.yaml @@ -1,5 +1,5 @@ -name: lint-and-test -run-name: Lint and Test +name: ci-regressions +run-name: Run CI Regressions on: pull_request: branches: @@ -9,25 +9,36 @@ on: - main jobs: - lint: - name: Build Lint and Test Code + regressions: + name: CI Regression Tests runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - - name: Install Dependencies - run: | - sudo apt-get update - sudo apt-get upgrade -y - sudo apt-get install -y poetry - poetry install + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.12' + cache: 'pip' - - name: Build Lint and Test - run: | - make ci-build-lint-test + - name: Grab Tox and Poetry + run: pip install tox poetry + + - name: Lint and Test + run: tox env: - MARKETSTACK_TOKEN_TEST: "${{ secrets.MarketstackFreeTestToken }}" + MARKETSTACK_TOKEN_TEST: "${{ secrets.MARKETSTACK_TOKEN_TEST }}" + + - name: Run a Build + run: poetry build + + - name: Create a build-artifacts tarball + run: | + tar -czf \ + build-artifacts.tar.gz \ + test-artifacts-* \ + dist - name: Upload Artifacts uses: actions/upload-artifact@v3 diff --git a/.gitignore b/.gitignore index 2cccbc3..ad8c18f 100644 --- a/.gitignore +++ b/.gitignore @@ -160,4 +160,5 @@ cython_debug/ #.idea/ # Build Artifact ignores -build-artifacts +build-artifacts*/ +build-artifacts.tar.gz diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..eba8aeb --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Marko Vejnovic + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Makefile b/Makefile deleted file mode 100644 index 72e1c0a..0000000 --- a/Makefile +++ /dev/null @@ -1,28 +0,0 @@ -PYTHON = poetry run python - -# Directories or files which can be linted -LINTABLE_NODES = aiomarketstack tests - -.PHONY: lint autolint test build - -lint: - $(PYTHON) -m mypy aiomarketstack tests - $(PYTHON) -m ruff check . - -autolint: - $(PYTHON) -m ruff check --fix . - -test: - $(PYTHON) -m pytest \ - --cov=aiomarketstack \ - --cov-report=html \ - --cov-report=term - -build: - mkdir -p build-artifacts - poetry build - rm -rf build-artifacts/dist - mv dist build-artifacts/dist - -ci-build-lint-test: build lint test - tar -czf build-artifacts.tar.gz build-artifacts diff --git a/README.md b/README.md index 2df646b..4283cde 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,16 @@ # aiomarketstack -`aiomarketstack` is a thin-and-light, Python-only `asyncio`-based -[marketsack](https://marketstack.com/) client. +![Python 3.8-3.11](.github/res/badges/python-version.svg) +![Code Style](.github/res/badges/code-style.svg) -## Getting Started +_`aiomarketstack` is an unofficial Python-only `asyncio`-based +[Marketstack](https://marketstack.com/) client._ + +This library aims to be extremely observable and, therefore, comes with +`structlog` (which I adore ❤️) support out of the box. I am also currently +working on `OpenTelemetry` metrics as well. + +## Installing To get started, grab yourself a copy of `aiomarketstack`: @@ -11,7 +18,132 @@ To get started, grab yourself a copy of `aiomarketstack`: pip install aiomarketstack ``` +## Getting Started + +The easiest way to use client is via the `HttpMarketstackClient`. The following +example illustrates the most powerful utilities in `aiomarketstack`. + +```python +from __future__ import annotations + +import asyncio + +from datetime import date +import matplotlib.pyplot as plt + +from aiomarketstack import HttpMarketstackClient, MarketstackPlan +from aiomarketstack.exceptions import ResponseError +from aiomarketstack.types import Eod + + +async def main(): + date_range = (date(2023, 1, 1), date(2023, 1, 31)) + + async with HttpMarketstackClient( + "your-token-here", + MarketstackPlan.FREE + ) as client: + try: + eod_values: tuple[Eod, ...] = ( + await client.get_eod_range(("AMZN", ), date_range) + ) + except ResponseError as resp_err: + print(f"Uh-oh, a response error ocurred: {resp_err}") + raise + + # Note that there will be missing data (if the market was closed). + plt_xaxis = [eod["date"] for eod in eod_values] + plt_yaxes = { + key: [eod[key] for eod in eod_values] + for key in {"open", "high", "low", "close"} + } + + for label, data in plt_yaxes.items(): + plt.plot(plt_xaxis, data, label=label.capitalize()) + plt.legend() + plt.grid() + plt.title("End-of-day prices for AMZN for January 2023") + plt.xlabel("Date in January") + plt.ylabel("Price in $") + plt.show() + + +asyncio.run(main()) +``` + +Run this example to get a pretty output: + +![Matplotlib Example Output](docs/res/example_matplotlib_plot.png) + +## Documentation + +In progress! + +### Why not [marketstack-python](https://github.com/mreiche/marketstack-python)? + +The main reason this library exists is because I found the great +[marketstack-python](https://github.com/mreiche/marketstack-python) to be +unwieldy for my needs. + +The three main advantages of `aiomarketstack` are: + +* OpenTelemetry Metrics (Currently In Progress) +* [structlog](https://www.structlog.org/en/stable/)-style Logging. +* Much more flexible API + +The main disadvantage of this library, compared with +[marketstack-python](https://github.com/mreiche/marketstack-python) is that it +does not and **will not** cache your queries. This is not and will not be the +goal of this library. + +## Development + +To manually build `aiomarketstack` for development, we use `poetry`. Get +started with: + +```bash +git clone https://github.com/markovejnovic/aiomarketstack.git +cd aiomarketstack +poetry install && poetry build +``` + +### Unit Tests + +You can test your code against test suite via `tox`. + +```bash +MARKETSTACK_TOKEN_TEST= tox +``` + +> [!CAUTION] +> This will consume about 30 API requests. + +## Contributing +In progress! Feel free to open a issue if you spot something! +## License -## Dependencies +``` +MIT License + +Copyright (c) 2023 Marko Vejnovic + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +``` diff --git a/aiomarketstack/__init__.py b/aiomarketstack/__init__.py index a1baf15..58227be 100644 --- a/aiomarketstack/__init__.py +++ b/aiomarketstack/__init__.py @@ -21,7 +21,7 @@ from __future__ import annotations import warnings -from datetime import date, datetime +from datetime import date, datetime, timezone from enum import IntEnum from typing import ( TYPE_CHECKING, @@ -29,13 +29,15 @@ Callable, Collection, Literal, - Self, ) import aiohttp import structlog from aiohttp import ClientResponse, ClientSession +if TYPE_CHECKING: + from typing_extensions import Self + from aiomarketstack.exceptions import ( ForbiddenError, FunctionAccessRestrictedError, @@ -306,9 +308,16 @@ def _deserialize_eod(raw_eod: RawEod) -> Eod: "dividend": raw_eod["dividend"], "symbol": raw_eod["symbol"], "exchange": raw_eod["exchange"], - "date": datetime.fromisoformat(raw_eod["date"]).date(), + "date": _MarketstackClient._parse_marketstack_date(raw_eod["date"]), } + @staticmethod + def _parse_marketstack_date(date_str: str) -> date: + # Necessary because python < 3.11's fromisoformat didn't support IS8601. + marketstack_date_format = "%Y-%m-%dT%H:%M:%S%z" + return datetime.strptime(date_str, marketstack_date_format) \ + .replace(tzinfo=timezone.utc).date() + class HttpMarketstackClient(_MarketstackClient): """The main marketstack client. diff --git a/aiomarketstack/exceptions.py b/aiomarketstack/exceptions.py index 77fadde..fa53ab2 100644 --- a/aiomarketstack/exceptions.py +++ b/aiomarketstack/exceptions.py @@ -1,8 +1,8 @@ """Marketstack Error Response Errors.""" -from typing import Self from aiohttp.client import ClientResponse +from typing_extensions import Self class ResponseError(Exception): diff --git a/aiomarketstack/types.py b/aiomarketstack/types.py index 0240681..c8157ff 100644 --- a/aiomarketstack/types.py +++ b/aiomarketstack/types.py @@ -2,11 +2,13 @@ from __future__ import annotations -from typing import TYPE_CHECKING, NotRequired, Required, Sequence, TypedDict +from typing import TYPE_CHECKING, Sequence, TypedDict if TYPE_CHECKING: from datetime import date + from typing_extensions import NotRequired, Required + class Eod(TypedDict): """Represents an end-of-day marketstack return type.""" diff --git a/docs/examples/matplotlib_plot.py b/docs/examples/matplotlib_plot.py new file mode 100644 index 0000000..d1555d5 --- /dev/null +++ b/docs/examples/matplotlib_plot.py @@ -0,0 +1,45 @@ +from __future__ import annotations + +import asyncio +from datetime import date + +import matplotlib.pyplot as plt + +from aiomarketstack import HttpMarketstackClient, MarketstackPlan +from aiomarketstack.exceptions import ResponseError +from aiomarketstack.types import Eod + + +async def main() -> None: + date_range = (date(2023, 1, 1), date(2023, 1, 31)) + + async with HttpMarketstackClient( + "your-token-here", + MarketstackPlan.FREE, + ) as client: + try: + eod_values: tuple[Eod, ...] = ( + await client.get_eod_range(("AMZN", ), date_range) + ) + except ResponseError as resp_err: + print(f"Uh-oh, a response error ocurred: {resp_err}") + raise + + # Note that there will be missing data (if the market was closed). + plt_xaxis = [eod["date"] for eod in eod_values] + plt_yaxes = { + key: [eod[key] for eod in eod_values] + for key in ("open", "high", "low", "close") + } + + for label, data in plt_yaxes.items(): + plt.plot(plt_xaxis, data, label=label) + plt.legend() + plt.grid() + plt.title("End-of-day prices for AMZN for January 2023") + plt.xlabel("Date in January") + plt.ylabel("Price in $") + plt.show() + + +asyncio.run(main()) diff --git a/docs/res/example_matplotlib_plot.png b/docs/res/example_matplotlib_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..61071b5b488d51e55bb93fe8f23dcc81be7c4d32 GIT binary patch literal 58788 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