Merge pull request #7215 from nsoranzo/recommonmark_0.5.0

Dependency update and doc fixes
This commit is contained in:
Marius van den Beek
2019-01-15 16:03:59 +01:00
committed by GitHub
18 changed files with 89 additions and 91 deletions
+4 -6
View File
@@ -54,7 +54,7 @@ time it starts up and be configured to use it by default.
The long answer is that Galaxy's tool dependency resolution is managed via
``dependency_resolvers_conf.xml`` configuration file. This configuration
file is discussed in detail in the :ref:`Dependency Resolvers <dependency_resolvers>`
file is discussed in detail in the :doc:`Dependency Resolvers <dependency_resolvers>`
documentation. Most Galaxy administrators will be using Galaxy's default dependency
resolvers configuration file (``config/dependency_resolvers_conf.xml.sample``). With
release 16.04, Galaxy has enabled Conda dependency resolution by default when
@@ -68,7 +68,7 @@ entry should remain first. This means that tools that have specified Tool Shed p
as their dependencies will work without a change.
The most common configuration settings related to Conda are listed in Table 1.
See `galaxy.yml.sample`_ for the complete list.
See :doc:`Configuration Options <options>` for the complete list.
+-------------------------+------------------------------------+---------------------------+
| Setting | Default setting | Meaning |
@@ -105,7 +105,7 @@ handle these dependencies for you, but admins are not required to use Galaxy for
dependency management.
There are a few config options in the ``galaxy.yml`` file (see Table 1 or
`galaxy.yml.sample`_ for more information), but by default Galaxy will install
:doc:`Configuration Options <options>` for more information), but by default Galaxy will install
Conda (the package manager) and the required packages in the
``<tool_dependency_dir>/_conda/`` directory. In this directory, Galaxy will
create an ``envs`` folder with all of the environments managed by Galaxy. Each
@@ -203,7 +203,7 @@ The order in which resolvers are tried is listed in the
- Conda packages
The first system that satisfies a requirement will be used. See
`resolver docs`_ for detailed documentation.
:doc:`Dependency Resolvers <dependency_resolvers>` for detailed documentation.
This however is not recommended, ideally tools will target and test
against Conda for all dependencies. Also resolving all requirements
@@ -408,13 +408,11 @@ The command can obviously be adapted to install any version of Conda.
.. _Conda quick-start: https://conda.io/docs/user-guide/getting-started.html
.. _ansible role: https://github.com/galaxyproject/ansible-galaxy-tools
.. _BioBlend: https://github.com/galaxyproject/bioblend
.. _resolver docs: https://docs.galaxyproject.org/en/master/admin/dependency_resolvers.html
.. _Conda channels: https://conda.io/docs/user-guide/tasks/manage-channels.html
.. _create a Conda package: https://conda.io/docs/user-guide/tasks/build-packages/recipe.html
.. _submit: https://bioconda.github.io/#step-4-join-the-team
.. _BioConda: https://bioconda.github.io
.. _contact with the IUC: https://gitter.im/galaxy-iuc/iuc
.. _galaxy.yml.sample: https://docs.galaxyproject.org/en/master/admin/options.html
.. _Pull Request #3106: https://github.com/galaxyproject/galaxy/pull/3106
.. _Pull Request #3348: https://github.com/galaxyproject/galaxy/pull/3348
.. _Pull Request #3391: https://github.com/galaxyproject/galaxy/pull/3391
@@ -10,7 +10,7 @@ single configuration file, ``config/error_report.yml.sample``.
Let's look at that briefly:
.. code-block:: yml
.. code-block:: yaml
- type: email
verbose: true
+10 -7
View File
@@ -45,23 +45,26 @@ For each type there is an example provided:
- Additional functionality can be added to the top menu. Two dummy buttons are implemented to show the idea:
- A button that links to biostars
.. image:: images_webhooks/masthead.png
:scale: 50 %
.. image:: images_webhooks/masthead.png
:scale: 50 %
- A button that shows a pop-up with information about an user.
.. image:: images_webhooks/masthead_trans_object.png
:scale: 50 %
.. image:: images_webhooks/masthead_trans_object.png
:scale: 50 %
- The history menu can be extended. In this case we use two dummy entries 'History Menu Webhook Item 1' and 'History Menu Webhook Item 2'.
.. image:: images_webhooks/history-menu.png
:scale: 25 %
.. image:: images_webhooks/history-menu.png
:scale: 25 %
Plugin structure
----------------
Each plugin has the following folder structure:
.. code-block::
.. code-block:: yaml
- plugin_name
- config.yml (mandatory)
+4 -10
View File
@@ -17,14 +17,9 @@ import sys
import sphinx_rtd_theme
# Library to make .md to slideshow
from recommonmark.parser import CommonMarkParser
from recommonmark.transform import AutoStructify
source_parsers = {
'.md': CommonMarkParser,
}
# Set GALAXY_DOCS_SKIP_SOURCE=1 to skip building source and release information and
# Set GALAXY_DOCS_SKIP_SOURCE=1 to skip building source information and
# just build primary documentation. (Quicker to debug issues in most frequently updated
# docs).
SKIP_SOURCE = os.environ.get("GALAXY_DOCS_SKIP_SOURCE", False) == "1"
@@ -45,7 +40,7 @@ sys.path.insert(1, os.path.abspath(os.path.join(os.path.dirname(__file__), os.pa
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx']
extensions = ['recommonmark', 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx']
if not SKIP_SOURCE:
extensions += ['sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.viewcode']
@@ -108,10 +103,9 @@ release = VERSION
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['**/_*.rst']
if SKIP_SOURCE:
exclude_patterns = ['lib', 'releases']
else:
exclude_patterns = []
exclude_patterns.extend(['lib'])
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
+1 -1
View File
@@ -1,5 +1,5 @@
Development Documentation
=======================
=========================
.. toctree::
:maxdepth: 1
+2 -2
View File
@@ -12,7 +12,7 @@ Highlights
Galaxy admins obtained the ability to install Galaxy tool's
dependencies using the Conda package manager. This is a Beta feature
and we encourage interested deployers to opt-in by modifying configuration.
Documentation that explains this switch and answers FAQ is `available <https://docs.galaxyproject.org/en/master/admin/conda_faq.html>`__.
Documentation that explains this switch and answers FAQ is :doc:`available <../admin/conda_faq>`.
**Dynamic tool destinations**
Our friends from Canada National Microbiology Laboratory enhanced
@@ -24,7 +24,7 @@ Highlights
**Galaxy chat**
Admins can now plug in the included communication server to enable
users of their instance to use real-time chat within the Galaxy interface.
Please see the `documentation <https://docs.galaxyproject.org/en/master/admin/chat.html>`__
Please see the :doc:`documentation <../admin/special_topics/chat>`
to learn how to activate and use this feature.
Implemented in `PR #2515 <https://github.com/galaxyproject/galaxy/pull/2515>`__
+1 -1
View File
@@ -18,7 +18,7 @@ Highlighted Enhancements
* Implement a collection operation tool for merging collections
(thanks to `@Takadonet <https://github.com/Takadonet>`__).
`Pull Request 2771`_
* Replace `reference documentation <https://docs.galaxyproject.org/en/master/dev/schema.html>`__
* Replace :doc:`reference documentation <../dev/schema>`
for tool XML files with automatically generated
documentation from a now official Galaxy XSD documentation (with help from many).
`Pull Request 2923`_, `Pull Request 2936`_, `Pull Request 3086`_,
+1 -1
View File
@@ -9,7 +9,7 @@ Highlights
==========
**Galaxu UI plugins - Webhooks**
We introduce Galaxy Webhooks - optional plugins for the web UI that allow for better customization of your instance. See the `documentation <https://docs.galaxyproject.org/en/master/admin/webhooks.html>`__.
We introduce Galaxy Webhooks - optional plugins for the web UI that allow for better customization of your instance. See the :doc:`documentation <../admin/special_topics/webhooks>`.
Includes work from `@bgruening <https://github.com/bgruening>`__, `@anatskiy <https://github.com/anatskiy>`__, and Joachim Wolff `@joachimwolff <https://github.com/joachimwolff>`__.
Implemented in `Pull Request 3040`_.
+2 -2
View File
@@ -14,7 +14,7 @@ Highlights
such as `BioConda <https://bioconda.github.io/>`__. Such channels are already being used for new and updated tools by IUC
and we suggest adopting this tool dependency resolution method to all tool developers instead of Tool Shed package
recipes - which are now considered deprecated.
Please see the details at the admin `documentation <https://docs.galaxyproject.org/en/master/admin/conda_faq.html>`__
Please see the details at the admin :doc:`documentation <../admin/conda_faq>`.
**New interface for user preferences**
User preferences menu has been reworked for clarity and consistency.
@@ -27,7 +27,7 @@ Highlights
or ``fastqsanger.bz2`` for compressed files).
Existing tools will work as before and future tools will be able to consume archives and save space in your quota.
Thanks to `@abretaud <https://github.com/abretaud>`__, `@ashvark <https://github.com/ashvark>`__, `@jvolkening <https://github.com/jvolkening>`__, and `@mvdbeek <https://github.com/mvdbeek>`__.
Implemented in `Pull Request 3145`_, `PullRequest 3510`_ and `PullRequest 3514`_.
Implemented in `Pull Request 3145`_, `Pull Request 3510`_ and `Pull Request 3514`_.
Get Galaxy
==========
+1
View File
@@ -111,6 +111,7 @@ Enhancements
* Add Phylip datatype
(thanks to `@khillion <https://github.com/khillion>`__).
`Pull Request 5301`_
.. enhancement
* Option to group Galaxy Tours for viewing clarity
@@ -36,7 +36,7 @@ Mercurial = {version = "<=3.7.3", markers = "python_version < '3'"}
nodeenv = "*"
pycryptodome = "*"
uWSGI = "*"
pysam = "==0.15.1"
pysam = "==0.15.2"
bdbag = "==1.4.1" # 1.5.0 requires Python >=2.7.9
bleach = "*"
"bz2file" = {version = "*", markers = "python_version < '3.3'"}
@@ -7,34 +7,35 @@ attrs==18.2.0
babel==2.6.0
certifi==2018.11.29
chardet==3.0.4
commonmark==0.5.4
commonmark==0.8.1
docutils==0.14
funcsigs==1.0.2 ; python_version < '3.3'
future==0.17.1
gunicorn==19.9.0
idna==2.7
idna==2.8
imagesize==1.1.0
jinja2==2.10
lxml==4.2.5
lxml==4.3.0
markupsafe==1.1.0
mock==2.0.0
more-itertools==4.3.0
more-itertools==5.0.0
nose==1.3.7
nosehtml==0.4.5
pathlib2==2.3.3 ; python_version < '3.6'
pathtools==0.1.2
pbr==5.1.1
pluggy==0.8.0
pluggy==0.8.1
py==1.7.0
pygithub3==0.5.1 ; python_version < '3'
pygments==2.3.0
pygments==2.3.1
pytest-html==1.19.0
pytest-metadata==1.7.0
pytest-metadata==1.8.0
pytest-pythonpath==0.7.3
pytest==4.0.1
pytz==2018.7
pytest==4.1.0
pytz==2018.9
pyyaml==3.13
recommonmark==0.4.0
requests==2.20.1
recommonmark==0.5.0
requests==2.21.0
scandir==1.9.0 ; python_version < '3.5'
selenium==3.141.0
six==1.11.0
@@ -42,7 +43,7 @@ snowballstemmer==1.2.1
sphinx-rtd-theme==0.4.2
sphinx==1.6.7
sphinxcontrib-websupport==1.1.0
testfixtures==6.3.0
testfixtures==6.4.3
twill==0.9.1 ; python_version < '3'
typing==3.6.6 ; python_version < '3.5'
urllib3==1.24.1
@@ -19,11 +19,11 @@ azure-storage-common==1.4.0
azure-storage-nspkg==3.1.0
babel==2.6.0
bagit==1.6.4
bcrypt==3.1.4
bcrypt==3.1.5
bdbag==1.4.1
beaker==1.10.0
bioblend==0.11.0
bleach==3.0.2
bioblend==0.12.0
bleach==3.1.0
boltons==18.0.1
boto3==1.7.84
boto==2.49.0
@@ -48,7 +48,7 @@ deprecation==2.0.6
dictobj==0.4
docopt==0.6.2
docutils==0.14
dogpile.cache==0.6.8
dogpile.cache==0.7.1
enum34==1.1.6 ; python_version < '3.4'
fabric3==1.14.post1
funcsigs==1.0.2 ; python_version < '3.3'
@@ -57,8 +57,8 @@ future==0.17.1
futures==3.2.0 ; python_version == '2.6' or python_version == '2.7'
galaxy-sequence-utils==1.1.3
gxformat2==0.8.0
h5py==2.8.0
idna==2.7
h5py==2.9.0
idna==2.8
ipaddress==1.0.22 ; python_version < '3.3'
isa-rwval==0.10.7
iso8601==0.1.12
@@ -67,8 +67,8 @@ jmespath==0.9.3
jsonpatch==1.23
jsonpointer==2.0
jsonschema==2.6.0
keystoneauth1==3.11.1
kombu==4.2.1
keystoneauth1==3.11.2
kombu==4.2.2.post1
mako==1.0.7
markupsafe==1.1.0
mercurial==3.7.3 ; python_version < '3'
@@ -78,7 +78,7 @@ msrest==0.5.5
msrestazure==0.5.0
munch==2.3.2
netaddr==0.7.19
netifaces==0.10.7
netifaces==0.10.9
networkx==1.11
nodeenv==1.3.3
nose==1.3.7
@@ -87,36 +87,36 @@ oauthlib==2.1.0
openstacksdk==0.17.0
os-client-config==1.31.2
os-service-types==1.4.0
osc-lib==1.11.1
osc-lib==1.12.0
oslo.config==6.7.0
oslo.context==2.22.0
oslo.i18n==3.23.0
oslo.log==3.42.0
oslo.log==3.42.2
oslo.serialization==2.28.1
oslo.utils==3.38.0
oslo.utils==3.39.1
packaging==18.0
paramiko==2.4.2
parsley==1.3
paste==3.0.5
paste==3.0.6
pastedeploy==2.0.1
pastescript==3.0.0
pbr==5.1.1
prettytable==0.7.2
psutil==5.4.8
pulsar-galaxy-lib==0.8.3
pyasn1==0.4.4
pyasn1==0.4.5
pycparser==2.19
pycryptodome==3.7.2
pycryptodomex==3.7.2
pyinotify==0.9.6 ; sys_platform != 'win32' and sys_platform != 'darwin' and sys_platform != 'sunos5'
pyjwkest==1.4.0
pyjwt==1.7.0
pyjwt==1.7.1
pykwalify==1.7.0
pynacl==1.3.0
pyopenssl==18.0.0
pyparsing==2.3.0
pyperclip==1.7.0
pysam==0.15.1
pysam==0.15.2
pysftp==0.2.9
python-cinderclient==4.0.0
python-dateutil==2.7.5
@@ -127,12 +127,12 @@ python-neutronclient==6.9.0
python-novaclient==11.0.0
python-openid==2.2.5
python-swiftclient==3.6.0
pytz==2018.7
pytz==2018.9
pyyaml==3.13
repoze.lru==0.7
requests-oauthlib==1.0.0
requests-oauthlib==1.1.0
requests-toolbelt==0.8.0
requests==2.20.1
requests==2.21.0
requestsexceptions==1.4.0
rfc3986==1.2.0
routes==2.4.1
@@ -141,8 +141,8 @@ simplejson==3.16.0
six==1.11.0
social-auth-core[openidconnect]==1.5.0
sqlalchemy-migrate==0.11.0
sqlalchemy-utils==0.33.9
sqlalchemy==1.2.14
sqlalchemy-utils==0.33.10
sqlalchemy==1.2.16
sqlparse==0.2.4
stevedore==1.30.0
subprocess32==3.5.3 ; python_version < '3.0'
@@ -154,10 +154,10 @@ tzlocal==1.5.1
unicodecsv==0.14.1 ; python_version < '3.0'
urllib3==1.24.1
uwsgi==2.0.17.1
vine==1.1.4
vine==1.2.0
warlock==1.3.0
wcwidth==0.1.7 ; sys_platform != 'win32'
webencodings==0.5.1
webob==1.8.4
webob==1.8.5
whoosh==2.7.4
wrapt==1.10.11
wrapt==1.11.0
+2 -2
View File
@@ -499,12 +499,12 @@ def send_file(start_response, trans, body):
return body
def iterate_file(file):
def iterate_file(fh):
"""
Progressively return chunks from `file`.
"""
while 1:
chunk = file.read(CHUNK_SIZE)
chunk = fh.read(CHUNK_SIZE)
if not chunk:
break
yield chunk
+12 -12
View File
@@ -351,23 +351,23 @@ class DatasetsController(BaseAPIController, UsesVisualizationMixin):
else:
file_path = hda.file_name
rval = open(file_path, 'rb')
else:
display_kwd = kwd.copy()
if 'key' in display_kwd:
del display_kwd["key"]
rval = hda.datatype.display_data(trans, hda, preview, filename, to_ext, **display_kwd)
except Exception as exception:
log.error("Error getting display data for dataset (%s) from history (%s): %s",
history_content_id, history_id, str(exception), exc_info=True)
except Exception as e:
log.exception("Error getting display data for dataset (%s) from history (%s)",
history_content_id, history_id)
trans.response.status = 500
rval = ("Could not get display data for dataset: " + str(exception))
rval = "Could not get display data for dataset: %s" % e
return rval
@web.expose_api_raw_anonymous
def get_metadata_file(self, trans, history_content_id, history_id, metadata_file=None, **kwd):
"""
GET /api/histories/{history_id}/contents/{history_content_id}/metadata_file
"""
decoded_content_id = self.decode_id(history_content_id)
rval = ''
try:
@@ -376,12 +376,12 @@ class DatasetsController(BaseAPIController, UsesVisualizationMixin):
fname = ''.join(c in util.FILENAME_VALID_CHARS and c or '_' for c in hda.name)[0:150]
trans.response.headers["Content-Type"] = "application/octet-stream"
trans.response.headers["Content-Disposition"] = 'attachment; filename="Galaxy%s-[%s].%s"' % (hda.hid, fname, file_ext)
return open(hda.metadata.get(metadata_file).file_name)
except Exception as exception:
log.error("Error getting metadata_file (%s) for dataset (%s) from history (%s): %s",
metadata_file, history_content_id, history_id, str(exception), exc_info=True)
return open(hda.metadata.get(metadata_file).file_name, 'rb')
except Exception as e:
log.exception("Error getting metadata_file (%s) for dataset (%s) from history (%s)",
metadata_file, history_content_id, history_id)
trans.response.status = 500
rval = ("Could not get display data for dataset: " + str(exception))
rval = "Could not get metadata for dataset: %s" % e
return rval
@web._future_expose_api_anonymous
+7 -6
View File
@@ -1,6 +1,7 @@
"""
This module manages loading of Galaxy webhooks.
"""
import io
import logging
import os
@@ -64,8 +65,8 @@ class WebhooksRegistry(object):
log.exception(e)
def load_webhook_from_config(self, webhook_dir, config_file_path):
with open(config_file_path) as file:
config = yaml.safe_load(file)
with open(config_file_path) as fh:
config = yaml.safe_load(fh)
weight = config.get('weight', 1)
if weight < 1:
@@ -83,8 +84,8 @@ class WebhooksRegistry(object):
# single file
try:
styles_file = os.path.join(webhook_dir, 'styles.css')
with open(styles_file, 'r') as file:
webhook.styles = file.read().replace('\n', '')
with open(styles_file, 'r') as fh:
webhook.styles = fh.read().replace('\n', '')
except IOError:
pass
@@ -92,8 +93,8 @@ class WebhooksRegistry(object):
# single file
try:
script_file = os.path.join(webhook_dir, 'script.js')
with open(script_file, 'r') as file:
webhook.script = file.read()
with io.open(script_file, 'r', encoding='utf-8') as fh:
webhook.script = fh.read()
except IOError:
pass
+1 -1
View File
@@ -10,4 +10,4 @@ class GalaxyInteractorBackwardCompatTestCase(api.ApiTestCase):
def test_local_test_data_download(self):
self.galaxy_interactor._target_galaxy_version = Version("18.09")
assert self.galaxy_interactor.supports_test_data_download is False
assert self.galaxy_interactor.test_data_download(tool_id='cat1', filename='1.bed').readline().startswith('chr1\t147962192\t147962580')
assert self.galaxy_interactor.test_data_download(tool_id='cat1', filename='1.bed').readline().startswith(b'chr1\t147962192\t147962580')
+2 -2
View File
@@ -192,7 +192,7 @@ class HistoriesApiTestCase(api.ApiTestCase):
def test_import_metadata_regeneration(self):
history_name = "for_import_metadata_regeneration"
history_id = self.dataset_populator.new_history(name=history_name)
self.dataset_populator.new_dataset(history_id, content=open(self.test_data_resolver.get_filename("1.bam")), file_type='bam')
self.dataset_populator.new_dataset(history_id, content=open(self.test_data_resolver.get_filename("1.bam"), 'rb'), file_type='bam')
imported_history_id = self._reimport_history(history_id, history_name)
self._assert_history_length(imported_history_id, 1)
import_bam_metadata = self.dataset_populator.get_history_dataset_details(
@@ -203,7 +203,7 @@ class HistoriesApiTestCase(api.ApiTestCase):
assert bai_metadata["file_type"] == "bam_index"
api_url = bai_metadata["download_url"].split("api/", 1)[1]
bai_response = self._get(api_url)
assert bai_response.status_code == 200
self._assert_status_code_is(bai_response, 200)
assert len(bai_response.content) > 4
def test_import_export_collection(self):