Package: quantiphy
Author: Ken KundertVersion: 2.19Released: 2023-01-05What?QuantiPhyis a Python library that offers support for physical quantities.
A quantity is the pairing of a number and a unit of measure that indicates the
amount of some measurable thing.QuantiPhyprovides quantity objects that
keep the units with the number, making it easy to share them as single object.
They subclass float and so can be used anywhere a real number is appropriate.Why?QuantiPhynaturally supports SI scale factors, which are widely used in
science and engineering. SI scale factors make it possible to cleanly represent
both very large and very small quantities in a form that is both easy to read
and write.  While generally better for humans, no general programming language
provides direct support for reading or writing quantities with SI scale factors,
making it difficult to write numerical software that communicates effectively
with people.QuantiPhyaddresses this deficiency, making it natural and
simple to both input and output physical quantities.FeaturesFlexibly reads amounts with units and SI scale factors.Quantities subclass thefloatclass and so can be used as conventional
numbers.Generally includes the units when printing or converting to strings and by
default employs SI scale factors.Flexible unit conversion and scaling is supported to make it easy to convert
to or from any required form.Supports the binary scale factors (Ki,Mi, etc.) along with the normal SI
scale factors (k,M, etc.).When a quantity is created from a string, the actual digits specified can be
used in any output, eliminating any loss of precision.AlternativesThere are a considerable number of Python packages dedicated to units and
quantities (alternatives).
However, as a rule, they focus on the units rather than the scale factors. In
particular, they build a system of units that you are expected to use throughout
your calculations.  These packages demand a high level of commitment from their
users and in turn provide unit consistency and built-in unit conversions.In contrast,QuantiPhytreats units basically as documentation.  They are
simply strings that are attached to quantities largely so they can be presented
to the user when the values are printed. As such,QuantiPhyis a light-weight
package that demands little from the user.  It is used when inputting and
outputting values, and then only when it provides value.  As a result, it
provides a simplicity in use that cannot be matched by the other packages.In addition, these alternative packages generally build their unit systems upon
theSI base units, which tends
to restrict usage to physical quantities with static conversion factors.  They
are less suited to non-physical quantities or conversion factors that change
dynamically, such as with currencies.QuantiPhygracefully handles all of
these cases.Quick StartYou can find the documentation onReadTheDocs.  Install with:pip3 install --user quantiphyRequires Python 3.6 or newer.  If you using an earlier version of Python,
install version 2.10 ofQuantiPhy.You can find the full documentationhere.You useQuantityto convert numbers and units in various forms to quantities:>>>fromquantiphyimportQuantity>>>Tclk=Quantity(10e-9,'s')>>>print(Tclk)10ns>>>Fhy=Quantity('1420.405751786 MHz')>>>print(Fhy)1.4204GHz>>>Rsense=Quantity('1e-4Ω')>>>print(Rsense)100uΩ>>>cost=Quantity('$11_200_000')>>>print(cost)$11.2M>>>Tboil=Quantity('212 °F',scale='°C')>>>print(Tboil)100°COnce you have a quantity, there are a variety of ways of accessing aspects of
the quantity:>>>Tclk.real1e-08>>>float(Fhy)1420405751.786>>>2*cost22400000.0>>>Rsense.units'Ω'>>>str(Tboil)'100 °C'You can use therendermethod to flexibly convert the quantity to a string:>>>Tclk.render()'10 ns'>>>Tclk.render(show_units=False)'10n'>>>Tclk.render(form='eng',show_units=False)'10e-9'>>>Fhy.render(prec=8)'1.42040575 GHz'>>>Tboil.render(scale='°F')'212 °F'Thefixedmethod is a variant that specializes in rendering numbers without
scale factors or exponents:>>>cost.fixed(prec=2,show_commas=True,strip_zeros=False)'$11,200,000.00'You can use the string format method or the new format strings to flexibly
incorporate quantity values into strings:>>>f'{Fhy}''1.4204 GHz'>>>f'{Fhy:.6}''1.420406 GHz'>>>f'❬{Fhy:<15.6}❭''❬1.420406 GHz   ❭'>>>f'❬{Fhy:>15.6}❭''❬   1.420406 GHz❭'>>>f'{cost:#,.2P}''$11,200,000.00'>>>f'Boiling point of water:{Tboil:s}''Boiling point of water: 100 °C'>>>f'Boiling point of water:{Tboil:s°F}''Boiling point of water: 212 °F'QuantiPhyhas many more features and capabilities. For more information, view
thedocumentation.