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.0.tar.gz (10.5 kB view details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

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

File metadata

  • Download URL: ninja_snake_lib-0.2.0.tar.gz
  • Upload date:
  • Size: 10.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.10 Darwin/22.6.0

File hashes

Hashes for ninja_snake_lib-0.2.0.tar.gz
Algorithm Hash digest
SHA256 fba3a752f2590a54ee8313bf362d0b69f6051b09d426d1c8724a8e25e9ed0c3f
MD5 b5d89b705022cc3abc35b3019f982e61
BLAKE2b-256 3f76c5d7a4be2bdc2354e158fd5007f5a25af5f23a82a1e6c700d42a9c6b8826

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ninja_snake_lib-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.10 Darwin/22.6.0

File hashes

Hashes for ninja_snake_lib-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1254c30f9c1ad387c9f155b62b312f7dc42d97e9fba630b5a20011da1daad107
MD5 8521f01092e3aa0c3699d2610f862705
BLAKE2b-256 d89cb109c4967eb1af261ac63407d955f6dba7ced8b0a3f9aba632c668df6c52

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