Skip to main content

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

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

If you're not sure about the file name format, learn more about wheel file names.

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.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 files

0.2.0

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page