Skip to main content

Python Core Package.

Project description

probable-fiesta

Python application Upload Python Package Production wakatime

There's probably a fiesta somewhere.

Python Package Core

A Python package core for building a Python package.

Installation

Installation using pip

pip install probable-fiesta

Installation with automatic build and install

It is recommended to setup a virtual environment.

To install locally with automatic build and install, run the following command in the root directory of the project.

git clone https://github.com/sergio-munoz/probable-fiesta.git
cd probable-fiesta
chmod +x scripts/build_install.sh
./scripts/build_install.sh

Installation with manual build and install

Setup a new virtual environment and install packages in requirements.txt.

python -m venv build_venv
source build_venv/bin/activate
(build_venv) $ pip install -r build_requirements.txt
(build_venv) $ hatch build
(build_venv) $ pip install dist/probable_fiesta-${VERSION}.tar.gz

Installation in Jupyter Notebook

To install the into the Jupyter Notebook kernel:

import sys
!{sys.executable} -m pip install -U --no-deps probable-fiesta

Usage

probable_fiesta --help

Build and Run

Build and Run command

Build and a command. Pass flags, for example --version:

./scripts/build_install.sh & probable_fiesta --version

Tests

Automatic

./scripts/test_coverage.sh

Developer Reference

This package contains various modules that can be used to build a Python package.

Modules

  • probable_fiesta: Main module.
  • probable_fiesta.app: Main application.
  • probable_fiesta.app.main: Main application.
  • probable_fiesta.cli: Command line interface.
  • probable_fiesta.command: Internal command implementation.
  • probable_fiesta.config: Configuration.
  • probable_fiesta.logger: Logging.

Create Application Example

Create a new application using the probable_fiesta package.

  • Create a main module, for example main.py:
# Path: main.py
from probable_fiesta.config.variables import DotEnvDef
from probable_fiesta.config.builder.config_builder import ConfigBuilder
from probable_fiesta.logger.builder.logger_factory import LoggerFactory
from probable_fiesta.app.builder.context_factory import ContextFactory as CF
from probable_fiesta.app.builder.app_builder import AppBuilder

# Import or add your business logic here
# For example the next get version functions:
def get_version_echo(version):
    return version
def get_version():
    return "v0"

# Create custom dotenv definition from DotEnvDef
class MyDotEnvDef(DotEnvDef):
    def __init__(self):
        super().__init__()
        self.version_echo = "v0" # This will be overwritten by .env file

    # make the class iterable
    def __iter__(self):
        for attr, value in self.__dict__.items():
            yield value  # only yield the values

# Create main function
def main(args):
    # Create config, will be replaced by a Factory in the future
    cB = ConfigBuilder()
    config = (
        cB.logger.set_logger(
            LoggerFactory.new_logger_get_logger("main_app", "INFO")
        )
        .dotenv.load_dotenv()  # Load .env file if exists
        .set_vars(MyDotEnvDef())
        .build()
    )

    # Create main app
    main_app = (
        aB.name.set_name("main_app")
        .arguments.set_arguments(args)
        # Add your arguments
        .args_parser.add_argument(
            "--version", action="store_true", help="show version builder"
        )
        # Add your commands that do not require parsed arguments
        .context.add_context(
            CF.new_context_one_new_command("version", "version", get_version, None)
        )
        # Define which are executable
        .set_executables(["version"])
        .config.set_config(config)
        .validate()
        .build()
    )

    # Create commands that require parsed arguments
    c3 = CF.new_context_one_new_command(
        "--version-echo",
        "version_echo",
        get_version_echo,
        main_app.get_arg("version_echo"),  # CLI overrides .env
    )
    # Add commands to main app
    main_app.context.add_context(c3)

    # Check build errors
    if main_app.args_parser.error:
        print(main_app.args_parser.error)
        return

    # Run main app
    run_context = main_app.run()
    history = run_context.get_run_history()
    print(history)
    return history

This allows you to call the main function from the command line:

python main.py --version

Project details


Download files

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

Source Distribution

probable_fiesta-0.2.5.tar.gz (101.9 kB view details)

Uploaded Source

Built Distribution

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

probable_fiesta-0.2.5-py3-none-any.whl (28.1 kB view details)

Uploaded Python 3

File details

Details for the file probable_fiesta-0.2.5.tar.gz.

File metadata

  • Download URL: probable_fiesta-0.2.5.tar.gz
  • Upload date:
  • Size: 101.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.10

File hashes

Hashes for probable_fiesta-0.2.5.tar.gz
Algorithm Hash digest
SHA256 c8e458ac94f745696fcdfca045f8f4344cd4409d2d119e69cc36e08498cc5e35
MD5 bd47ff6c1d70642b6aa573e9f0ea62be
BLAKE2b-256 8b32aa86978e777c3d6a8412bf031cf204d566912ec69d68ce8616398def236e

See more details on using hashes here.

File details

Details for the file probable_fiesta-0.2.5-py3-none-any.whl.

File metadata

File hashes

Hashes for probable_fiesta-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 bff8ecad9f7e712e75e0503d389c8311b46f402d6cc52eab85010902a2f4fa9e
MD5 2c239abf71e9ead6bb8fe8f2244d9253
BLAKE2b-256 ec13f1a9ccf443d942a902abb9c125e63136263a8c7759281f638fa10b5840e9

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