navconfig


Namenavconfig JSON
Version 1.7.11 PyPI version JSON
download
home_pagehttps://github.com/phenobarbital/NavConfig
SummaryConfiguration tool for all Navigator Services Tool for accessing Config info from different sources.
upload_time2024-11-11 00:56:31
maintainerNone
docs_urlNone
authorJesus Lara
requires_python>=3.9.13
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Navigator NavConfig #

NavConfig is a configuration tool for getting variables from environment and other sources.
Is used by Navigator Framework, but is possible to use in other applications as well.

NavConfig can load Configuration directives from different sources (can be mixed):

- Environment files (.env)
- pyproject.toml files
- INI files (using configParser)
- TOML/YAML files
- REDIS variables
- Memcached Variables
- Python files (using settings.py)

The main goal of NavConfig is centralize configuration access in a single and
immutable unique point of truth.

NavConfig can be shared across several modules.

## Motivation ##

Any Application requires too many configuration options, some configuration options need to be secrets, credentials, etc, and also, can depend on the environment where the application runs (development, testing, production, etc.).

Instead of creating Python files, we are using python-dotenv + INI files to separate concerns (secrets vs configuration options), NavConfig also supports getting data instead of INI files from YAML or TOML files (for complex types), pyproject.toml files or REDIS variables.

## Installation
```bash
pip install navconfig
```

if you're looking for supporting memcache,redis:

```bash
pip install navconfig[memcache,redis]
```

or adding all features, including logging facility with Logstash Support:

```bash
pip install navconfig[all]
```

## Quickstart ##

First of all, let's create a simple configuration environment.

Creates a directory for an .INI file and the environment (.env) file.

```bash
mkdir {env,etc}
```

put a .env file inside of the "env" folder, the first line is the directive to know where the "INI" file lives (even if we can put the . INI file outside of the current dir).

the directory tree is very simple:

```text
|- myapp/
|  |- __init__.py
|  |- pyproject.toml
|  |- env/
|  |  |- .env
|  |  |- dev/
|  |  |- .env
|  |  |- prod/
|  |  |- .env
|  |- etc/
|  |  |- myconfig.ini
|  | ...
```

```text
# file: .env
CONFIG_FILE=etc/myconfig.ini # CONFIG FILE reference to INI location.
APP_NAME=My App
```

Navconfig exposes a "config" object to retrieve your environment variables inside your application.

```python
from navconfig import config

APP_NAME = config.get('APP_NAME')
# the result is "My App".

```

but also you can use config as a object:

```python
from navconfig import config

APP_NAME = config.APP_NAME
# the result is "My App".

```

## Retrieving values ##

Once an instance of `NavConfig` has been installed, values can be retrieved through:

```python
>>> config.get("APP_NAME")
'My App'
```

there are options available for retrieving values as strings (`get`), integer (`getint()`), booleans (`getboolean()`), but also lists (`getlist()`) and dictionaries (`getdict()`).

An optional second argument can be provided to any `get*` which will be returned as default if
the given config key isn't found:

```python
>>> config.get("APP_NAME", "My App")
'My App'
```

## Configuration directories ##

By default, `NavConfig` will look for configuration files the base path of project, based on the file type:

 * .env files will be searched on a `env/` directory.
 * .yml/.toml files will be searched on `env/` directory.
 * pyproject.toml file will be searched on root of project.
 * .ini files will be searched on `etc/` directory.

## Working with Environments ##

NavConfig can load all environment variables (and the .INI files associated within the .env file) from different directories,
every directory works as a new Environment and you can split your configuration for different environments, like this:

```
env/
.
├── dev
|  |- .env
├── prod
|  |- .env
├── staging
|  |- .env
└── experimental
|  |- .env
```

Then, you can load your application using the "ENV" environment variable:

```bash
ENV=dev python app.py
```


## Configure Logging ##

NavConfig has owns logging facility, if you load logging_config from Navconfig, you will get
a logging configuration using the Python dictConfig format.

also, if you put an environment variable called "logstash_enabled = True", there is a ready to use Logging facility using Logstash.

```python
import logging
from navconfig.logging import (
    logdir,
    loglevel,
    logging_config
)
from logging.config import dictConfig
dictConfig(logging_config)
```

To use just the logger as expected with logging.getLogger(), e.g.

```python
logger = logging.getLogger('MY_APP_NAME')
logger.info('Hello World')
```
By default, the current logging configuration make echo to the standard output:

```bash
[INFO] 2022-03-11 19:31:39,408 navigator: Hello World
```
## Custom Settings ##

with Navconfig, users can create a python module called "settings.py" on package "settings" to create new configuration options and fine-tune their configuration.

```text
|- myapp/
|  |- settings/
|  |- __init__.py
|  |- settings.py
```

on "settings.py", we can create new variables using python code:

```python
from navconfig import config, DEBUG

print('::: LOADING SETTINGS ::: ')

# we are in local aiohttp development?
LOCAL_DEVELOPMENT = (DEBUG is True and sys.argv[0] == 'run.py')
SEND_NOTIFICATIONS = config.get('SEND_NOTIFICATIONS', fallback=True)
```

And those variables are reachable using "navconfig.conf" module:

```python
from navconfig.conf import LOCAL_DEVELOPMENT

if LOCAL_DEVELOPMENT is True:
    print('We are in a Local instance.')

```

## Dependencies ##

 * Python >= 3.9
 * ConfigParser
 * Python-Dotenv
 * pytomlpp
 * PyYAML
 * redis
 * pylibmc

### Contribution guidelines ###

Please have a look at the Contribution Guide

* Writing tests
* Code review
* Other guidelines

### Who do I talk to? ###

* Repo owner or admin
* Other community or team contact

### License ###

NavConfig is released under MIT license.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/phenobarbital/NavConfig",
    "name": "navconfig",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9.13",
    "maintainer_email": null,
    "keywords": null,
    "author": "Jesus Lara",
    "author_email": "jesuslara@phenobarbital.info",
    "download_url": null,
    "platform": null,
    "description": "# Navigator NavConfig #\n\nNavConfig is a configuration tool for getting variables from environment and other sources.\nIs used by Navigator Framework, but is possible to use in other applications as well.\n\nNavConfig can load Configuration directives from different sources (can be mixed):\n\n- Environment files (.env)\n- pyproject.toml files\n- INI files (using configParser)\n- TOML/YAML files\n- REDIS variables\n- Memcached Variables\n- Python files (using settings.py)\n\nThe main goal of NavConfig is centralize configuration access in a single and\nimmutable unique point of truth.\n\nNavConfig can be shared across several modules.\n\n## Motivation ##\n\nAny Application requires too many configuration options, some configuration options need to be secrets, credentials, etc, and also, can depend on the environment where the application runs (development, testing, production, etc.).\n\nInstead of creating Python files, we are using python-dotenv + INI files to separate concerns (secrets vs configuration options), NavConfig also supports getting data instead of INI files from YAML or TOML files (for complex types), pyproject.toml files or REDIS variables.\n\n## Installation\n```bash\npip install navconfig\n```\n\nif you're looking for supporting memcache,redis:\n\n```bash\npip install navconfig[memcache,redis]\n```\n\nor adding all features, including logging facility with Logstash Support:\n\n```bash\npip install navconfig[all]\n```\n\n## Quickstart ##\n\nFirst of all, let's create a simple configuration environment.\n\nCreates a directory for an .INI file and the environment (.env) file.\n\n```bash\nmkdir {env,etc}\n```\n\nput a .env file inside of the \"env\" folder, the first line is the directive to know where the \"INI\" file lives (even if we can put the . INI file outside of the current dir).\n\nthe directory tree is very simple:\n\n```text\n|- myapp/\n|  |- __init__.py\n|  |- pyproject.toml\n|  |- env/\n|  |  |- .env\n|  |  |- dev/\n|  |  |- .env\n|  |  |- prod/\n|  |  |- .env\n|  |- etc/\n|  |  |- myconfig.ini\n|  | ...\n```\n\n```text\n# file: .env\nCONFIG_FILE=etc/myconfig.ini # CONFIG FILE reference to INI location.\nAPP_NAME=My App\n```\n\nNavconfig exposes a \"config\" object to retrieve your environment variables inside your application.\n\n```python\nfrom navconfig import config\n\nAPP_NAME = config.get('APP_NAME')\n# the result is \"My App\".\n\n```\n\nbut also you can use config as a object:\n\n```python\nfrom navconfig import config\n\nAPP_NAME = config.APP_NAME\n# the result is \"My App\".\n\n```\n\n## Retrieving values ##\n\nOnce an instance of `NavConfig` has been installed, values can be retrieved through:\n\n```python\n>>> config.get(\"APP_NAME\")\n'My App'\n```\n\nthere are options available for retrieving values as strings (`get`), integer (`getint()`), booleans (`getboolean()`), but also lists (`getlist()`) and dictionaries (`getdict()`).\n\nAn optional second argument can be provided to any `get*` which will be returned as default if\nthe given config key isn't found:\n\n```python\n>>> config.get(\"APP_NAME\", \"My App\")\n'My App'\n```\n\n## Configuration directories ##\n\nBy default, `NavConfig` will look for configuration files the base path of project, based on the file type:\n\n * .env files will be searched on a `env/` directory.\n * .yml/.toml files will be searched on `env/` directory.\n * pyproject.toml file will be searched on root of project.\n * .ini files will be searched on `etc/` directory.\n\n## Working with Environments ##\n\nNavConfig can load all environment variables (and the .INI files associated within the .env file) from different directories,\nevery directory works as a new Environment and you can split your configuration for different environments, like this:\n\n```\nenv/\n.\n\u251c\u2500\u2500 dev\n|  |- .env\n\u251c\u2500\u2500 prod\n|  |- .env\n\u251c\u2500\u2500 staging\n|  |- .env\n\u2514\u2500\u2500 experimental\n|  |- .env\n```\n\nThen, you can load your application using the \"ENV\" environment variable:\n\n```bash\nENV=dev python app.py\n```\n\n\n## Configure Logging ##\n\nNavConfig has owns logging facility, if you load logging_config from Navconfig, you will get\na logging configuration using the Python dictConfig format.\n\nalso, if you put an environment variable called \"logstash_enabled = True\", there is a ready to use Logging facility using Logstash.\n\n```python\nimport logging\nfrom navconfig.logging import (\n    logdir,\n    loglevel,\n    logging_config\n)\nfrom logging.config import dictConfig\ndictConfig(logging_config)\n```\n\nTo use just the logger as expected with logging.getLogger(), e.g.\n\n```python\nlogger = logging.getLogger('MY_APP_NAME')\nlogger.info('Hello World')\n```\nBy default, the current logging configuration make echo to the standard output:\n\n```bash\n[INFO] 2022-03-11 19:31:39,408 navigator: Hello World\n```\n## Custom Settings ##\n\nwith Navconfig, users can create a python module called \"settings.py\" on package \"settings\" to create new configuration options and fine-tune their configuration.\n\n```text\n|- myapp/\n|  |- settings/\n|  |- __init__.py\n|  |- settings.py\n```\n\non \"settings.py\", we can create new variables using python code:\n\n```python\nfrom navconfig import config, DEBUG\n\nprint('::: LOADING SETTINGS ::: ')\n\n# we are in local aiohttp development?\nLOCAL_DEVELOPMENT = (DEBUG is True and sys.argv[0] == 'run.py')\nSEND_NOTIFICATIONS = config.get('SEND_NOTIFICATIONS', fallback=True)\n```\n\nAnd those variables are reachable using \"navconfig.conf\" module:\n\n```python\nfrom navconfig.conf import LOCAL_DEVELOPMENT\n\nif LOCAL_DEVELOPMENT is True:\n    print('We are in a Local instance.')\n\n```\n\n## Dependencies ##\n\n * Python >= 3.9\n * ConfigParser\n * Python-Dotenv\n * pytomlpp\n * PyYAML\n * redis\n * pylibmc\n\n### Contribution guidelines ###\n\nPlease have a look at the Contribution Guide\n\n* Writing tests\n* Code review\n* Other guidelines\n\n### Who do I talk to? ###\n\n* Repo owner or admin\n* Other community or team contact\n\n### License ###\n\nNavConfig is released under MIT license.\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Configuration tool for all Navigator Services Tool for accessing Config info from different sources.",
    "version": "1.7.11",
    "project_urls": {
        "Funding": "https://paypal.me/phenobarbital",
        "Homepage": "https://github.com/phenobarbital/NavConfig",
        "Say Thanks!": "https://saythanks.io/to/phenobarbital",
        "Source": "https://github.com/phenobarbital/NavConfig"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "57023cabd26eaa135002d2939ddb226f2bb110ce88df577c1b378f49d4df8e0c",
                "md5": "ce926f3381020ca2f902e489e1fbea4f",
                "sha256": "046e8e26e12e518c2b213088497a8fb2b8e0c0e6d417ea21106057cdd7f1f1ec"
            },
            "downloads": -1,
            "filename": "navconfig-1.7.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ce926f3381020ca2f902e489e1fbea4f",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9.13",
            "size": 1361298,
            "upload_time": "2024-11-11T00:56:31",
            "upload_time_iso_8601": "2024-11-11T00:56:31.020838Z",
            "url": "https://files.pythonhosted.org/packages/57/02/3cabd26eaa135002d2939ddb226f2bb110ce88df577c1b378f49d4df8e0c/navconfig-1.7.11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2163362a171cb4737039b597096e0250e7a90db46939b52f3f0e0ba5e57fc560",
                "md5": "af1196dbf3abd28c78d276bf60a782e1",
                "sha256": "2e6d3ebecc21c28979b83b19c9830252c28d14a5b887c6a4decf096afb60db57"
            },
            "downloads": -1,
            "filename": "navconfig-1.7.11-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "af1196dbf3abd28c78d276bf60a782e1",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9.13",
            "size": 271324,
            "upload_time": "2024-11-11T00:56:38",
            "upload_time_iso_8601": "2024-11-11T00:56:38.740763Z",
            "url": "https://files.pythonhosted.org/packages/21/63/362a171cb4737039b597096e0250e7a90db46939b52f3f0e0ba5e57fc560/navconfig-1.7.11-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "51dbb9533f8790d4ccc3875af4213cac144b1ebef08e680feb1757d19551d738",
                "md5": "7412449e9432ed88953ee3d3081851ef",
                "sha256": "cec913ac74fdfc6ab88360d563b6e50c3ce4ae3aeea012e2acea77c13ae9701c"
            },
            "downloads": -1,
            "filename": "navconfig-1.7.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7412449e9432ed88953ee3d3081851ef",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9.13",
            "size": 1455927,
            "upload_time": "2024-11-11T00:56:33",
            "upload_time_iso_8601": "2024-11-11T00:56:33.180655Z",
            "url": "https://files.pythonhosted.org/packages/51/db/b9533f8790d4ccc3875af4213cac144b1ebef08e680feb1757d19551d738/navconfig-1.7.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "77cbee60dab42be8adbea8cb099062e248d4681d9d54246c24f14c8add509c0b",
                "md5": "4db1708a6f5078d672fd497584069052",
                "sha256": "41d93f4e8d9ed77e6f505d3034e5587999610da6b09a99d0c75558b41455bb33"
            },
            "downloads": -1,
            "filename": "navconfig-1.7.11-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "4db1708a6f5078d672fd497584069052",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9.13",
            "size": 272040,
            "upload_time": "2024-11-11T00:56:40",
            "upload_time_iso_8601": "2024-11-11T00:56:40.430998Z",
            "url": "https://files.pythonhosted.org/packages/77/cb/ee60dab42be8adbea8cb099062e248d4681d9d54246c24f14c8add509c0b/navconfig-1.7.11-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "4b451a1247ebd86b6947cf01997b063cf2fa7bf7a4af0adc7afbaaa980a46f85",
                "md5": "31865f8fe78b467d0ef2b78ab6169aea",
                "sha256": "49aaa8083c066a17e84b42b879348b606e229d7d68bf0122e409028ae23fb690"
            },
            "downloads": -1,
            "filename": "navconfig-1.7.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "31865f8fe78b467d0ef2b78ab6169aea",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9.13",
            "size": 1575147,
            "upload_time": "2024-11-11T00:56:35",
            "upload_time_iso_8601": "2024-11-11T00:56:35.150776Z",
            "url": "https://files.pythonhosted.org/packages/4b/45/1a1247ebd86b6947cf01997b063cf2fa7bf7a4af0adc7afbaaa980a46f85/navconfig-1.7.11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6976f3e0a407441ddf8cbe0b480fd04758f8836223e69406ebb87824762aad99",
                "md5": "9226155213bf7c55ccfb026c0a35fba3",
                "sha256": "d6e0b519418ce4cb50a6902d6ec6215a9ff7aeee01d3101bb750822486f199ad"
            },
            "downloads": -1,
            "filename": "navconfig-1.7.11-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "9226155213bf7c55ccfb026c0a35fba3",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9.13",
            "size": 269969,
            "upload_time": "2024-11-11T00:56:42",
            "upload_time_iso_8601": "2024-11-11T00:56:42.134112Z",
            "url": "https://files.pythonhosted.org/packages/69/76/f3e0a407441ddf8cbe0b480fd04758f8836223e69406ebb87824762aad99/navconfig-1.7.11-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8a4ed177d276172112875562abc04e32aa755a0783ca74bc2f59303971c015ab",
                "md5": "129e82832b6fa7f8c4e9e6b4dadac8fc",
                "sha256": "67bcd68f2c6071cb851d9ea6c4ba66c6029b89ba1b44a517c318a7f2a911b54b"
            },
            "downloads": -1,
            "filename": "navconfig-1.7.11-cp313-cp313-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "129e82832b6fa7f8c4e9e6b4dadac8fc",
            "packagetype": "bdist_wheel",
            "python_version": "cp313",
            "requires_python": ">=3.9.13",
            "size": 266095,
            "upload_time": "2024-11-11T00:56:43",
            "upload_time_iso_8601": "2024-11-11T00:56:43.224218Z",
            "url": "https://files.pythonhosted.org/packages/8a/4e/d177d276172112875562abc04e32aa755a0783ca74bc2f59303971c015ab/navconfig-1.7.11-cp313-cp313-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6e61e3970b0cb8e2653f0c675376cd3ad9ce34fcc0c28dc8a166c9f13d3c2f14",
                "md5": "1af6f6d46c1a2f6c5c0da9b9b24d6e63",
                "sha256": "17b517be38b887a7f8db176d7587a94c7c93045b625aef062092776992917de6"
            },
            "downloads": -1,
            "filename": "navconfig-1.7.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1af6f6d46c1a2f6c5c0da9b9b24d6e63",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9.13",
            "size": 1373185,
            "upload_time": "2024-11-11T00:56:36",
            "upload_time_iso_8601": "2024-11-11T00:56:36.455856Z",
            "url": "https://files.pythonhosted.org/packages/6e/61/e3970b0cb8e2653f0c675376cd3ad9ce34fcc0c28dc8a166c9f13d3c2f14/navconfig-1.7.11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "34342b7466f86664711a64530fa26f82a1ed7757c904036411af2a0657d07a7a",
                "md5": "a344ec5faff3a21634cd317dd56f6c45",
                "sha256": "ed9f66cc34311cd9a8125410fe3f185cbe2a0d60296611d8fbd4138c0dda9f52"
            },
            "downloads": -1,
            "filename": "navconfig-1.7.11-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "a344ec5faff3a21634cd317dd56f6c45",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9.13",
            "size": 273864,
            "upload_time": "2024-11-11T00:56:44",
            "upload_time_iso_8601": "2024-11-11T00:56:44.405508Z",
            "url": "https://files.pythonhosted.org/packages/34/34/2b7466f86664711a64530fa26f82a1ed7757c904036411af2a0657d07a7a/navconfig-1.7.11-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "201b33ced1b9caff3af19980457d56d41d57367b3e158e12c77c51875f14e05e",
                "md5": "f9fc39288c326d0981560a8fb30882ec",
                "sha256": "92a2938c479ba279c4af0ff6777671c73cdaf0a2dc2adffc1e708319c9a847c5"
            },
            "downloads": -1,
            "filename": "navconfig-1.7.11-pp310-pypy310_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "f9fc39288c326d0981560a8fb30882ec",
            "packagetype": "bdist_wheel",
            "python_version": "pp310",
            "requires_python": ">=3.9.13",
            "size": 234223,
            "upload_time": "2024-11-11T00:56:46",
            "upload_time_iso_8601": "2024-11-11T00:56:46.208891Z",
            "url": "https://files.pythonhosted.org/packages/20/1b/33ced1b9caff3af19980457d56d41d57367b3e158e12c77c51875f14e05e/navconfig-1.7.11-pp310-pypy310_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ca97e6a3c8d7c3282eff92108f55b730627c2ce13c53a1f4fb3c8ab48233473a",
                "md5": "e0e1fed44e71e6eb7c13dcc60664d7ce",
                "sha256": "729bb84693dcb114858adda8c39ed8e73f6efd2304b9acf34dec72f4d565f2ff"
            },
            "downloads": -1,
            "filename": "navconfig-1.7.11-pp39-pypy39_pp73-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "e0e1fed44e71e6eb7c13dcc60664d7ce",
            "packagetype": "bdist_wheel",
            "python_version": "pp39",
            "requires_python": ">=3.9.13",
            "size": 233964,
            "upload_time": "2024-11-11T00:56:47",
            "upload_time_iso_8601": "2024-11-11T00:56:47.275738Z",
            "url": "https://files.pythonhosted.org/packages/ca/97/e6a3c8d7c3282eff92108f55b730627c2ce13c53a1f4fb3c8ab48233473a/navconfig-1.7.11-pp39-pypy39_pp73-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-11 00:56:31",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "phenobarbital",
    "github_project": "NavConfig",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "navconfig"
}
        
Elapsed time: 0.38358s