Code to perform target selection for BHM/MWM using catalogdb
Project description
target_selection
Code to perform target selection for BHM/MWM using catalogdb.
Installation
To install target_selection
do
pip install sdss-target-selection
or from the GitHub repository
git clone git@github.com:sdss/target_selection
cd target_selection
pip install .
Development
This code adheres to the SDSS Coding Standards.
We use poetry as the PEP517 backend and for dependency specification and resolution. To install poetry
follow these instructions. The you can install the project for development with
cd target_selection
poetry install
Note that as long as you don't need to install or update dependencies you can still install target_selection
in editable mode with
pip install -e .
(this will not install the development packages under the dev
dependencies group, those need to be manually pip-installed in this case). Please, do not add new dependencies without updating the poetry.lock
file. One of the workflows that run on commit will check that the lockfile is still valid.
We use ruff for both linting, import sorting, and code formatting. The configuration is stored in pyproject.toml
and it's mainly the default ruff
configuration (and similar to flake8
) but with a line length of 99 characters for historical reasons and because it simplifies writing long Peewee/SQLAlchemy query statements. The formatting is similar to black, and thus quite opinionated.
A workflow checks for linting and formatting errors on each commit, and pull requests are blocked until the workflow succeeds. The easiest way to fix these problems is by installing ruff
and letting it format the code, and then checking if any linting errors remain. The commands ruff format
and ruff check
are independent and both must be run.
$ pip install ruff
$ ruff format ./python/
1 file reformatted, 46 files left unchanged
$ ruff check ./python/
All checks passed!
Updating the package version can be done directly in the pyproject.toml
file and doesn't require having poetry
installed or otherwise updating the lockfile.
Visual Studio Code configuration
If using Visual Studio Code, it is recommended to install the ruff and prettier extensions. Then you can create a workspace file inside the cloned repo, under .vscode/settings.json
with the following configuration
{
"[python]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll": "explicit",
"source.organizeImports.ruff": "explicit"
},
"editor.wordWrap": "off",
"editor.tabSize": 4,
"editor.defaultFormatter": "charliermarsh.ruff"
},
"[markdown]": {
"editor.wordWrapColumn": 88
},
"[restructuredtext]": {
"editor.wordWrapColumn": 88
},
"[json]": {
"editor.quickSuggestions": {
"strings": true
},
"editor.suggest.insertMode": "replace",
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2
},
"[yaml]": {
"editor.insertSpaces": true,
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.tabSize": 2,
"editor.autoIndent": "advanced",
},
"prettier.tabWidth": 2,
"editor.rulers": [99],
"editor.wordWrapColumn": 99,
"python.analysis.typeCheckingMode": "off",
"ruff.nativeServer": true
}
which will apply the formatting and linting automatically on save.
Working with sdssdb
Often developing target_selection
requires concurrent changes to sdssdb. This presents a bit of a challenge to keep everything in sync and provide a convenient developing environment.
The recommended way to develop with target_selection
and sdssdb
is to install sdssdb
in editable mode in the target_selection
environment. To do this run
pip install -e <PATH-TO-SDSSDB-ROOT-DIR>
After this if you run
pip list | grep sdssdb
you should see a path next to the version, indicating that sdssdb
is being imported from that path. Any local changes in that path will be applied when target_selection
imports sdssdb
.
Updating sdssdb
and other dependencies before tagging
When tagging target_selection
please make sure that you've tagged sdssdb
(if needed) and that the lockfile reflects the change. First you'll need to install poetry (this should only be required once). Follow the installation instructions there, but a recommended way to install is:
-
Install pipx. Follow the instructions for your system, but generally
pip install pipx
works fine. -
Use
pipx
to installpoetry
withpipx install poetry
-
Ensure that the
poetry
executable can be found. If you executepoetry
in your shell and that files, make sure that you have$HOME/.local/bin
in your$PATH
or follow otherpipx
instructions.
Once poetry
is installed follow these instructions:
-
If there are changes in
sdssdb
that affecttarget_selection
, tagsdssdb
. Please do update thesdssdb
change log adding the header indicating the date in which the release was made. Note that you don't necessarily need to do this every time thattarget_selection
is tagged, only when the newtarget_selection
tag depends on untagged changes insdssdb
. -
Update the
version
inpyproject.toml
to the release version. -
Update the dependency for
sdssdb
inpyproject.toml
for example ifsdssdb
0.14.1 has just been tagged, changesdssdb = "0.14.0"
to
sdssdb = "0.14.1"
-
Recreate the lockfile with
poetry lock
It may take a bit of time for
poetry
to detect a recently released version ofsdss
. You may want to runpoetry lock --no-cache
which will take a bit longer but should grab the new package as long as PyPI has updated its internal cache.Note that
poetry lock
will not update the version ofsdssdb
in your virtual environment, only the lockfile. If you do want to update the dependency and the lockfile usepoetry update sdssdb
(orpoetry update
to update all the dependencies). -
Commit the new changes (including the
poetry.lock
file) and tag the new version oftarget_selection
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file sdss_target_selection-1.3.16.tar.gz
.
File metadata
- Download URL: sdss_target_selection-1.3.16.tar.gz
- Upload date:
- Size: 286.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d5a5628b77add6d6be1af51ecedbbc3c62d7f7ca5a7877cf4014f9957168e933 |
|
MD5 | e35a249041eb0754d3e9ddbed5f118f7 |
|
BLAKE2b-256 | 5f37152ac27a11ec2bb50d6209fc7ada0280b8f50236343f7ec3de196a5fc182 |
Provenance
The following attestation bundles were made for sdss_target_selection-1.3.16.tar.gz
:
Publisher:
release.yml
on sdss/target_selection
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
sdss_target_selection-1.3.16.tar.gz
- Subject digest:
d5a5628b77add6d6be1af51ecedbbc3c62d7f7ca5a7877cf4014f9957168e933
- Sigstore transparency entry: 148830463
- Sigstore integration time:
- Predicate type:
File details
Details for the file sdss_target_selection-1.3.16-py3-none-any.whl
.
File metadata
- Download URL: sdss_target_selection-1.3.16-py3-none-any.whl
- Upload date:
- Size: 328.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0edefcee37609e1ec8e253b0715518154c52912a64f9e60111772fab4bab16d1 |
|
MD5 | 691bd10445db366c1b8460542457c8ce |
|
BLAKE2b-256 | 232ed8925ba08bc866a5cb8b66d19686cad0d5d06abf915f17423880ceeafd83 |
Provenance
The following attestation bundles were made for sdss_target_selection-1.3.16-py3-none-any.whl
:
Publisher:
release.yml
on sdss/target_selection
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
sdss_target_selection-1.3.16-py3-none-any.whl
- Subject digest:
0edefcee37609e1ec8e253b0715518154c52912a64f9e60111772fab4bab16d1
- Sigstore transparency entry: 148830464
- Sigstore integration time:
- Predicate type: