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

Metadata

Release files for NINJA-SNAKE-LIB 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for NINJA-SNAKE-LIB 0.2.1
File Size Uploaded
ninja_snake_lib-0.2.1.tar.gz 10.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for NINJA-SNAKE-LIB 0.2.1
File Interpreter ABI Platform
ninja_snake_lib-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 21.4 kB

Release files / ninja_snake_lib-0.2.1.tar.gz

Download URL ninja_snake_lib-0.2.1.tar.gz
Size 10.3 kB
Tags Source
SHA-256 checksum
How to use checksums
5cb321c660b041999462b8fa06b59f5c793efec07e2a0dddc0d4b257475cbc13
BLAKE2b-256 checksum
How to use checksums
203d9d303d78e64711b1fd973e4affce2d72811f285b0d63614b1e7284cdc0f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.10.12 Linux/6.5.0-27-generic

Release files / ninja_snake_lib-0.2.1-py3-none-any.whl

Download URL ninja_snake_lib-0.2.1-py3-none-any.whl
Size 11.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
27f8addc6bdfc379b8610ca1f8899104211bc5b40644a1c6b4680a94488c2690
BLAKE2b-256 checksum
How to use checksums
eaf14140599213cbe59368eb4810d243f3d81487297a802dab9c6e87f1d7c080
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.10.12 Linux/6.5.0-27-generic

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page