from mongoengine import ValidationError from mongoengine.base.datastructures import BaseDict from itsdangerous import URLSafeTimedSerializer from pint import UnitRegistry from pint.unit import UnitDefinition from pint.converters import ScaleConverter from string import punctuation from boltons.iterutils import remap, default_enter ureg = UnitRegistry(preprocessors=[ lambda s: s.replace("%%", " permille "), lambda s: s.replace("%", " percent "), ]) ureg.default_format = "P~" ureg.define(UnitDefinition("percent", "%", (), ScaleConverter(0.01))) ureg.define(UnitDefinition("permille", "%%", (), ScaleConverter(0.001))) ureg.define(UnitDefinition("ppm", "ppm", (), ScaleConverter(1e-6))) ureg.define(UnitDefinition("ppb", "ppb", (), ScaleConverter(1e-9))) ureg.define("atom = 1") ureg.define("bohr_magneton = e * hbar / (2 * m_e) = µᵇ = µ_B = mu_B") ureg.define("electron_mass = 9.1093837015e-31 kg = mₑ = m_e") Q_ = ureg.Quantity delimiter, max_depth = ".", 3 max_dgts = 6 invalidChars = set(punctuation.replace("*", "")) invalidChars.add(" ") quantity_keys = {"display", "value", "unit"} for mod in [
from math import isclose import sys import CoolProp from pint import UnitRegistry, DimensionalityError from pint.unit import UnitsContainer, UnitDefinition from pint.converters import ScaleConverter try: # pragma: no cover from IPython.core.ultratb import AutoFormattedTB except ImportError: # pragma: no cover AutoFormattedTB = None units = UnitRegistry(autoconvert_offset_to_baseunit=True) Q_ = units.Quantity units.define(UnitDefinition("percent", "pct", (), ScaleConverter(1.0 / 100.0))) units.setup_matplotlib() # Don't add the _render_traceback_ function to DimensionalityError if # IPython isn't present. This function is only used by the IPython/ipykernel # anyways, so it doesn't matter if it's missing if IPython isn't available. if AutoFormattedTB is not None: # pragma: no cover def render_traceback(self): """Render a minimized version of the DimensionalityError traceback. The default Jupyter/IPython traceback includes a lot of context from within pint that actually raises the DimensionalityError. This context isn't really needed for this particular error, since the problem is almost certainly in the user code. This function removes the additional context.
""" from math import isclose import sys import CoolProp from pint import UnitRegistry, DimensionalityError from pint.unit import UnitsContainer, UnitDefinition from pint.converters import ScaleConverter try: # pragma: no cover from IPython.core.ultratb import AutoFormattedTB except ImportError: # pragma: no cover AutoFormattedTB = None units = UnitRegistry(autoconvert_offset_to_baseunit=True) Q_ = units.Quantity units.define(UnitDefinition('percent', 'pct', (), ScaleConverter(1.0 / 100.0))) # Don't add the _render_traceback_ function to DimensionalityError if # IPython isn't present. This function is only used by the IPython/ipykernel # anyways, so it doesn't matter if it's missing if IPython isn't available. if AutoFormattedTB is not None: # pragma: no cover def render_traceback(self): """Render a minimized version of the DimensionalityError traceback The default Jupyter/IPython traceback includes a lot of context from within pint that actually raises the DimensionalityError. This context isn't really needed for this particular error, since the problem is almost certainly in the user code. This function removes the additional context. """
if globals().get("U_", None) is None: # filename = resource_filename(PKG, 'spectrochempy.txt') U_ = UnitRegistry(on_redefinition="ignore") # filename) U_.define("__wrapped__ = 1" ) # <- hack to avoid an error with pytest (doctest activated) U_.define("@alias point = count") U_.define("transmittance = 1. / 100.") U_.define("absolute_transmittance = 1.") U_.define("absorbance = 1. = a.u.") U_.define("Kubelka_Munk = 1. = K.M.") U_.define("ppm = 1. = ppm") U_.define(UnitDefinition("percent", "pct", (), ScaleConverter(1 / 100.0))) U_.define( UnitDefinition("weight_percent", "wt_pct", (), ScaleConverter(1 / 100.0))) U_.default_format = "~P" Q_ = U_.Quantity Q_.default_format = "~P" set_application_registry(U_) del UnitRegistry # to avoid importing it else: warn("Unit registry was already set up. Bypassed the new loading") U_.enable_contexts("spectroscopy", "boltzmann", "chemistry")
if globals().get('U_', None) is None: # filename = resource_filename(PKG, 'spectrochempy.txt') U_ = UnitRegistry(on_redefinition='ignore') # filename) U_.define('__wrapped__ = 1') # <- hack to avoid an error with pytest (doctest activated) U_.define('@alias point = count') U_.define('transmittance = 1. / 100.') U_.define('absolute_transmittance = 1.') U_.define('absorbance = 1. = a.u.') U_.define('Kubelka_Munk = 1. = K.M.') U_.define('ppm = 1. = ppm') U_.define(UnitDefinition('percent', 'pct', (), ScaleConverter(1 / 100.0))) U_.define(UnitDefinition('weight_percent', 'wt_pct', (), ScaleConverter(1 / 100.0))) U_.default_format = '' # .2fK' Q_ = U_.Quantity Q_.default_format = '' # .2fK' set_application_registry(U_) del UnitRegistry # to avoid importing it else: warn('Unit registry was already set up. Bypassed the new loading') U_.enable_contexts('spectroscopy', 'boltzmann', 'chemistry')