From a3afc93eee87863d8aaa84ab7ca5609ffa2809a3 Mon Sep 17 00:00:00 2001 From: Dudinha Date: Wed, 15 Mar 2023 17:43:45 -0300 Subject: [PATCH 1/3] feat: implementa escala cromatica --- notas_musicais/escalas.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/notas_musicais/escalas.py b/notas_musicais/escalas.py index efe311b..c6c5e01 100644 --- a/notas_musicais/escalas.py +++ b/notas_musicais/escalas.py @@ -7,7 +7,7 @@ # ESCALAS -A escalas estão implementadas em uma constande chamada `ESCALAS`. Que é um dicionário onde as chaves são as escalas. Se quiser ver todas as escalas implementadas pode usar: +A escalas estão implementadas em uma constante chamada `ESCALAS`. Que é um dicionário onde as chaves são as escalas. Se quiser ver todas as escalas implementadas pode usar: ```py title="No seu shell interativo" >>> from notas_musicais.escalas import ESCALAS @@ -25,7 +25,7 @@ # NOTAS -As notas estão sendo definidas em uma contasnte `NOTAS`. Foi optado por menter somente as notas no formato Natural e o Sustenido (#) para a simplificação do fluxo de trabalho. Embora não esteja totalmente correto. Para ver as 12 notas você pode: +As notas estão sendo definidas em uma constante `NOTAS`. Foi optado por manter somente as notas no formato Natural e o Sustenido (#) para a simplificação do fluxo de trabalho. Embora não esteja totalmente correto. Para ver as 12 notas você pode: ```py title="No seu shell interativo" >>> from notas_musicais.escalas import NOTAS @@ -35,16 +35,20 @@ ``` """ NOTAS = 'C C# D D# E F F# G G# A A# B'.split() -ESCALAS = {'maior': (0, 2, 4, 5, 7, 9, 11), 'menor': (0, 2, 3, 5, 7, 8, 10)} +ESCALAS = { + 'maior': (0, 2, 4, 5, 7, 9, 11), + 'menor': (0, 2, 3, 5, 7, 8, 10), + 'cromatica': (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), +} def escala(tonica: str, tonalidade: str) -> dict[str, list[str]]: """ - Gera uma escala apartir de uma tônica e uma tonalidade. + Gera uma escala a partir de uma tônica e uma tonalidade. Args: tonica: Nota que será a tônica da escala - tonalidade: Tonialidade da escala + tonalidade: Tonalidade da escala Returns: Um dicionário com as notas da escala e os graus. @@ -68,7 +72,7 @@ def escala(tonica: str, tonalidade: str) -> dict[str, list[str]]: raise ValueError(f'Essa nota não existe, tente uma dessas {NOTAS}') except KeyError: raise KeyError( - 'Essa escala não existe ou não foi implementada. ' + 'Essa escala não existe ou não foi implementada ainda. ' f'Tente uma dessas {list(ESCALAS.keys())}' ) From b77949bed0aa10cd798de2b1444a3d7e86129619 Mon Sep 17 00:00:00 2001 From: Dudinha Date: Wed, 15 Mar 2023 17:43:56 -0300 Subject: [PATCH 2/3] tests: implementa testes da escala cromatica --- tests/test_escalas.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tests/test_escalas.py b/tests/test_escalas.py index b0bd638..b4207cc 100644 --- a/tests/test_escalas.py +++ b/tests/test_escalas.py @@ -38,7 +38,7 @@ def test_deve_retornar_um_erro_dizendo_que_a_escala_não_existe(): tonalidade = 'tonalidade' mensagem_de_erro = ( - 'Essa escala não existe ou não foi implementada. ' + 'Essa escala não existe ou não foi implementada ainda. ' f'Tente uma dessas {list(ESCALAS.keys())}' ) @@ -57,6 +57,21 @@ def test_deve_retornar_um_erro_dizendo_que_a_escala_não_existe(): ('C', 'menor', ['C', 'D', 'D#', 'F', 'G', 'G#', 'A#']), ('C#', 'menor', ['C#', 'D#', 'E', 'F#', 'G#', 'A', 'B']), ('F', 'menor', ['F', 'G', 'G#', 'A#', 'C', 'C#', 'D#']), + ( + 'C', + 'cromatica', + ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'], + ), + ( + 'C#', + 'cromatica', + ['C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B', 'C'], + ), + ( + 'D', + 'cromatica', + ['D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B', 'C', 'C#'], + ), ], ) def test_deve_retornar_as_notas_corretas(tonica, tonalidade, esperado): From aafb1ea9629393efc72592c2ce78c2f2d8bcaac0 Mon Sep 17 00:00:00 2001 From: Dudinha Date: Wed, 15 Mar 2023 17:44:05 -0300 Subject: [PATCH 3/3] fix: corrige typos nas docs --- README.md | 2 +- docs/02_contribua.md | 2 +- docs/index.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 447e645..fb10bbf 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Embora isso seja somente uma recomendação! Você também pode instalar o proje pip install notas-musicais ``` -## como usar? +## Como usar? ### Escalas diff --git a/docs/02_contribua.md b/docs/02_contribua.md index 8a59de9..1450271 100644 --- a/docs/02_contribua.md +++ b/docs/02_contribua.md @@ -33,7 +33,7 @@ Os exemplos usados na docstring também estão sendo usados para testes. Então, #### Sobre a biblioteca -Toda a biblioteca usa python puro, ela não tem nenhuma dependência de bibliotecas externas. Isso é proposital, pois o código é bastante simples. As respostas das funções foram padronizadas com o retorno sempre sendo um dicionário python, pois em algum momento alguém pode querer expandir isso para uma interface gráfica ou usar em um API REST, dessa forma, acredito que um padrão que pode ser serealizado, pode ajudar bastante as pessoas. +Toda a biblioteca usa python puro, ela não tem nenhuma dependência de bibliotecas externas. Isso é proposital, pois o código é bastante simples. As respostas das funções foram padronizadas com o retorno sempre sendo um dicionário python, pois em algum momento alguém pode querer expandir isso para uma interface gráfica ou usar em um API REST, dessa forma, acredito que um padrão que pode ser serializado, pode ajudar bastante as pessoas. Todas as vezes em que o código é consumido entre funções, durante a construção da aplicação foi criado um padrão para desempacotar o dicionário em outras funções. Então, não se preocupe se ver muito esse formato de código: diff --git a/docs/index.md b/docs/index.md index 27bf476..ad46704 100644 --- a/docs/index.md +++ b/docs/index.md @@ -9,7 +9,7 @@ Toda a aplicação é baseada em um comando chamado `notas-musicais`. Esse coman {% include "templates/instalacao.md" %} -## como usar? +## Como usar? ### Escalas