Packages¶
-
class
lsst.base.Packages¶ Bases:
dictA table of packages and their versions.
There are a few different types of packages, and their versions are collected in different ways:
- Run-time libraries (e.g., cfitsio, fftw): we get their version from interrogating the dynamic library
- Python modules (e.g., afw, numpy; galsim is also in this group even
though we only use it through the library, because no version
information is currently provided through the library): we get their
version from the
__version__module variable. Note that this means that we’re only aware of modules that have already been imported. - Other packages provide no run-time accessible version information (e.g., astrometry_net): we get their version from interrogating the environment. Currently, that means EUPS; if EUPS is replaced or dropped then we’ll need to consider an alternative means of getting this version information.
- Local versions of packages (a non-installed EUPS package, selected with
setup -r /path/to/package): we identify these through the environment (EUPS again) and use as a version the path supplemented with thegitSHA and, if the git repo isn’t clean, an MD5 of the diff.
These package versions are collected and stored in a Packages object, which provides useful comparison and persistence features.
Example usage:
from lsst.base import Packages pkgs = Packages.fromSystem() print("Current packages:", pkgs) old = Packages.read("/path/to/packages.pickle") print("Old packages:", old) print("Missing packages compared to before:", pkgs.missing(old)) print("Extra packages compared to before:", pkgs.extra(old)) print("Different packages: ", pkgs.difference(old)) old.update(pkgs) # Include any new packages in the old old.write("/path/to/packages.pickle")
Parameters: Notes
This is essentially a wrapper around a dict with some conveniences.
Attributes Summary
formatsMethods Summary
clear()copy()difference(other)Get packages in symmetric difference of self and another Packagesobject.extra(other)Get packages in self but not in another Packagesobject.fromBytes(data, format)Construct the object from a byte representation. fromSystem()Construct a Packagesby examining the system.fromkeys($type, iterable[, value])Create a new dictionary with keys from iterable and values set to value. get($self, key[, default])Return the value for key if key is in the dictionary, else default. items()keys()missing(other)Get packages in another Packagesobject but missing from self.pop(k[,d])If key is not found, d is returned if given, otherwise KeyError is raised popitem($self, /)Remove and return a (key, value) pair as a 2-tuple. read(filename)Read packages from filename. setdefault($self, key[, default])Insert key with a value of default if key is not in the dictionary. toBytes(format)Convert the object to a serialized bytes form using the specified format. update([E, ]**F)If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k] values()write(filename)Write to file. Attributes Documentation
-
formats= {'.pickle': 'pickle', '.pkl': 'pickle', '.yaml': 'yaml'}¶
Methods Documentation
-
clear() → None. Remove all items from D.¶
-
copy() → a shallow copy of D¶
-
difference(other)¶ Get packages in symmetric difference of self and another
Packagesobject.Parameters: - other :
Packages Other packages to compare against.
Returns: - other :
-
extra(other)¶ Get packages in self but not in another
Packagesobject.Parameters: - other :
PackagesorMapping Other packages to compare against.
Returns: - other :
-
classmethod
fromBytes(data, format)¶ Construct the object from a byte representation.
Parameters:
-
classmethod
fromSystem()¶ Construct a
Packagesby examining the system.Determine packages by examining python’s
sys.modules, runtime libraries and EUPS.Returns: - packages :
Packages
- packages :
-
fromkeys($type, iterable, value=None, /)¶ Create a new dictionary with keys from iterable and values set to value.
-
get($self, key, default=None, /)¶ Return the value for key if key is in the dictionary, else default.
-
items() → a set-like object providing a view on D's items¶
-
keys() → a set-like object providing a view on D's keys¶
-
missing(other)¶ Get packages in another
Packagesobject but missing from self.Parameters: - other :
Packages Other packages to compare against.
Returns: - other :
-
pop(k[, d]) → v, remove specified key and return the corresponding value.¶ If key is not found, d is returned if given, otherwise KeyError is raised
-
popitem($self, /)¶ Remove and return a (key, value) pair as a 2-tuple.
Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.
-
classmethod
read(filename)¶ Read packages from filename.
Parameters: - filename :
str Filename from which to read. The format is determined from the file extension. Currently support
.pickle,.pkland.yaml.
Returns: - packages :
Packages
- filename :
-
setdefault($self, key, default=None, /)¶ Insert key with a value of default if key is not in the dictionary.
Return the value for key if key is in the dictionary, else default.
-
toBytes(format)¶ Convert the object to a serialized bytes form using the specified format.
Parameters: - format :
str Format to use when serializing. Can be
yamlorpickle.
Returns: - data :
bytes Byte string representing the serialized object.
- format :
-
update([E, ]**F) → None. Update D from dict/iterable E and F.¶ If E is present and has a .keys() method, then does: for k in E: D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]
-
values() → an object providing a view on D's values¶