Skip to content

Commit

Permalink
Make compatible with python2.
Browse files Browse the repository at this point in the history
  • Loading branch information
KenKundert committed Oct 26, 2016
1 parent 7b97bca commit 4eaa420
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 34 deletions.
3 changes: 3 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
language: python
python:
- "2.6"
- "2.7"
- "3.3"
- "3.4"
- "3.5"
- "nightly"
Expand Down
2 changes: 1 addition & 1 deletion README.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
QuantiPhy - Physical Quantities
===============================

| Version: 0.3.1
| Version: 0.3.2
| Released: 2016-10-25
.. image:: https://img.shields.io/travis/KenKundert/quantiphy/master.svg
Expand Down
67 changes: 35 additions & 32 deletions quantiphy.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@


# Constants {{{1
__version__ = '0.3.1'
__version__ = '0.3.2'
__released__ = '2016-10-25'

# These mappings are only used when reading numbers
Expand Down Expand Up @@ -330,9 +330,24 @@ def __new__(
than 1 milli.
"""
ignore_sf = cls._ignore_sf if ignore_sf is None else ignore_sf
data = {}

# process model to get values for name, units, and desc if available
if is_str(model):
components = model.split(None, 2)
if len(components) == 1:
data['units'] = components[0]
else:
data['name'] = components[0]
data['units'] = components[1]
if len(components) == 3:
data['desc'] = components[2]
else:
data['name'] = getattr(model, 'name', '')
data['units'] = getattr(model, 'units', '')
data['desc'] = getattr(model, 'desc', '')

def recognize_all(value):
nonlocal name, units, desc, mantissa, sf
try:
number, u, mantissa, sf = recognize_number(value, ignore_sf)
except ValueError:
Expand All @@ -341,58 +356,46 @@ def recognize_all(value):
if match:
n, val, d = match.groups()
number, u, mantissa, sf = recognize_number(val, ignore_sf)
if name is None:
name = n
if desc is None:
desc = d
data['name'] = n
data['desc'] = d
else:
raise
if units is None:
units = u
return number
data['units'] = u
return number, mantissa, sf

# process the value
if is_str(value):
if value in CONSTANTS:
value = CONSTANTS[value]
if is_str(value):
number = recognize_all(value)
number, mantissa, sf = recognize_all(value)
else:
number = value[0]
if is_str(number):
number, _, mantissa, sf = recognize_number(number, True)
if len(value) > 1 and not units:
units = value[1]
if len(value) > 2 and not name:
name = value[2]
if len(value) > 3 and not desc:
desc = value[3]
if len(value) > 1:
data['units'] = value[1]
if len(value) > 2:
data['name'] = value[2]
if len(value) > 3:
data['desc'] = value[3]
else:
number = recognize_all(value)
number, mantissa, sf = recognize_all(value)
else:
number = value

# process model to get values for name, units, and desc if still empty
if is_str(model):
components = model.split(maxsplit=2)
if len(components) == 1:
units = components[0] if units is None else units
else:
name = components[0] if name is None else name
units = components[1] if units is None else units
if len(components) == 3:
desc = components[2] if desc is None else desc
else:
name = getattr(model, 'name', None) if name is None else name
units = getattr(model, 'units', None) if units is None else units
desc = getattr(model, 'desc', None) if desc is None else desc

# create the underlying data structure and add attributes as appropriate
self = float.__new__(cls, number)
if not units:
units = data.get('units')
if units:
self.units = units
if not name:
name = data.get('name')
if name:
self.name = name
if not desc:
desc = data.get('desc')
if desc:
self.desc = desc

Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

setup(
name='quantiphy',
version='0.3.1',
version='0.3.2',
description='physical quantities (numbers with units)',
long_description=readme,
author="Ken Kundert",
Expand Down
2 changes: 2 additions & 0 deletions test_constants.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# encoding: utf8

from quantiphy import Quantity

def test_constants():
Expand Down

0 comments on commit 4eaa420

Please sign in to comment.