def test_equivalency_context_manager(): base_registry = u.get_current_unit_registry() def just_to_from_units(equivalencies): return [(equiv[0], equiv[1]) for equiv in equivalencies] tf_dimensionless_angles = just_to_from_units(u.dimensionless_angles()) tf_spectral = just_to_from_units(u.spectral()) assert base_registry.equivalencies == [] with u.set_enabled_equivalencies(u.dimensionless_angles()): new_registry = u.get_current_unit_registry() assert (set(just_to_from_units(new_registry.equivalencies)) == set(tf_dimensionless_angles)) assert set(new_registry.all_units) == set(base_registry.all_units) with u.set_enabled_equivalencies(u.spectral()): newer_registry = u.get_current_unit_registry() assert (set(just_to_from_units(newer_registry.equivalencies)) == set(tf_spectral)) assert (set(newer_registry.all_units) == set(base_registry.all_units)) assert (set(just_to_from_units(new_registry.equivalencies)) == set(tf_dimensionless_angles)) assert set(new_registry.all_units) == set(base_registry.all_units) with u.add_enabled_equivalencies(u.spectral()): newer_registry = u.get_current_unit_registry() assert (set(just_to_from_units(newer_registry.equivalencies)) == set(tf_dimensionless_angles) | set(tf_spectral)) assert (set(newer_registry.all_units) == set(base_registry.all_units)) assert base_registry is u.get_current_unit_registry()
def test_add_enabled_aliases_context_manager(self, aliases, bad, unit): with u.add_enabled_aliases(aliases): assert u.get_current_unit_registry().aliases == aliases assert u.Unit(bad) == unit assert u.get_current_unit_registry().aliases == {} with pytest.raises(ValueError): u.Unit(bad)
def test_set_enabled_aliases_context_manager(self, aliases, bad, unit, format_): if format_ == 'cds': bad = bad.replace(' ', '.').replace('**', '') with u.set_enabled_aliases(aliases): assert u.get_current_unit_registry().aliases == aliases assert u.Unit(bad) == unit assert u.get_current_unit_registry().aliases == {} with pytest.raises(ValueError): u.Unit(bad)
def test_pickling(): p = pickle.dumps(u.m) other = pickle.loads(p) assert other is u.m new_unit = u.IrreducibleUnit(['foo'], format={'baz': 'bar'}) # This is local, so the unit should not be registered. assert 'foo' not in u.get_current_unit_registry().registry # Test pickling of this unregistered unit. p = pickle.dumps(new_unit) new_unit_copy = pickle.loads(p) assert new_unit_copy.names == ['foo'] assert new_unit_copy.get_format_name('baz') == 'bar' # It should still not be registered. assert 'foo' not in u.get_current_unit_registry().registry # Now try the same with a registered unit. with u.add_enabled_units([new_unit]): p = pickle.dumps(new_unit) assert 'foo' in u.get_current_unit_registry().registry # Check that a registered unit can be loaded and that it gets re-enabled. with u.add_enabled_units([]): assert 'foo' not in u.get_current_unit_registry().registry new_unit_copy = pickle.loads(p) assert new_unit_copy.names == ['foo'] assert new_unit_copy.get_format_name('baz') == 'bar' assert 'foo' in u.get_current_unit_registry().registry # And just to be sure, that it gets removed outside of the context. assert 'foo' not in u.get_current_unit_registry().registry
def test_set_enabled_aliases(self): for i, (aliases, bad, unit) in enumerate(trials): u.set_enabled_aliases(aliases) assert u.get_current_unit_registry().aliases == aliases assert u.Unit(bad) == unit for _, bad2, unit2 in trials: if bad2 == bad or bad2 in aliases: assert u.Unit(bad2) == unit2 else: with pytest.raises(ValueError): u.Unit(bad2)
def test_add_enabled_aliases(self): expected_aliases = {} for i, (aliases, bad, unit) in enumerate(trials): u.add_enabled_aliases(aliases) expected_aliases.update(aliases) assert u.get_current_unit_registry().aliases == expected_aliases assert u.Unit(bad) == unit for j, (_, bad2, unit2) in enumerate(trials): if j <= i: assert u.Unit(bad2) == unit2 else: with pytest.raises(ValueError): u.Unit(bad2)
# enable imperial units units.add_enabled_units(units.imperial) # -- custom units settings # the following happens in two sets # 1) alternative names for standard units where SI prefices will not # be used # 2) new units or alternative names for standard units where SI prefices # _will_ be used # # for developers: when adding a new custom unit, please remember to add it # to the list of tested units in `test_detector.py` # 1) alternative names registry = units.get_current_unit_registry().registry for unit, aliases in [ (units.Unit('ct'), ('counts',)), (units.Unit('Celsius'), ('Degrees_C', 'DegC')), (units.Unit('Fahrenheit'), ('Degrees_F', 'DegF')), ]: unit.names.extend(aliases) for alias in aliases: registry[alias] = unit # 2) new units _ns = {} # LIGO-Lab standard for 'no unit defined' units.def_unit(['NONE', 'undef'], namespace=_ns, doc='No unit has been defined for these data')
def test_register(): foo = u.def_unit("foo", u.m**3, namespace=locals()) assert 'foo' in locals() with u.add_enabled_units(foo): assert 'foo' in u.get_current_unit_registry().registry assert 'foo' not in u.get_current_unit_registry().registry
def test_equivalency_context_manager(): base_registry = u.get_current_unit_registry() # check starting with only the dimensionless_redshift equivalency. assert len(base_registry.equivalencies) == 1 assert str(base_registry.equivalencies[0][0]) == "redshift"
def teardown_class(self): assert u.get_current_unit_registry().aliases == {}
def test_register(): foo = u.def_unit("foo", u.m ** 3, namespace=locals()) assert 'foo' in locals() with u.add_enabled_units(foo): assert 'foo' in u.get_current_unit_registry().registry assert 'foo' not in u.get_current_unit_registry().registry
try: # get resolution in kpc resolution_kpc = args.resolution.to(u.kpc, equivalencies=lensing) # pixel to physical size lensing.append((u.pix, u.kpc, lambda x: x*resolution_kpc, lambda x: x/resolution_kpc)) except: pass # make lensing equivalencies known to context with u.set_enabled_equivalencies(lensing): # show resulting number of known units and equivalencies print '{:d} units, {:d} equivalencies'.format( len(u.get_current_unit_registry().registry), len(lensing) ) # convert units using the lensing equivalencies while True: try: # read units u1 = u.Unit(raw_input('You have: ')) u2 = u.Unit(raw_input('You want: ')) # perform forward and backward conversion fwd = u1.to(u2) bwd = u2.to(u1) # linear or non-linear?