Skip to content

Commit 78ad809

Browse files
authored
Merge pull request spacetelescope#647 from bourque/v0.24.0
v0.24.0 Release [master]
2 parents 4f035a0 + 75eb273 commit 78ad809

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+3897
-1168
lines changed

CHANGES.rst

+52
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,55 @@
1+
0.24.0 (2020-10-20)
2+
===================
3+
4+
New Features
5+
------------
6+
7+
Project & API Documentation
8+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
9+
10+
- Added API documentation for Bias, Bad Pixel, and Readnoise Monitors
11+
12+
Web Application
13+
~~~~~~~~~~~~~~~
14+
15+
- Added webpage that describes how to use the JWQL web app API
16+
- Added webpage that enables a user to query the ``jwqldb`` database contents
17+
- Enabled more search options and aesthetic improvements for anomaly query webpage
18+
19+
``jwql`` Repository
20+
~~~~~~~~~~~~~~~~~~~
21+
22+
- Added support for Python versions 3.7 and 3.8
23+
- Added unit tests for Readnoise Monitor
24+
- Added unit tests for Bias Monitor
25+
- Added unit tests for Bad Pixel Monitor
26+
- Added unit tests for ``bokeh`` templating library
27+
- Added webpage for displaying Readnoise Monitor results with ``bokeh`` plots
28+
- Added webpage for displaying Bad Pixel Monitor results with ``bokeh`` plots
29+
30+
31+
Bug Fixes
32+
---------
33+
34+
Project & API Documentation
35+
~~~~~~~~~~~~~~~~~~~~~~~~~~~
36+
37+
- Updated broken links to JWST instrument JDox pages
38+
39+
Web Application
40+
~~~~~~~~~~~~~~~
41+
42+
- Fixed various issues that was cuasing authentication through ``auth.mast`` to fail
43+
44+
``jwql`` Repository
45+
~~~~~~~~~~~~~~~~~~~
46+
47+
- Fixed bug that was causing Dark Monitor to crash on recently added apertures from ``pysiaf``
48+
- Fixed several bugs in ``bokeh`` templating library
49+
- Fixed bug that was causing unit tests for ``permissions.py`` to fail
50+
- Fixed bug that was causing ``most_recent_search`` function in Dark Monitor to fail
51+
52+
153
0.23.0 (2020-07-01)
254
===================
355

Jenkinsfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ if (utils.scm_checkout()) return
2727

2828
// Establish OS and Python version variables for the matrix
2929
matrix_os = ["linux-stable"] // (Note that Jenkins can only be run with Linux, not MacOSX/Windows)
30-
matrix_python = ["3.6"]
30+
matrix_python = ["3.6", "3.7", "3.8"]
3131

3232
// Set up the matrix of builds
3333
matrix = []

README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ The JWST Quicklook Application (`JWQL`) is a database-driven web application and
2121

2222
Official API documentation can be found on [ReadTheDocs](https://jwql.readthedocs.io)
2323

24-
The `jwql` application is currently under heavy development. The `1.0` release is expected in 2019. Currently, a development version of the web application can be found at [https://dljwql.stsci.edu](https://dljwql.stsci.edu).
24+
The `jwql` application is currently under heavy development. The `1.0` release is expected in 2021. Currently, a development version of the web application can be found at [https://dljwql.stsci.edu](https://dljwql.stsci.edu).
2525

2626
## Installation for Users
2727

@@ -177,7 +177,8 @@ Any questions about the `jwql` project or its software can be directed to `jwql@
177177
- Van Dixon (INS)
178178
- Tom Donaldson (DMD) [@tomdonaldson](https://github.com/tomdonaldson)
179179
- Kim DuPrie (DMD)
180-
- Jonathan Eisenhamer (DMD) [@stscieisenhamer](https://githublcom/stscieisenhamer)
180+
- Jonathan Eisenhamer (DMD) [@stscieisenhamer](https://github.com/stscieisenhamer)
181+
- Ben Falk (DMD) [@falkben](https://github.com/falkben)
181182
- Ann Feild (OPO)
182183
- Mike Fox (DSMO) [@mfox22](https://github.com/mfox22)
183184
- Scott Friedman (INS)

docs/source/common_monitors.rst

+18
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,26 @@
22
common_monitors
33
***************
44

5+
bad_pixel_monitor.py
6+
--------------------
7+
.. automodule:: jwql.instrument_monitors.common_monitors.bad_pixel_monitor
8+
:members:
9+
:undoc-members:
10+
11+
bias_monitor.py
12+
---------------
13+
.. automodule:: jwql.instrument_monitors.common_monitors.bias_monitor
14+
:members:
15+
:undoc-members:
16+
517
dark_monitor.py
618
---------------
719
.. automodule:: jwql.instrument_monitors.common_monitors.dark_monitor
20+
:members:
21+
:undoc-members:
22+
23+
readnoise_monitor.py
24+
--------------------
25+
.. automodule:: jwql.instrument_monitors.common_monitors.readnoise_monitor
826
:members:
927
:undoc-members:

docs/source/tests.rst

+13
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,19 @@ test_api_views.py
88
:members:
99
:undoc-members:
1010

11+
test_bad_pixel_monitor.py
12+
-------------------------
13+
.. automodule:: jwql.tests.test_bad_pixel_monitor
14+
:members:
15+
:undoc-members:
16+
17+
18+
test_bias_monitor.py
19+
--------------------
20+
.. automodule:: jwql.tests.test_bias_monitor
21+
:members:
22+
:undoc-members:
23+
1124
test_calculations.py
1225
--------------------
1326
.. automodule:: jwql.tests.test_calculations

environment_python_3_6.yml

+11-9
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,21 @@ channels:
22
- defaults
33
- http://ssb.stsci.edu/astroconda
44
dependencies:
5-
- astroquery=0.3.10
5+
- astroquery=0.4
6+
- authlib=0.15.1
67
- bokeh>=1.0,<1.4
78
- django=2.2.5
9+
- drizzle=1.13
810
- flake8=3.7.9
911
- inflection=0.3.1
1012
- ipython=7.13.0
1113
- jinja2=2.10.3
1214
- jsonschema=3.2.0
1315
- matplotlib=3.1.0
1416
- nodejs=10.13.0
15-
- numpy=1.16.4
17+
- numpy=1.19.1
1618
- numpydoc=0.9.2
17-
- pandas=1.0.3
19+
- pandas=1.1.1
1820
- pip=19.1.1
1921
- postgresql=9.6.6
2022
- psycopg2=2.7.5
@@ -28,13 +30,13 @@ dependencies:
2830
- sqlalchemy=1.3.17
2931
- twine=2.0.0
3032
- pip:
31-
- asdf==2.6.0
33+
- asdf==2.7.1
3234
- astropy==4.0.1
33-
- authlib==0.14.3
34-
- codecov==2.1.3
35-
- crds==7.5.0.0
35+
- codecov==2.1.9
36+
- crds==10.0.0
37+
- cryptography==3.1.1
3638
- jwedb>=0.0.3
39+
- jwst==0.17.1
3740
- pysqlite3==0.2.2
3841
- stsci_rtd_theme==0.0.2
39-
- git+https://github.com/spacetelescope/[email protected]
40-
- git+https://github.com/spacetelescope/jwst_reffiles
42+
- git+https://github.com/spacetelescope/jwst_reffiles#egg=jwst_reffiles

environment_python_3_7.yml

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
channels:
2+
- defaults
3+
- http://ssb.stsci.edu/astroconda
4+
dependencies:
5+
- astroquery=0.4
6+
- authlib=0.15.1
7+
- bokeh>=1.0,<1.4
8+
- django=3.0.3
9+
- flake8=3.8.3
10+
- inflection=0.3.1
11+
- ipython=7.16.1
12+
- jinja2=2.11.2
13+
- jsonschema=3.2.0
14+
- matplotlib=3.2.2
15+
- nodejs=10.13.0
16+
- numpy=1.18.5
17+
- numpydoc=1.1.0
18+
- pandas=1.1.1
19+
- pip=20.1.1
20+
- postgresql=12.2
21+
- psycopg2=2.8.5
22+
- pysiaf=0.9.0
23+
- python=3.7.7
24+
- pytest=5.4.3
25+
- pytest-cov=2.10.0
26+
- scipy=1.5.0
27+
- setuptools=49.2.0
28+
- sphinx=3.1.2
29+
- sqlalchemy=1.3.18
30+
- twine=2.0.0
31+
- pip:
32+
- asdf==2.7.1
33+
- astropy==4.0.1.post1
34+
- codecov==2.1.9
35+
- crds==10.0.0
36+
- cryptography==3.1.1
37+
- jwedb==0.0.6
38+
- jwst==0.17.1
39+
- pysqlite3==0.4.3
40+
- stsci_rtd_theme==0.0.2
41+
- git+https://github.com/spacetelescope/jwst_reffiles

environment_python_3_8.yml

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
channels:
2+
- defaults
3+
- http://ssb.stsci.edu/astroconda
4+
dependencies:
5+
- authlib=0.15.1
6+
- django=3.0.3
7+
- flake8=3.8.3
8+
- inflection=0.3.1
9+
- ipython=7.16.1
10+
- jinja2=2.11.2
11+
- jsonschema=3.2.0
12+
- matplotlib=3.2.2
13+
- nodejs=10.13.0
14+
- numpy=1.18.5
15+
- numpydoc=1.1.0
16+
- pandas=1.1.1
17+
- pip=20.2.2
18+
- postgresql=12.2
19+
- psycopg2=2.8.5
20+
- python=3.8.5
21+
- pytest=6.0.1
22+
- pytest-cov=2.10.1
23+
- scipy=1.5.0
24+
- setuptools=49.6.0
25+
- sphinx=3.2.1
26+
- twine=2.0.0
27+
- pip:
28+
- asdf==2.7.1
29+
- astropy==4.0.1.post1
30+
- astroquery==0.4.1
31+
- bokeh>=1.0,<1.4
32+
- codecov==2.1.9
33+
- crds==10.0.0
34+
- cryptography==3.1.1
35+
- jwedb==0.0.6
36+
- jwst==0.17.1
37+
- pysiaf==0.9.0
38+
- pysqlite3==0.4.3
39+
- sqlalchemy==1.3.19
40+
- stsci_rtd_theme==0.0.2
41+
- git+https://github.com/spacetelescope/jwst_reffiles

jwql/bokeh_templating/example/example_interface.yaml

+2-11
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,15 @@
1-
- !ColumnDataSource: &dummy # This is a dummy ColumnDataSource used to trigger the controller method whenever a slider is changed.
2-
data:
3-
value: []
4-
on_change: ['data', !self.controller ]
5-
- !CustomJS: &callback # This callback changes the value of the dummy ColumnDataSource data to trigger the controller method.
6-
ref: "callback"
7-
args:
8-
source: *dummy
9-
code: "\n source.data = { value: [cb_obj.value] }\n"
101
- !Slider: &a_slider # a slider for the a value
112
ref: "a_slider"
123
title: "A"
134
value: 4
145
range: !!python/tuple [1, 20, 0.1]
15-
callback: *callback
6+
on_change: ['value', !self.controller ]
167
- !Slider: &b_slider # a slider for the b value
178
ref: "b_slider"
189
title: "B"
1910
value: 2
2011
range: !!python/tuple [1, 20, 0.1]
21-
callback: *callback
12+
on_change: ['value', !self.controller ]
2213
- !ColumnDataSource: &figure_source # the ColumnDataSource for the figure
2314
ref: "figure_source"
2415
data:

jwql/bokeh_templating/example/main.py

+2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
class TestBokehApp(BokehTemplate):
2626
"""This is a minimal ``BokehTemplate`` app."""
27+
28+
_embed = True
2729

2830
def pre_init(self):
2931
"""Before creating the Bokeh interface (by parsing the interface

jwql/bokeh_templating/factory.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ def mapping_factory(tool, element_type):
6666
for an example of how this function is used.
6767
"""
6868

69-
def mapping_constructor(loader, node): #docstring added below
69+
def mapping_constructor(loader, node): # docstring added below
7070
fmt = tool.formats.get(element_type, {})
7171
value = loader.construct_mapping(node, deep=True)
7272
ref = value.pop("ref", "")
@@ -216,9 +216,10 @@ def figure_constructor(tool, loader, node):
216216
figure.js_on_event(*event)
217217

218218
for element in elements:
219-
key = element.pop('kind')
219+
key = element.pop('kind', 'diamond')
220220
shape = {'line': ('Line', figure.line),
221221
'circle': ('Circle', figure.circle),
222+
'step': ('Step', figure.step),
222223
'diamond': ('Diamond', figure.diamond),
223224
'triangle': ('Triangle', figure.triangle),
224225
'square': ('Square', figure.square),

jwql/bokeh_templating/keyword_map.py

+13-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
"""A script to scrape the Bokeh package and collate dictionaries of
1+
"""
2+
A script to scrape the Bokeh package and collate dictionaries of
23
classes and functions.
34
45
The ``_parse_module`` function iterates over a module, and uses the
@@ -34,19 +35,21 @@
3435
from bokeh import layouts, models, palettes, plotting, transform
3536
from inspect import getmembers, isclass, isfunction
3637

37-
from .surface3d import Surface3d
38-
3938
bokeh_sequences = {}
40-
bokeh_mappings = {"Surface3d": Surface3d} # Note that abstract base classes *are* included
39+
bokeh_mappings = {} # Note that abstract base classes *are* included
4140

4241

4342
def _parse_module(module):
44-
"""Sort the members of a module into dictionaries of functions
45-
(sequences) and classes (mappings)."""
46-
47-
test = lambda nm, mem: (not nm.startswith("_")) and (module.__name__ in mem.__module__)
48-
seqs = {nm: mem for nm, mem in getmembers(module, isfunction) if test(nm, mem)}
49-
maps = {nm: mem for nm, mem in getmembers(module, isclass) if test(nm, mem)}
43+
"""
44+
Sort the members of a module into dictionaries of functions (sequences)
45+
and classes (mappings).
46+
"""
47+
48+
def accessible_member(name, member):
49+
return (not name.startswith("_")) and (module.__name__ in member.__module__)
50+
51+
seqs = {nm: mem for nm, mem in getmembers(module, isfunction) if accessible_member(nm, mem)}
52+
maps = {nm: mem for nm, mem in getmembers(module, isclass) if accessible_member(nm, mem)}
5053

5154
# these need to be mappings
5255
if 'gridplot' in seqs:

0 commit comments

Comments
 (0)