126 lines
3.5 KiB
Python
126 lines
3.5 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
pint
|
|
~~~~
|
|
|
|
Pint is Python module/package to define, operate and manipulate
|
|
**physical quantities**: the product of a numerical value and a
|
|
unit of measurement. It allows arithmetic operations between them
|
|
and conversions from and to different units.
|
|
|
|
:copyright: (c) 2012 by Hernan E. Grecco.
|
|
:license: BSD, see LICENSE for more details.
|
|
"""
|
|
from __future__ import with_statement
|
|
import os
|
|
import subprocess
|
|
import pkg_resources
|
|
from .formatting import formatter
|
|
from .unit import (UnitRegistry, DimensionalityError, OffsetUnitCalculusError,
|
|
UndefinedUnitError, LazyRegistry)
|
|
from .util import pi_theorem, logger
|
|
|
|
from .context import Context
|
|
|
|
|
|
try: # pragma: no cover
|
|
__version__ = pkg_resources.get_distribution('pint').version
|
|
except: # pragma: no cover
|
|
# we seem to have a local copy not installed without setuptools
|
|
# so the reported version will be unknown
|
|
__version__ = "unknown"
|
|
|
|
|
|
#: A Registry with the default units and constants.
|
|
_DEFAULT_REGISTRY = LazyRegistry()
|
|
|
|
#: Registry used for unpickling operations.
|
|
_APP_REGISTRY = _DEFAULT_REGISTRY
|
|
|
|
|
|
def _build_quantity(value, units):
|
|
"""Build Quantity using the Application registry.
|
|
Used only for unpickling operations.
|
|
"""
|
|
global _APP_REGISTRY
|
|
return _APP_REGISTRY.Quantity(value, units)
|
|
|
|
|
|
def set_application_registry(registry):
|
|
"""Set the application registry which is used for unpickling operations.
|
|
|
|
:param registry: a UnitRegistry instance.
|
|
"""
|
|
assert isinstance(registry, UnitRegistry)
|
|
global _APP_REGISTRY
|
|
logger.debug('Changing app registry from %r to %r.', _APP_REGISTRY, registry)
|
|
_APP_REGISTRY = registry
|
|
|
|
|
|
def _run_pyroma(data): # pragma: no cover
|
|
"""Run pyroma (used to perform checks before releasing a new version).
|
|
"""
|
|
import sys
|
|
from zest.releaser.utils import ask
|
|
if not ask("Run pyroma on the package before uploading?"):
|
|
return
|
|
try:
|
|
from pyroma import run
|
|
result = run(data['tagdir'])
|
|
if result != 10:
|
|
if not ask("Continue?"):
|
|
sys.exit(1)
|
|
except ImportError:
|
|
if not ask("pyroma not available. Continue?"):
|
|
sys.exit(1)
|
|
|
|
|
|
def _check_travis(data): # pragma: no cover
|
|
"""Check if Travis reports that everything is ok.
|
|
(used to perform checks before releasing a new version).
|
|
"""
|
|
import json
|
|
import sys
|
|
|
|
from zest.releaser.utils import system, ask
|
|
if not ask('Check with Travis before releasing?'):
|
|
return
|
|
|
|
try:
|
|
# Python 3
|
|
from urllib.request import urlopen
|
|
def get(url):
|
|
return urlopen(url).read().decode('utf-8')
|
|
|
|
except ImportError:
|
|
# Python 2
|
|
from urllib2 import urlopen
|
|
def get(url):
|
|
return urlopen(url).read()
|
|
|
|
url = 'https://api.github.com/repos/%s/%s/status/%s'
|
|
|
|
username = 'hgrecco'
|
|
repo = 'pint'
|
|
commit = system('git rev-parse HEAD')
|
|
|
|
try:
|
|
result = json.loads(get(url % (username, repo, commit)))['state']
|
|
print('Travis says: %s' % result)
|
|
if result != 'success':
|
|
if not ask('Do you want to continue anyway?', default=False):
|
|
sys.exit(1)
|
|
except Exception:
|
|
print('Could not determine the commit state with Travis.')
|
|
if ask('Do you want to continue anyway?', default=False):
|
|
sys.exit(1)
|
|
|
|
|
|
def test():
|
|
"""Run all tests.
|
|
|
|
:return: a :class:`unittest.TestResult` object
|
|
"""
|
|
from .testsuite import run
|
|
return run()
|