mirror of
https://github.com/ipnet-mesh/meshcore-hub.git
synced 2026-03-28 17:42:56 +01:00
This commit establishes the complete foundation for the MeshCore Hub project: - Project setup with pyproject.toml (Python 3.11+, all dependencies) - Development tools: black, flake8, mypy, pytest configuration - Pre-commit hooks for code quality - Package structure with all components (interface, collector, api, web) Common package includes: - Pydantic settings for all component configurations - SQLAlchemy models for nodes, messages, advertisements, traces, telemetry - Pydantic schemas for events, API requests/responses, commands - MQTT client utilities with topic builder - Logging configuration Database infrastructure: - Alembic setup with initial migration for all tables - Database manager with session handling CLI entry point: - Click-based CLI with subcommands for all components - Database migration commands (upgrade, downgrade, revision) Tests: - Basic test suite for config and models - pytest fixtures for in-memory database testing
88 lines
2.0 KiB
INI
88 lines
2.0 KiB
INI
# A generic, single database configuration for Alembic.
|
|
|
|
[alembic]
|
|
# path to migration scripts
|
|
script_location = alembic
|
|
|
|
# template used to generate migration file names
|
|
file_template = %%(year)d%%(month).2d%%(day).2d_%%(hour).2d%%(minute).2d_%%(rev)s_%%(slug)s
|
|
|
|
# sys.path path, will be prepended to sys.path if present.
|
|
prepend_sys_path = src
|
|
|
|
# timezone to use when rendering the date within the migration file
|
|
# as well as the filename.
|
|
timezone = UTC
|
|
|
|
# max length of characters to apply to the "slug" field
|
|
truncate_slug_length = 40
|
|
|
|
# set to 'true' to run the environment during the 'revision' command
|
|
revision_environment = false
|
|
|
|
# set to 'true' to allow .pyc and .pyo files without a source .py file
|
|
# to be detected as revisions in the versions/ directory
|
|
sourceless = false
|
|
|
|
# version location specification; This defaults to alembic/versions.
|
|
version_locations = %(here)s/alembic/versions
|
|
|
|
# version path separator
|
|
version_path_separator = os
|
|
|
|
# set to 'true' to search source files recursively
|
|
recursive_version_locations = false
|
|
|
|
# the output encoding used when revision files are written from script.py.mako
|
|
output_encoding = utf-8
|
|
|
|
# Database URL - can be overridden by environment variable
|
|
sqlalchemy.url = sqlite:///./meshcore.db
|
|
|
|
|
|
[post_write_hooks]
|
|
# post_write_hooks defines scripts or Python functions that are run
|
|
# on newly generated revision scripts.
|
|
|
|
# format using "black" - only if black is installed
|
|
hooks = black
|
|
black.type = console_scripts
|
|
black.entrypoint = black
|
|
black.options = -q
|
|
|
|
|
|
# Logging configuration
|
|
[loggers]
|
|
keys = root,sqlalchemy,alembic
|
|
|
|
[handlers]
|
|
keys = console
|
|
|
|
[formatters]
|
|
keys = generic
|
|
|
|
[logger_root]
|
|
level = WARN
|
|
handlers = console
|
|
qualname =
|
|
|
|
[logger_sqlalchemy]
|
|
level = WARN
|
|
handlers =
|
|
qualname = sqlalchemy.engine
|
|
|
|
[logger_alembic]
|
|
level = INFO
|
|
handlers =
|
|
qualname = alembic
|
|
|
|
[handler_console]
|
|
class = StreamHandler
|
|
args = (sys.stderr,)
|
|
level = NOTSET
|
|
formatter = generic
|
|
|
|
[formatter_generic]
|
|
format = %(levelname)-5.5s [%(name)s] %(message)s
|
|
datefmt = %H:%M:%S
|