wintertoo 0.3.7__tar.gz → 0.3.8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of wintertoo might be problematic. Click here for more details.

Files changed (36) hide show
  1. wintertoo-0.3.8/.github/workflows/black.yml +25 -0
  2. wintertoo-0.3.8/.github/workflows/continuous_integration.yml +77 -0
  3. wintertoo-0.3.8/.github/workflows/isort.yml +21 -0
  4. wintertoo-0.3.8/.github/workflows/pylint.yml +24 -0
  5. wintertoo-0.3.8/.gitignore +20 -0
  6. wintertoo-0.3.8/.pre-commit-config.yaml +33 -0
  7. {wintertoo-0.3.7 → wintertoo-0.3.8}/PKG-INFO +29 -23
  8. {wintertoo-0.3.7 → wintertoo-0.3.8}/README.md +13 -0
  9. wintertoo-0.3.8/pyproject.toml +98 -0
  10. wintertoo-0.3.8/setup.cfg +4 -0
  11. wintertoo-0.3.8/tests/test_fields.py +58 -0
  12. wintertoo-0.3.8/tests/test_schedule.py +124 -0
  13. wintertoo-0.3.8/tests/testdata/test_schedule.json +1 -0
  14. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/schedule.py +2 -2
  15. wintertoo-0.3.8/wintertoo.egg-info/PKG-INFO +49 -0
  16. wintertoo-0.3.8/wintertoo.egg-info/SOURCES.txt +33 -0
  17. wintertoo-0.3.8/wintertoo.egg-info/dependency_links.txt +1 -0
  18. wintertoo-0.3.8/wintertoo.egg-info/requires.txt +19 -0
  19. wintertoo-0.3.8/wintertoo.egg-info/top_level.txt +1 -0
  20. wintertoo-0.3.7/pyproject.toml +0 -45
  21. {wintertoo-0.3.7 → wintertoo-0.3.8}/LICENSE +0 -0
  22. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/__init__.py +0 -0
  23. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/data/__init__.py +0 -0
  24. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/data/observing_request_schema.json +0 -0
  25. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/data/summer_fields.txt +0 -0
  26. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/data/winter_fields.txt +0 -0
  27. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/database.py +0 -0
  28. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/errors.py +0 -0
  29. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/fields.py +0 -0
  30. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/models/__init__.py +0 -0
  31. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/models/image.py +0 -0
  32. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/models/program.py +0 -0
  33. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/models/too.py +0 -0
  34. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/submit.py +0 -0
  35. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/utils.py +0 -0
  36. {wintertoo-0.3.7 → wintertoo-0.3.8}/wintertoo/validate.py +0 -0
@@ -0,0 +1,25 @@
1
+ name: Black
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ black:
7
+
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v3
11
+ - name: Install poetry
12
+ run: pipx install poetry
13
+ - name: Set up Python 3.11
14
+ uses: actions/setup-python@v4
15
+ with:
16
+ python-version: 3.11
17
+ cache: 'pip'
18
+ cache-dependency-path: pyproject.toml
19
+ - name: Install dependencies
20
+ run: |
21
+ pip install --upgrade pip
22
+ pip install --editable ".[dev]"
23
+ - name: Reformat the code with black
24
+ run: |
25
+ black . --check
@@ -0,0 +1,77 @@
1
+ # This is a basic workflow to help you get started with Actions
2
+
3
+ name: CI
4
+
5
+ # Controls when the action will run.
6
+ on:
7
+ # Triggers the workflow on push or pull request events
8
+ push:
9
+
10
+ pull_request:
11
+
12
+ # Allows you to run this workflow manually from the Actions tab
13
+ workflow_dispatch:
14
+
15
+ # A workflow run is made up of one or more jobs that can run sequentially or in parallel
16
+ jobs:
17
+ # This workflow contains a single job called "build"
18
+ build:
19
+ # The type of runner that the job will run on
20
+ runs-on: ubuntu-latest
21
+
22
+ # Specify the python versions to test
23
+ strategy:
24
+ matrix:
25
+ python-version: ["3.9", "3.10", "3.11"]
26
+
27
+ # Steps represent a sequence of tasks that will be executed as part of the job
28
+ steps:
29
+ - uses: actions/checkout@v3
30
+
31
+ # Set up the python versions
32
+ - name: Set up Python ${{ matrix.python-version }}
33
+ uses: actions/setup-python@v4
34
+ with:
35
+ python-version: ${{ matrix.python-version }}
36
+ cache: 'pip'
37
+ cache-dependency-path: pyproject.toml
38
+
39
+ - name: install packages
40
+ run: |
41
+ pip install --editable ".[dev]"
42
+
43
+ # Runs a set of commands using the runners shell
44
+ - name: Test the code
45
+ run: |
46
+ coverage run -m unittest discover tests/
47
+
48
+ - name: Run Coveralls
49
+ env:
50
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
51
+ run: |
52
+ coveralls --service=github
53
+
54
+
55
+ - name: Echo tag name
56
+ run: echo "Tag is ${{ github.ref }}, Tagged is ${{ startsWith(github.ref, 'refs/tags/')}}, Python Check is ${{matrix.python-version == 3.9}}, Deploy is ${{ startsWith(github.ref, 'refs/tags/') && matrix.python-version == 3.9}}"
57
+
58
+ - name: Install pypa/build
59
+ run: >-
60
+ python -m
61
+ pip install
62
+ build
63
+ --user
64
+ - name: Build a binary wheel and a source tarball
65
+ run: >-
66
+ python -m
67
+ build
68
+ --sdist
69
+ --wheel
70
+ --outdir dist/
71
+ .
72
+
73
+ - name: Publish distribution 📦 to PyPI
74
+ if: ${{ startsWith(github.ref, 'refs/tags/') && success() && matrix.python-version == 3.9 && github.event_name == 'push'}}
75
+ uses: pypa/gh-action-pypi-publish@master
76
+ with:
77
+ password: ${{ secrets.PYPI_API_TOKEN }}
@@ -0,0 +1,21 @@
1
+ name: Run isort
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ isort:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v3
10
+ - name: Set up Python 3.11
11
+ uses: actions/setup-python@v4
12
+ with:
13
+ python-version: 3.11
14
+ cache: 'pip'
15
+ cache-dependency-path: pyproject.toml
16
+ - name: Install dependencies
17
+ run: |
18
+ pip install --upgrade pip
19
+ pip install --editable ".[dev]"
20
+ - name: isort
21
+ uses: isort/isort-action@v1.0.0
@@ -0,0 +1,24 @@
1
+ name: Pylint
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ pylint:
7
+
8
+ runs-on: ubuntu-latest
9
+
10
+ steps:
11
+ - uses: actions/checkout@v3
12
+ - name: Set up Python 3.11
13
+ uses: actions/setup-python@v4
14
+ with:
15
+ python-version: 3.11
16
+ cache: 'pip'
17
+ cache-dependency-path: pyproject.toml
18
+ - name: Install dependencies
19
+ run: |
20
+ pip install --upgrade pip
21
+ pip install --editable ".[dev]"
22
+ - name: Analysing the code with pylint
23
+ run: |
24
+ pylint wintertoo --fail-under=10.00
@@ -0,0 +1,20 @@
1
+ .env
2
+ __pycache__/
3
+ *.pyc
4
+ .DS_Store
5
+ .idea/
6
+
7
+ # Distribution / packaging
8
+ bin/
9
+ build/
10
+ develop-eggs/
11
+ dist/
12
+ eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ *.egg-info/
19
+ .installed.cfg
20
+ *.egg
@@ -0,0 +1,33 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v2.3.0
4
+ hooks:
5
+ - id: check-yaml
6
+ - id: end-of-file-fixer
7
+ - repo: local
8
+ hooks:
9
+ - id: black
10
+ name: black
11
+ entry: black
12
+ language: system
13
+ types: [ python ]
14
+ - repo: local
15
+ hooks:
16
+ - id: isort
17
+ name: isort (python)
18
+ entry: isort
19
+ language: system
20
+ types: [ python ]
21
+ - repo: local
22
+ hooks:
23
+ - id: pylint
24
+ name: pylint
25
+ entry: pylint
26
+ language: system
27
+ types: [python]
28
+ args:
29
+ [
30
+ "-rn", # Only display messages
31
+ "-sn", # Don't display the score
32
+ ]
33
+ verbose: true
@@ -1,33 +1,27 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wintertoo
3
- Version: 0.3.7
4
- Summary:
5
- Home-page: https://github.com/winter-telescope/wintertoo
6
- Author: Danielle Frostig
7
- Author-email: frostig@mit.edu
8
- Requires-Python: >=3.9.0,<3.12
3
+ Version: 0.3.8
4
+ Author-email: Robert Stein <rdstein@caltech.edu>, Danielle Frostig <frostig@mit.edu>, Viraj Karambelkar <viraj@astro.caltech.edu>
5
+ License: MIT
6
+ Project-URL: homepage, https://github.com/winter-telescope/wintertoo
9
7
  Classifier: Programming Language :: Python :: 3
10
8
  Classifier: Programming Language :: Python :: 3.9
11
9
  Classifier: Programming Language :: Python :: 3.10
12
10
  Classifier: Programming Language :: Python :: 3.11
13
- Requires-Dist: astroplan (>=0.8)
14
- Requires-Dist: astropy (>=5.2.1)
15
- Requires-Dist: bcrypt (>=4.0.1,<5.0.0)
16
- Requires-Dist: black (>=23.1.0,<24.0.0)
17
- Requires-Dist: coveralls (>=3.3.1)
18
- Requires-Dist: isort (>=5.12.0,<6.0.0)
19
- Requires-Dist: jsonschema (>=4.17.3)
20
- Requires-Dist: matplotlib (>=3.7.0)
21
- Requires-Dist: numpy (>=1.24.2)
22
- Requires-Dist: pandas (>=2.0.2)
23
- Requires-Dist: pre-commit (>=3.2.2)
24
- Requires-Dist: psycopg (>=3.1.8)
25
- Requires-Dist: psycopg-binary (>=3.1.8)
26
- Requires-Dist: pydantic (>=1.10.5)
27
- Requires-Dist: pylint (>=2.16.2,<3.0.0)
28
- Requires-Dist: pytz (>=2022.7.1)
29
- Requires-Dist: sqlalchemy (>=2.0.4)
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: Intended Audience :: End Users/Desktop
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Natural Language :: English
15
+ Classifier: Topic :: Scientific/Engineering
16
+ Classifier: Topic :: Scientific/Engineering :: Astronomy
17
+ Classifier: Topic :: Scientific/Engineering :: Physics
18
+ Classifier: Operating System :: POSIX
19
+ Classifier: Operating System :: Unix
20
+ Classifier: Operating System :: MacOS
21
+ Requires-Python: >=3.9
30
22
  Description-Content-Type: text/markdown
23
+ Provides-Extra: dev
24
+ License-File: LICENSE
31
25
 
32
26
  # wintertoo
33
27
  [![PyPI version](https://badge.fury.io/py/wintertoo.svg)](https://badge.fury.io/py/wintertoo)
@@ -41,3 +35,15 @@ Current functionality includes:
41
35
  * Building ToO schedules
42
36
  * Verifying ToO schedules
43
37
 
38
+ ## Installation
39
+ ### Install from pypi
40
+ ```bash
41
+ pip install wintertoo
42
+ ```
43
+
44
+ ### Install from source
45
+ ```bash
46
+ git clone git@github.com:winter-telescope/wintertoo.git
47
+ cd wintertoo
48
+ pip install --editable ".[dev]"
49
+ ```
@@ -9,3 +9,16 @@ Current functionality includes:
9
9
  * Converting RA/DEC positions to fields
10
10
  * Building ToO schedules
11
11
  * Verifying ToO schedules
12
+
13
+ ## Installation
14
+ ### Install from pypi
15
+ ```bash
16
+ pip install wintertoo
17
+ ```
18
+
19
+ ### Install from source
20
+ ```bash
21
+ git clone git@github.com:winter-telescope/wintertoo.git
22
+ cd wintertoo
23
+ pip install --editable ".[dev]"
24
+ ```
@@ -0,0 +1,98 @@
1
+ [build-system]
2
+ requires = ["setuptools>=45", "setuptools-scm"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "wintertoo"
7
+ version = "0.3.8"
8
+ description = ""
9
+ authors = [
10
+ {name = "Robert Stein", email = "rdstein@caltech.edu"},
11
+ {name = "Danielle Frostig", email = "frostig@mit.edu"},
12
+ {name = "Viraj Karambelkar", email = "viraj@astro.caltech.edu"}
13
+ ]
14
+ license = {text = "MIT"}
15
+ readme = "README.md"
16
+ requires-python = ">=3.9"
17
+ classifiers = [
18
+ "Programming Language :: Python :: 3",
19
+ 'Programming Language :: Python :: 3.9',
20
+ 'Programming Language :: Python :: 3.10',
21
+ 'Programming Language :: Python :: 3.11',
22
+ 'Intended Audience :: Science/Research',
23
+ 'Intended Audience :: End Users/Desktop',
24
+ 'Intended Audience :: Developers',
25
+ 'Natural Language :: English',
26
+ 'Topic :: Scientific/Engineering',
27
+ 'Topic :: Scientific/Engineering :: Astronomy',
28
+ 'Topic :: Scientific/Engineering :: Physics',
29
+ 'Operating System :: POSIX',
30
+ 'Operating System :: Unix',
31
+ 'Operating System :: MacOS',
32
+ ]
33
+ dependencies = [
34
+ "pandas >= 2.0.0",
35
+ "astropy",
36
+ "astroplan",
37
+ "matplotlib",
38
+ "numpy",
39
+ "pytz",
40
+ "jsonschema",
41
+ "sqlalchemy",
42
+ "pydantic",
43
+ "pre-commit",
44
+ "bcrypt",
45
+ "psycopg",
46
+ "psycopg-binary"
47
+ ]
48
+ [project.optional-dependencies]
49
+ dev = [
50
+ "black == 23.3.0",
51
+ "isort == 5.12.0",
52
+ "pylint == 2.17.4",
53
+ "coveralls",
54
+ ]
55
+
56
+ [project.urls]
57
+ homepage = "https://github.com/winter-telescope/wintertoo"
58
+
59
+ [tool.setuptools]
60
+ packages = ["wintertoo", "wintertoo.models", "wintertoo.data"]
61
+
62
+ [tool.coverage.run]
63
+ source = ["wintertoo"]
64
+
65
+ [tool.coverage.report]
66
+ # Regexes for lines to exclude from consideration
67
+ exclude_lines = [
68
+ # Have to re-enable the standard pragma
69
+ "pragma: no cover",
70
+ # Don't complain about missing debug-only code:
71
+ "def __repr__",
72
+ # Don't complain if tests don't hit defensive assertion code:
73
+ "raise AssertionError",
74
+ "raise NotImplementedError",
75
+ "raise KeyError",
76
+ "except KeyError",
77
+ "raise ValueError",
78
+ "except JSONDecodeError:",
79
+ "raise requests.exceptions.RequestException",
80
+ # Don't complain if non-runnable code isn't run:
81
+ "if 0:",
82
+ "if False:",
83
+ 'if __name__ == "__main__":',
84
+ "err =",
85
+ "logger.error",
86
+ "raise"
87
+ ]
88
+ ignore_errors = true
89
+
90
+ [tool.isort]
91
+ profile = "black"
92
+
93
+ [tool.pylint.format]
94
+ max-line-length = "88"
95
+ disable=["logging-fstring-interpolation"]
96
+ good-names=["ax", "ra", "df", "pi", "i"]
97
+ exclude-too-few-public-methods=["pydantic.*"]
98
+ extension-pkg-whitelist=["pydantic"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,58 @@
1
+ """
2
+ Module for testing submission of a schedule
3
+ """
4
+ import logging
5
+ import unittest
6
+
7
+ from wintertoo.fields import get_best_field, get_field_info, get_fields_in_box
8
+
9
+ logger = logging.getLogger(__name__)
10
+
11
+
12
+ class TestField(unittest.TestCase):
13
+ """
14
+ Class for schedule testing
15
+ """
16
+
17
+ def test_get_fields_in_box(self):
18
+ """
19
+ Test getting fields in box
20
+
21
+ :return: None
22
+ """
23
+ logger.info("Testing getting fields in box")
24
+
25
+ ra_deg = 210.910674637
26
+ dec_deg = 54.3116510708
27
+
28
+ width = 0.7
29
+
30
+ ra_lim = (ra_deg - width, ra_deg + width)
31
+ dec_lim = (dec_deg - width, dec_deg + width)
32
+
33
+ fields = get_fields_in_box(ra_lim, dec_lim, summer=True)
34
+
35
+ assert len(fields) == 17, "Wrong number of fields"
36
+ assert fields["ID"].iloc[0] == 55286, "Wrong field"
37
+
38
+ fields = get_fields_in_box(ra_lim, dec_lim, summer=False)
39
+
40
+ assert len(fields) == 2, "Wrong number of fields"
41
+ assert fields["ID"].iloc[0] == 3735, "Wrong field"
42
+
43
+ def test_get_field_info(self):
44
+ """
45
+ Test getting field info
46
+
47
+ :return: None
48
+ """
49
+ get_field_info(55286, summer=True)
50
+ get_field_info(3735, summer=False)
51
+
52
+ def test_get_best_field(self):
53
+ """
54
+ Test getting best field
55
+
56
+ :return: None
57
+ """
58
+ get_best_field(210.910674637, 54.3116510708, summer=True, make_plot=True)
@@ -0,0 +1,124 @@
1
+ """
2
+ Module for testing submission of a schedule
3
+ """
4
+ import logging
5
+ import os
6
+ import unittest
7
+ from datetime import date
8
+
9
+ import pandas as pd
10
+ from astropy.time import Time
11
+
12
+ from wintertoo.models import Program, SummerFieldToO, SummerRaDecToO
13
+ from wintertoo.schedule import concat_toos, schedule_field, schedule_ra_dec
14
+ from wintertoo.submit import export_schedule_to_sqlitedb
15
+ from wintertoo.validate import (
16
+ validate_obshist,
17
+ validate_schedule_df,
18
+ validate_target_dates,
19
+ validate_target_pi,
20
+ validate_target_priority,
21
+ validate_target_visibility,
22
+ )
23
+
24
+ logger = logging.getLogger(__name__)
25
+
26
+ test_data_dir = os.path.join(os.path.dirname(__file__), "testdata")
27
+ test_json_path = os.path.join(test_data_dir, "test_schedule.json")
28
+ test_df = pd.read_json(test_json_path)
29
+
30
+ program = Program(
31
+ pi_name="Stein",
32
+ progname="2021A000",
33
+ prog_key="763244309190298696786072636901190268976229595667748695826878",
34
+ maxpriority=100,
35
+ startdate=date(2021, 1, 1),
36
+ enddate=date(2023, 12, 31),
37
+ )
38
+
39
+
40
+ class TestSchedule(unittest.TestCase):
41
+ """
42
+ Class for schedule testing
43
+ """
44
+
45
+ def test_validate_json(self):
46
+ """
47
+ Test validation of json
48
+
49
+ :return: None
50
+ """
51
+ logger.info("Testing the validation with a test json")
52
+ validate_schedule_df(test_df)
53
+
54
+ def test_generate_schedule(self):
55
+ """
56
+ Test generating a schedule
57
+
58
+ :return: None
59
+ """
60
+ logger.info("Testing schedule generation")
61
+
62
+ schedule = schedule_ra_dec(
63
+ too=SummerRaDecToO(
64
+ ra_deg=173.7056754,
65
+ dec_deg=11.253441,
66
+ start_time_mjd=62721.1894969287,
67
+ end_time_mjd=62722.1894969452,
68
+ ),
69
+ program=program,
70
+ )
71
+
72
+ validate_target_visibility(schedule)
73
+
74
+ comp = pd.read_json(schedule.to_json()) # pylint: disable=no-member
75
+ self.assertEqual(test_df.to_json(), comp.to_json()) # pylint: disable=no-member
76
+
77
+ schedule = schedule_ra_dec(
78
+ too=SummerRaDecToO(
79
+ ra_deg=173.7056754,
80
+ dec_deg=11.253441,
81
+ ),
82
+ program=program,
83
+ )
84
+
85
+ validate_schedule_df(schedule)
86
+ validate_obshist(schedule)
87
+
88
+ validate_target_priority(schedule=schedule, max_priority=program.maxpriority)
89
+
90
+ program_start_date = Time(str(program.startdate), format="isot")
91
+
92
+ program_end_date = Time(str(program.enddate), format="isot")
93
+
94
+ validate_target_dates(
95
+ schedule,
96
+ program_start_date=program_start_date,
97
+ program_end_date=program_end_date,
98
+ )
99
+ validate_target_pi(schedule, prog_pi=program.pi_name)
100
+
101
+ export_schedule_to_sqlitedb(schedule, "test_schedule.db")
102
+
103
+ def test_schedule_utils(self):
104
+ """
105
+ Test generating a schedule
106
+
107
+ :return: None
108
+ """
109
+ logger.info("Testing schedule util functions")
110
+
111
+ field_too = SummerFieldToO(
112
+ field_id=1,
113
+ )
114
+
115
+ schedule_field(
116
+ field_too,
117
+ program=program,
118
+ csv_save_file="test_schedule.csv",
119
+ )
120
+
121
+ concat_toos(
122
+ [field_too, SummerRaDecToO(ra_deg=173.7056754, dec_deg=11.253441)],
123
+ program=program,
124
+ )
@@ -0,0 +1 @@
1
+ {"raDeg":{"0":173.60947,"1":173.60947,"2":173.60947,"3":173.60947},"decDeg":{"0":11.16715,"1":11.16715,"2":11.16715,"3":11.16715},"fieldID":{"0":244641,"1":244641,"2":244641,"3":244641},"filter":{"0":"u","1":"g","2":"r","3":"i"},"visitExpTime":{"0":30.0,"1":30.0,"2":30.0,"3":30.0},"priority":{"0":50.0,"1":50.0,"2":50.0,"3":50.0},"progPI":{"0":"Stein","1":"Stein","2":"Stein","3":"Stein"},"progName":{"0":"2021A000","1":"2021A000","2":"2021A000","3":"2021A000"},"progID":{"0":1,"1":1,"2":1,"3":1},"validStart":{"0":62721.1894969287,"1":62721.1894969287,"2":62721.1894969287,"3":62721.1894969287},"validStop":{"0":62722.1894969452,"1":62722.1894969452,"2":62722.1894969452,"3":62722.1894969452},"observed":{"0":false,"1":false,"2":false,"3":false},"maxAirmass":{"0":2.0,"1":2.0,"2":2.0,"3":2.0},"ditherNumber":{"0":1,"1":1,"2":1,"3":1},"ditherStepSize":{"0":15.0,"1":15.0,"2":15.0,"3":15.0},"obsHistID":{"0":0,"1":1,"2":2,"3":3}}
@@ -174,12 +174,12 @@ def concat_toos(
174
174
  schedule = []
175
175
 
176
176
  for too in requests:
177
- if isinstance(too, Union[SummerFieldToO, WinterFieldToO]):
177
+ if isinstance(too, (SummerFieldToO, WinterFieldToO)):
178
178
  res = schedule_field(
179
179
  too=too,
180
180
  program=program,
181
181
  )
182
- elif isinstance(too, Union[SummerRaDecToO, WinterRaDecToO]):
182
+ elif isinstance(too, (SummerRaDecToO, WinterRaDecToO)):
183
183
  res = schedule_ra_dec(
184
184
  too=too,
185
185
  program=program,
@@ -0,0 +1,49 @@
1
+ Metadata-Version: 2.1
2
+ Name: wintertoo
3
+ Version: 0.3.8
4
+ Author-email: Robert Stein <rdstein@caltech.edu>, Danielle Frostig <frostig@mit.edu>, Viraj Karambelkar <viraj@astro.caltech.edu>
5
+ License: MIT
6
+ Project-URL: homepage, https://github.com/winter-telescope/wintertoo
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: Programming Language :: Python :: 3.9
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: Intended Audience :: End Users/Desktop
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Natural Language :: English
15
+ Classifier: Topic :: Scientific/Engineering
16
+ Classifier: Topic :: Scientific/Engineering :: Astronomy
17
+ Classifier: Topic :: Scientific/Engineering :: Physics
18
+ Classifier: Operating System :: POSIX
19
+ Classifier: Operating System :: Unix
20
+ Classifier: Operating System :: MacOS
21
+ Requires-Python: >=3.9
22
+ Description-Content-Type: text/markdown
23
+ Provides-Extra: dev
24
+ License-File: LICENSE
25
+
26
+ # wintertoo
27
+ [![PyPI version](https://badge.fury.io/py/wintertoo.svg)](https://badge.fury.io/py/wintertoo)
28
+ [![CI](https://github.com/winter-telescope/wintertoo/actions/workflows/continuous_integration.yml/badge.svg)](https://github.com/winter-telescope/wintertoo/actions/workflows/continuous_integration.yml)
29
+ [![Coverage Status](https://coveralls.io/repos/github/winter-telescope/wintertoo/badge.svg?branch=main)](https://coveralls.io/github/winter-telescope/wintertoo?branch=main)
30
+
31
+ General package for Target-of-Opportunity (ToO) observations with the [WINTER observatory](https://github.com/winter-telescope).
32
+
33
+ Current functionality includes:
34
+ * Converting RA/DEC positions to fields
35
+ * Building ToO schedules
36
+ * Verifying ToO schedules
37
+
38
+ ## Installation
39
+ ### Install from pypi
40
+ ```bash
41
+ pip install wintertoo
42
+ ```
43
+
44
+ ### Install from source
45
+ ```bash
46
+ git clone git@github.com:winter-telescope/wintertoo.git
47
+ cd wintertoo
48
+ pip install --editable ".[dev]"
49
+ ```
@@ -0,0 +1,33 @@
1
+ .gitignore
2
+ .pre-commit-config.yaml
3
+ LICENSE
4
+ README.md
5
+ pyproject.toml
6
+ .github/workflows/black.yml
7
+ .github/workflows/continuous_integration.yml
8
+ .github/workflows/isort.yml
9
+ .github/workflows/pylint.yml
10
+ tests/test_fields.py
11
+ tests/test_schedule.py
12
+ tests/testdata/test_schedule.json
13
+ wintertoo/__init__.py
14
+ wintertoo/database.py
15
+ wintertoo/errors.py
16
+ wintertoo/fields.py
17
+ wintertoo/schedule.py
18
+ wintertoo/submit.py
19
+ wintertoo/utils.py
20
+ wintertoo/validate.py
21
+ wintertoo.egg-info/PKG-INFO
22
+ wintertoo.egg-info/SOURCES.txt
23
+ wintertoo.egg-info/dependency_links.txt
24
+ wintertoo.egg-info/requires.txt
25
+ wintertoo.egg-info/top_level.txt
26
+ wintertoo/data/__init__.py
27
+ wintertoo/data/observing_request_schema.json
28
+ wintertoo/data/summer_fields.txt
29
+ wintertoo/data/winter_fields.txt
30
+ wintertoo/models/__init__.py
31
+ wintertoo/models/image.py
32
+ wintertoo/models/program.py
33
+ wintertoo/models/too.py
@@ -0,0 +1,19 @@
1
+ pandas>=2.0.0
2
+ astropy
3
+ astroplan
4
+ matplotlib
5
+ numpy
6
+ pytz
7
+ jsonschema
8
+ sqlalchemy
9
+ pydantic
10
+ pre-commit
11
+ bcrypt
12
+ psycopg
13
+ psycopg-binary
14
+
15
+ [dev]
16
+ black==23.3.0
17
+ isort==5.12.0
18
+ pylint==2.17.4
19
+ coveralls
@@ -0,0 +1 @@
1
+ wintertoo
@@ -1,45 +0,0 @@
1
- [tool.poetry]
2
- name = "wintertoo"
3
- version = "0.3.7"
4
- description = ""
5
- authors = [
6
- "Danielle Frostig <frostig@mit.edu>",
7
- "Viraj Karambelkar <viraj@astro.caltech.edu>",
8
- "Robert Stein <rdstein@caltech.edu>"
9
- ]
10
- readme = "README.md"
11
- homepage = "https://github.com/winter-telescope/wintertoo"
12
-
13
- [tool.poetry.dependencies]
14
- python = ">=3.9.0,<3.12"
15
- pandas = ">=2.0.2"
16
- astropy = ">=5.2.1"
17
- astroplan = ">=0.8"
18
- matplotlib = ">=3.7.0"
19
- numpy = ">=1.24.2"
20
- pytz = ">=2022.7.1"
21
- psycopg = ">=3.1.8"
22
- black = "^23.1.0"
23
- isort = "^5.12.0"
24
- pylint = "^2.16.2"
25
- coveralls = ">=3.3.1"
26
- jsonschema = ">=4.17.3"
27
- psycopg-binary = ">=3.1.8"
28
- sqlalchemy = ">=2.0.4"
29
- pydantic = ">=1.10.5"
30
- pre-commit = ">=3.2.2"
31
- bcrypt = "^4.0.1"
32
-
33
- [tool.isort]
34
- profile = "black"
35
-
36
- [tool.pylint.format]
37
- max-line-length = "88"
38
- disable=["logging-fstring-interpolation"]
39
- good-names=["ax", "ra", "df", "pi", "i"]
40
- exclude-too-few-public-methods=["pydantic.*"]
41
- extension-pkg-whitelist=["pydantic"]
42
-
43
- [build-system]
44
- requires = ["poetry-core"]
45
- build-backend = "poetry.core.masonry.api"
File without changes
File without changes
File without changes
File without changes
File without changes