Greetings, This message is for those that would like to "play" with a more natural looking syntax for units in Python. First, a quick look:
python -m ideas -t easy_units Ideas Console version 0.0.23. [Python version: 3.10.2]
~>> import pint
~>> U = pint.UnitRegistry()
~>> walk = 3[km] + 100[m]
~>> walk
python -m ideas -t easy_units Ideas Console version 0.0.23. [Python version: 3.10.2]
~>> from astropy.units import m, km, N, Pa
~>> walk = 3[km] + 100[m]
~>> walk
python -m ideas example -t easy_units 1.002 kilometer
Note that it is "example" and not "example.py" that is run (imported). ====== To try these examples, you need to: python -m pip install ideas and either python -m pip install pint or python -m pip install astropy ## How does it work? "ideas" (https://github.com/aroberge/ideas; documentation at https://aroberge.github.io/ideas/docs/html/) is a library I created a few years ago to allow easy experiments with variations on Python's syntax. When a module is imported (or when some code is run in the modified interpreter), it is first transformed prior to execution. Users of ideas can define transformations that operate: 1. on the source (text) 2. on the AST 3. on the bytecode. If one uses simple source transformations (which is what I did for easy_units), one can see the transformed code prior to its execution in the interactive console, using a "verbosity" flag (-v or --verbosity)
python -m ideas -t easy_units -v Ideas Console version 0.0.23. [Python version: 3.10.2]
~>> import pint ~>> Units = pint.UnitRegistry() # "Units" here is an arbitrary name ~>> walk = 3[km] + 100[m] ===========Transformed============ walk = 3 * Units.km + 100 * Units.m ----------------------------- ~>> p1 = 1.0[N/m^2] ===========Transformed============ p1 = 1.0 * Units.N/(Units.m**2) ----------------------------- ~>> p2 = 1.0[N/m**2] # using ** instead of ^ for Python purists ===========Transformed============ p2 = 1.0 * Units.N/(Units.m**2) # using ** instead of ^ for Python purists ----------------------------- Admittedly, it is a quick hack and may very well be buggy. But it can be fun to use! ;-) André Roberge