Skip to main content

Biblioteca utilitaria para projetos Python no Getninjas

Project description

Ninja Snake Lib

Biblioteca python para projetos que utilizam o Django framework.

Motivação

Devido aos projetos compartilharem os mesmos trechos de código nas configurações dos sistemas, foi criada essa biblioteca para melhorar a reutilização e a manutenção do código nesses sistemas.

Dependências

Está biblioteca possui a dependência do Django Framework >= 3.1.6.

Funcionalidades

  • ReadDotenv
  • JSONFormatter
  • validate_external_api_key
  • validate_sns_subscription
  • gn_context_correlation_id_from_request
  • CustomisedJSONFormatter
  • gn_py_tracker

Instalação

pip install ninja-snake-lib

Read Dotenv

O módulo ReadDotenv tem a função de ler as variáveis de ambiente contidas no arquivo .env e criá-las no sistema operacional.

Como Utilizar

No início do arquivo settings.py de ser feito o import do módulo.

from ninja-snake-lib.read_dotenv import ReadDotenv

Deve ser passado como parâmetro o path onde se encontra o arquivo .env.

ReadDotenv.read_dotenv(Path(__file__).resolve().parent)

JSONFormatter

O módulo JSONFormatter tem a função de formatar a saída do log.

Como Utilizar

Para utilizar o módulo, basta fazer a chamada na config do LOG como no exemplo abaixo:

Config do log no settings.py
 LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'json': {
                '()': 'ninja_snake_lib.json_formatter.JSONFormatter'
            }
        },
        ...

gn_context_correlation_id_from_request

Decorator que gera correlation_id para os logs dos requests

CustomisedJSONFormatter

O módulo CustomisedJSONFormatter implementa um formatador padronizado para as entradas de log nos sistemas Django.

Para utilizar, adicionar em settings.py:

from ninja_snake_lib import CustomisedJSONFormatter
from ninja_snake_lib.setup_correlation_id import ContextFilter

...
ch = logging.StreamHandler()
ch.setFormatter(CustomisedJSONFormatter())

LOGGER.addHandler(ch)
LOGGER.addFilter(ContextFilter())

Decorators

validate_external_api_key

O decorator validate_external_api_key tem a função de validar o parâmetro HTTP_AUTHORIZATION no header das requisições recebidas.

Como Utilizar

No início do arquivo da view que irá utilizar o decorator, fazer o import do mesmo.

from ninja_snake_lib.decorators import validate_external_api_key

Com o decorator importado, podemos fazer uso dele como no exemplo abaixo:

@validate_external_api_key
def teste_decorator(x):
    return x * 3

validate_sns_subscription

O decorator validate_sns_subscription tem a função de validar o parâmetro HTTP_X_AMZ_SNS_MESSAGE_TYPE no header das requisições recebidas.

Como Utilizar

No início do arquivo da view que irá utilizar o decorator, fazer o import do mesmo.

from ninja_snake_lib.decorators import validate_sns_subscription

Com o decorator importado, podemos fazer uso dele como no exemplo abaixo:

@validate_sns_subscription
def teste_decorator(x):
    return x * 3

gn_py_tracker

Biblioteca para tracker de eventos de uma aplicação.

Como Utilizar

Está lib pode ser usada em qualquer sistema python.

Devemos fazer o seguinte import do módulo.

from gn_py_tracker.tracker import Tracker

Para inicializar o tracker deve ser passado como parâmetro o "tracker_type" e parâmetros adicionais de acordo com o tipo do tracker.

tracker = Tracker.create_tracker(tracker_type="file")

Para envio do evento devemos chamar o método "send_event"

tracker.send_event(event)

Configuração adicional

Passar como parâmetro o logger do sistema que estamos importando o pacote, da seguinte forma:

tracker = Tracker.create_tracker(tracker_type="file", app_logger=logger)

OBS: Para uso em sistemas Django devemos instanciar o tracker após a definição do logger usado no projeto e após a definição de "LANGUAGE_CODE" e "TIME_ZONE" para correta configuração do logger.

Testes

Para rodar os testes devemos instalar as dependências para o teste unitário com o comando abaixo:

pip install -r requirements.txt

Para rodar os testes devemos estar no diretório root do projeto e executar o comando abaixo:

python -m unittest

Podemos também utilizar o parâmetro -v (verbose) para exibir os nomes nos testes que rodaram.

Exemplo

python -m unittest -v

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ninja_snake_lib-0.2.1.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

ninja_snake_lib-0.2.1-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file ninja_snake_lib-0.2.1.tar.gz.

File metadata

  • Download URL: ninja_snake_lib-0.2.1.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.12 Linux/6.5.0-27-generic

File hashes

Hashes for ninja_snake_lib-0.2.1.tar.gz
Algorithm Hash digest
SHA256 5cb321c660b041999462b8fa06b59f5c793efec07e2a0dddc0d4b257475cbc13
MD5 50a26b1e4959e2ea0609c57196c5881f
BLAKE2b-256 203d9d303d78e64711b1fd973e4affce2d72811f285b0d63614b1e7284cdc0f1

See more details on using hashes here.

File details

Details for the file ninja_snake_lib-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: ninja_snake_lib-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.10.12 Linux/6.5.0-27-generic

File hashes

Hashes for ninja_snake_lib-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 27f8addc6bdfc379b8610ca1f8899104211bc5b40644a1c6b4680a94488c2690
MD5 bcc2b40d1f2e160791f8ccc269ce0dd2
BLAKE2b-256 eaf14140599213cbe59368eb4810d243f3d81487297a802dab9c6e87f1d7c080

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page