Saltar a contenido

Changelog

Todos los cambios notables en este proyecto se documentarán en este archivo.

El formato se basa en Keep a Changelog, y este proyecto intenta, pero no necesariamente se adhiere al Versionado Semántico, a decir verdad, se parece más al Versionado por Calendario.

Por aquí hay un post genial, acerca de cada una de estas formas de versionado de software.

Unreleased

This version highlights:

  • 📖 the license change from LGPL v2 to a dual-licensing model, using Apache 2.0 or MIT 💫

  • 💥 Python 3.11 and above 🔥 🎉

  • 💥 FastAPI 110+ 🔥 🎉
  • 💥 Pydantic 2.6.x 🔥 🎉

Added

  • set_time_out method, Allows you to change the request timeout the request (common/http/base_api.py)
  • DefaultItemId to use with ApiRouter (common\types.py)
  • DELETED status (common/http/status.py)
  • more types (common\types.py) now using pydantic 2.x
  • function gen_auth_2fa to generate support otp 2FA/MFA apps (utils/security.py) 🆕
  • implement EnumNameSerializer, thanks to @brthor (app/common/enums.py)
  • function create_name_from_email (utils/commons.py)
  • function date_to_str (utils/date_utils.py)
  • 🧑‍🔬 more tests
  • create template por default crud using api router 🆕 (tools/crud_api_router.py)
  • [tool.callisto] section in pyproject.toml for better export 🆕
  • package-mode = false in pyproject.toml (see Poetry Operating modes)
  • bandit 1.7.x as tests depedency 🆕

Changed

  • upgrade all dependencies to release date
  • upgrade Poetry to 1.8.x
  • declare DEPRECATED firestore modules 💥
  • functions now in lowercase, fix errors (contrib/mongoDB/connect.py)
  • 💥 Python 3.11
  • 💥 FastAPI 110+
  • 💥 Pydantic 2.6.x
  • 💣 many changes on tools scripts
  • the license change from LGPL v2 to a dual-licensing model, using Apache 2.0 or MIT 📖
  • 🐮 too much documentation added and/or updated 🎉 📖

Fixed

  • validate error_type, for some errors (common/http/http_exceptions.py)
  • enums (common\enums.py)
  • many changes in function generate_schema (utils/gen_schema.py) now using pydantic 2.x
  • many changes in function types.py (common/types.py) now using pydantic 2.x
  • better validation on session (contrib/mongoDB/sessions/session_handler.py)
  • remove duplicated, and messages (common/middlewares/sessions.py)
  • fix encoding for Windows OS (tools/utils.py)
  • many issues on date utils module
  • close mongoDB conn (app/server.py)
  • 🧐 using jsonable_encoder (app/error_handlers.py)
  • fix tools scripts
  • response function (common/http/response.py)

Removed

  • many unused prints and logs 🤫
  • many unused imports 🤫
  • COPYING and LGPL.txt files are removed.
  • old restful template (tools/crud_gen.py)
  • 🚨 support for Python 3.10.x and earlier is removed
  • 🚨 support for pydantic 1.x is removed
  • 🚨 firestore 💥 dependency and module
  • 🚨 fastapi_restful 💥 dependency
  • 🚨 add_resource 💥 function

2024.02.16

Added

  • support for fields alias on raw_query (contrib/mongoDB/mongo_model.py)
  • a better way to export requirements see commands and tools 😄
  • more date utils functions
  • added cors support
  • background version 0.2.1

Changed

  • fix readme
  • 🐮 too much documentation added and/or updated 🎉 📖

Fixed

Removed

2023.12.09

Added

  • function hash_from_dict to generate hash from dict/object (utils/security.py)
  • firebase connect function (contrib/firebase/connect.py)
  • allowed_files function
  • realtime_api function to send data to real time api (this function uses get_gcp_auth_token to get gcp token)
  • contrib module for resend mail 🆕
  • contrib module for foreign exchange
  • firebase_connect function
  • missing async key 😄 and return
  • send_sms_api (contrib/sms/twilio_sms.py) function
  • 🧑‍🔬 example modules
  • contrib module for gcp auth tokens 🆕
  • middleware custom_http_exceptions for handle custom http exceptions 🎉, added new error messages
  • test for api router cities 🆕
  • test for api router cities 🆕
  • module for health check probe 🆕
  • validation for 'Accept-Encoding' header 🆕 and more:
  • change error messages
  • user_id to request.state (/common/middlewares/auth.py)
  • new error messages, added missing try/except
  • cloud build info
  • script for tests
  • ignore gcp config, fix docker ignore
  • more params on MongoClient
  • missing 'updated_at' (contrib/mongoDB/mongo_model.py)

Changed

  • change ORJSONResponse, now using http.response function (core/resource_model.py)
  • reaname custom headers params on (/common/http/rest.py)
  • more depends on gcp group(), added firebase-admin (pyproject.toml)
  • many docs... for GAE cloud run, fly io, contrib modules 📖 🎉

Fixed

  • twilio uri api 😄
  • logger added try/except mongo close conn
  • ORJSONResponse base_api,
  • reformat error messages bigquery, mongo connect
  • status codes (/app/error_handlers.py)
  • fix close function (contrib/mongoDB/connect.py)
  • define some vars on firebase config (/contrib/gcp/auth.py)
  • fix docs and format string message (/contrib/mail/resend_email.py)
  • remove logs, fix indent, missing keys
  • module for firebase storage (via admin) 🆕 fix doc on connect
  • fix params and types on response function, the way in which error responses are generated is changed 🔥
  • typing fix/rework some functions 😄 is_valid_hour compare_times add_days compare_times
  • examples, locales now using fastapi_restful, roles now using apiRouter
  • warning on Draft202012Validator
  • docs, fix timeout
  • mongo session
  • added exception on get_prefix method
  • as_dict now using try/except
  • fix ollection.delete_on filters

Removed

data key (/app/error_handlers.py) method request 💣 (now use self.req), rename imports prints update reqs unused cli apps (Dockerfile) many unused logs 💣 🔥

2023.11.07

Added

  • response_raw function (http/response.py)
  • add_days, add_months, add_time and add_date (utils/date_utils.py) although revision is needed 🧐
  • template for restful model, view, url, dto
  • template generator for restful cruds🎉
  • DefaultMetaDto (app/common/types.py), for metadadata endpoints
  • awesome JSON Over POST, template generator (tools/crud_json_over_post.py) 🎉
  • crud template for mongo (at time)
  • tools utils for template and other stuff
  • Json Over Post View, model and Dto template (tools/templates/json_over_post/)
  • JSON Over POST crud (tools/crud_json_over_post.py) 😄
  • initial configuration and templates for JSON over POST 🔥 (tools/templates/json_over_post/)
  • function generate_schema for create jsonschema info from pydantic models (app/utils/gen_schema.py)
  • new types DefaultFieldList, DefaultSearchDto, DefaultDeleteDto is enabled for mongoDB (app/common/types.py)
  • example of validation, using jsonschema
  • 🧑‍🔬 test for locales
  • use Thread to create background task, thanks to gabrieljf217 🎉
  • retries(urllib3.util Retry) to some methods
  • add_router function to handle APIRouter routes 😄
  • move from init, add_middleware and add_exception_handler (app/server.py)
  • method not_allowed (APIRouter 405 handler)
  • ForceGZipMiddleware in replacement of "added_gzip_header" better doc, comment "pre_ordered_middlewares"
  • LogRequestMiddleware in replacement of "after_request"

Changed

  • change name on DefaultToken
  • valid if using restful or json_over_post
  • rework crud_gen, now in many modules 🔥 😄
  • validate function using JSONSchema draft 2020-12 increase maxfail (pytest options)
  • more strict 🔥 validation on locales
  • set theme (mkdocs) 🎉
  • 💣 change name to 'details' on http/response
  • update twilio, pyotp, minor fixeds
  • move code to error_handlers, middlewares and server files reorganize error handlers (app/error_handlers.py )
  • fully rework, now this data live in app/server (main.py) 🔥 💣
  • update project url (https://cutt.ly/callisto) 😄
  • docs: changes to 2023.10.03
  • docs: a tag is added to an older version
  • docs: corrections in the documentation of many modules to mention here 😄

Fixed

  • enum to AuthRoles, remove unused role
  • change default role to 🔥 GOTU 🔥 (tools/templates/json_over_post/)
  • added many try/Exception on utils/otp 🔥
  • added missing crud operations with mongoDB, rename macro names
  • added id to SearchDto
  • field name (json_over_post/model_.py)
  • added more fields on search, added fix(noqa: A003) on id fields, comments examples
  • error messages, added get_by_id method
  • and change 'id' field, now use 'item_id' and avoid ruff's A002 issue
  • A003 (using noqa) ( app/common/types.py)
  • added gen_restful function bug fixeds (app/common/types.py)
  • topic (classifiers) (pyproject.toml)
  • added exceptions, fix param position, fix typing and indent (app/core/register.py)
  • gen_random_number (app/utils/commons.py )
  • docs on utils security and date_utils
  • B026 issue (ruff) on include_router
  • relative paths, move commands
  • 💣 🔥 fix types, and docs 😄
  • in progress fix packages, updated req file (pyproject.toml)
  • modules to doc, fix reference (mkdocs)
  • home module route (now using version) (app/modules/home/views/home_view.py)
  • indent

Removed

  • unused prints and logs
  • old code, fix indent, validations and more
  • 💣 APP_VERSION from app/config/app_settings
  • fix response on home
  • 🧑‍🔬 tests folder from black
  • test for / and /api/home 🧑‍🔬 remove "/api" from base_url
  • (at time) some code 🐛 (sqlalchemy/sessions/)

2023.10.03

🚨 notice: prepare to next big release 😄

Added

  • big upgrade on docs nav 🔥 🎉 😄
  • configuration for test (using pytest and httpx) 🆕
  • referece for Callisto's source code 🆕 📖 🎉
  • 🐮 too much documentation added and/or updated 🎉 📖
  • added media_type to ORJSONResponse 🐛
  • update docs to 2023-07-18 📖
  • changes to 2023.03.26
  • changes to 2022.12.07
  • [in progress] and after a long, long time... the list of changes...
  • many references, docs faq, more fancy docs 😄
  • new folder for test 🆕 👨‍🔬 🕹
  • logo and favicon, thanks to https://icons8.com/icon/61304/european-dragon
  • mkdocs main config
  • plugins to mkdocs 😄 🎉
  • added script to make docs
  • install dependencies with poetry, fix port, fix use env (tools/gen_pages.py) 🆕
  • polyline method
  • filter to get_all, fix get_by
  • options for pytest (ini_options)
  • pytest = "^7.4.0"
  • httpx = "^0.24.1"
  • new functions: add_secret_version and remove_secret 🆕
  • method multi_save flatten_list 🆕

Changed

  • 🚧 🚫 the requirements-dev.txt file is updated, this file is kept for compatibility and during the transition, it will be removed in future versions. 🚧 🚫
  • now a warning is given if launched from a script (main.py)
  • added examples and some warnings
  • documentation style a bit more Google Docstring and Mkdocs compliant
  • rename validate_access_token to validate_bearer_token (middlewares/auth.py)
  • omit "qa" for geospatial modules files
  • ApiBaseException move from common exceptions
  • rename method mongo_id to generate_mongo_id 🔥
  • move STDR_UTC_HOUR to app.config.app_settings
  • 📖 update docs

Fixed

  • better request logs before request and after request (main.py)
  • griffe warnings (mkdocs) now 'watch' using outisde plugins
  • B026 issue (ruff) 🧐
  • better indent and typing 😄
  • order some exceptions, added more exceptions, return dict in Exception (http/http_exceptions.py)
  • set time_out to 60 seconds, retries to 3 (http/base_api.py)
  • customEncoder renamed to 'custom_encoder', 'try/except' added
  • get_timestamp class decorator removed
  • generate_id return None in case of error
  • in process 💣 🔥 docstrings correction bugs
  • docs on README.md
  • internal error codes
  • cancel_job, validate location
  • docs on 'app.common module' 🎉
  • DeleteMode (MongoModel)
  • rename some task, skip y some files
  • imports, editor config, exclude tests from docker
  • group tests using pytest
  • depends and scripts for docs
  • more docs 😄 as_dict save, get_by_id, get_by
  • responses and messages
  • status on created

Removed

  • if __name__ == "__main__"... will no longer be used to start the backend 🚫
  • Flake8 is removed in favor of Ruff 💣 🆕
  • unused logs
  • 'READY' mark added 'TO FIX' remove in some methods
  • unused files
  • messages on error, remove unused fields
  • returns none if the record was removed, otherwise, a message with error info
  • tag inside encrypted data (encrypt_message)
  • unused example on crud
  • unused modules, fix doc, added

2023.07.18 🚀

Added

  • some marks (TO FIX/TO CHECK) in some methods
  • setuptools = "^68.0.0"
  • added except HTTPException (http/response.py)
  • docs dependencies groups (pyproject.toml)

Changed

  • change to logger.exception in some methods
  • rename HEADER_API_KEY to 'AUTH_HEADER' (middlewares/auth.py)
  • messages (http/status.py)
  • in methods/functions docs (mongoDB/connect.py and mongo_model.py) 📖

Fixed

  • added None to response json (http/response.py)
  • 'async' keyword to some functions/methods 😄

Removed

  • check_session_role (mongoDB/sessions/session_handler.py)
  • many unused imports 🤫
  • many unused examples
  • many unused prints and logs

2023.06.14 🚀

Added

  • added module for OTP code TOTP/HOTP 🆕
  • added base_model file
  • get_timestamp, added new functions 🆕
  • module for cache using pymemcache 🆕
  • module for cache using diskcache 🆕
  • method 'form_data' to send form-data fields 🆕
  • functions get_secret_info, create_secret and list_secrets 🆕
  • module for BigQuery Jobs 🆕
  • config file 🆕
  • [progress] for Google Cloud BigQuery 🆕
  • twilio sms module 🎉 🆕
  • function object_to_xml 🆕
  • class ApiBaseException, This class implements methods for custom error handling, of urllib3
  • class GraphApi to handle GraphQL request 🆕
  • class XMLApi for XML request and responses (like soap) 🆕
  • method 'basic_auth' 🆕 added more docs (web refs)
  • methods _get_base_uri, and set_headers fix param (now is 'url')
  • added BQ_PROJECT_ID env var
  • Api module for handle urllib3 request 🆕
  • template for baseModel(Pydantic) 🆕
  • method mongo_id, fix generate_uuid
  • method 'geo_within_polygon' to search in a polygon (and examples)
  • methods geo_within_bbox and geo_within_sphere 🎉 🆕 (and examples)
  • [in progress] radial_query from_geopoint and create_index method (and examples)
  • method 'customEncoder' to handle validations over orjson
  • method get_all_collections to retrieve all colls from db
  • method 'delete_table'
  • methods 'get_schema' and 'to_geopoint' (some examples)
  • custom example using MongoModel and raw_query (roles)
  • method 'raw_query', allow raw queries on custom collection
  • 'view' from APIRouter (roles example)
  • module roles(examples)
  • added SIM rules (flake8-simplify)
  • added more rules to ruff, thanks to jerry-git
  • added ruff (and their rules), ruff exec script, some descriptions

Changed

  • better error response on validation_exception_handler
  • support to mongo restful and api_router
  • added mongo api_router folder for advanced crud request
  • rename to mongo restful folder
  • added cache libraries
  • dded TODO to encrypt_message and decrypt_message functions
  • validate conn param and raise RuntimeError [to revision] comment typechecked on 'tablename' prop (MongoModel)
  • move license info to COPYING, LGPL.txt and README.md files
  • from_geopoint accept 'as_list' param to convert results
  • rename from 'radial_query' to 'geo_nearest_query'
  • change old imports, names, now using view vars, (tools/templates/mongo/view_.tpl)
  • move ruff config to other file
  • validate errors check using '@typechecked'
  • test get_by and get_by_id
  • validate params on get_all, get_prefix, tablename(property)
  • get_by method, now using dict on filter param
  • rename, 'delete' to 'remove', 'raw_query' to 'custom_query'
  • better docs
  • refactor code

Fixed

  • the result type of 'collection.insert_one' is changed due to the '_id' field being auto generated
  • base64 method added url info
  • crud locales and roles examples
  • and added missing docs - rename bad file name in app.contrib 😄 - rename project name
  • docs common.exceptions' fix timeout
  • build_response fix timeout on get
  • paths and names (tools/templates/mongo/urls.tpl)
  • isinstance on Cursor
  • black 'required-version'
  • docs on to_geopoint
  • get_by method, now using dict on filter param, and reorganize params
  • build_response, get_by_id and get_by methods (change params order)
  • task for isort
  • token length(middlewares/auth.py)
  • format and lint using (ruff's attack) 😄

Removed

  • remove unused imports, remove result in delete_table
  • 'roles_view' remove old examples

2023.03.26 🚀

Added

  • cryptography module and others (started)
  • method as_dict
  • init_databases, stop_databases, startup_event and shutdown_event
  • mongoDB_get_connect and mongoDB_close
  • implements DefaultTraceback
  • define default endpoint
  • function 'is_iterable'
  • DefaultException class
  • twilio, otp, security (started)
  • enums
  • new messages for permissions
  • HasRoles, HasPerms, check_session_role as Depends (DI)
  • locales modules (examples)
  • docker support
  • poetry-exec-plugin

Changed

  • rework mongoDB_connect
  • now ValidateSchema is a Depends(DI)
  • gcp logger, now is cloud_logging (gcp)
  • upgrade Poetry to 1.4.x
  • update FastAPI, black, pydantic, starlette, uvicorn now using dev groups now using extras (optional) groups
  • Script entry is replaced by poetry-exec-plugin
  • added check to TODO list (README)

Fixed

  • DefaultStatus, DefaultRoles
  • E402 errors and other more from flake8
  • fix license year 🎉
  • build_response
  • many docs

Removed

  • hardcoded connection, now using _init
  • classmethod decorator (mongoDB/mongo_model.py)

2022.12.07

Added

  • Home example using fastapi_restful
  • get_uuid function
  • method save_and_set
  • generate_id method, added exclude_fields to raw_query method

Changed

  • validate _min_properties in ExtrictBaseModel

Fixed

  • fix '_id' field, now is validated if the user, send custom id

2022.11.30

Added

  • typeguard for strict type check
  • some methods for MongoDB Model
  • added get_timestamp function
  • common types
  • SQLAlchemy check_session_role
  • many HTTP status
  • flake8 config
  • questionary
  • validate_schema decorator, using draft 2020-12
  • middleware require_auth_session
  • AuthRoles
  • config for mongo cluster
  • loguru, jsonschema, mypy and extras
  • commons definitions for data bases and sessions for Firestore
  • MongoDB database Model
  • GCPLoggingHandler and init_gcp_logger
  • added response function, to generate json response(ORJSONResponse)
  • main configuration file
  • BaseEnum
  • AuthStatus
  • SessionStatus
  • DefaultStatus
  • ResourceModel
  • on_event
  • exception_handler
  • Poetry config file

Fixed

  • fix path, rename or move some modules

2022.11.16

Added

  • license files, editor config files, git ignore files etc...