Metadata-Version: 2.1
Name: castaway
Version: 1.0.0
Summary: Simple wrapper for dotenv, with casting
Home-page: http://github.com/dakrauth/castaway
Author: David Krauth
Author-email: dakrauth@gmail.com
License: MIT
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Python: >=3.8
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: python-dotenv[cli] ==1.0.0
Provides-Extra: all
Requires-Dist: dj-email-url ==1.0.6 ; extra == 'all'
Requires-Dist: dj-database-url ==2.1.0 ; extra == 'all'
Requires-Dist: pytest-cov ; extra == 'all'
Provides-Extra: django
Requires-Dist: dj-email-url ==1.0.6 ; extra == 'django'
Requires-Dist: dj-database-url ==2.1.0 ; extra == 'django'
Provides-Extra: test
Requires-Dist: pytest-cov ; extra == 'test'

castaway
========

.. image:: https://github.com/dakrauth/castaway/workflows/Test/badge.svg
   :target: https://github.com/dakrauth/castaway/actions
   :alt: GitHub Actions

A simple wrapper for python-dotenv_ that allows for easy casting of environment
strings to various data types.

.. _python-dotenv: https://pypi.org/project/python-dotenv/

Installation
------------

Standard install:

.. code::

    pip install castaway


If you want Django integration (``dj-email-url``, ``dj-database-url``), do:

.. code::

    pip install castaway[django]


Example
-------

Easiest form is:

.. code:: python

    from castaway import config
    SOME_SETTING = config('SOME_SETTING', default=None)

Like ``python-dotenv``, this will load ``.env`` from the current working directory,
or walk the parent directory tree until it is found.

For more custom usage, you can specify the exact name and path to whatever file you need.
For instance, using the ``tests/.env`` file from this repo.

.. code:: python

    from datetime import datetime
    from castaway import Config

    config = Config('tests/.env')

    CASTAWAY_INT = config('CASTAWAY_INT', cast=int)
    assert CASTAWAY_INT == 23

    CASTAWAY_LIST = config('CASTAWAY_LIST', cast=list)
    assert CASTAWAY_LIST == ['a', 'b', 'c']

    CASTAWAY_DATETIME = config('CASTAWAY_DATETIME', cast=datetime.fromisoformat)
    assert CASTAWAY_DATETIME == datetime(2021, 4, 3, 14, 25)
