Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

musette

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

musette

os.environ proxy based on django-environ

  • 0.5.10
  • PyPI
  • Socket score

Maintainers
1

musette

musette enables application configuration by providing a proxy to os.environ which allows:

  • type-casting of environment values
  • updating the environment via plaintext key-value properties files
  • shell-style interpolation

musette is a direct fork of django-environ_ with significant changes. Although it is intended for Django settings configuration it does not actually require Django itself.

The original module (django-environ_) was a merge of:

  • envparse_
  • honcho_
  • dj-database-url_
  • dj-search-url_
  • dj-config-url_
  • django-cache-url_

.. _django-environ: https://pypi.python.org/pypi/django-environ .. _envparse: https://github.com/rconradharris/envparse .. _honcho: https://github.com/nickstenning/honcho .. _dj-database-url: https://github.com/kennethreitz/dj-database-url .. _dj-search-url: https://github.com/dstufft/dj-search-url .. _dj-config-url: https://github.com/julianwachholz/dj-config-url .. _django-cache-url: https://github.com/ghickman/django-cache-url

Basic usage

::

from musette import environ

environ.read('env.properties')

DEBUG = environ.bool("DEBUG")

Django Settings

This is your settings.py file before you have installed musette::

DEBUG = True
TEMPLATE_DEBUG = DEBUG

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'database',
        'USER': 'user',
        'PASSWORD': 'githubbedpassword',
        'HOST': '127.0.0.1',
        'PORT': '8458',
    }
    'extra': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'database.sqlite'
    }
}

SECRET_KEY = 'notsecret'

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': [
            '127.0.0.1:11211', '127.0.0.1:11212', '127.0.0.1:11213',
        ]
    },
    'redis': {
        'BACKEND': 'redis_cache.cache.RedisCache',
        'LOCATION': '127.0.0.1:6379:1',
        'OPTIONS': {
            'CLIENT_CLASS': 'redis_cache.client.DefaultClient',
            'PASSWORD': 'redis-githubbed-password',
        }
    }
}

After::

from musette import Environment

env = Environment(DEBUG=(bool, False),)
env.read('env.properties')

DEBUG = env('DEBUG') # False if not in os.environ
TEMPLATE_DEBUG = DEBUG

DATABASES = {
    'default': env.db(),
    'extra': env.db('SQLITE_URL', default='sqlite:////tmp/my-tmp-sqlite.db')
}

SECRET_KEY = env('SECRET_KEY')

CACHES = {
    'default': env.cache(),
    'redis': env.cache('REDIS_URL')
}

Properties Files

A properties or "env" file is plain text file containing one or more key := value or key = value lines, where values may optionally refer to other environment values via shell-style variables::

that := something
this := ${that}

How to install

::

$ pip install musette

How to use

There is an Environment class and a convenient instance of that class called environ::

>>> from musette import Environment
>>> env = Environment(
        DEBUG=(bool, False),
    )
>>> env('DEBUG')
False
>>> env('DEBUG', default=True)
True

>>> open('.myenv', 'a').write('DEBUG=on\n')
>>> env.read('.myenv')
>>> env('DEBUG')
True

>>> open('.myenv', 'a').write('INT_VAR=1010\n')
>>> env.read('.myenv')
>>> env.int('INT_VAR'), env.str('INT_VAR')
1010, '1010'

>>> open('.myenv', 'a').write('DATABASE_URL=sqlite:///my-local-sqlite.db\n')
>>> env.read('.myenv')
>>> env.db()
{'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'my-local-sqlite.db', 'HOST': '', 'USER': '', 'PASSWORD': '', 'PORT': ''}

Environment by default provides an effective proxy to the os.environ data dictionary, but you can pass in any other dict instead::

>>> from musette import Environment
>>> _environ = {}
>>> env = Environment(_environ, DEBUG=True)
>>> _environ['DEBUG']
True

If you are neither passing in a configuration dict or any schema values then you can just use the environ instance::

>>> import os
>>> from musette import environ
>>> set(os.environ.keys()) == set(environ.keys())
True

Supported Types

  • str
  • bool
  • int
  • float
  • json
  • list (FOO=a,b,c)
  • dict (BAR=key=val;foo=bar)
  • url
  • db_url
    • PostgreSQL: postgres://, pgsql://, psql:// or postgresql://
    • PostGIS: postgis://
    • MySQL: mysql:// or mysql2://
    • MySQL for GeoDjango: mysqlgis://
    • SQLITE: sqlite://
    • SQLITE with SPATIALITE for GeoDjango: spatialite://
    • LDAP: ldap://
  • cache_url
    • Database: dbcache://
    • Dummy: dummycache://
    • File: filecache://
    • Memory: locmemcache://
    • Memcached: memcache://
    • Python memory: pymemcache://
    • Redis: rediscache://
  • search_url
    • ElasticSearch: elasticsearch://
    • Solr: solr://
    • Whoosh: whoosh://
    • Simple cache: simple://
  • email_url
    • SMTP: smtp://
    • SMTPS: smtps://
    • Console mail: consolemail://
    • File mail: filemail://
    • LocMem mail: memorymail://
    • Dummy mail: dummymail://

Tests

::

$ git clone git@github.com:averagehuman/musette.git
$ cd musette
$ python setup.py test

Keywords

FAQs


Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc