Source code for dragonfly.config
"""Dragonfly configurations.
Import this into every module where access configurations are needed.
Usage:
.. code-block:: python
from dragonfly.config import folders
print(folders.dragonfly_schema_version_str)
"""
import os
[docs]
class Folders(object):
"""Dragonfly folders.
Properties:
* dragonfly_core_version
* dragonfly_core_version_str
* dragonfly_schema_version
* dragonfly_schema_version_str
* python_package_path
"""
def __init__(self):
# search for the version of dragonfly-core and dragonfly-schema
self._dragonfly_core_version = self._find_dragonfly_core_version()
self._dragonfly_schema_version = self._find_dragonfly_schema_version()
@property
def dragonfly_core_version(self):
"""Get a tuple for the installed version of dragonfly-core (eg. (1, 47, 26)).
This will be None if the version could not be sensed (it was not installed
via pip).
"""
return self._dragonfly_core_version
@property
def dragonfly_core_version_str(self):
"""Get a string for the installed version of dragonfly-core (eg. "1.47.26").
This will be None if the version could not be sensed.
"""
if self._dragonfly_core_version is not None:
return '.'.join([str(item) for item in self._dragonfly_core_version])
return None
@property
def dragonfly_schema_version(self):
"""Get a tuple for the installed version of dragonfly-schema (eg. (1, 5, 27)).
This will be None if the version could not be sensed (it was not installed
via pip) or if no dragonfly-schema installation was found next to the
dragonfly-core installation.
"""
return self._dragonfly_schema_version
@property
def dragonfly_schema_version_str(self):
"""Get a string for the installed version of dragonfly-schema (eg. "1.5.27").
This will be None if the version could not be sensed.
"""
if self._dragonfly_schema_version is not None:
return '.'.join([str(item) for item in self._dragonfly_schema_version])
return None
@property
def python_package_path(self):
"""Get the path to where this Python package is installed."""
return os.path.split(os.path.dirname(__file__))[0]
def _find_dragonfly_core_version(self):
"""Get a tuple of 3 integers for the version of dragonfly_core if installed."""
return self._find_package_version('dragonfly_core')
def _find_dragonfly_schema_version(self):
"""Get a tuple of 3 integers for the version of dragonfly_schema if installed."""
return self._find_package_version('dragonfly_schema')
def _find_package_version(self, package_name):
"""Get a tuple of 3 integers for the version of a package."""
df_info_folder = None
for item in os.listdir(self.python_package_path):
if item.startswith(package_name + '-') and item.endswith('.dist-info'):
if os.path.isdir(os.path.join(self.python_package_path, item)):
df_info_folder = item
break
if df_info_folder is not None:
df_info_folder = df_info_folder.replace('.dist-info', '')
ver = ''.join(s for s in df_info_folder if (s.isdigit() or s == '.'))
if ver: # version was found in the file path name
return tuple(int(d) for d in ver.split('.'))
return None
"""Object possesing all key folders within the configuration."""
folders = Folders()