Socket
Socket
Sign inDemoInstall

settings-helper

Package Overview
Dependencies
2
Maintainers
1
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    settings-helper

Helpers to get specific settings from a particular section of a settings.ini file


Maintainers
1

Readme

Setup in your package

Create a default/sample settings.ini file in the module directory of your package, with a [default] section and any other [sections] you want (i.e. app environments)

::

[default] something = 100

[dev] redis_url = redis://localhost:6379/1 something = 500

[test] redis_url = redis://localhost:6379/9 things = none, true, false, 1, 2.5, dogs

Create a MANIFEST.in file in your package directory with the following

::

include settings.ini

Update the setup.py file of the package to include the setting.ini file and add settings-helper to install_requires list

::

from setuptools import setup, find_packages

setup( name='package-name', version='0.0.1', ... packages=find_packages(), install_requires=[ 'settings-helper', ... ], include_package_data=True, package_dir={'': '.'}, package_data={ '': ['*.ini'], }, ... )

Note, your package directory tree will be something like the following

::

package-name ├── .gitignore ├── LICENSE.txt ├── MANIFEST.in ├── README.md ├── README.rst ├── package_name/ │   ├── init.py │   └── settings.ini └── setup.py

Usage

Use in __init__.py of package

::

import settings_helper as sh

get_setting = sh.settings_getter(name) something = get_setting('something') something_else = get_setting('something_else', 'default_val')

Set APP_ENV environment variable to be one of your section names when starting your Python interpreter/server. APP_ENV defaults to dev if it is not set.

  • The get_setting func will return the value of the requested variable if it is set in the section specified in APP_ENV.
  • If the variable is not in the section, it will pull the value from the [default] section
  • If the varialbe is not in the [default] section either, then return the optional fallback value passed in the default keyword argument to get_setting (which defaults to an empty string)
  • If the requested variable exists in the environment (or its uppercase equivalent), it will be used instead of getting from settings.ini
  • The value is automatically converted to a bool, None, int, or float if it should be
  • If the value contains any of (, ; |) then a list of converted values will be returned

The first time that settings_getter func is invoked, it looks for a settings.ini file in ~/.config/<package-name>/settings.ini.

  • If it does not find it, it will copy the default settings.ini from the module’s install directory to that location
  • If the settings.ini file does not exist in the module’s install directory, an exception is raised

Alternate Usage

::

import settings_helper as sh

settings = sh.get_all_settings(name)

or

::

import settings_helper as sh

settings = sh.get_all_settings(name).get(sh.APP_ENV, {})

The get_all_settings func returns a dict containing all sections other than ‘default’.

  • If a setting is defined in ‘default’, but not in a particular section, the setting in ‘default’ will appear under the section
  • If a setting (or upper-case equivalent) is defined as an environment variable, that value will be used for all sections that use it

Tip

In your <package-name>/tests/__init__.py file, add the following so the test section of settings is automatically used

::

import os

os.environ['APP_ENV'] = 'test'

Keywords

FAQs


Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc