From ecc5985d91c17b5e9560357917749ab7095741fb Mon Sep 17 00:00:00 2001 From: Renilton Viana Date: Thu, 28 Apr 2022 08:22:32 -0300 Subject: [PATCH 1/8] primeiro --- .github/workflows/main.yaml | 44 ++++++++++++++++++++++++ beerlog.db | Bin 0 -> 12288 bytes beerlog/api.py | 28 +++++++++++++++ beerlog/cli.py | 64 +++++++++++++++++++++++++++++++++-- beerlog/core.py | 29 ++++++++++++++++ beerlog/database.py | 19 +++++++++++ beerlog/models.py | 35 +++++++++++++++++++ beerlog/rotas.py | 12 +++++++ beerlog/serializers.py | 31 +++++++++++++++++ beerlog/settings.toml | 5 ++- conftest.py | 14 ++++++++ identifier.sqlite | 0 script.py | 1 + tests/test_core.py | 12 +++++++ tests/test_functional_api.py | 30 ++++++++++++++++ tests/test_functional_cli.py | 11 ++++++ 16 files changed, 331 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/main.yaml create mode 100644 beerlog.db create mode 100644 beerlog/api.py create mode 100644 beerlog/rotas.py create mode 100644 beerlog/serializers.py create mode 100644 identifier.sqlite create mode 100644 script.py create mode 100644 tests/test_core.py create mode 100644 tests/test_functional_api.py create mode 100644 tests/test_functional_cli.py diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yaml new file mode 100644 index 0000000..cf1780d --- /dev/null +++ b/.github/workflows/main.yaml @@ -0,0 +1,44 @@ +name: CI +on: + push: + branches: + - "*" + pull_request: + branches: + - "*" + workflow_dispatch: + +jobs: + test: + strategy: + fail-fast: true + matrix: + python-version: ['3.8', '3.10'] + os: [ubuntu-latest] + runs-on: ${{matrix.os}} + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: ${{matrix.python-version}} + - name: Install Poetry + run: pip install --upgrade pip && pip install poetry + + - name: Install Project + run: poetry install + + - name: Look for style errors + run: poetry run flake8 beerlog + + - name: Look for auto format errors + run: poetry run black -l 79 --check --diff beerlog tests + + - name: Run tests + run: poetry run pytest -v --junitxml=test-result.xml + + - name: publish junit results + uses: EnricoMi/publish-unit-test-result-action@v1 + if: always() + with: + files: test-result.xml + check_name: Test Result (Python ${{matrix.python-version}}) \ No newline at end of file diff --git a/beerlog.db b/beerlog.db new file mode 100644 index 0000000000000000000000000000000000000000..e81ff196ea1140f44997e998de4bd8a467ca22e0 GIT binary patch literal 12288 zcmeI$KX21O6aetEo!D_yVi1a|ih*N-B5K)p{*xF9;kH&Anx<*~AUaiU9TATS%oKF)%Q^lkWL^FYj{q^JKTT>v0z0gLHHhW|*R@ zND$CNj1fX}tV^t4G?5K*7dPxGOpX6EoJ0E7%PTA^mfj=n8Vk@s00ck)1V8`;KmY_l z00ck)1VG?l2s{ww`CDb78xMQYX?(i77e%ApxW_NjN-OX?0j@PxgD3cR4sSIu&*M9B zZ}C+kDD&mA@cMoh?j;eQ=UqIn?fA>};QZG`HSV#+I>B1dx`&JEFg%LzW52bs?zeDb ztAiWedYvc6*^6X$<{$~5r=yESE)~T`VLzIg*-yvW%)}^UukuqH>hb$kcH~ZNGvFI( zwrZPxYX@%xJCnl}7x}w+p|p;)ciJ0mPrF)*RHNb%Q@2gaW@nXH-Sx>1J0~e#IgAd*+fBb9%kp#) z@dzuTdc`no*P!Cx7P+2j>84XPTtWmD-8i%0sJ*n`^y`7F6fW(KdM5FxtsBI2t8S4! z%Yya+X+N~@+E?w1_F4O+ePk2RKmY_l00ck)1V8`;KmY_l00ck)1pZ@zyd(&P0*{Kq Xqb&27XP;37A(!J(l6VwFNmA9HZfeE) literal 0 HcmV?d00001 diff --git a/beerlog/api.py b/beerlog/api.py new file mode 100644 index 0000000..baca62c --- /dev/null +++ b/beerlog/api.py @@ -0,0 +1,28 @@ +from fastapi import FastAPI, Response, status +from typing import Optional, List +from beerlog.core import get_beers_from_database +from beerlog.serializers import BeerIn, BeerOut +from beerlog.models import Beer +from beerlog.database import get_session + + +api = FastAPI(title="beerlog") + + +@api.get("/beers", response_model=List[BeerOut]) +async def list_beers(style: Optional[str] = None): + """Lists beers from the database""" + beers = get_beers_from_database(style) + return beers + + +@api.post("/beers", response_model=BeerOut) +async def add_beer(beer_in: BeerIn, response: Response): + beer = Beer(**beer_in.dict()) + with get_session() as session: + session.add(beer) + session.commit() + session.refresh(beer) + + response.status_code = status.HTTP_201_CREATED + return beer diff --git a/beerlog/cli.py b/beerlog/cli.py index 03c2367..04d50e9 100644 --- a/beerlog/cli.py +++ b/beerlog/cli.py @@ -1,5 +1,63 @@ -from .config import settings +# import sys +# from .config import settings +# +# +# def main(): +# for attr in sys.argv[1:]: +# print ("-> ", attr) +# # print(sys.argv) +# +# # print("Hello from", settings.NAME) +import typer +from typing import Optional +from rich.console import Console +from rich.table import Table +from rich import print -def main(): - print("Hello from", settings.NAME) +from beerlog.core import add_beer_to_database, get_beers_from_database + +main = typer.Typer(help="Beer Management Application") +console = Console() + + +@main.command("add") +def add( + name: str, + style: str, + flavor: int = typer.Option(...), + image: int = typer.Option(...), + cost: int = typer.Option(...), +): + """Adds a new beer to database""" + # print(name, style, flavor, image, cost) + if add_beer_to_database(name, style, flavor, image, cost): + print(":beer_mug: Beer added to database") + else: + print(":no entry: - Cannot add beer") + + +@main.command("list") +def list_beers(style: Optional[str] = None): + """List beers in database""" + print(style) + beers = get_beers_from_database(style) + # print(beers) + table = Table(title="beerlog" if not style else f"Beerlog {style}") + headers = [ + "id", + "name", + "style", + "flavor", + "image", + "cost", + "rate", + "date", + ] + for header in headers: + table.add_column(header, style="magenta") + for beer in beers: + beer.date = beer.date.strftime("%Y-%m-%d") + values = [str(getattr(beer, header)) for header in headers] + table.add_row(*values) + console.print(table) diff --git a/beerlog/core.py b/beerlog/core.py index e69de29..fb81580 100644 --- a/beerlog/core.py +++ b/beerlog/core.py @@ -0,0 +1,29 @@ +from typing import Optional, List +from sqlmodel import select +from beerlog.database import get_session +from beerlog.models import Beer + + +def add_beer_to_database( + name: str, + style: str, + flavor: int, + image: int, + cost: int, +) -> bool: + with get_session() as session: + beer = Beer( + name=name, style=style, flavor=flavor, image=image, cost=cost + ) + session.add(beer) + session.commit() + + return True + + +def get_beers_from_database(style: Optional[str] = None) -> List[Beer]: + with get_session() as session: + sql = select(Beer) + if style: + sql = sql.where(Beer.style == style) + return list(session.exec(sql)) diff --git a/beerlog/database.py b/beerlog/database.py index e69de29..668ddf7 100644 --- a/beerlog/database.py +++ b/beerlog/database.py @@ -0,0 +1,19 @@ +import warnings +from sqlalchemy.exc import SAWarning +from sqlmodel.sql.expression import Select, SelectOfScalar +from sqlmodel import create_engine, Session +from beerlog.config import settings +from beerlog import models + +warnings.filterwarnings("ignore", category=SAWarning) +SelectOfScalar.inherit_cache = True +Select.inherit_cache = True + + +engine = create_engine(settings.database.url) + +models.SQLModel.metadata.create_all(engine) + + +def get_session(): + return Session(engine) diff --git a/beerlog/models.py b/beerlog/models.py index e69de29..fdba23b 100644 --- a/beerlog/models.py +++ b/beerlog/models.py @@ -0,0 +1,35 @@ +# from dataclasses import dataclass +from typing import Optional +from sqlmodel import SQLModel, Field +from pydantic import validator +# from sqlmodel import select +from statistics import mean +from datetime import datetime + + +class Beer(SQLModel, table=True): + id: Optional[int] = Field(primary_key=True, default=None, index=True) + name: str + style: str + flavor: int + image: int + cost: int + rate: int = 0 + date: datetime = Field(default_factory=datetime.now) + + @validator("flavor", "image", "cost") + def validade_rating(cls, v, field): + if v < 1 or v > 10: + raise RuntimeError(f"{field.name} must be between 1 and 10") + return v + + @validator("rate", always=True) + def calculate_rate(cls, v, values): + rate = mean([values["flavor"], values["image"], values["cost"]]) + return int(rate) + + +# try: +brewdog = Beer(name="Brewdog", style="NEIPA", flavor=6, image=8, cost=10) +# except RuntimeError: +# print("deu zica demais") diff --git a/beerlog/rotas.py b/beerlog/rotas.py new file mode 100644 index 0000000..c3f1198 --- /dev/null +++ b/beerlog/rotas.py @@ -0,0 +1,12 @@ +from typing import Optional +from fastapi import FastAPI +from beerlog.core import get_beers_from_database + +api = FastAPI(title="beerlog") + + +@api.get("/beers/") +def list_beers(style: Optional[str] = None): + """Lists beers from the database""" + beers = get_beers_from_database(style) + return beers diff --git a/beerlog/serializers.py b/beerlog/serializers.py new file mode 100644 index 0000000..9870b5b --- /dev/null +++ b/beerlog/serializers.py @@ -0,0 +1,31 @@ +from datetime import datetime +from pydantic import BaseModel, validator +from fastapi import HTTPException, status + + +class BeerOut(BaseModel): + id: int + name: str + style: str + flavor: int + image: int + cost: int + rate: int + date: datetime + + +class BeerIn(BaseModel): + name: str + style: str + flavor: int + image: int + cost: int + + @validator("image", "flavor", "cost") + def validate_ratings(cls, v, field): + if v < 1 or v > 10: + raise HTTPException( + detail=f"{field.name} must be between 1 and 10", + status_code=status.HTTP_400_BAD_REQUEST, + ) + return v diff --git a/beerlog/settings.toml b/beerlog/settings.toml index 34d5fcb..e356750 100644 --- a/beerlog/settings.toml +++ b/beerlog/settings.toml @@ -1 +1,4 @@ -name = "beerlog" +name = "Beerlog" + +[database] +url = "sqlite:///beerlog.db" \ No newline at end of file diff --git a/conftest.py b/conftest.py index e69de29..5e0c141 100644 --- a/conftest.py +++ b/conftest.py @@ -0,0 +1,14 @@ +import pytest +from unittest.mock import patch +from sqlmodel import create_engine +from beerlog import models + + +@pytest.fixture(autouse=True, scope="function") +def each_test_uses_separate_database(request): + tmpdir = request.getfixturevalue("tmpdir") + test_db = tmpdir.join("beerlog.test.db") + engine = create_engine(f"sqlite:///{test_db}") + models.SQLModel.metadata.create_all(bind=engine) + with patch("beerlog.database.engine", engine): + yield #return do protocolo generator (mais poderoso que o o return) \ No newline at end of file diff --git a/identifier.sqlite b/identifier.sqlite new file mode 100644 index 0000000..e69de29 diff --git a/script.py b/script.py new file mode 100644 index 0000000..c4aa0d6 --- /dev/null +++ b/script.py @@ -0,0 +1 @@ +print(1 + 3) \ No newline at end of file diff --git a/tests/test_core.py b/tests/test_core.py new file mode 100644 index 0000000..65378b6 --- /dev/null +++ b/tests/test_core.py @@ -0,0 +1,12 @@ +from beerlog.core import get_beers_from_database, add_beer_to_database + + +def test_add_beer_to_database(): + assert add_beer_to_database("Blue Moon", "Witbier", 10, 3, 6) + # ou ensure + +def test_get_beers_from_database(): + # Arrange, act, Assert + add_beer_to_database("Blue Moon", "Witbier", 10, 3, 6) # NEW + results = get_beers_from_database() + assert len(results) > 0 \ No newline at end of file diff --git a/tests/test_functional_api.py b/tests/test_functional_api.py new file mode 100644 index 0000000..7603a67 --- /dev/null +++ b/tests/test_functional_api.py @@ -0,0 +1,30 @@ +from fastapi.testclient import TestClient + +from beerlog.api import api + + +client = TestClient(api) + + +def test_create_beer_via_api(): + response = client.post( + "/beers", + json={ + "name": "Skol", + "style": "KornPA", + "flavor": 1, + "image": 1, + "cost": 2 + }, + ) + assert response.status_code == 201 + result = response.json() + assert result["name"] == "Skol" + assert result["id"] == 1 + + +def test_list_beers(): + response = client.get("/beers") + assert response.status_code == 200 + result = response.json() + assert len(result) == 0 \ No newline at end of file diff --git a/tests/test_functional_cli.py b/tests/test_functional_cli.py new file mode 100644 index 0000000..22af5b1 --- /dev/null +++ b/tests/test_functional_cli.py @@ -0,0 +1,11 @@ +from typer.testing import CliRunner + +from beerlog.cli import main + +runner = CliRunner() + + +def test_add_beer(): + result = runner.invoke(main, ["add", "Skol", "KornPA", "--flavor=1", "--image=1", "--cost=2"]) + assert result.exit_code == 0 + assert "Beer added" in result.stdout \ No newline at end of file From 87bdaf547689dca2d8ff435523ff6ea2080a85b1 Mon Sep 17 00:00:00 2001 From: Renilton Viana Date: Thu, 28 Apr 2022 08:41:39 -0300 Subject: [PATCH 2/8] alteracao para tentar rodar o CI --- beerlog/models.py | 1 + conftest.py | 2 +- script.py | 2 +- tests/test_core.py | 3 ++- tests/test_functional_api.py | 4 ++-- tests/test_functional_cli.py | 6 ++++-- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/beerlog/models.py b/beerlog/models.py index fdba23b..324e6e2 100644 --- a/beerlog/models.py +++ b/beerlog/models.py @@ -2,6 +2,7 @@ from typing import Optional from sqlmodel import SQLModel, Field from pydantic import validator + # from sqlmodel import select from statistics import mean from datetime import datetime diff --git a/conftest.py b/conftest.py index 5e0c141..d1f603d 100644 --- a/conftest.py +++ b/conftest.py @@ -11,4 +11,4 @@ def each_test_uses_separate_database(request): engine = create_engine(f"sqlite:///{test_db}") models.SQLModel.metadata.create_all(bind=engine) with patch("beerlog.database.engine", engine): - yield #return do protocolo generator (mais poderoso que o o return) \ No newline at end of file + yield # return do protocolo generator (mais poderoso que o o return) diff --git a/script.py b/script.py index c4aa0d6..948bd96 100644 --- a/script.py +++ b/script.py @@ -1 +1 @@ -print(1 + 3) \ No newline at end of file +print(1 + 3) diff --git a/tests/test_core.py b/tests/test_core.py index 65378b6..cf5186d 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -5,8 +5,9 @@ def test_add_beer_to_database(): assert add_beer_to_database("Blue Moon", "Witbier", 10, 3, 6) # ou ensure + def test_get_beers_from_database(): # Arrange, act, Assert add_beer_to_database("Blue Moon", "Witbier", 10, 3, 6) # NEW results = get_beers_from_database() - assert len(results) > 0 \ No newline at end of file + assert len(results) > 0 diff --git a/tests/test_functional_api.py b/tests/test_functional_api.py index 7603a67..e6a2380 100644 --- a/tests/test_functional_api.py +++ b/tests/test_functional_api.py @@ -14,7 +14,7 @@ def test_create_beer_via_api(): "style": "KornPA", "flavor": 1, "image": 1, - "cost": 2 + "cost": 2, }, ) assert response.status_code == 201 @@ -27,4 +27,4 @@ def test_list_beers(): response = client.get("/beers") assert response.status_code == 200 result = response.json() - assert len(result) == 0 \ No newline at end of file + assert len(result) == 0 diff --git a/tests/test_functional_cli.py b/tests/test_functional_cli.py index 22af5b1..2689550 100644 --- a/tests/test_functional_cli.py +++ b/tests/test_functional_cli.py @@ -6,6 +6,8 @@ def test_add_beer(): - result = runner.invoke(main, ["add", "Skol", "KornPA", "--flavor=1", "--image=1", "--cost=2"]) + result = runner.invoke( + main, ["add", "Skol", "KornPA", "--flavor=1", "--image=1", "--cost=2"] + ) assert result.exit_code == 0 - assert "Beer added" in result.stdout \ No newline at end of file + assert "Beer added" in result.stdout From b8c54826db5f806a3e23ecea8950e9ca22aceec6 Mon Sep 17 00:00:00 2001 From: Renilton Viana Date: Thu, 28 Apr 2022 08:46:18 -0300 Subject: [PATCH 3/8] alteracao para tentar rodar o CI - v2 --- test-result.xml | 1 + 1 file changed, 1 insertion(+) create mode 100644 test-result.xml diff --git a/test-result.xml b/test-result.xml new file mode 100644 index 0000000..666cd80 --- /dev/null +++ b/test-result.xml @@ -0,0 +1 @@ + \ No newline at end of file From c29a5e22fd15cf7b449dc24418220a73bbccccb2 Mon Sep 17 00:00:00 2001 From: Renilton Viana Date: Thu, 28 Apr 2022 08:54:49 -0300 Subject: [PATCH 4/8] alteracao para tentar rodar o CI - v3 --- poetry.lock | 127 ++++++++++++++++++++++++++++++++++++++++++++++++- pyproject.toml | 1 + 2 files changed, 127 insertions(+), 1 deletion(-) diff --git a/poetry.lock b/poetry.lock index 185de7b..16da518 100644 --- a/poetry.lock +++ b/poetry.lock @@ -37,6 +37,28 @@ six = "*" [package.extras] test = ["astroid", "pytest"] +[[package]] +name = "atomicwrites" +version = "1.4.0" +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 = "backcall" version = "0.2.0" @@ -181,6 +203,14 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "iniconfig" +version = "1.1.1" +description = "iniconfig: brain-dead simple config-ini parsing" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "ipython" version = "8.2.0" @@ -258,6 +288,17 @@ category = "main" optional = false python-versions = "*" +[[package]] +name = "packaging" +version = "21.3" +description = "Core utilities for Python packages" +category = "dev" +optional = false +python-versions = ">=3.6" + +[package.dependencies] +pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" + [[package]] name = "parso" version = "0.8.3" @@ -309,6 +350,18 @@ python-versions = ">=3.7" 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.extras] +dev = ["pre-commit", "tox"] +testing = ["pytest", "pytest-benchmark"] + [[package]] name = "prompt-toolkit" version = "3.0.29" @@ -339,6 +392,14 @@ python-versions = "*" [package.extras] tests = ["pytest"] +[[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.8.0" @@ -378,6 +439,38 @@ category = "main" optional = false python-versions = ">=3.5" +[[package]] +name = "pyparsing" +version = "3.0.8" +description = "pyparsing module - Classes and methods to define and execute parsing grammars" +category = "dev" +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\""} +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 = "rich" version = "12.2.0" @@ -551,7 +644,7 @@ python-versions = "*" [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "1e063e12af3889e809b53f9a6c5d6a76b6f76639335e397e000877ad7931ebc1" +content-hash = "5fe7cca1602bf646b3acb89dc0889a3e1aa159832c57c0a8fadb183b4ab611a9" [metadata.files] anyio = [ @@ -566,6 +659,14 @@ asttokens = [ {file = "asttokens-2.0.5-py2.py3-none-any.whl", hash = "sha256:0844691e88552595a6f4a4281a9f7f79b8dd45ca4ccea82e5e05b4bbdb76705c"}, {file = "asttokens-2.0.5.tar.gz", hash = "sha256:9a54c114f02c7a9480d56550932546a3f1fe71d8a02f1bc7ccd0ee3ee35cf4d5"}, ] +atomicwrites = [ + {file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, + {file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, +] +attrs = [ + {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, + {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, +] backcall = [ {file = "backcall-0.2.0-py2.py3-none-any.whl", hash = "sha256:fbbce6a29f263178a1f7915c1940bde0ec2b2a967566fe1c65c1dfb7422bd255"}, {file = "backcall-0.2.0.tar.gz", hash = "sha256:5cbdbf27be5e7cfadb448baf0aa95508f91f2bbc6c6437cd9cd06e2a4c215e1e"}, @@ -688,6 +789,10 @@ idna = [ {file = "idna-3.3-py3-none-any.whl", hash = "sha256:84d9dd047ffa80596e0f246e2eab0b391788b0503584e8945f2368256d2735ff"}, {file = "idna-3.3.tar.gz", hash = "sha256:9d643ff0a55b762d5cdb124b8eaa99c66322e2157b69160bc32796e824360e6d"}, ] +iniconfig = [ + {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, + {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, +] ipython = [ {file = "ipython-8.2.0-py3-none-any.whl", hash = "sha256:1b672bfd7a48d87ab203d9af8727a3b0174a4566b4091e9447c22fb63ea32857"}, {file = "ipython-8.2.0.tar.gz", hash = "sha256:70e5eb132cac594a34b5f799bd252589009905f05104728aea6a403ec2519dc1"}, @@ -708,6 +813,10 @@ 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"}, ] +packaging = [ + {file = "packaging-21.3-py3-none-any.whl", hash = "sha256:ef103e05f519cdc783ae24ea4e2e0f508a9c99b2d4969652eed6a2e1ea5bd522"}, + {file = "packaging-21.3.tar.gz", hash = "sha256:dd47c42927d89ab911e606518907cc2d3a1f38bbd026385970643f9c5b8ecfeb"}, +] parso = [ {file = "parso-0.8.3-py2.py3-none-any.whl", hash = "sha256:c001d4636cd3aecdaf33cbb40aebb59b094be2a74c556778ef5576c175e19e75"}, {file = "parso-0.8.3.tar.gz", hash = "sha256:8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0"}, @@ -728,6 +837,10 @@ 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"}, +] prompt-toolkit = [ {file = "prompt_toolkit-3.0.29-py3-none-any.whl", hash = "sha256:62291dad495e665fca0bda814e342c69952086afb0f4094d0893d357e5c78752"}, {file = "prompt_toolkit-3.0.29.tar.gz", hash = "sha256:bd640f60e8cecd74f0dc249713d433ace2ddc62b65ee07f96d358e0b152b6ea7"}, @@ -740,6 +853,10 @@ pure-eval = [ {file = "pure_eval-0.2.2-py3-none-any.whl", hash = "sha256:01eaab343580944bc56080ebe0a674b39ec44a945e6d09ba7db3cb8cec289350"}, {file = "pure_eval-0.2.2.tar.gz", hash = "sha256:2b45320af6dfaa1750f543d714b6d1c520a1688dec6fd24d339063ce0aaa9ac3"}, ] +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 = [ {file = "pycodestyle-2.8.0-py2.py3-none-any.whl", hash = "sha256:720f8b39dde8b293825e7ff02c475f3077124006db4f440dcbc9a20b76548a20"}, {file = "pycodestyle-2.8.0.tar.gz", hash = "sha256:eddd5847ef438ea1c7870ca7eb78a9d47ce0cdb4851a5523949f2601d0cbbe7f"}, @@ -789,6 +906,14 @@ pygments = [ {file = "Pygments-2.11.2-py3-none-any.whl", hash = "sha256:44238f1b60a76d78fc8ca0528ee429702aae011c265fe6a8dd8b63049ae41c65"}, {file = "Pygments-2.11.2.tar.gz", hash = "sha256:4e426f72023d88d03b2fa258de560726ce890ff3b630f88c21cbb8b2503b8c6a"}, ] +pyparsing = [ + {file = "pyparsing-3.0.8-py3-none-any.whl", hash = "sha256:ef7b523f6356f763771559412c0d7134753f037822dad1b16945b7b846f7ad06"}, + {file = "pyparsing-3.0.8.tar.gz", hash = "sha256:7bf433498c016c4314268d95df76c81b842a4cb2b276fa3312cfb1e1d85f6954"}, +] +pytest = [ + {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, + {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, +] rich = [ {file = "rich-12.2.0-py3-none-any.whl", hash = "sha256:c50f3d253bc6a9bb9c79d61a26d510d74abdf1b16881260fab5edfc3edfb082f"}, {file = "rich-12.2.0.tar.gz", hash = "sha256:ea74bc9dad9589d8eea3e3fd0b136d8bf6e428888955f215824c2894f0da8b47"}, diff --git a/pyproject.toml b/pyproject.toml index ad3f120..38e9bdf 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -17,6 +17,7 @@ flake8 = "^4.0.1" [tool.poetry.dev-dependencies] ipython = "^8.2.0" +pytest = "^7.1.2" [tool.poetry.scripts] beerlog = "beerlog.__main__:main" From e60aa3cdecc4f65199c0478590aca3d9539d30a2 Mon Sep 17 00:00:00 2001 From: Renilton Viana Date: Thu, 28 Apr 2022 08:59:00 -0300 Subject: [PATCH 5/8] alteracao para tentar rodar o CI - v3 --- test-result.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-result.xml b/test-result.xml index 666cd80..b17d21e 100644 --- a/test-result.xml +++ b/test-result.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From 13a5a30ef8ae5cee07db3cdace060927c78942f5 Mon Sep 17 00:00:00 2001 From: Renilton Viana Date: Thu, 28 Apr 2022 09:05:20 -0300 Subject: [PATCH 6/8] alteracao para tentar rodar o CI - v3 --- test-result.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-result.xml b/test-result.xml index b17d21e..b626fa0 100644 --- a/test-result.xml +++ b/test-result.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From f5969a7782571cf374090daf3d29c0e09b0f4cce Mon Sep 17 00:00:00 2001 From: Renilton Viana Date: Thu, 28 Apr 2022 09:08:53 -0300 Subject: [PATCH 7/8] alteracao para tentar rodar o CI - v3 --- test-result.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test-result.xml b/test-result.xml index b626fa0..42f5953 100644 --- a/test-result.xml +++ b/test-result.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file From 3762f2ff39a0675d9e2b96196e8faaf7eb4d732e Mon Sep 17 00:00:00 2001 From: Renilton Viana Date: Thu, 28 Apr 2022 09:20:17 -0300 Subject: [PATCH 8/8] alteracao para tentar rodar o CI - v3 --- poetry.lock | 68 ++++++++++++++++++++++++++++++++++++++++++++++++- pyproject.toml | 1 + test-result.xml | 2 +- 3 files changed, 69 insertions(+), 2 deletions(-) diff --git a/poetry.lock b/poetry.lock index 16da518..3ed3e42 100644 --- a/poetry.lock +++ b/poetry.lock @@ -89,6 +89,25 @@ d = ["aiohttp (>=3.7.4)"] jupyter = ["ipython (>=7.8.0)", "tokenize-rt (>=3.2.0)"] uvloop = ["uvloop (>=0.15.2)"] +[[package]] +name = "certifi" +version = "2021.10.8" +description = "Python package for providing Mozilla's CA Bundle." +category = "dev" +optional = false +python-versions = "*" + +[[package]] +name = "charset-normalizer" +version = "2.0.12" +description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." +category = "dev" +optional = false +python-versions = ">=3.5.0" + +[package.extras] +unicode_backport = ["unicodedata2"] + [[package]] name = "click" version = "8.1.2" @@ -471,6 +490,24 @@ tomli = ">=1.0.0" [package.extras] testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2.7.2)", "requests", "xmlschema"] +[[package]] +name = "requests" +version = "2.27.1" +description = "Python HTTP for Humans." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = {version = ">=2.0.0,<2.1.0", markers = "python_version >= \"3\""} +idna = {version = ">=2.5,<4", markers = "python_version >= \"3\""} +urllib3 = ">=1.21.1,<1.27" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] +use_chardet_on_py3 = ["chardet (>=3.0.2,<5)"] + [[package]] name = "rich" version = "12.2.0" @@ -633,6 +670,19 @@ category = "main" optional = false python-versions = ">=3.7" +[[package]] +name = "urllib3" +version = "1.26.9" +description = "HTTP library with thread-safe connection pooling, file post, and more." +category = "dev" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <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 = "wcwidth" version = "0.2.5" @@ -644,7 +694,7 @@ python-versions = "*" [metadata] lock-version = "1.1" python-versions = "^3.8" -content-hash = "5fe7cca1602bf646b3acb89dc0889a3e1aa159832c57c0a8fadb183b4ab611a9" +content-hash = "6643c816b6bdc8057e1a35520514a9b9152f80a5482079f7240425cd70a2670a" [metadata.files] anyio = [ @@ -696,6 +746,14 @@ black = [ {file = "black-22.3.0-py3-none-any.whl", hash = "sha256:bc58025940a896d7e5356952228b68f793cf5fcb342be703c3a2669a1488cb72"}, {file = "black-22.3.0.tar.gz", hash = "sha256:35020b8886c022ced9282b51b5a875b6d1ab0c387b31a065b84db7c33085ca79"}, ] +certifi = [ + {file = "certifi-2021.10.8-py2.py3-none-any.whl", hash = "sha256:d62a0163eb4c2344ac042ab2bdf75399a71a2d8c7d47eac2e2ee91b9d6339569"}, + {file = "certifi-2021.10.8.tar.gz", hash = "sha256:78884e7c1d4b00ce3cea67b44566851c4343c120abd683433ce934a68ea58872"}, +] +charset-normalizer = [ + {file = "charset-normalizer-2.0.12.tar.gz", hash = "sha256:2857e29ff0d34db842cd7ca3230549d1a697f96ee6d3fb071cfa6c7393832597"}, + {file = "charset_normalizer-2.0.12-py3-none-any.whl", hash = "sha256:6881edbebdb17b39b4eaaa821b438bf6eddffb4468cf344f09f89def34a8b1df"}, +] click = [ {file = "click-8.1.2-py3-none-any.whl", hash = "sha256:24e1a4a9ec5bf6299411369b208c1df2188d9eb8d916302fe6bf03faed227f1e"}, {file = "click-8.1.2.tar.gz", hash = "sha256:479707fe14d9ec9a0757618b7a100a0ae4c4e236fac5b7f80ca68028141a1a72"}, @@ -914,6 +972,10 @@ pytest = [ {file = "pytest-7.1.2-py3-none-any.whl", hash = "sha256:13d0e3ccfc2b6e26be000cb6568c832ba67ba32e719443bfe725814d3c42433c"}, {file = "pytest-7.1.2.tar.gz", hash = "sha256:a06a0425453864a270bc45e71f783330a7428defb4230fb5e6a731fde06ecd45"}, ] +requests = [ + {file = "requests-2.27.1-py2.py3-none-any.whl", hash = "sha256:f22fa1e554c9ddfd16e6e41ac79759e17be9e492b3587efa038054674760e72d"}, + {file = "requests-2.27.1.tar.gz", hash = "sha256:68d7c56fd5a8999887728ef304a6d12edc7be74f1cfa47714fc8b414525c9a61"}, +] rich = [ {file = "rich-12.2.0-py3-none-any.whl", hash = "sha256:c50f3d253bc6a9bb9c79d61a26d510d74abdf1b16881260fab5edfc3edfb082f"}, {file = "rich-12.2.0.tar.gz", hash = "sha256:ea74bc9dad9589d8eea3e3fd0b136d8bf6e428888955f215824c2894f0da8b47"}, @@ -996,6 +1058,10 @@ typing-extensions = [ {file = "typing_extensions-4.2.0-py3-none-any.whl", hash = "sha256:6657594ee297170d19f67d55c05852a874e7eb634f4f753dbd667855e07c1708"}, {file = "typing_extensions-4.2.0.tar.gz", hash = "sha256:f1c24655a0da0d1b67f07e17a5e6b2a105894e6824b92096378bb3668ef02376"}, ] +urllib3 = [ + {file = "urllib3-1.26.9-py2.py3-none-any.whl", hash = "sha256:44ece4d53fb1706f667c9bd1c648f5469a2ec925fcf3a776667042d645472c14"}, + {file = "urllib3-1.26.9.tar.gz", hash = "sha256:aabaf16477806a5e1dd19aa41f8c2b7950dd3c746362d7e3223dbe6de6ac448e"}, +] wcwidth = [ {file = "wcwidth-0.2.5-py2.py3-none-any.whl", hash = "sha256:beb4802a9cebb9144e99086eff703a642a13d6a0052920003a230f3294bbe784"}, {file = "wcwidth-0.2.5.tar.gz", hash = "sha256:c4d647b99872929fdb7bdcaa4fbe7f01413ed3d98077df798530e5b04f116c83"}, diff --git a/pyproject.toml b/pyproject.toml index 38e9bdf..503418c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,6 +18,7 @@ flake8 = "^4.0.1" [tool.poetry.dev-dependencies] ipython = "^8.2.0" pytest = "^7.1.2" +requests = "^2.27.1" [tool.poetry.scripts] beerlog = "beerlog.__main__:main" diff --git a/test-result.xml b/test-result.xml index 42f5953..c1e942e 100644 --- a/test-result.xml +++ b/test-result.xml @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file