#3852: [with patch; needs work] create or adapt or include a units package
------------------------------+---------------------------------------------
Reporter: jason | Owner: somebody
Type: enhancement | Status: new
Priority: major | Milestone: sage-4.1.3
Component: basic arithmetic | Keywords:
Reviewer: | Author:
Merged: |
------------------------------+---------------------------------------------
Comment(by was):
FIRST REFEREE REPORT on trac_3852.patch:
1. The doctest coverage is still very bad (38%):
{{{
wst...@sage:~/build/sage-4.1.1$ ./sage -coverage
devel/sage/sage/symbolic/units.py
----------------------------------------------------------------------
devel/sage/sage/symbolic/units.py
ERROR: Please define a s == loads(dumps(s)) doctest.
SCORE devel/sage/sage/symbolic/units.py: 38% (5 of 13)
Missing documentation:
* evalunitdict():
* unit_derivations_expr(v):
* _sage_doc_(self):
* str_to_unit(name):
* __init__(self, data):
* trait_names(self):
* __getattr__(self, name):
Missing doctests:
* vars_in_str(s):
Possibly wrong (function name doesn't occur in doctests):
* convert_temperature(expr, target):
----------------------------------------------------------------------
}}}
2. The new code fails numerous doctests:
{{{
sage -t devel/sage/sage/symbolic/units.py # 4 doctests failed
sage -t devel/sage/sage/symbolic/expression.pyx # 2 doctests
failed
}}}
The actual failures:
{{{
**********************************************************************
File
"/scratch/wstein/build/sage-4.1.1/devel/sage/sage/symbolic/expression.pyx",
line 5399:
sage:
(units.pressure.pascal*units.si_prefixes.kilo).convert(units.pressure.pounds_per_square_inch)
Exception raised:
Traceback (most recent call last):
File "/scratch/wstein/build/sage-4.1.1/local/bin/ncadoctest.py",
line 1231, in run_one_test
self.run_one_example(test, example, filename, compileflags)
File "/scratch/wstein/build/sage-4.1.1/local/bin/sagedoctest.py",
line 38, in run_one_example
OrigDocTestRunner.run_one_example(self, test, example, filename,
compileflags)
File "/scratch/wstein/build/sage-4.1.1/local/bin/ncadoctest.py",
line 1172, in run_one_example
compileflags, 1) in test.globs
File "<doctest __main__.example_137[10]>", line 1, in <module>
(units.pressure.pascal*units.si_prefixes.kilo).convert(units.pressure.pounds_per_square_inch)###line
5399:
sage:
(units.pressure.pascal*units.si_prefixes.kilo).convert(units.pressure.pounds_per_square_inch)
File "expression.pyx", line 5424, in
sage.symbolic.expression.Expression.convert
(sage/symbolic/expression.cpp:21250
)
File "/scratch/wstein/build/sage-4.1.1/local/lib/python/site-
packages/sage/symbolic/units.py", line 1064, in convert
expr = expr.subs(z)
File "expression.pyx", line 2777, in
sage.symbolic.expression.Expression.substitute
(sage/symbolic/expression.cpp:13
700)
File "expression.pyx", line 1517, in
sage.symbolic.expression.Expression.coerce_in
(sage/symbolic/expression.cpp:959
1)
File "parent_old.pyx", line 331, in
sage.structure.parent_old.Parent._coerce_
(sage/structure/parent_old.c:4673)
File "parent.pyx", line 429, in sage.structure.parent.Parent.coerce
(sage/structure/parent.c:4806)
TypeError: no canonical coercion from <type 'str'> to Symbolic Ring
...
File "/scratch/wstein/build/sage-4.1.1/devel/sage/sage/symbolic/units.py",
line 31:
e: units.force.dyne?
Exception raised:
Traceback (most recent call last):
File "/scratch/wstein/build/sage-4.1.1/local/bin/ncadoctest.py",
line 1231, in run_one_test
self.run_one_example(test, example, filename, compileflags)
File "/scratch/wstein/build/sage-4.1.1/local/bin/sagedoctest.py",
line 38, in run_one_example
OrigDocTestRunner.run_one_example(self, test, example, filename,
compileflags)
File "/scratch/wstein/build/sage-4.1.1/local/bin/ncadoctest.py",
line 1172, in run_one_example
compileflags, 1) in test.globs
File "<doctest __main__.example_0[6]>", line 1
units.force.dyne?###line 31:
e: units.force.dyne?
^
SyntaxError: invalid syntax
**********************************************************************
File "/scratch/wstein/build/sage-4.1.1/devel/sage/sage/symbolic/units.py",
line 52:
**********************************************************************
File "/scratch/wstein/build/sage-4.1.1/devel/sage/sage/symbolic/units.py",
line 52:
e: t.convert(unit.charge.coulomb)
Expected:
Traceback (most recent call last):
...
ValueError: Incompatible units
Got:
Traceback (most recent call last):
File "/scratch/wstein/build/sage-4.1.1/local/bin/ncadoctest.py",
line 1231, in run_one_test
self.run_one_example(test, example, filename, compileflags)
File "/scratch/wstein/build/sage-4.1.1/local/bin/sagedoctest.py",
line 38, in run_one_example
OrigDocTestRunner.run_one_example(self, test, example, filename,
compileflags)
File "/scratch/wstein/build/sage-4.1.1/local/bin/ncadoctest.py",
line 1172, in run_one_example
compileflags, 1) in test.globs
File "<doctest __main__.example_0[11]>", line 1, in <module>
t.convert(unit.charge.coulomb)###line 52:
e: t.convert(unit.charge.coulomb)
NameError: name 'unit' is not defined
...
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/3852#comment:5>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en
-~----------~----~----~----~------~----~------~--~---