Skip to main content

A Python package for parsing configuration from various sources such as files, environment variables, and command-line arguments.

Project description

fejao-config-parser

This is a package for setting up the variables that you need to you on your project from a list of dictionaries.

I was tired of everytime that I needed to set a project that should have input/variables to be set from a configuration file, environment variables or from terminal to write this code again and again. Then the unit-test , lint, pep. And so on and on...

I hope that you also find this tiredsome work not needed anymore for using this package.

To Do

This package at the moment it's not finished yet, just trying to publish on pypi.org at the moment

  • [] Finish README_PACKAGE.md file (The one to be publish on pypi.org)
  • [] Add lint tests
  • [] Add pep tests
  • [] Add the uni-test to pypi
  • [] Document the code (for generating the mkdocs)
  • [] Add the package code to git
  • [] Add CI-CD for testing + building + publishing
  • [] Something else that for sure I forgot to put on this list

Installing

For using this package you need to install it with:

pip install fejao-config-parser

You can import it to your code with:

from fejao-config-parser import my_config

Configuration

Structure

You need to set a list of dictionaries such as:

example_vaviables = [
  {
    <VARIABLE_1_CONFIGURATION>
  },
  {
    <VARIABLE_2_CONFIGURATION>
  },
  ...
  ...
  ...
  {
    <VARIABLE_N_CONFIGURATION>
  }
]

Variable dictionary entry

Dictionary configuration keys for parsing the variable

  • name
    • The name of the variable that will be accessed at your project
    • This key is required to be set.
  • type
    • The type of this variable to be set, it will type-cast it as the type set here.
    • This key is required to be set.
    • Possible type of variables:
      • string
      • bool
      • int
      • float
      • list
      • dict
  • default
    • The default value of the variable to be set if any other methods were parsed.
    • This key is required to be set.
  • env_name
    • The name of the environment variable that should be read.
    • This key is NOT required to be set.
  • terminal_help
    • The name of the environment variable that should be read.
    • This key is NOT required to be set.
  • terminal_name
    • The variable name to be read from terminal. Example: example_string, it can be parsed at the terminal like --example_string <VAR_VALUE>
    • This key is NOT required to be set.
  • terminal_name_short
    • The variable short name to be read from terminal. Example: es, it can be parsed at the terminal like -es <VAR_VALUE>
    • This key is NOT required to be set.

Example

example_variables = [
    {
      "name": "example_string",
      "type": "string",
      "default": "default_string_value",
      "env_name": "EXAMPLE_STRING",
      "terminal_help": "Example of a string terminal variable.",
      "terminal_name": "example_string",
      "terminal_name_short": "es",
    },
    {
      "name": "example_bool",
      "type": "bool",
      "default": False,
      "terminal_help": "Example of a boolean terminal variable.",
      "terminal_name": "example_bool",
      "terminal_name_short": "eb",
    },
    {
      "name": "example_int",
      "type": "int",
      "default": 42,
      "env_name": "EXAMPLE_INT",
    },
    {
      "name": "example_float",
      "type": "float",
      "default": 4.2,
    },
    {
      "name": "example_list",
      "type": "list",
      "default": ["1", "2", "3"],
      "env_name": "EXAMPLE_LIST",
      "terminal_help": "Example of a list terminal variable.",
      "terminal_name": "example_list",
      "terminal_name_short": "el",
    },
    {
      "name": "example_dictionary",
      "type": "dict",
      "default": {"key1": "value1", "key2": "value2"},
      "env_name": "EXAMPLE_DICTIONARY",
      "terminal_help": "Example of a dictionary terminal variable.",
      "terminal_name": "example_dictionary",
      "terminal_name_short": "ed",
    },
]

Usage

For calling the my_config function the possible keys are:

  • config
    • The list of dictionaries to be set as variables.
    • This key is required to be set.
  • config_file
    • The path of the configuration file to be used for reading the variables values.
    • This key is NOT required to be set.
    • Type of files that can be parsed:
      • yaml
      • json
      • toml
      • ini
        • Values should be set at the [default] section
        • Still don't know how till this date people keep using ini files.
  • description
    • Description of you project when running on terminal with the '--help' output.
    • This key is NOT required to be set.
  • debug
    • Boolean of setting up the output in terminal from the variables that were set using the package.
    • This key is NOT required to be set.

Example

config = my_config(
  config=example_variables,
  config_file="/tmp/foo.yaml",
  description="My project is AMAZING and not done with vibe-coding",
  debug=True
)

Accessing the variables

For accessing the variables is easy as:

example_variables = [
    {
      "name": "example_string",
      "type": "string",
      "default": "default_string_value",
      "env_name": "EXAMPLE_STRING",
    }
]
config = my_config(config=example_variables)

print(f"example_string: {config.example_string}")
---> default_string_value

Links

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

fejao_config_parser-0.0.3.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

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

fejao_config_parser-0.0.3-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file fejao_config_parser-0.0.3.tar.gz.

File metadata

  • Download URL: fejao_config_parser-0.0.3.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for fejao_config_parser-0.0.3.tar.gz
Algorithm Hash digest
SHA256 5ba5ba381dfe06b9f9d669b1a93c30551fa6f9d0ca61f335216fa23282267d20
MD5 d1d75430a96e6e1b8ac53ce237dac729
BLAKE2b-256 d6bf5f8a164b3c8633685f2179c3a678615ef6f73babe5617d19d2cab03e219b

See more details on using hashes here.

File details

Details for the file fejao_config_parser-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for fejao_config_parser-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 1bacb0e5865fa069f1fbd59a2e34d793e533961ddd23a4192f24d0ed3d31b9af
MD5 aad03cdb9a03aa036b715ff3891152cc
BLAKE2b-256 87730e15e3f1dee2e2e1e2d68a47f42b8673f19b3f5f34f1a067f409dfe09b4f

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