Skip to content

Commit

Permalink
Release commit created with Cranko.
Browse files Browse the repository at this point in the history
+++ cranko-release-info-v1
[[projects]]
qnames = ["pywwt", "npm"]
version = "1.3.2"
age = 0

[[projects]]
qnames = ["pywwt", "pypa"]
version = "0.15.0"
age = 0

+++
  • Loading branch information
cranko committed Jan 14, 2022
2 parents a477fb1 + 4c20d8e commit 4414f93
Show file tree
Hide file tree
Showing 121 changed files with 4,345 additions and 1,611 deletions.
5 changes: 1 addition & 4 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
/docs/_build/
/docs/_static/embed-bundle.js
/docs/_static/embed-bundle.js.map
/pywwt/labextension/
Expand All @@ -24,10 +25,6 @@ htmlcov
MANIFEST
.ipynb_checkpoints

# Sphinx
docs/api
docs/_build

# Eclipse editor project files
.project
.pydevproject
Expand Down
2 changes: 1 addition & 1 deletion .readthedocs_env.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ channels:

dependencies:
- astropy
- astropy-sphinx-theme
- commonmark
- ipyevents
- ipython
Expand All @@ -29,5 +30,4 @@ dependencies:
- setuptools
- sphinx
- sphinx-automodapi
- sphinx_rtd_theme
- widgetsnbextension
30 changes: 29 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,31 @@
# pypa:pywwt 0.15.0 (2022-01-14)

This release adds support for viewing arbitrarily-sized FITS files in pywwt,
with automatic tiling provided by the [Toasty] library!

[Toasty]: https://toasty.readthedocs.io/

- Extend the existing FITS viewing support to automatically tile FITS images if
needed, using either Toasty or CDS' hipsgen depending on the angular size of
the image (#316, @imbasimba). While the Python interfaces don't look any
different, there is now a lot more machinery under the hood so that pywwt can
perform well whether your FITS file is a megabyte or a gigabyte in size.
- Use the new [WWT Kernel Data Relay][kdr] (KDR) for serving up kernel-side data
in Jupyter (#316, @pkgw, @imbasimba). You will now need to install the Python
package `wwt_kernel_data_relay` as a Jupyter Server extension for FITS viewing
to work in pywwt. This extension is necessary for pywwt to be able to send
FITS data to the WWT web app on-demand, as you navigate an image. The KDR
extension should be useful for other similar visualization tools as well.
- Lots of other under-the-hood work to get asynchronous tiling and data service
working smoothly.
- Automatically use better default names and data cuts when viewing FITS files
(#323, @imbasimba).
- Substantially clean up and (hopefully) improve the documentation (#318, #324,
@pkgw). This includes a new documentation theme based on the Astropy docs.

[kdr]: https://github.com/WorldWideTelescope/wwt_kernel_data_relay/#readme


# pypa:pywwt 0.14.0 (2021-11-01)

- When pywwt is installed as a Jupyter server extension, have it provide its
Expand All @@ -17,7 +45,7 @@

# pypa:pywwt 0.13.0 (2021-09-24)

This is an important release, updating all variations of the pywwt UI ­— the Qt
This is an important release, updating all variations of the pywwt UI — the Qt
widget, the ipywidgets widget, and the JupyterLab integration — to use the WWT
“research app”, instead of the old hand-coded HTML/JS wrapper that was specific
to pywwt. This enables us to take advantage of the app's much more sophisticated
Expand Down
25 changes: 21 additions & 4 deletions ci/azure-build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,27 @@ jobs:
env:
PYWWT_TEST_IMAGE_DIR: $(Build.ArtifactStagingDirectory)
# We used to publish the test image artifacts regardless of whether the test
# succeeded or failed (using `condition: true`). This led to an annoying
# behavior, though, where if an image test failed spuriously, you'd have to
# rerun the entire build: if the test succeeded the next time, the
# publication step would fail because you can't upload artifacts under the
# same name more than once. So now, we only publish the images if the tests
# failed: that way, "rerun failed jobs" will be able to resolve a spurious
# failure efficiently. This is especially valuable in Cranko release and RC
# builds. If an image test fails *non*-spuriously, you'll only be able to
# obtain artifacts from the first failure in given build ... but that was
# what was happening with `condition: true` anyway.
#
# We might want to turn this into some kind of top-level pipeline parameter
# because I think there will be occasions where it would be nice to gather
# the image data for all of the image tests, including the successful ones.
# But that's more of a once-in-a-long-while thing, while the rerun issue
# rears in say ~5% of PR builds.

- task: PublishPipelineArtifact@1
displayName: Publish generated test images
condition: true # run even (especially!) if test fails
displayName: Publish failing test images
condition: not(succeeded())
inputs:
targetPath: $(Build.ArtifactStagingDirectory)
artifactName: ${{ format('test_images_{0}', build.name) }}
Expand Down Expand Up @@ -210,8 +228,7 @@ jobs:
source activate-conda.sh
conda activate build
set -x
\conda install -y astropy jupyter_sphinx numpydoc sphinx sphinx-automodapi sphinx_rtd_theme
pip install astropy-sphinx-theme
\conda install -y astropy astropy-sphinx-theme jupyter_sphinx numpydoc sphinx sphinx-automodapi
cd docs
make html
displayName: Build docs
Expand Down
163 changes: 163 additions & 0 deletions docs/_static/sidebar.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
/*
* sidebar.js
* ~~~~~~~~~~
*
* This script makes the Sphinx sidebar collapsible.
*
* .sphinxsidebar contains .sphinxsidebarwrapper. This script adds
* in .sphixsidebar, after .sphinxsidebarwrapper, the #sidebarbutton
* used to collapse and expand the sidebar.
*
* When the sidebar is collapsed the .sphinxsidebarwrapper is hidden
* and the width of the sidebar and the margin-left of the document
* are decreased. When the sidebar is expanded the opposite happens.
* This script saves a per-browser/per-session cookie used to
* remember the position of the sidebar among the pages.
* Once the browser is closed the cookie is deleted and the position
* reset to the default (expanded).
*
* :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/

$(function() {
// global elements used by the functions.
// the 'sidebarbutton' element is defined as global after its
// creation, in the add_sidebar_button function
var bodywrapper = $('.bodywrapper');
var sidebar = $('.sphinxsidebar');
var sidebarwrapper = $('.sphinxsidebarwrapper');

// for some reason, the document has no sidebar; do not run into errors
if (!sidebar.length) return;

// original margin-left of the bodywrapper and width of the sidebar
// with the sidebar expanded
var bw_margin_expanded = bodywrapper.css('margin-left');
var ssb_width_expanded = sidebar.width();

// margin-left of the bodywrapper and width of the sidebar
// with the sidebar collapsed
var bw_margin_collapsed = 12;
var ssb_width_collapsed = 12;

// custom colors
var dark_color = '#404040';
var light_color = '#EEE';
var border_color = '#BBB';

function sidebar_is_collapsed() {
return sidebarwrapper.is(':not(:visible)');
}

function toggle_sidebar() {
if (sidebar_is_collapsed())
expand_sidebar();
else
collapse_sidebar();
}

function collapse_sidebar() {
sidebarwrapper.hide();
sidebar.css('width', ssb_width_collapsed);
bodywrapper.css('margin-left', bw_margin_collapsed);
sidebarbutton.css({
'margin-left': '-1px',
'height': bodywrapper.height(),
'border-radius': '3px'
});
sidebarbutton.find('span').text('»');
sidebarbutton.attr('title', _('Expand sidebar'));
document.cookie = 'sidebar=collapsed';
}

function expand_sidebar() {
bodywrapper.css('margin-left', bw_margin_expanded);
sidebar.css('width', ssb_width_expanded);
sidebarwrapper.show();
sidebarbutton.css({
'margin-left': ssb_width_expanded - 12,
'height': bodywrapper.height(),
'border-radius': '0px 3px 3px 0px'
});
sidebarbutton.find('span').text('«');
sidebarbutton.attr('title', _('Collapse sidebar'));
document.cookie = 'sidebar=expanded';
}

function add_sidebar_button() {
sidebarwrapper.css({
'float': 'left',
'margin-right': '0',
'width': ssb_width_expanded - 18
});
// create the button
sidebar.append('<div id="sidebarbutton"><span>&laquo;</span></div>');
var sidebarbutton = $('#sidebarbutton');

// find the height of the viewport to center the '<<' in the page
var viewport_height;
if (window.innerHeight)
viewport_height = window.innerHeight;
else
viewport_height = $(window).height();
var sidebar_offset = sidebar.offset().top;
var sidebar_height = Math.max(bodywrapper.height(), sidebar.height());
sidebarbutton.find('span').css({
'font-family': '"Lucida Grande",Arial,sans-serif',
'display': 'block',
'top': Math.min(viewport_height/2, sidebar_height/2 + sidebar_offset) - 10,
'width': 12,
'position': 'fixed',
'text-align': 'center'
});

sidebarbutton.click(toggle_sidebar);
sidebarbutton.attr('title', _('Collapse sidebar'));
sidebarbutton.css({
'color': '#FFFFFF',
'background-color': light_color,
'border-top': '1px solid ' + border_color,
'border-right': '1px solid ' + border_color,
'border-bottom': '1px solid ' + border_color,
'border-radius': '0px 3px 3px 0px',
'font-size': '1.2em',
'cursor': 'pointer',
'height': sidebar_height,
'padding-top': '1px',
'margin': '-1px',
'margin-left': ssb_width_expanded - 12
});

sidebarbutton.hover(
function () {
$(this).css('background-color', dark_color);
},
function () {
$(this).css('background-color', light_color);
}
);
}

function set_position_from_cookie() {
if (!document.cookie)
return;
var items = document.cookie.split(';');
for(var k=0; k<items.length; k++) {
var key_val = items[k].split('=');
var key = key_val[0];
if (key == 'sidebar') {
var value = key_val[1];
if ((value == 'collapsed') && (!sidebar_is_collapsed()))
collapse_sidebar();
else if ((value == 'expanded') && (sidebar_is_collapsed()))
expand_sidebar();
}
}
}

add_sidebar_button();
var sidebarbutton = $('#sidebarbutton');
set_position_from_cookie();
});
3 changes: 3 additions & 0 deletions docs/_static/wwtcustom.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
div.topbar {
width: auto;
}
25 changes: 22 additions & 3 deletions docs/_templates/layout.html
Original file line number Diff line number Diff line change
@@ -1,8 +1,27 @@
{% extends "sphinx_rtd_theme/layout.html" %}

{% block extrahead %}
{% extends "!layout.html" %}
{%- block extrahead %}
{% if not embedded %}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="{{ pathto('_static/copybutton.js', 1) }}"></script>
<link rel="stylesheet" type="text/css" href="{{ pathto('_static/wwtcustom.css', 1) }}" />
{% endif %}
{% endblock %}

{# astropy hardcodes a link to astropy.org in the header bar, which we don't want #}
{# It also hardcodes an Astropy logo in the `a.brand` element that we remove #}
{% block header %}
<div class="topbar">
<a class="brand" title="{{ _('Documentation Home') }}" href="{{ pathto(master_doc) }}"
style="background: transparent;"><span id="logotext1">{{ theme_logotext1 }}</span><span id="logotext2">{{
theme_logotext2 }}</span><span id="logotext3">{{ theme_logotext3 }}</span></a>
<ul>
<li><a title="{{ _('General Index') }}" href="{{ pathto('genindex') }}">Index</a></li>
<li><a title="{{ _('Module Index') }}" href="{{ pathto('py-modindex') }}">Modules</a></li>
<li>
{% block sidebarsearch %}
{% include "searchbox.html" %}
{% endblock %}
</li>
</ul>
</div>
{% endblock %}
30 changes: 0 additions & 30 deletions docs/api.rst

This file was deleted.

35 changes: 35 additions & 0 deletions docs/api/pywwt.Annotation.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
Annotation
==========

.. currentmodule:: pywwt

.. autoclass:: Annotation
:show-inheritance:

.. rubric:: Attributes Summary

.. autosummary::

~Annotation.hover_label
~Annotation.label
~Annotation.opacity
~Annotation.shape
~Annotation.tag

.. rubric:: Methods Summary

.. autosummary::

~Annotation.remove

.. rubric:: Attributes Documentation

.. autoattribute:: hover_label
.. autoattribute:: label
.. autoattribute:: opacity
.. autoattribute:: shape
.. autoattribute:: tag

.. rubric:: Methods Documentation

.. automethod:: remove
Loading

0 comments on commit 4414f93

Please sign in to comment.