Skip to main content

This package name is reserved by LOGYCA company

Project description

Logyca

LOGYCA public libraries

Package version Python


About us


LOGYCA public libraries

  • Traversal libraries: Standard methods to be used by microservices.
  • Return codes: Standard methods for reporting result status codes using APIResult.
  • Monitoring: Standard methods to report check health status codes.
  • Helpers: Standard methods to be used. *

Source code | Package (PyPI) | Samples | Unit tests



"pip install" dependency check

The user must select the required libraries and versions for the project that uses this library, which validates that they are pre-installed in order to be installed.

To install the libraries of the logyca package (APIResult,Health) verifying the pydantic,pytz prerequisite without validating other packages, use the following command:

# Check pydantic dependency that is installed
pip install logyca

To install the fastapi package libraries and logyca authentication dependency injection, use the following command:

# Check the aiohttp dependency that is installed, for use with oauth authentication, e.g. single sign-on (SSO).
pip install logyca[oauth_token]
# Check the fastapi dependency that is installed, for use with Api-key authentication.
pip install logyca[api_key_simple_auth]
# Check the fastapi dependency that is installed, for use with Api-key and oauth authentication.
pip install logyca[oauth_token-api_key_simple_auth]

Semantic Versioning

logyca < MAJOR >.< MINOR >.< PATCH >

  • MAJOR: version when you make incompatible API changes
  • MINOR: version when you add functionality in a backwards compatible manner
  • PATCH: version when you make backwards compatible bug fixes

Definitions for releasing versions

  • https://peps.python.org/pep-0440/

    • X.YaN (Alpha release): Identify and fix early-stage bugs. Not suitable for production use.
    • X.YbN (Beta release): Stabilize and refine features. Address reported bugs. Prepare for official release.
    • X.YrcN (Release candidate): Final version before official release. Assumes all major features are complete and stable. Recommended for testing in non-critical environments.
    • X.Y (Final release/Stable/Production): Completed, stable version ready for use in production. Full release for public use.

Quick install

# Windows
python -m pip install logyca
# Linux
pip install logyca

Example of concepts using library APIResult

# Example output from ApiResult:
result={
  "resultToken": {
    "token": "",
    "refreshToken": "",
    "result": "",
    "emailActiveDirectory": "",
    "message": ""
  },
  "resultObject": [
    {
      "name": "Database server",
      "status": 0,
      "description": "Connection status fine"
    },
    {
      "name": "Redis server",
      "status": 0,
      "description": "Connection status fine"
    }
  ],
  "apiException": {
    "message": "",
    "isError": false,
    "detail": null,
    "status": 200,
    "logycaStatus": 0
  },
  "resultMessage": "",
  "dataError": false
}

Use cases: you must catch de exception

  1. if you get data only the token:
{
"dataError":false,
"resultObject":null,
"resultToken":"Not Null"
}
  1. if you get data correctly
{
"dataError":false,
"resultObject"="Not Null"
"resultToken"=null
}
  1. if you don't get because the operation was cancelled
{
"dataError":true,
"resultObject":null,
"resultToken":null,
"apiException.logycaStatus":1,
"apiException.status"=404,
"resultMessage":"exception messages: the operation was cancelled"
}

[optional]apiException.message="if needed, return an object with structured failure data other than exception messages"

Example of using library APIResult + Health Check

from fastapi.encoders import jsonable_encoder
from logyca import HealthEnum, LogycaStatusEnum, APIResultDTO, ApiFilterExceptionDTO, HTTPExceptionDTO, HealthDTO, TokensDTO
from starlette.responses import JSONResponse
import json

def example_service():
    tokensDTO=TokensDTO()
    tokensDTO.token='Token Example'

    apiFilterExceptionDTO=ApiFilterExceptionDTO()
    apiFilterExceptionDTO.isError=False
    apiFilterExceptionDTO.logycaStatus=int(LogycaStatusEnum.Already_Exists)
    apiFilterExceptionDTO.status=int(LogycaStatusEnum.Already_Exists.mappingHttpStatusCode)

    httpExceptionDTO=HTTPExceptionDTO()
    httpExceptionDTO.detail='No Problem'

    listHealth=[]

    listHealth.append(HealthDTO(name='Check CPU',status=HealthEnum.Ok,description='OK').__dict__)
    listHealth.append(HealthDTO(name='Check Connect DB',status=HealthEnum.Warning,description='Warning').__dict__)
    listHealth.append(HealthDTO(name='Check Connect Storage',status=HealthEnum.Critical,description='Critical').__dict__)

    apiResultDTO=APIResultDTO()
    apiResultDTO.resultMessage=httpExceptionDTO.detail
    apiResultDTO.resultObject=listHealth
    apiResultDTO.dataError=False
    apiResultDTO.resultToken=tokensDTO
    apiResultDTO.apiException=apiFilterExceptionDTO

    return apiResultDTO

def simulator_api_return():
    apiResultDTO = example_service()
    content = jsonable_encoder(apiResultDTO)
    print((json.dumps(content,indent=4)))
    return JSONResponse(content=content,status_code=200)

simulator_api_return()

# output sample
  #
  # {
  #     "resultToken": {
  #         "token": "Token Example",
  #         "refreshToken": "",
  #         "result": "",
  #         "emailActiveDirectory": "",
  #         "message": ""
  #     },
  #     "resultObject": [
  #         {
  #             "name": "Check CPU",
  #             "status": 0,
  #             "description": "OK"
  #         },
  #         {
  #             "name": "Check Connect DB",     
  #             "status": 1,
  #             "description": "Warning"        
  #         },
  #         {
  #             "name": "Check Connect Storage",
  #             "status": 2,
  #             "description": "Critical"       
  #         }
  #     ],
  #     "apiException": {
  #         "message": "",
  #         "isError": false,
  #         "detail": null,
  #         "status": 409,
  #         "logycaStatus": 6
  #     },
  #     "resultMessage": "No Problem",
  #     "dataError": false
  # }

Example of using helpers

from logyca import buildUrl,convertDateTimeStampUTCtoUTCColombia

url1='https://domain.com'
url2='api/get'
print(f'buildUrl={buildUrl(url1,url2)}')
# ouput
# buildUrl=https://domain.com/api/get

datetimestampUTC=1679729109
print(f'datetimeUTCColombia={convertDateTimeStampUTCtoUTCColombia(datetimestampUTC)}')
# output
# datetimeUTCColombia=2023-03-25 02:25:09-05:00

Example of using Logger

At the root of the project, the logs folder is created and the types of errors are differentiated by different files.

# main.py
from logyca import Logger, ConstantsLogger
logger = Logger(logger_name=ConstantsLogger.NAME,log_dir=FOLDER_LOGS,log_file_name=f"{App.Settings.NAME}")
logger.info(f"message")

# Other files.py
from logyca import Logger, ConstantsLogger
import logging
logger = logging.getLogger(ConstantsLogger.NAME)

logger.info(f"message")
logger.error(f"message")

Current library test

# Library installation

# Windows
python -m pip install logyca[test]
# Linux
pip install logyca

# Run it
pytest -s

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Types of changes

  • Added for new features.
  • Changed for changes in existing functionality.
  • Deprecated for soon-to-be removed features.
  • Removed for now removed features.
  • Fixed for any bug fixes.
  • Security in case of vulnerabilities.

[0.1.9] - 2024-05-21

Added

  • New logger functionality.
  • new authentication functionality in fastapi by dependency injection with api-key, to be used on endpoints.
  • new authentication functionality in fastapi by dependency injection with oauth (single sign on), to be used on endpoints.
  • In the samples folder of this library, there are complete working examples of using the code.

[0.1.8] - 2023-10-03

Fixed

  • Due to a link error in the readme to internal documents in pypi, we chose to leave the changelog at the end of the readme.

[0.1.7] - 2023-10-02

Fixed

  • The url address for the logyca logo is corrected
  • Adjust return code for LogycaStatusEnum class: LogycaStatusEnum.Created==HTTPStatus.CREATED
  • Adjust return code for LogycaStatusEnum class: LogycaStatusEnum.InProcess==HTTPStatus.ACCEPTED
  • Adjust return code for LogycaStatusEnum class: LogycaStatusEnum.Partial==HTTPStatus.ACCEPTED
  • Empty files init.py removed

[0.1.6] - 2023-09-11

Fixed

  • Pydantic restriction for versions lower than 2.0 is removed

[0.1.5] - 2023-03-27

Added

  • Release ready for production

[0.1.6-9] - 2024-5-21<

Added

  • new features such as: logging, helpers for fastapi

[0.1.10] - 2024-05-23

Added

  • Documentation improvements.
  • Documentation integrated with github

[0.1.11] - 2024-05-24

Deprecated

  • add print info deprecated in convert_string_to_boolean()

Added

  • new parse_bool() function that will replace convert_string_to_boolean()

[0.1.12-13] - 2024-06-13

Fixed

  • Oauth fix

[0.1.13] - 2024-06-20

Added

  • New Logger feature to rotate backup logs and allow them to be written.

[0.1.14] - 2024-07-02

Added

  • New APIResultDTOExternal feature to Scheme output

[0.1.15] - 2024-07-05

Fixed

  • Updated LogycaStatusEnum for starlette library use
  • Correction of exception handlers.

[0.1.16] - 2024-07-12

Added

  • For object classes like APIResultDTO and others, the to_dict() function is added to be able to serialize the attributes to json in a simple way.
  • Added object serialization example.

[0.1.17] - 2024-07-22

Fixed

  • APIResultDTO fixes the data=False error external of the init constructor.

[0.1.18] - 2024-08-16

Fixed

  • Example of auth apkey with dockerfile and dependencies that were missing when installing the library is added.

[0.1.19] - 2025-01-02

Added

  • To the from logyca import APIKeyScheme, APIKey functionality to validate an endpoint api_key: str = Depends(get_api_key), the ability to choose the name of the api key is added, by default the value is "x-api-key". To change the name you must configure the environment variable API_KEY_NAME. Example: os.environ["API_KEY_NAME"] = "x-api-key-other-value".

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

logyca-0.1.19rc1.tar.gz (22.4 kB view details)

Uploaded Source

Built Distribution

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

logyca-0.1.19rc1-py3-none-any.whl (23.4 kB view details)

Uploaded Python 3

File details

Details for the file logyca-0.1.19rc1.tar.gz.

File metadata

  • Download URL: logyca-0.1.19rc1.tar.gz
  • Upload date:
  • Size: 22.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.9

File hashes

Hashes for logyca-0.1.19rc1.tar.gz
Algorithm Hash digest
SHA256 647f6650446a774caff0d1b0c1da0beb2418c4d16cebacf992157f9c0c509b96
MD5 9400f4e3891ff3215d4c76c8a70eba86
BLAKE2b-256 b195709f22ec0f1bad0ce1cbb6acfd5f0230023739e93b7f8666513f84506655

See more details on using hashes here.

File details

Details for the file logyca-0.1.19rc1-py3-none-any.whl.

File metadata

  • Download URL: logyca-0.1.19rc1-py3-none-any.whl
  • Upload date:
  • Size: 23.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.9

File hashes

Hashes for logyca-0.1.19rc1-py3-none-any.whl
Algorithm Hash digest
SHA256 f4c4ed6185aea7883670ec1bb59b2783f5d9956c60423206c3159e3575df7102
MD5 860dc07eda96d767cc5e050ee8eea86f
BLAKE2b-256 713fdba2384287f3ff482c73062a2ffc15e865ee10f6265a083ba350ce9e95d2

See more details on using hashes here.

Supported by

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