[med-svn] [Git][med-team/emperor][upstream] New upstream version 1.0.4+ds
Alexandre Detiste (@detiste-guest)
gitlab at salsa.debian.org
Fri Feb 21 20:57:57 GMT 2025
Alexandre Detiste pushed to branch upstream at Debian Med / emperor
Commits:
8b319ba1 by Alexandre Detiste at 2025-02-21T21:50:16+01:00
New upstream version 1.0.4+ds
- - - - -
11 changed files:
- .github/workflows/main.yml
- ChangeLog.md
- doc/source/conf.py
- emperor/core.py
- emperor/support_files/js/visibility-controller.js
- emperor/support_files/templates/style-template.html
- emperor/util.py
- setup.py
- tests/_test_core_strings.py
- tests/javascript_tests/test_visibility_controller.js
- tests/test_util.py
Changes:
=====================================
.github/workflows/main.yml
=====================================
@@ -30,44 +30,49 @@ jobs:
- name: Set up Node.js enviroment
uses: actions/setup-node at v1
with:
- node-version: 14
+ node-version: 16
- - name: Set up conda
- uses: s-weigand/setup-conda at v1
+ - uses: conda-incubator/setup-miniconda at v2
with:
- update-conda: true
- python-version: 3.6
+ activate-environment: tester
+ python-version: ${{ matrix.python-version }}
conda-channels: anaconda, conda-forge
+ auto-update-conda: true
- name: Install Node.js modules
run: npm install -g jsdoc
- name: Install JS Linter
+ shell: bash -l {0}
run: |
conda create --yes -n gjslint python=2.7 pip six
wget https://github.com/google/closure-linter/archive/master.zip
conda run -n gjslint pip install master.zip
- name: Install Emperor
+ shell: bash -l {0}
run: |
- conda create --yes -n tester python=${{ matrix.python-version }} pip numpy 'scipy>=0.17.0' matplotlib pandas flake8 pep8 jupyter coverage cython scikit-learn requests
- conda install -n tester -c conda-forge phantomjs --yes
- conda run -n tester pip install sphinx numpydoc sphinx-bootstrap-theme
- conda run -n tester pip install -e ".[all]"
+ conda install pip numpy 'scipy>=0.17.0' matplotlib pandas flake8 pep8 jupyter coverage cython scikit-learn requests
+ conda install -c conda-forge phantomjs --yes
+ pip install -e ".[all]"
- name: Build documentation
+ shell: bash -l {0}
run: |
- conda run -n tester make -C doc html
+ make -C doc html
- name: Run tests and measure coverage
+ shell: bash -l {0}
run: |
- conda run -n tester coverage run tests/all_tests.py
- conda run -n tester coverage report
+ coverage run tests/all_tests.py
+ coverage report
- name: Python linter
- run: conda run -n tester flake8 emperor/*.py tests/*.py setup.py
+ shell: bash -l {0}
+ run: flake8 emperor/*.py tests/*.py setup.py
- name: JS linter
+ shell: bash -l {0}
run: conda run -n gjslint gjslint --custom_jsdoc_tags 'module,function,constructs,alias,default' 'emperor/support_files/js/*.js' 'tests/javascript_tests/*.js'
- name: Coveralls
=====================================
ChangeLog.md
=====================================
@@ -1,8 +1,27 @@
Emperor ChangeLog
=================
-# Emperor 1.0.3
----------------
+# Emperor 1.0.4 (10 Jul 2023)
+-----------------------------
+
+### Bug Fixes
+
+* Update remote URL to no longer use rawgit.
+ ([#751](https://github.com/biocore/emperor/issues/751)).
+
+### New Features
+
+* Add `Toggle Visible` button to `Visibility` tab.
+
+### Miscellaneous
+
+* Pin Sphinx version to be less than 4.0.
+* Jupyter templates no longer require jQuery to add the CSS headers.
+* Limit jinja2 version for doc dependencies in setup.py. Allowed versions are: `>=2.9` and `<3.1`.
+* Fix broken test suite with Pandas >=1.5 ([#810](https://github.com/biocore/emperor/issues/810)).
+
+# Emperor 1.0.3 (14 Apr 2021)
+-----------------------------
### Bug Fixes
=====================================
doc/source/conf.py
=====================================
@@ -58,10 +58,10 @@ copyright = u'2014, Emperor Development Team'
# built documents.
#
# The short X.Y version.
-version = '1.0.3'
+version = '1.0.4'
# The full version, including alpha/beta/rc tags.
-release = '1.0.3'
+release = '1.0.4'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
=====================================
emperor/core.py
=====================================
@@ -24,8 +24,8 @@ from emperor.util import (get_emperor_support_files_dir,
validate_and_process_custom_axes, EmperorWarning)
# we are going to use this remote location to load external resources
-REMOTE_URL = ('https://cdn.rawgit.com/biocore/emperor/%s/emperor'
- '/support_files')
+REMOTE_URL = ('https://cdn.jsdelivr.net/gh/biocore/emperor@%s/emperor/'
+ 'support_files')
LOCAL_URL = "/nbextensions/emperor/support_files"
BASE_DEPENDENCIES_PATH = 'base-dependencies.html'
@@ -306,9 +306,9 @@ class Emperor(object):
'are using metadata and coordinates corresponding'
' to the same dataset.' % kind)
+ # sort the elements so we have a deterministic output
+ difference = sorted([str(i) for i in difference])
if difference and not ignore_missing_samples:
- # sort the elements so we have a deterministic output
- difference = sorted([str(i) for i in difference])
# if there's more than 5 missing elements, truncate the list
if len(difference) > 5:
=====================================
emperor/support_files/js/visibility-controller.js
=====================================
@@ -68,6 +68,22 @@ define([
EmperorAttributeABC.call(this, uiState, container, title, helpmenu,
decompViewDict, options);
+
+ this.$applyAll = $("<input type='button' value='Toggle Visible'>"
+ ).css({
+ 'margin': '0 auto',
+ 'display': 'block'
+ });
+ this.$header.append(this.$applyAll);
+
+ $(function() {
+ scope.$applyAll.hide();
+ scope.$applyAll.on('click', function() {
+ scope.toggleVisibility();
+ });
+ });
+
+
return this;
}
VisibilityController.prototype = Object.create(EmperorAttributeABC.prototype);
@@ -102,5 +118,43 @@ define([
scope.setVisibility(visible, group);
};
+ /**
+ * Sets whether or not elements in the tab can be modified.
+ *
+ * @param {Boolean} trulse option to enable elements.
+ */
+ VisibilityController.prototype.setEnabled = function(trulse) {
+ EmperorAttributeABC.prototype.setEnabled.call(this, trulse);
+
+ // prevent errors when this method is called before the element exists
+ if (this.$applyAll) {
+ if (trulse) {
+ this.$applyAll.show();
+ }
+ else {
+ this.$applyAll.hide();
+ }
+ }
+ };
+
+ /**
+ * Toggle visible objects
+ */
+ VisibilityController.prototype.toggleVisibility = function() {
+ var view = this.getView();
+
+ var groups = this.getSlickGridDataset();
+ _.each(groups, function(group) {
+
+ // toggle the value in the data container and update the view
+ group.value = Boolean(true ^ group.value);
+ view.setVisibility(group.value, group.plottables);
+ });
+
+ // lastly, update the grid table
+ this.setSlickGridDataset(groups);
+ };
+
+
return VisibilityController;
});
=====================================
emperor/support_files/templates/style-template.html
=====================================
@@ -1,8 +1,6 @@
<script type="text/javascript">
-{% raw %}
-if ($("#emperor-css").length == 0){{
- $("head").append([
-{% endraw %}
+if (document.querySelector("#emperor-css") === null){
+ document.querySelector("head").insertAdjacentHTML("beforeend",[
'<link id="emperor-css" rel="stylesheet" type="text/css" href="{{ base_url }}/css/emperor.css">',
'<link rel="stylesheet" type="text/css" href="{{ base_url }}/vendor/css/jquery-ui.min.css">',
'<link rel="stylesheet" type="text/css" href="{{ base_url }}/vendor/css/slick.grid.min.css">',
@@ -10,6 +8,6 @@ if ($("#emperor-css").length == 0){{
'<link rel="stylesheet" type="text/css" href="{{ base_url }}/vendor/css/chosen.min.css">',
'<link rel="stylesheet" type="text/css" href="{{ base_url }}/vendor/css/jquery.contextMenu.min.css">'
]);
-}}
+}
</script>
=====================================
emperor/util.py
=====================================
@@ -363,16 +363,24 @@ def resolve_stable_url(version, base_url):
An EmperorWarning is shown when development URLs are used.
"""
if 'dev' in version:
- warnings.warn("Plots generated with `remote=True` using a development "
- "version of Emperor, may fail to load in the future "
- "(only the logo may be displayed instead of the plot). "
- "To avoid this, use a release version of Emperor.",
+ warnings.warn("Plots generated with `remote=True` using a development"
+ " version of Emperor may fail to load (only the logo "
+ "may be displayed instead of the plot). Using this flag"
+ " might also load outdated JS or CSS files. If you are "
+ "doing development, we recommend running nbinstall and "
+ "sourcing JS and CSS files locally. Otherwise use "
+ "`remote=True` only with a release version of Emperor.",
EmperorWarning)
- # this will need to be fixed when new-api is merged to master
- return base_url % 'new-api'
- else:
- # version names are changed for git tags from betaxx to -beta.xx
- if 'b' in version:
- version = version.replace('b', '-beta.')
- return base_url % version
+ version = version.rstrip('.dev0')
+
+ if 'b' in version:
+ # Version numbers appear in slightly different formats in different
+ # places. Setuptools converts 1.0.0beta19 into 1.0.0b19. This is then
+ # converted to 1.0.0-beta.19 for the git tag.
+ #
+ # The replacement below makes the setuptools version string match what
+ # the git tag will look like.
+ version = version.replace('b', '-beta.')
+
+ return base_url % version
=====================================
setup.py
=====================================
@@ -9,7 +9,7 @@
from setuptools import setup, find_packages
-__version__ = "1.0.3"
+__version__ = "1.0.4"
__maintainer__ = "Emperor development team"
__email__ = "yoshiki89 at gmail.com"
@@ -36,7 +36,8 @@ with open('README.md') as f:
base = ["numpy >= 1.7", "scipy >= 0.17.0", "click", "pandas",
"scikit-bio >= 0.4.1", "jinja2 >= 2.9", "future"]
-doc = ["Sphinx", "sphinx-bootstrap-theme", "numpydoc"]
+doc = ["Sphinx<4", "jinja2 >= 2.9, < 3.1", "sphinx-bootstrap-theme",
+ "numpydoc"]
test = ["pep8", "flake8", "nose"]
all_deps = base + doc + test
=====================================
tests/_test_core_strings.py
=====================================
@@ -55,10 +55,8 @@ Site constraints 0 0
HTML_STRING = u"""
<script type="text/javascript">
-
-if ($("#emperor-css").length == 0){{
- $("head").append([
-
+if (document.querySelector("#emperor-css") === null){
+ document.querySelector("head").insertAdjacentHTML("beforeend",[
'<link id="emperor-css" rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/biocore/emperor/new-api/emperor/support_files/css/emperor.css">',
'<link rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/biocore/emperor/new-api/emperor/support_files/vendor/css/jquery-ui.min.css">',
'<link rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/biocore/emperor/new-api/emperor/support_files/vendor/css/slick.grid.min.css">',
@@ -66,7 +64,7 @@ if ($("#emperor-css").length == 0){{
'<link rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/biocore/emperor/new-api/emperor/support_files/vendor/css/chosen.min.css">',
'<link rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/biocore/emperor/new-api/emperor/support_files/vendor/css/jquery.contextMenu.min.css">'
]);
-}}
+}
</script>
<div id='emperor-notebook-0x9cb72f54' style="position: relative; width:100%; height:500px;">
@@ -241,10 +239,8 @@ STANDALONE_HTML_STRING = """<!DOCTYPE html>
<meta charset="utf-8">
<script type="text/javascript">
-
-if ($("#emperor-css").length == 0){{
- $("head").append([
-
+if (document.querySelector("#emperor-css") === null){
+ document.querySelector("head").insertAdjacentHTML("beforeend",[
'<link id="emperor-css" rel="stylesheet" type="text/css" href="./some-local-path//css/emperor.css">',
'<link rel="stylesheet" type="text/css" href="./some-local-path//vendor/css/jquery-ui.min.css">',
'<link rel="stylesheet" type="text/css" href="./some-local-path//vendor/css/slick.grid.min.css">',
@@ -252,7 +248,7 @@ if ($("#emperor-css").length == 0){{
'<link rel="stylesheet" type="text/css" href="./some-local-path//vendor/css/chosen.min.css">',
'<link rel="stylesheet" type="text/css" href="./some-local-path//vendor/css/jquery.contextMenu.min.css">'
]);
-}}
+}
</script>
@@ -435,10 +431,8 @@ function($, model, EmperorController) {
</html>"""
STYLE_STRING = """<script type="text/javascript">
-
-if ($("#emperor-css").length == 0){{
- $("head").append([
-
+if (document.querySelector("#emperor-css") === null){
+ document.querySelector("head").insertAdjacentHTML("beforeend",[
'<link id="emperor-css" rel="stylesheet" type="text/css" href="/nbextensions/emperor/support_files/css/emperor.css">',
'<link rel="stylesheet" type="text/css" href="/nbextensions/emperor/support_files/vendor/css/jquery-ui.min.css">',
'<link rel="stylesheet" type="text/css" href="/nbextensions/emperor/support_files/vendor/css/slick.grid.min.css">',
@@ -446,7 +440,7 @@ if ($("#emperor-css").length == 0){{
'<link rel="stylesheet" type="text/css" href="/nbextensions/emperor/support_files/vendor/css/chosen.min.css">',
'<link rel="stylesheet" type="text/css" href="/nbextensions/emperor/support_files/vendor/css/jquery.contextMenu.min.css">'
]);
-}}
+}
</script>
"""
=====================================
tests/javascript_tests/test_visibility_controller.js
=====================================
@@ -107,6 +107,39 @@ requirejs([
equal(controller.getMetadataField(), null);
});
+ test('Testing toggleVisibility', function(assert) {
+ var container = $('<div id="does-not-exist" style="height:11px; ' +
+ 'width:12px"></div>');
+ var controller = new VisibilityController(new UIState(), container,
+ this.sharedDecompositionViewDict);
+ controller.setMetadataField('Treatment');
+
+ // trun everything off
+ controller.toggleVisibility();
+ equal(controller.decompViewDict.scatter.markers[0].visible, false);
+ equal(controller.decompViewDict.scatter.markers[1].visible, false);
+
+ var groupVisibility = controller.getSlickGridDataset();
+ equal(groupVisibility[0].value, false);
+ equal(groupVisibility[1].value, false);
+
+ // set the first group to false the second group to true
+ groupVisibility = controller.getSlickGridDataset();
+ groupVisibility[0].value = false;
+ groupVisibility[1].value = true;
+ controller.getView().setVisibility(false, groupVisibility[0].plottables);
+ controller.getView().setVisibility(true, groupVisibility[1].plottables);
+ controller.setSlickGridDataset(groupVisibility);
+
+ controller.toggleVisibility();
+ equal(controller.decompViewDict.scatter.markers[0].visible, true);
+ equal(controller.decompViewDict.scatter.markers[1].visible, false);
+
+ groupVisibility = controller.getSlickGridDataset();
+ equal(groupVisibility[0].value, true);
+ equal(groupVisibility[1].value, false);
+ });
+
test('Testing setPlottableAttributes helper function', function(assert) {
// testing with one plottable
var idx = 0;
=====================================
tests/test_util.py
=====================================
@@ -318,31 +318,31 @@ class TopLevelTests(TestCase):
def test_resolve_stable_url_release(self):
# we test that no warnings are raised
- url = 'https://github.com/biocore/emperor/%s/emperor/support_files'
+ url = 'https://github.com/biocore/emperor@%s/emperor/support_files'
with warnings.catch_warnings(record=True) as w:
obs = resolve_stable_url('1.0.0b7', url)
self.assertTrue(len(w) == 0)
self.assertEqual(obs, url % '1.0.0-beta.7')
def test_resolve_stable_url_release_check_warning(self):
- url = 'https://github.com/biocore/emperor/%s/emperor/support_files'
+ url = 'https://github.com/biocore/emperor@%s/emperor/support_files'
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter('always')
- obs = resolve_stable_url('1.0.0b7-dev', url)
+ obs = resolve_stable_url('1.0.0b7.dev', url)
self.assertTrue(len(w) == 1)
self.assertTrue(issubclass(w[-1].category, EmperorWarning))
- self.assertEqual(obs, url % 'new-api')
+ self.assertEqual(obs, url % '1.0.0-beta.7')
def test_resolve_stable_url_release_number_check_warning(self):
- url = 'https://github.com/biocore/emperor/%s/emperor/support_files'
+ url = 'https://github.com/biocore/emperor@%s/emperor/support_files'
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter('always')
- obs = resolve_stable_url('1.0.0b7-dev0', url)
+ obs = resolve_stable_url('1.0.0b7.dev0', url)
self.assertTrue(len(w) == 1)
self.assertTrue(issubclass(w[-1].category, EmperorWarning))
- self.assertEqual(obs, url % 'new-api')
+ self.assertEqual(obs, url % '1.0.0-beta.7')
MAPPING_FILE_DATA = [
View it on GitLab: https://salsa.debian.org/med-team/emperor/-/commit/8b319ba190421ca1be015a87c7d54346f9202b1e
--
View it on GitLab: https://salsa.debian.org/med-team/emperor/-/commit/8b319ba190421ca1be015a87c7d54346f9202b1e
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20250221/0498bbc1/attachment-0001.htm>
More information about the debian-med-commit
mailing list