From e1a3c9061d312a34853560fb21154ec5aeaf7403 Mon Sep 17 00:00:00 2001 From: Douglas Date: Wed, 8 Jul 2020 14:50:23 -0300 Subject: [PATCH 01/15] =?UTF-8?q?Adicionada=20informa=C3=A7=C3=A3o=20sobre?= =?UTF-8?q?=20contruibui=C3=A7=C3=A3o=20a=20projetos=20de=20codigo=20abert?= =?UTF-8?q?os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LICENSE | 3 +++ 1 file changed, 3 insertions(+) diff --git a/LICENSE b/LICENSE index dbbe35581..855362a1d 100644 --- a/LICENSE +++ b/LICENSE @@ -659,3 +659,6 @@ specific requirements. if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . + + +nesse curo ensina fazer o PullRequest de projetos abertos \ No newline at end of file From 7cb729169ceccde265face16486dbd5829913127 Mon Sep 17 00:00:00 2001 From: Douglas Date: Fri, 10 Jul 2020 15:04:15 -0300 Subject: [PATCH 02/15] =?UTF-8?q?Adicionada=20informa=C3=A7=C3=A3o=20sobre?= =?UTF-8?q?=20contruibui=C3=A7=C3=A3o=20a=20projetos=20de=20codigo=20abert?= =?UTF-8?q?os?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- setup.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/setup.py b/setup.py index 1fea97a65..a10196f4d 100644 --- a/setup.py +++ b/setup.py @@ -135,4 +135,8 @@ def find_package_data( 'requests' ], zip_safe=False, + + + + ) From aff3b5ab24b5f6f594d70c87b7f4938ec4c96872 Mon Sep 17 00:00:00 2001 From: Douglas Date: Mon, 3 Aug 2020 15:22:44 -0300 Subject: [PATCH 03/15] configurar Travis --- libpythonpro/__init__.py | 1 - libpythonpro/spam/db.py | 31 ------------ libpythonpro/spam/enviador_de_email.py | 9 ---- libpythonpro/spam/main.py | 13 ----- libpythonpro/spam/modelos.py | 5 -- libpythonpro/tests/__init__.py | 0 libpythonpro/tests/test_exemplo.py | 2 - libpythonpro/tests/test_spam/__init__.py | 0 libpythonpro/tests/test_spam/conftest.py | 20 -------- .../tests/test_spam/test_enviador_de_email.py | 38 -------------- .../test_envio_para_base_de_usuarios.py | 49 ------------------- .../tests/test_spam/test_github_api.py | 28 ----------- libpythonpro/tests/test_spam/test_usuarios.py | 17 ------- libpythonproo/.flake8 | 3 ++ libpythonproo/.travis.yml | 7 +++ .../libpythonbrpro}/__init__.py | 0 .../libpythonbrpro}/github_api.py | 6 ++- setup.py | 3 ++ 18 files changed, 17 insertions(+), 215 deletions(-) delete mode 100644 libpythonpro/__init__.py delete mode 100644 libpythonpro/spam/db.py delete mode 100644 libpythonpro/spam/enviador_de_email.py delete mode 100644 libpythonpro/spam/main.py delete mode 100644 libpythonpro/spam/modelos.py delete mode 100644 libpythonpro/tests/__init__.py delete mode 100644 libpythonpro/tests/test_exemplo.py delete mode 100644 libpythonpro/tests/test_spam/__init__.py delete mode 100644 libpythonpro/tests/test_spam/conftest.py delete mode 100644 libpythonpro/tests/test_spam/test_enviador_de_email.py delete mode 100644 libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py delete mode 100644 libpythonpro/tests/test_spam/test_github_api.py delete mode 100644 libpythonpro/tests/test_spam/test_usuarios.py create mode 100644 libpythonproo/.flake8 create mode 100644 libpythonproo/.travis.yml rename {libpythonpro/spam => libpythonproo/libpythonbrpro}/__init__.py (100%) rename {libpythonpro => libpythonproo/libpythonbrpro}/github_api.py (72%) diff --git a/libpythonpro/__init__.py b/libpythonpro/__init__.py deleted file mode 100644 index b650ceb08..000000000 --- a/libpythonpro/__init__.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = '0.2' diff --git a/libpythonpro/spam/db.py b/libpythonpro/spam/db.py deleted file mode 100644 index ce90ca60b..000000000 --- a/libpythonpro/spam/db.py +++ /dev/null @@ -1,31 +0,0 @@ -from time import sleep - - -class Sessao: - contador = 0 - usuarios = [] - - def salvar(self, usuario): - Sessao.contador += 1 - usuario.id = Sessao.contador - self.usuarios.append(usuario) - - def listar(self): - return self.usuarios - - def roll_back(self): - self.usuarios.clear() - - def fechar(self): - pass - - -class Conexao: - def __init__(self): - sleep(1) - - def gerar_sessao(self): - return Sessao() - - def fechar(self): - pass diff --git a/libpythonpro/spam/enviador_de_email.py b/libpythonpro/spam/enviador_de_email.py deleted file mode 100644 index fa0952223..000000000 --- a/libpythonpro/spam/enviador_de_email.py +++ /dev/null @@ -1,9 +0,0 @@ -class Enviador: - def enviar(self, remetente, destinatario, assunto, corpo): - if '@' not in remetente: - raise EmailInvalido(f'Email de remetente inválido: {remetente}') - return remetente - - -class EmailInvalido(Exception): - pass diff --git a/libpythonpro/spam/main.py b/libpythonpro/spam/main.py deleted file mode 100644 index f81821ae4..000000000 --- a/libpythonpro/spam/main.py +++ /dev/null @@ -1,13 +0,0 @@ -class EnviadorDeSpam: - def __init__(self, sessao, enviador): - self.sessao = sessao - self.enviador = enviador - - def enviar_emails(self, remetente, assunto, corpo): - for usuario in self.sessao.listar(): - self.enviador.enviar( - remetente, - usuario.email, - assunto, - corpo - ) diff --git a/libpythonpro/spam/modelos.py b/libpythonpro/spam/modelos.py deleted file mode 100644 index 093b35a2a..000000000 --- a/libpythonpro/spam/modelos.py +++ /dev/null @@ -1,5 +0,0 @@ -class Usuario: - def __init__(self, nome, email): - self.email = email - self.nome = nome - self.id = None diff --git a/libpythonpro/tests/__init__.py b/libpythonpro/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/libpythonpro/tests/test_exemplo.py b/libpythonpro/tests/test_exemplo.py deleted file mode 100644 index 78cd50236..000000000 --- a/libpythonpro/tests/test_exemplo.py +++ /dev/null @@ -1,2 +0,0 @@ -def test_int(): - assert 1 == 1 diff --git a/libpythonpro/tests/test_spam/__init__.py b/libpythonpro/tests/test_spam/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/libpythonpro/tests/test_spam/conftest.py b/libpythonpro/tests/test_spam/conftest.py deleted file mode 100644 index a16f3970a..000000000 --- a/libpythonpro/tests/test_spam/conftest.py +++ /dev/null @@ -1,20 +0,0 @@ -import pytest - -from libpythonpro.spam.db import Conexao - - -@pytest.fixture(scope='session') -def conexao(): - # Setup - conexao_obj = Conexao() - yield conexao_obj - # Tear Down - conexao_obj.fechar() - - -@pytest.fixture -def sessao(conexao): - sessao_obj = conexao.gerar_sessao() - yield sessao_obj - sessao_obj.roll_back() - sessao_obj.fechar() diff --git a/libpythonpro/tests/test_spam/test_enviador_de_email.py b/libpythonpro/tests/test_spam/test_enviador_de_email.py deleted file mode 100644 index c72a0bbe9..000000000 --- a/libpythonpro/tests/test_spam/test_enviador_de_email.py +++ /dev/null @@ -1,38 +0,0 @@ -import pytest - -from libpythonpro.spam.enviador_de_email import EmailInvalido, Enviador - - -def test_criar_enviador_de_email(): - enviador = Enviador() - assert enviador is not None - - -@pytest.mark.parametrize( - 'remetente', - ['foo@bar.com.br', 'renzo@python.pro.br'] -) -def test_remetente(remetente): - enviador = Enviador() - resultado = enviador.enviar( - remetente, - 'luciano@python.pro.br', - 'Cursos Python Pro', - 'Primeira turma Guido Von Rossum aberta.' - ) - assert remetente in resultado - - -@pytest.mark.parametrize( - 'remetente', - ['', 'renzo'] -) -def test_remetente_invalido(remetente): - enviador = Enviador() - with pytest.raises(EmailInvalido): - enviador.enviar( - remetente, - 'luciano@python.pro.br', - 'Cursos Python Pro', - 'Primeira turma Guido Von Rossum aberta.' - ) diff --git a/libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py b/libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py deleted file mode 100644 index d2db43893..000000000 --- a/libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py +++ /dev/null @@ -1,49 +0,0 @@ -from unittest.mock import Mock - -import pytest - -from libpythonpro.spam.main import EnviadorDeSpam -from libpythonpro.spam.modelos import Usuario - - -@pytest.mark.parametrize( - 'usuarios', - [ - [ - Usuario(nome='Renzo', email='renzo@python.pro.br'), - Usuario(nome='Luciano', email='renzo@python.pro.br') - ], - [ - Usuario(nome='Renzo', email='renzo@python.pro.br') - ] - ] -) -def test_qde_de_spam(sessao, usuarios): - for usuario in usuarios: - sessao.salvar(usuario) - enviador = Mock() - enviador_de_spam = EnviadorDeSpam(sessao, enviador) - enviador_de_spam.enviar_emails( - 'renzo@python.pro.br', - 'Curso Python Pro', - 'Confira os módulos fantásticos' - ) - assert len(usuarios) == enviador.enviar.call_count - - -def test_parametros_de_spam(sessao): - usuario = Usuario(nome='Renzo', email='renzo@python.pro.br') - sessao.salvar(usuario) - enviador = Mock() - enviador_de_spam = EnviadorDeSpam(sessao, enviador) - enviador_de_spam.enviar_emails( - 'luciano@python.pro.br', - 'Curso Python Pro', - 'Confira os módulos fantásticos' - ) - enviador.enviar.assert_called_once_with( - 'luciano@python.pro.br', - 'renzo@python.pro.br', - 'Curso Python Pro', - 'Confira os módulos fantásticos' - ) diff --git a/libpythonpro/tests/test_spam/test_github_api.py b/libpythonpro/tests/test_spam/test_github_api.py deleted file mode 100644 index 21ce9c5d0..000000000 --- a/libpythonpro/tests/test_spam/test_github_api.py +++ /dev/null @@ -1,28 +0,0 @@ -from unittest.mock import Mock - -import pytest - -from libpythonpro import github_api - - -@pytest.fixture -def avatar_url(mocker): - resp_mock = Mock() - url = 'https://avatars3.githubusercontent.com/u/402714?v=4' - resp_mock.json.return_value = { - 'login': 'renzo', 'id': 402714, - 'avatar_url': url, - } - get_mock = mocker.patch('libpythonpro.github_api.requests.get') - get_mock.return_value = resp_mock - return url - - -def test_buscar_avatar(avatar_url): - url = github_api.buscar_avatar('renzo') - assert avatar_url == url - - -def test_buscar_avatar_integracao(): - url = github_api.buscar_avatar('renzon') - assert 'https://avatars3.githubusercontent.com/u/3457115?v=4' == url diff --git a/libpythonpro/tests/test_spam/test_usuarios.py b/libpythonpro/tests/test_spam/test_usuarios.py deleted file mode 100644 index 09b523445..000000000 --- a/libpythonpro/tests/test_spam/test_usuarios.py +++ /dev/null @@ -1,17 +0,0 @@ -from libpythonpro.spam.modelos import Usuario - - -def test_salvar_usuario(sessao): - usuario = Usuario(nome='Renzo', email='renzo@python.pro.br') - sessao.salvar(usuario) - assert isinstance(usuario.id, int) - - -def test_listar_usuarios(sessao): - usuarios = [ - Usuario(nome='Renzo', email='renzo@python.pro.br'), - Usuario(nome='Luciano', email='renzo@python.pro.br') - ] - for usuario in usuarios: - sessao.salvar(usuario) - assert usuarios == sessao.listar() diff --git a/libpythonproo/.flake8 b/libpythonproo/.flake8 new file mode 100644 index 000000000..796971547 --- /dev/null +++ b/libpythonproo/.flake8 @@ -0,0 +1,3 @@ +[flake8] +max-line-length = 120 +exclude=.venv \ No newline at end of file diff --git a/libpythonproo/.travis.yml b/libpythonproo/.travis.yml new file mode 100644 index 000000000..2677a7ff5 --- /dev/null +++ b/libpythonproo/.travis.yml @@ -0,0 +1,7 @@ +language: python +python: + -3.8 +install: + - pip install -t tequirements-dev.txt +script: + - flake8 \ No newline at end of file diff --git a/libpythonpro/spam/__init__.py b/libpythonproo/libpythonbrpro/__init__.py similarity index 100% rename from libpythonpro/spam/__init__.py rename to libpythonproo/libpythonbrpro/__init__.py diff --git a/libpythonpro/github_api.py b/libpythonproo/libpythonbrpro/github_api.py similarity index 72% rename from libpythonpro/github_api.py rename to libpythonproo/libpythonbrpro/github_api.py index 8b0fbafb9..14a41c64e 100644 --- a/libpythonpro/github_api.py +++ b/libpythonproo/libpythonbrpro/github_api.py @@ -3,11 +3,13 @@ def buscar_avatar(usuario): """ - Busca o avatar de um usuário no Github - + Busca o avatar de um usuário no github :param usuario: str com o nome de usuário no github :return: str com o link do avatar """ url = f'https://api.github.com/users/{usuario}' resp = requests.get(url) return resp.json()['avatar_url'] + +if __name__ == '__main__': + print(buscar_avatar('Dodots')) \ No newline at end of file diff --git a/setup.py b/setup.py index 1fea97a65..dadef2dfc 100644 --- a/setup.py +++ b/setup.py @@ -135,4 +135,7 @@ def find_package_data( 'requests' ], zip_safe=False, + + + ) From a6336386fa3d6444eed127817e12ef330406a7d1 Mon Sep 17 00:00:00 2001 From: Douglas Date: Mon, 3 Aug 2020 15:28:10 -0300 Subject: [PATCH 04/15] configurar Travis --- libpythonproo/.travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libpythonproo/.travis.yml b/libpythonproo/.travis.yml index 2677a7ff5..d47c88427 100644 --- a/libpythonproo/.travis.yml +++ b/libpythonproo/.travis.yml @@ -2,6 +2,6 @@ language: python python: -3.8 install: - - pip install -t tequirements-dev.txt + - pip install -t requirements-dev.txt script: - flake8 \ No newline at end of file From 9b722ed2c759d4089de8a509c4b4d2e221f8553e Mon Sep 17 00:00:00 2001 From: Douglas Date: Mon, 3 Aug 2020 15:34:28 -0300 Subject: [PATCH 05/15] configurar Travis --- .idea/.gitignore | 3 +++ .idea/inspectionProfiles/Project_Default.xml | 12 ++++++++++++ .idea/inspectionProfiles/profiles_settings.xml | 6 ++++++ .idea/libpythonpro.iml | 11 +++++++++++ .idea/misc.xml | 4 ++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ libpythonproo/.travis.yml | 4 ++-- libpythonproo/__init__.py | 0 requirements-dev.txt | 5 +++++ requirements.txt | 5 +++++ 11 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/libpythonpro.iml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml create mode 100644 libpythonproo/__init__.py create mode 100644 requirements-dev.txt create mode 100644 requirements.txt diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 000000000..26d33521a --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 000000000..3dce9c67a --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 000000000..105ce2da2 --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/libpythonpro.iml b/.idea/libpythonpro.iml new file mode 100644 index 000000000..3301ea454 --- /dev/null +++ b/.idea/libpythonpro.iml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 000000000..14145163d --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 000000000..3478ad2cf --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 000000000..94a25f7f4 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/libpythonproo/.travis.yml b/libpythonproo/.travis.yml index d47c88427..cd7f5649e 100644 --- a/libpythonproo/.travis.yml +++ b/libpythonproo/.travis.yml @@ -1,7 +1,7 @@ language: python python: - -3.8 + - 3.6 install: - - pip install -t requirements-dev.txt + - pip install -r requirements-dev.txt script: - flake8 \ No newline at end of file diff --git a/libpythonproo/__init__.py b/libpythonproo/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 000000000..b9c211e63 --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,5 @@ +flake8==3.8.3 +mccabe==0.6.1 +pycodestyle==2.6.0 +pyflakes==2.2.0 +-r requirements.txt \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 000000000..ef0c1703d --- /dev/null +++ b/requirements.txt @@ -0,0 +1,5 @@ +certifi==2020.6.20 +chardet==3.0.4 +idna==2.10 +requests==2.24.0 +urllib3==1.25.10 From d9e9d10e1d70df9a7f4e95ffe3d8004ca05b952a Mon Sep 17 00:00:00 2001 From: Douglas Date: Wed, 5 Aug 2020 20:33:25 -0300 Subject: [PATCH 06/15] =?UTF-8?q?vers=C3=A3o=20de=20python?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libpythonproo/.travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libpythonproo/.travis.yml b/libpythonproo/.travis.yml index cd7f5649e..796f62256 100644 --- a/libpythonproo/.travis.yml +++ b/libpythonproo/.travis.yml @@ -1,6 +1,6 @@ language: python python: - - 3.6 + - 3.7 install: - pip install -r requirements-dev.txt script: From c631b4c484227bfb8b9c3f4141b6d6bd1eb5da0c Mon Sep 17 00:00:00 2001 From: Douglas Date: Mon, 10 Aug 2020 15:33:13 -0300 Subject: [PATCH 07/15] configurado Travis CI --- .travis.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 6694375b7..7cefc7fb5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,10 +2,6 @@ language: python python: - 3.7 install: - - pip install -q pipenv codecov - - pipenv sync --dev + - pip install -r requirements-dev.txt script: - flake8 - - pytest libpythonpro --cov=libpythonpro -after_success: - - codecov \ No newline at end of file From 9e7f5cb231935d01e307a67349a0fb6aa21e04ab Mon Sep 17 00:00:00 2001 From: Douglas Date: Mon, 10 Aug 2020 15:46:46 -0300 Subject: [PATCH 08/15] configurado Travis CI --- libpythonproo/libpythonbrpro/github_api.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libpythonproo/libpythonbrpro/github_api.py b/libpythonproo/libpythonbrpro/github_api.py index 14a41c64e..aba65239d 100644 --- a/libpythonproo/libpythonbrpro/github_api.py +++ b/libpythonproo/libpythonbrpro/github_api.py @@ -11,5 +11,6 @@ def buscar_avatar(usuario): resp = requests.get(url) return resp.json()['avatar_url'] + if __name__ == '__main__': - print(buscar_avatar('Dodots')) \ No newline at end of file + print(buscar_avatar('Dodots')) From a3d440a36b14f738433cf07147dfd310b54b5c1e Mon Sep 17 00:00:00 2001 From: Douglas Date: Fri, 21 Aug 2020 15:22:28 -0300 Subject: [PATCH 09/15] =?UTF-8?q?editar=20div=20de=20vota=C3=A7=C3=A3o.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libpythonproo/__init__.py => __init__.py | 0 {libpythonproo => libpythonpro}/.flake8 | 0 {libpythonproo => libpythonpro}/.travis.yml | 0 libpythonpro/__init__.py | 1 + {libpythonproo/libpythonbrpro => libpythonpro}/github_api.py | 0 libpythonproo/libpythonbrpro/__init__.py | 0 6 files changed, 1 insertion(+) rename libpythonproo/__init__.py => __init__.py (100%) rename {libpythonproo => libpythonpro}/.flake8 (100%) rename {libpythonproo => libpythonpro}/.travis.yml (100%) create mode 100644 libpythonpro/__init__.py rename {libpythonproo/libpythonbrpro => libpythonpro}/github_api.py (100%) delete mode 100644 libpythonproo/libpythonbrpro/__init__.py diff --git a/libpythonproo/__init__.py b/__init__.py similarity index 100% rename from libpythonproo/__init__.py rename to __init__.py diff --git a/libpythonproo/.flake8 b/libpythonpro/.flake8 similarity index 100% rename from libpythonproo/.flake8 rename to libpythonpro/.flake8 diff --git a/libpythonproo/.travis.yml b/libpythonpro/.travis.yml similarity index 100% rename from libpythonproo/.travis.yml rename to libpythonpro/.travis.yml diff --git a/libpythonpro/__init__.py b/libpythonpro/__init__.py new file mode 100644 index 000000000..7141c4245 --- /dev/null +++ b/libpythonpro/__init__.py @@ -0,0 +1 @@ +__version__ = "0.1" \ No newline at end of file diff --git a/libpythonproo/libpythonbrpro/github_api.py b/libpythonpro/github_api.py similarity index 100% rename from libpythonproo/libpythonbrpro/github_api.py rename to libpythonpro/github_api.py diff --git a/libpythonproo/libpythonbrpro/__init__.py b/libpythonproo/libpythonbrpro/__init__.py deleted file mode 100644 index e69de29bb..000000000 From ec8703cc2ca1af350a96e9333bd5f218ec2d5044 Mon Sep 17 00:00:00 2001 From: Douglas Date: Mon, 24 Aug 2020 14:34:39 -0300 Subject: [PATCH 10/15] inserindo pytest --- .idea/libpythonpro.iml | 3 +++ .travis.yml | 1 + libpythonpro/tests/__init__.py | 0 libpythonpro/tests/test_exemplo.py | 2 ++ requirements-dev.txt | 7 +++++++ 5 files changed, 13 insertions(+) create mode 100644 libpythonpro/tests/__init__.py create mode 100644 libpythonpro/tests/test_exemplo.py diff --git a/.idea/libpythonpro.iml b/.idea/libpythonpro.iml index 3301ea454..28b42bd89 100644 --- a/.idea/libpythonpro.iml +++ b/.idea/libpythonpro.iml @@ -8,4 +8,7 @@ + + \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 7cefc7fb5..f65b8749c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,3 +5,4 @@ install: - pip install -r requirements-dev.txt script: - flake8 + - pytest libpythonpro diff --git a/libpythonpro/tests/__init__.py b/libpythonpro/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/libpythonpro/tests/test_exemplo.py b/libpythonpro/tests/test_exemplo.py new file mode 100644 index 000000000..775ac58e1 --- /dev/null +++ b/libpythonpro/tests/test_exemplo.py @@ -0,0 +1,2 @@ +def test_int(): + assert 1 == 1 \ No newline at end of file diff --git a/requirements-dev.txt b/requirements-dev.txt index b9c211e63..69584a98e 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -2,4 +2,11 @@ flake8==3.8.3 mccabe==0.6.1 pycodestyle==2.6.0 pyflakes==2.2.0 + +#Deps pytest +py==1.8.2 +more-itertools==4.0.0 +attrs==17.4.0 +pluggy==1 +pyparsing==2.0.2 -r requirements.txt \ No newline at end of file From ebeeb13243bc4d956908558d8c6bd9daf4e63507 Mon Sep 17 00:00:00 2001 From: Douglas Date: Mon, 24 Aug 2020 14:38:56 -0300 Subject: [PATCH 11/15] arrumano arquivo requirements-dev --- requirements-dev.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 69584a98e..70ef24a44 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -7,6 +7,6 @@ pyflakes==2.2.0 py==1.8.2 more-itertools==4.0.0 attrs==17.4.0 -pluggy==1 +pluggy==0.1 pyparsing==2.0.2 -r requirements.txt \ No newline at end of file From c1734449039516e6e5146aae522c2a96f1f6fa25 Mon Sep 17 00:00:00 2001 From: Douglas Date: Mon, 24 Aug 2020 14:41:55 -0300 Subject: [PATCH 12/15] arrumano arquivo requirements-dev --- requirements-dev.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/requirements-dev.txt b/requirements-dev.txt index 70ef24a44..bb0d5e916 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -6,7 +6,9 @@ pyflakes==2.2.0 #Deps pytest py==1.8.2 more-itertools==4.0.0 +six==1.11.0 attrs==17.4.0 -pluggy==0.1 +pluggy==0.6.0 pyparsing==2.0.2 +pytest==3.5.1 -r requirements.txt \ No newline at end of file From 45b98e532cb97acce2df6501b219389571d40a3e Mon Sep 17 00:00:00 2001 From: Douglas Date: Mon, 24 Aug 2020 15:44:19 -0300 Subject: [PATCH 13/15] =?UTF-8?q?acrescentada=20cobertura=20de=20c=C3=B3di?= =?UTF-8?q?go?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit close#23 --- .travis.yml | 6 ++++-- libpythonpro/__init__.py | 2 +- requirements-dev.txt | 5 +++++ 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/.travis.yml b/.travis.yml index f65b8749c..7bc9da60c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,9 @@ language: python python: - 3.7 install: - - pip install -r requirements-dev.txt + - pip install -r requirements-dev.txt codecov script: - flake8 - - pytest libpythonpro + - pytest libpythonpro --cov=libpythonpro +after_success: + - codecov \ No newline at end of file diff --git a/libpythonpro/__init__.py b/libpythonpro/__init__.py index 7141c4245..a4e2017f0 100644 --- a/libpythonpro/__init__.py +++ b/libpythonpro/__init__.py @@ -1 +1 @@ -__version__ = "0.1" \ No newline at end of file +__version__ = "0.1" diff --git a/requirements-dev.txt b/requirements-dev.txt index bb0d5e916..0b983aec3 100644 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -11,4 +11,9 @@ attrs==17.4.0 pluggy==0.6.0 pyparsing==2.0.2 pytest==3.5.1 + +#Converger +coverage==5.2.1 +pytest-cov==2.10.1 + -r requirements.txt \ No newline at end of file From 0bd07ce74f7f0a3b31f7ead97a440e24e3c214ba Mon Sep 17 00:00:00 2001 From: Douglas Date: Fri, 18 Sep 2020 16:33:32 -0300 Subject: [PATCH 14/15] atualizando tudo kkkk --- libpythonpro/.travis.yml | 8 ++- libpythonpro/github_api.py | 6 +-- libpythonpro/spam/__init__.py | 0 libpythonpro/spam/enviador_de_email.py | 9 ++++ libpythonpro/spam/main.py | 13 +++++ libpythonpro/spam/modelos.py | 5 ++ libpythonpro/spam/tb.py | 29 +++++++++++ libpythonpro/tests/test_spam/__init__.py | 0 libpythonpro/tests/test_spam/conftest.py | 20 ++++++++ .../tests/test_spam/test_enviador_de_email.py | 38 ++++++++++++++ .../test_envio_para_base_de_usuarios.py | 49 +++++++++++++++++++ .../tests/test_spam/test_github_api.py | 29 +++++++++++ libpythonpro/tests/test_spam/test_usuarios.py | 17 +++++++ requirements-dev.txt | 19 ------- requirements.txt | 5 -- 15 files changed, 216 insertions(+), 31 deletions(-) create mode 100644 libpythonpro/spam/__init__.py create mode 100644 libpythonpro/spam/enviador_de_email.py create mode 100644 libpythonpro/spam/main.py create mode 100644 libpythonpro/spam/modelos.py create mode 100644 libpythonpro/spam/tb.py create mode 100644 libpythonpro/tests/test_spam/__init__.py create mode 100644 libpythonpro/tests/test_spam/conftest.py create mode 100644 libpythonpro/tests/test_spam/test_enviador_de_email.py create mode 100644 libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py create mode 100644 libpythonpro/tests/test_spam/test_github_api.py create mode 100644 libpythonpro/tests/test_spam/test_usuarios.py delete mode 100644 requirements-dev.txt delete mode 100644 requirements.txt diff --git a/libpythonpro/.travis.yml b/libpythonpro/.travis.yml index 796f62256..6c060517f 100644 --- a/libpythonpro/.travis.yml +++ b/libpythonpro/.travis.yml @@ -2,6 +2,10 @@ language: python python: - 3.7 install: - - pip install -r requirements-dev.txt + - pip install -q pipenv codecov + - pipenv sync --dev script: - - flake8 \ No newline at end of file + - flake8 + - -pytest libpythonpro --cov=liboythonpro +after_sucess: + - codecov \ No newline at end of file diff --git a/libpythonpro/github_api.py b/libpythonpro/github_api.py index aba65239d..b1685f749 100644 --- a/libpythonpro/github_api.py +++ b/libpythonpro/github_api.py @@ -3,14 +3,10 @@ def buscar_avatar(usuario): """ - Busca o avatar de um usuário no github + Busca o avatar de um usuário no githupyb :param usuario: str com o nome de usuário no github :return: str com o link do avatar """ url = f'https://api.github.com/users/{usuario}' resp = requests.get(url) return resp.json()['avatar_url'] - - -if __name__ == '__main__': - print(buscar_avatar('Dodots')) diff --git a/libpythonpro/spam/__init__.py b/libpythonpro/spam/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/libpythonpro/spam/enviador_de_email.py b/libpythonpro/spam/enviador_de_email.py new file mode 100644 index 000000000..b5101fdfa --- /dev/null +++ b/libpythonpro/spam/enviador_de_email.py @@ -0,0 +1,9 @@ +class Enviador: + def enviar(self, remetente, destinatario, assunto, corpo): + if '@' not in remetente: + raise EmailInvalido(f'Email de remetente invalido: {remetente} ') + return remetente + + +class EmailInvalido(Exception): + pass \ No newline at end of file diff --git a/libpythonpro/spam/main.py b/libpythonpro/spam/main.py new file mode 100644 index 000000000..6725b161f --- /dev/null +++ b/libpythonpro/spam/main.py @@ -0,0 +1,13 @@ +class EnviadorDeSpam: + def __init__(self, sessao, enviador): + self.sessao = sessao + self.enviador = enviador + + def enviar_emails(self, remetente, assunto, corpo): + for usuario in self.sessao.listar(): + self.enviador.enviar( + remetente, + usuario.email, + assunto, + corpo + ) \ No newline at end of file diff --git a/libpythonpro/spam/modelos.py b/libpythonpro/spam/modelos.py new file mode 100644 index 000000000..1b9a7ec0c --- /dev/null +++ b/libpythonpro/spam/modelos.py @@ -0,0 +1,5 @@ +class Usuario(object): + def __init__(self, nome, email): + self.email = email + self.nome = nome + self.id = None \ No newline at end of file diff --git a/libpythonpro/spam/tb.py b/libpythonpro/spam/tb.py new file mode 100644 index 000000000..fd1a4f6b2 --- /dev/null +++ b/libpythonpro/spam/tb.py @@ -0,0 +1,29 @@ +from time import sleep + + +class Sessao: + contador = 0 + usuarios = [] + + def salvar (self, usuario): + Sessao.contador += 1 + usuario.id = Sessao.contador + self.usuarios.append(usuario) + + def listar(self): + return self.usuarios + + def roll_back(self): + self.usuarios.clear() + + def fechar(self): + pass + + +class Conexao: + + def gerar_sessao(self): + return Sessao() + + def fechar(self): + pass \ No newline at end of file diff --git a/libpythonpro/tests/test_spam/__init__.py b/libpythonpro/tests/test_spam/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/libpythonpro/tests/test_spam/conftest.py b/libpythonpro/tests/test_spam/conftest.py new file mode 100644 index 000000000..5f7f387ff --- /dev/null +++ b/libpythonpro/tests/test_spam/conftest.py @@ -0,0 +1,20 @@ +import pytest + +from ...spam.tb import Conexao + + +@pytest.fixture(scope='session') +def conexao(): + #Setup + conexao_obj = Conexao() + yield conexao_obj + #Tear Down + conexao_obj.fechar() + + +@pytest.fixture +def sessao(conexao): + sessao_obj = conexao.gerar_sessao() + yield sessao_obj + sessao_obj.roll_back() + sessao_obj.fechar() \ No newline at end of file diff --git a/libpythonpro/tests/test_spam/test_enviador_de_email.py b/libpythonpro/tests/test_spam/test_enviador_de_email.py new file mode 100644 index 000000000..3d0d416b7 --- /dev/null +++ b/libpythonpro/tests/test_spam/test_enviador_de_email.py @@ -0,0 +1,38 @@ +import pytest + +from ...spam.enviador_de_email import Enviador, EmailInvalido + + +def test_criar_enviador_de_email(): + enviador = Enviador() + assert enviador is not None + +@pytest.mark.parametrize( + 'remetente', + ['99@rara.com.br', 'doougals.@gmail.com'] +) +def test_remetente(remetente): + enviador = Enviador() + resultado=enviador.enviar( + remetente, + 'luciano@python.pro.br', + 'Cursos Python Pro', + 'Prieiira turma Guido Von Rossum aberta.' + ) + + assert remetente in resultado + + +@pytest.mark.parametrize( + 'remetente', + ['', 'doougals.ail.com'] +) +def test_remetente_invalido(remetente): + enviador = Enviador() + with pytest.raises(EmailInvalido): + enviador.enviar( + remetente, + 'luciano@python.pro.br', + 'Cursos Python Pro', + 'Prieiira turma Guido Von Rossum aberta.' + ) \ No newline at end of file diff --git a/libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py b/libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py new file mode 100644 index 000000000..34d592412 --- /dev/null +++ b/libpythonpro/tests/test_spam/test_envio_para_base_de_usuarios.py @@ -0,0 +1,49 @@ +from unittest.mock import Mock + +import pytest + +from ...spam.enviador_de_email import Enviador +from ...spam.main import EnviadorDeSpam +from ...spam.modelos import Usuario + + +@pytest.mark.parametrize( + 'usuarios', + [ + [ + Usuario(nome='Douglas', email="doouglas@gmail.com.br"), + Usuario(nome='Dodo', email="doouglas@gmail.com.br") + ], + [ + Usuario(nome='Douglas', email="doouglas@gmail.com.br"), + ] + ] +) +def test_envio_de_spam(sessao, usuarios): + for usuario in usuarios: + sessao.salvar(usuario) + enviador = Mock() + enviador_de_spam = EnviadorDeSpam(sessao, enviador) + enviador_de_spam.enviar_emails( + 'dodo@gmail.com', + 'Curso Python Pro', + 'Confira os módulos fantásticos' + ) + assert len(usuarios) == enviador.enviar.call_count + +def test_parametros_de_spam(sessao): + usuario = Usuario(nome='Douglas', email="doouglas@gmail.com.br") + sessao.salvar(usuario) + enviador = Mock() + enviador_de_spam = EnviadorDeSpam(sessao, enviador) + enviador_de_spam.enviar_emails( + 'luciano@gmail.com', + 'Curso Python Pro', + 'Confira os módulos fantásticos' + ) + enviador.enviar.assert_called_once_with( + 'luciano@gmail.com', + "doouglas@gmail.com.br", + 'Curso Python Pro', + 'Confira os módulos fantásticos' + ) \ No newline at end of file diff --git a/libpythonpro/tests/test_spam/test_github_api.py b/libpythonpro/tests/test_spam/test_github_api.py new file mode 100644 index 000000000..7c3a2a0f1 --- /dev/null +++ b/libpythonpro/tests/test_spam/test_github_api.py @@ -0,0 +1,29 @@ +import unittest.mock + +import pytest +from pytest_mock import mocker + +from ... import github_api + + +@pytest.fixture +def avatar_url(mocker): + resp_mock = unittest.mock.Mock() + url = 'https://avatars3.githubusercontent.com/u/402714?v=4' + resp_mock.json.return_value = { + 'login': 'renzo', 'id': 402714, + 'avatar_url': url, + } + get_mock = mocker.patch('libpythonpro.libpythonpro.github_api.requests.get') + get_mock.return_value = resp_mock + return url + + +def test_buscar_avatar(avatar_url): + url = github_api.buscar_avatar('renzo') + assert avatar_url == url + + +def test_buscar_avatar_integracao(): + url = github_api.buscar_avatar('renzo') + assert 'https://avatars3.githubusercontent.com/u/402714?v=4' == url diff --git a/libpythonpro/tests/test_spam/test_usuarios.py b/libpythonpro/tests/test_spam/test_usuarios.py new file mode 100644 index 000000000..b624329de --- /dev/null +++ b/libpythonpro/tests/test_spam/test_usuarios.py @@ -0,0 +1,17 @@ +from ...spam.modelos import Usuario + + +def test_salvar_usuario(sessao): + usuario = Usuario(nome='Douglas', email="doouglas@gmail.com.br") + sessao.salvar(usuario) + assert isinstance(usuario.id, int) + + +def test_listar_usuario(sessao): + usuarios = [ + Usuario(nome='Douglas', email="doouglas@gmail.com.br"), + Usuario(nome='Dodo', email="doouglas@gmail.com.br") + ] + for usuario in usuarios: + sessao.salvar(usuario) + assert usuarios == sessao.listar() diff --git a/requirements-dev.txt b/requirements-dev.txt deleted file mode 100644 index 0b983aec3..000000000 --- a/requirements-dev.txt +++ /dev/null @@ -1,19 +0,0 @@ -flake8==3.8.3 -mccabe==0.6.1 -pycodestyle==2.6.0 -pyflakes==2.2.0 - -#Deps pytest -py==1.8.2 -more-itertools==4.0.0 -six==1.11.0 -attrs==17.4.0 -pluggy==0.6.0 -pyparsing==2.0.2 -pytest==3.5.1 - -#Converger -coverage==5.2.1 -pytest-cov==2.10.1 - --r requirements.txt \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index ef0c1703d..000000000 --- a/requirements.txt +++ /dev/null @@ -1,5 +0,0 @@ -certifi==2020.6.20 -chardet==3.0.4 -idna==2.10 -requests==2.24.0 -urllib3==1.25.10 From e531d67b18cf30d2d4259fceeab195fe990ac70c Mon Sep 17 00:00:00 2001 From: Douglas Date: Fri, 18 Sep 2020 16:36:15 -0300 Subject: [PATCH 15/15] =?UTF-8?q?atualizada=20configura=C3=A7=C3=A3o=20do?= =?UTF-8?q?=20pyup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libpythonpro/.pyup.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 libpythonpro/.pyup.yml diff --git a/libpythonpro/.pyup.yml b/libpythonpro/.pyup.yml new file mode 100644 index 000000000..551ae40dd --- /dev/null +++ b/libpythonpro/.pyup.yml @@ -0,0 +1,3 @@ +requirements: + - Pipfile + - Pipfile.lock \ No newline at end of file