lsst.utils¶
The lsst.utils
module provides common code for tests, interfacing between C++ and Python, and debugging.
Changes¶
Contributing¶
lsst.utils
is developed at https://github.com/lsst/utils.
You can find Jira issues for this module under the utils component.
Python API reference¶
lsst.utils Package¶
Functions¶
|
Re-open the decorated class, adding any new definitions into the original. |
|
Deprecate a pybind11-wrapped C++ interface function, method or class. |
|
Import a python object given an importable string and return it. |
|
Import a python type given an importable string and return it. |
|
Find the file system location of the EUPS package. |
|
Add the decorated function to the given class as a method. |
|
Extend existing documentation for a method that exists in another class and extend it with any additional documentation defined. |
|
Suppress warnings generated by |
Classes¶
|
A metaclass for abstract base classes that tie together wrapped C++ template types. |
Class Inheritance Diagram¶
digraph inheritance427d8f8179 { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "TemplateMeta" [URL="../../../py-api/lsst.utils.TemplateMeta.html#lsst.utils.TemplateMeta",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="A metaclass for abstract base classes that tie together wrapped C++"]; }lsst.utils.tests Module¶
Functions¶
|
Initialize the memory tester and file descriptor leak tester. |
|
Return a path suitable for a temporary file and try to delete the file on success. |
|
Highly-configurable floating point comparisons for scalars and arrays. |
|
Fail a test if the given floating point values are equal to within the given tolerances. |
|
Assert that lhs == rhs (both numeric types, whether scalar or array). |
|
Enter the debugger when there's an uncaught exception. |
|
Class decorator for generating unit tests. |
|
Iterate over supplied settings to create subtests automatically. |
Context manager that creates and destroys a temporary directory. |
Classes¶
|
Check for resource leaks. |
|
Test that executables can be run and return good status. |
|
Test that the named packages can be imported and all files within that package. |
|
Subclass of unittest.TestCase that adds some custom assertions for convenience. |
Class Inheritance Diagram¶
digraph inheritancea7d49b55f8 { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "ExecutablesTestCase" [URL="../../../py-api/lsst.utils.tests.ExecutablesTestCase.html#lsst.utils.tests.ExecutablesTestCase",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Test that executables can be run and return good status."]; "TestCase" -> "ExecutablesTestCase" [arrowsize=0.5,style="setlinewidth(0.5)"]; "ImportTestCase" [URL="../../../py-api/lsst.utils.tests.ImportTestCase.html#lsst.utils.tests.ImportTestCase",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Test that the named packages can be imported and all files within"]; "TestCase" -> "ImportTestCase" [arrowsize=0.5,style="setlinewidth(0.5)"]; "MemoryTestCase" [URL="../../../py-api/lsst.utils.tests.MemoryTestCase.html#lsst.utils.tests.MemoryTestCase",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Check for resource leaks."]; "TestCase" -> "MemoryTestCase" [arrowsize=0.5,style="setlinewidth(0.5)"]; "TestCase" [URL="../../../py-api/lsst.utils.tests.TestCase.html#lsst.utils.tests.TestCase",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Subclass of unittest.TestCase that adds some custom assertions for"]; "TestCase" -> "TestCase" [arrowsize=0.5,style="setlinewidth(0.5)"]; "TestCase" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="A class whose instances are single test cases."]; }lsst.utils.logging Module¶
Functions¶
|
Get a logger compatible with LSST usage. |
|
Get a logger with the appropriate TRACE name. |
|
Adjust logging level to display messages with the trace number being less than or equal to the provided value. |
Classes¶
|
A special logging adapter to provide log features for LSST code. |
|
Issue log messages if a time threshold has elapsed. |
Class Inheritance Diagram¶
digraph inheritance072fe32b5f { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "LoggerAdapter" [fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",tooltip="An adapter for loggers which makes it easier to specify contextual"]; "LsstLogAdapter" [URL="../../../py-api/lsst.utils.logging.LsstLogAdapter.html#lsst.utils.logging.LsstLogAdapter",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="A special logging adapter to provide log features for LSST code."]; "LoggerAdapter" -> "LsstLogAdapter" [arrowsize=0.5,style="setlinewidth(0.5)"]; "PeriodicLogger" [URL="../../../py-api/lsst.utils.logging.PeriodicLogger.html#lsst.utils.logging.PeriodicLogger",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Issue log messages if a time threshold has elapsed."]; }lsst.utils.iteration Module¶
Functions¶
|
Return smaller chunks of an iterable. |
Ensure that the input is iterable. |
|
|
Split a string or bytes by separator returning a generator. |
lsst.utils.classes Module¶
Functions¶
|
Decorate a method to cache the result. |
|
Decorate a class to simulate a simple form of immutability. |
Classes¶
Metaclass to convert a class to a Singleton. |
Class Inheritance Diagram¶
digraph inheritancee6726f6b2b { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "Singleton" [URL="../../../py-api/lsst.utils.classes.Singleton.html#lsst.utils.classes.Singleton",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="Metaclass to convert a class to a Singleton."]; }lsst.utils.introspection Module¶
Functions¶
|
Given the type name or a type, return the python type. |
|
Return full type name of the supplied entity. |
|
Given the type name or a type, instantiate an object of that type. |
|
Get the name of the caller method. |
|
Find the stacklevel for outside of the given module. |
lsst.utils.timer Module¶
Functions¶
|
Profile the enclosed code block and save the result to a file. |
|
Log timer information to |
|
Measure duration of a method. |
|
Time the enclosed block and issue a log message. |
lsst.utils.packages Module¶
Functions¶
|
Determine the version of a python module. |
Get imported python packages and their versions. |
|
|
Get products and their versions from the environment. |
Get products and their versions from the conda environment. |
Classes¶
A table of packages and their versions. |
Class Inheritance Diagram¶
digraph inheritanceed80ad38d5 { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "Packages" [URL="../../../py-api/lsst.utils.packages.Packages.html#lsst.utils.packages.Packages",fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="A table of packages and their versions."]; }lsst.utils.usage Module¶
Functions¶
Report current memory usage. |
|
Report peak memory usage. |
lsst.utils.threads Module¶
Functions¶
|
Set common threading environment variables to the given value. |
Do whatever is necessary to try to prevent implicit threading. |
lsst.utils.ellipsis Module¶
A type-annotation workaround for ...
not having an exposed type in Python
prior to version 3.10.
This module provides Ellipsis
and EllipsisType
symbols that are
conditionally defined to point to the built-in “...
” singleton and its type
(respectively) at runtime, and an enum class and instance if
typing.TYPE_CHECKING
is True
(an approach first suggested
here).
Type checkers should recognize enum literals as singletons, making this pair
behave as expected under is
comparisons and type-narrowing expressions,
such as:
v: EllipsisType | int
if v is not Ellipsis:
v += 2 # type checker should now see v as a pure int
This works best when there is a clear boundary between code that needs to be
type-checked and can use Ellipsis
instead of a literal “...
”, and
calling code that is either not type-checked or uses typing.Any
to accept
literal “...
” values.