LSST Data Access framework described in arXiv:2206.14941. Please cite the SPIE paper when using this software.
This is a Python 3 only package (we assume Python 3.11 or higher).
- SPIE paper from 2024: Converting Rubin Observatory's data butler to a client/server architecture (Tech note)
- SPIE Paper from 2022: The Vera C. Rubin Observatory Data Butler and Pipeline Execution System (arXiv) [Primary reference]
- ADASS paper from 2019: Abstracting the Storage and Retrieval of Image Data at the LSST.
- Early design note: DMTN-056
PyPI: lsst-daf-butler
This software is dual licensed under the GNU General Public License (version 3 of the License, or (at your option) any later version, and also under a 3-clause BSD license). Recipients may choose which of these licenses to use; please see the files gpl-3.0.txt and/or bsd_license.txt, respectively.
From version 18 of arrow we have seen significant memory leaks when accessing parquet files using the default memory allocator.
If you see such leaks the workaround is to set the ARROW_DEFAULT_MEMORY_POOL environment variable to jemalloc following the advice from apache/arrow#45882.
For EUPS users this variable is automatically set.
This package uses uv to manage the versions of libraries used for CI, Docker builds, and local development.
Run the following command to refresh uv.lock with the latest available
versions of all libraries:
uv lock --upgrade
If you are working on a PR that requires unreleased changes from another LSST
repository, you can temporarily pin the new version by opening pyproject.toml
and finding the library in the override-dependencies declaration under
tool.uv. Replace main with the ticket branch, e.g.:
override-dependencies = [
"lsst-utils @ git+https://github.com/lsst/utils@tickets/DM-xxxxx",
...
]
Then run:
uv lock --upgrade-package <package name>
to pull in the updated version for testing, where <package name> is
lsst-utils or whatever package you are overriding.
(You can also just do uv lock --upgrade if you don't mind upgrading all the
other libraries at the same time.)
You will need to re-do this lock update any time you change the code, so that it resolves to the new version.
After the other library's development branch has been merged, reset the
branch to main in pyproject.toml and run the lock update again to pull in
the released version.