symbolix/dev/: be-kit-0.13.0.dev0 metadata and description

Simple index

Python Services Development Kit

author_email "R. Dimas Bagas Herlambang" <bagasbgy@gmail.com>
classifiers
  • Programming Language :: Python :: 3
  • Operating System :: OS Independent
description_content_type text/markdown
project_urls
  • Homepage, https://github.com/Deepsymbolics-Indonesia/symbolix-be-py_kit
  • Issues, https://github.com/Deepsymbolics-Indonesia/symbolix-be-py_kit/issues
requires_dist
  • asgiref==3.9.1
  • loguru==0.7.2
  • python-dateutil==2.9.0.post0
  • be_kit[alicloud,api,aws,azure,cache,crypto,data,db,dev,email,gcp,img,pdf,phone,sftp,task,validation]; extra == "all"
  • oss2>=2.18.0; extra == "alicloud"
  • be_kit[validation]; extra == "api"
  • fastapi==0.116.1; extra == "api"
  • gunicorn==22.0.0; extra == "api"
  • python-multipart==0.0.20; extra == "api"
  • uvicorn[standard]==0.30.1; extra == "api"
  • boto3==1.35.0; extra == "aws"
  • mypy-boto3==1.35.0; extra == "aws"
  • boto3-stubs-lite[s3]==1.35.0; extra == "aws"
  • azure-storage-blob>=12.19.0; extra == "azure"
  • redis==5.2.1; extra == "cache"
  • hiredis==3.1.0; extra == "cache"
  • bcrypt==4.1.3; extra == "crypto"
  • cryptography==42.0.7; extra == "crypto"
  • aiomysql==0.2.0; extra == "db"
  • alembic==1.13.1; extra == "db"
  • pymysql==1.1.1; extra == "db"
  • sqlalchemy[asyncio]==2.0.30; extra == "db"
  • black>=25.1.0; extra == "dev"
  • build>=1.2.2.post1; extra == "dev"
  • bump2version>=1.0.1; extra == "dev"
  • coverage==7.5.3; extra == "dev"
  • Faker==25.3.0; extra == "dev"
  • factory_boy==3.3.0; extra == "dev"
  • gevent==24.2.1; extra == "dev"
  • httpx==0.27.2; extra == "dev"
  • pyinstaller==6.9.0; extra == "dev"
  • pytest==8.2.1; extra == "dev"
  • pytest-asyncio==0.23.7; extra == "dev"
  • pytest-mock==3.14.0; extra == "dev"
  • pylint==3.3.3; extra == "dev"
  • twine>=6.1.0; extra == "dev"
  • numpy==2.2.0; extra == "data"
  • pandas==2.2.3; extra == "data"
  • openpyxl==3.1.5; extra == "data"
  • email-validator==2.2.0; extra == "email"
  • Jinja2==3.1.4; extra == "email"
  • requests==2.32.3; extra == "email"
  • google-cloud-storage>=2.14.0; extra == "gcp"
  • Pillow==11.0.0; extra == "img"
  • fpdf==1.7.2; extra == "pdf"
  • phonenumbers==8.13.47; extra == "phone"
  • pydantic-extra-types==2.9.0; extra == "phone"
  • asyncssh==2.21.0; extra == "sftp"
  • celery==5.4.0; extra == "task"
  • be_kit[cache,db]; extra == "task"
  • pydantic==2.7.1; extra == "validation"
  • pydantic-settings==2.2.1; extra == "validation"
requires_python >=3.12.3
File Tox results History
be_kit-0.13.0.dev0-py3-none-any.whl
Size
28 KB
Type
Python Wheel
Python
3
  • Replaced 2 time(s)
  • Uploaded to symbolix/dev by symbolix 2026-01-02 03:07:03
be_kit-0.13.0.dev0.tar.gz
Size
26 KB
Type
Source
  • Replaced 2 time(s)
  • Uploaded to symbolix/dev by symbolix 2026-01-02 03:07:01

symbolix-be-py_kit

Python Services Development Kit

Conda Setup

To set up your development environment, create a new Conda environment with Python 3.12.3:

conda create --prefix .venv/ python=3.12.3

After creating the environment, make sure to activate it before proceeding with the next steps:

conda activate .venv/

Development Environment

Port Range

Shared Docker Network

Create a shared Docker network to allow containers to communicate:

docker network create symbolix

Shared Docker Volume

Create a shared Docker volume for persistent log storage:

docker volume create symbolix-log

Containerized Database

Build and run the MySQL database container:

docker build \
    -f .docker/database/Dockerfile \
    --no-cache \
    --rm -t symbolix-mysql:latest \
    .docker/database
docker run --name symbolix-mysql \
    -p 55590:3306 \
    --network=symbolix \
    --env-file .docker/database/.env \
    --restart=always \
    --detach \
    symbolix-mysql:latest

Initialize or reset the database as needed:

docker exec -it symbolix-mysql mysql -h localhost -u root -p -e "DROP DATABASE IF EXISTS symbolix;"
docker exec -it symbolix-mysql mysql -h localhost -u root -p -e "CREATE DATABASE symbolix;"

Containerized Redis

Run a Redis container for caching and message brokering:

docker run --name symbolix-redis \
    -p 55582:6379 \
    --network=symbolix \
    --restart=always \
    --detach \
    redis:7.4.1-alpine

You can flush all Redis data or check its status:

docker exec -it symbolix-redis redis-cli -n 0 FLUSHDB

Containerized SMTP

Run a local SMTP server for email testing:

docker run --name symbolix-smtp \
    -p 55583:1025 \
    -p 55584:1080 \
    --network=symbolix \
    --restart=always \
    --detach \
    dockage/mailcatcher:latest

Access the MailCatcher web UI at http://43.218.247.170:55584.

Containerized SFTP

Run a local SFTP server for file transfer:

docker run --name symbolix-sftp \
    -p 55585:22 \
    --network=symbolix \
    --restart=always \
    -d atmoz/sftp \
    'admin:Secret123!:::symbolix'

This command creates an SFTP container with full access for the admin user (password: Secret123!).

Install/Upgrade Development Kit

To install all dependencies and the kit in editable mode, run:

pip install -e .[all] --config-settings editable_mode=strict

This allows you to make changes to the codebase and have them reflected immediately without reinstalling.

Git Management

Precommit

To ensure code quality and consistency, run the pre-commit hooks before pushing your changes. This will automatically check and format your code according to the project's standards:

be-precommit

If any issues are found, fix them and re-run the command until all checks pass.

Commit Message

Follow the Conventional Commits specification for your commit messages. This standard helps automate versioning and changelog generation.

A conventional commit message consists of a type, an optional scope, and a concise description:

<type>[optional scope]: <description>

Types include:

Examples:

feat(auth): add JWT authentication
fix(database): resolve connection leak
docs(readme): update setup instructions

Refer to the Conventional Commits documentation for more details and examples.

Tagging a Release

Release and dev package creation is managed by CI/CD:

Typical workflow:

  1. Work on a feature or fix in a separate branch.
  2. Merge your branch into develop, bump the version manually, and push.
  3. When ready for release, merge develop into main. CI will handle the final version bump and package publishing.

Manually Publish a Package Release

To manually publish a new package release, ensure the following environment variables are set with the appropriate values in your .env file:

BE_CI_PACKAGE_REGISTRY=http://example.com
BE_CI_AUTH_USERNAME=string
BE_CI_AUTH_TOKEN=secret

These variables configure the package registry URL and authentication credentials required for publishing.

Next, build and push the package to the registry using:

be-publish

Debug Commands

These commands help monitor and test your services during development.