Package: ninja-snake-lib
Ninja Snake LibBiblioteca python para projetos que utilizam o Django framework.MotivaçãoDevido 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ênciasEstá biblioteca possui a dependência do Django Framework>= 3.1.6.FuncionalidadesReadDotenvJSONFormattervalidate_external_api_keyvalidate_sns_subscriptiongn_context_correlation_id_from_requestCustomisedJSONFormattergn_py_trackerInstalaçãopip install ninja-snake-libRead DotenvO móduloReadDotenvtem a função de ler as variáveis de ambiente contidas
no arquivo.enve criá-las no sistema operacional.Como UtilizarNo início do arquivo settings.py de ser feito o import do módulo.from ninja-snake-lib.read_dotenv import ReadDotenvDeve ser passado como parâmetro o path onde se encontra o arquivo.env.ReadDotenv.read_dotenv(Path(__file__).resolve().parent)JSONFormatterO móduloJSONFormattertem a função de formatar a saída do log.Como UtilizarPara utilizar o módulo, basta fazer a chamada na config do LOG como no exemplo
abaixo:Config do log no settings.pyLOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'formatters': {
            'json': {
                '()': 'ninja_snake_lib.json_formatter.JSONFormatter'
            }
        },
        ...gn_context_correlation_id_from_requestDecorator que gera correlation_id para os logs dos requestsCustomisedJSONFormatterO móduloCustomisedJSONFormatterimplementa 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())Decoratorsvalidate_external_api_keyO decoratorvalidate_external_api_keytem a função de validar o parâmetroHTTP_AUTHORIZATIONno header das requisições recebidas.Como UtilizarNo 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_keyCom o decorator importado, podemos fazer uso dele como no exemplo abaixo:@validate_external_api_key
def teste_decorator(x):
    return x * 3validate_sns_subscriptionO decoratorvalidate_sns_subscriptiontem a função de validar o parâmetroHTTP_X_AMZ_SNS_MESSAGE_TYPEno header das requisições recebidas.Como UtilizarNo início do arquivo da view que irá utilizar o decorator, fazer o import do mesmo.from ninja_snake_lib.decorators import validate_sns_subscriptionCom o decorator importado, podemos fazer uso dele como no exemplo abaixo:@validate_sns_subscription
def teste_decorator(x):
    return x * 3gn_py_trackerBiblioteca para tracker de eventos de uma aplicação.Como UtilizarEstá lib pode ser usada em qualquer sistema python.Devemos fazer o seguinte import do módulo.from gn_py_tracker.tracker import TrackerPara 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 adicionalPassar 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.TestesPara rodar os testes devemos instalar as dependências para o teste unitário
com o comando abaixo:pip install -r requirements.txtPara rodar os testes devemos estar no diretório root do projeto e executar o
comando abaixo:python -m unittestPodemos também utilizar o parâmetro -v (verbose) para exibir os nomes nos testes
que rodaram.Exemplopython -m unittest -v