Merge pull request #7313 from nsoranzo/doc_fixes

Build tool XML schema docs using ``sphinx_markdown_tables``
This commit is contained in:
John Chilton
2019-02-07 08:59:41 -05:00
committed by GitHub
54 changed files with 116 additions and 2560 deletions
+1
View File
@@ -143,6 +143,7 @@ doc/schema.md
doc/source/admin/config_logging_default_yaml.rst
doc/source/api/api.rst
doc/source/api/ts_api.rst
doc/source/dev/schema.md
doc/source/dev/schema.rst
# webpack stats
-1
View File
@@ -27,7 +27,6 @@ docs: ## Generate HTML documentation.
# $ ./scripts/common_startup.sh
# $ . .venv/bin/activate
# $ pip install -r lib/galaxy/dependencies/dev-requirements.txt
# You also need to install pandoc separately.
$(IN_VENV) $(MAKE) -C doc clean
$(IN_VENV) $(MAKE) -C doc html
+3 -7
View File
@@ -15,7 +15,7 @@ ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) sou
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source
GENERATED_RST = source/api/api.rst source/api/ts_api.rst source/dev/schema.rst source/admin/config_logging_default_yaml.rst
GENERATED_RST = source/api/api.rst source/api/ts_api.rst source/dev/schema.md source/admin/config_logging_default_yaml.rst
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext updaterst
@@ -42,7 +42,7 @@ help:
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
@echo " updaterst to update Sphinx RST files for lib/ to reflect code structure changes"
schema.md: parse_gx_xsd.py schema_template.md ../lib/galaxy/tools/xsd/galaxy.xsd ## Build Github-flavored Markdown from Galaxy Tool XSD (expects libxml in environment)
source/dev/schema.md: parse_gx_xsd.py schema_template.md ../lib/galaxy/tools/xsd/galaxy.xsd ## Build Github-flavored Markdown from Galaxy Tool XSD (expects lxml in environment)
python parse_gx_xsd.py schema_template.md ../lib/galaxy/tools/xsd/galaxy.xsd > $@
source/api/api.rst: source/lib/galaxy.webapps.galaxy.api.rst
@@ -57,10 +57,6 @@ source/api/ts_api.rst: source/lib/galaxy.webapps.tool_shed.api.rst
sed -i.bak -e 's/^galaxy\\\.webapps\\\.tool\\_shed\\\.api\\\.//' $@
rm -f $@.bak
source/dev/schema.rst: schema.md ## Convert Galaxy Tool XSD Markdown docs into reStructuredText (expects pandoc in environment)
pandoc schema.md -f markdown_github-hard_line_breaks -s -o $@
./fix_schema_rst.sh $@
source/admin/config_logging_default_yaml.rst: ../lib/galaxy/config.py
printf '.. code-block:: yaml\n\n' > $@
printf ' galaxy:\n' >> $@
@@ -70,7 +66,7 @@ source/admin/config_logging_default_yaml.rst: ../lib/galaxy/config.py
# might also want to do
# cd source/lib; hg revert; rm *.rst.orig; or not.
clean:
-rm -rf $(BUILDDIR)/* schema.md $(GENERATED_RST)
-rm -rf $(BUILDDIR)/* $(GENERATED_RST)
html: $(GENERATED_RST)
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html
-11
View File
@@ -1,11 +0,0 @@
#!/bin/sh
sed -i.bak -e 's|.. code:: xml|.. code-block:: xml|g' $1
# Insert table of contents
sed -i.bak -e '/^``tool``$/i\
.. contents:: Table of contents\
\ :local:\
\ :depth: 1\
..\
\
' $1
rm -f $1.bak
+37 -12
View File
@@ -11,9 +11,6 @@ import sys
from lxml import etree
from six import StringIO
with open(sys.argv[1], "r") as f:
MARKDOWN_TEMPLATE = f.read()
with open(sys.argv[2], "r") as f:
xmlschema_doc = etree.parse(f)
@@ -22,11 +19,26 @@ markdown_buffer = StringIO()
def main():
"""Entry point for the function that builds Markdown help for the Galaxy XSD."""
for line in MARKDOWN_TEMPLATE.splitlines():
if line.startswith("$tag:"):
print(Tag(line).build_help())
else:
print(line)
toc_list = []
content_list = []
found_tag = False
with open(sys.argv[1], "r") as markdown_template:
for line in markdown_template:
if line.startswith("$tag:"):
found_tag = True
tag = Tag(line.rstrip())
toc_list.append(tag.build_toc_entry())
content_list.append(tag.build_help())
elif not found_tag:
print(line, end='')
else:
raise Exception("No normal text allowed after the first $tag")
print("## Contents\n")
for el in toc_list:
print(el)
print("\n")
for el in content_list:
print(el, end='')
class Tag(object):
@@ -47,15 +59,28 @@ class Tag(object):
self.hide_attributes = hide_attributes
self.title = title
@property
def _anchor(self):
anchor = self.title
for _ in ['|', '_']:
anchor = anchor.replace(_, '-')
return '#' + anchor
@property
def _pretty_title(self):
return " > ".join(["``%s``" % p for p in self.title.split("|")])
def build_toc_entry(self):
return "* [%s](%s)" % (self._pretty_title, self._anchor)
def build_help(self):
tag = xmlschema_doc.find(self.xpath)
if tag is None:
raise Exception("Could not find xpath for %s" % self.xpath)
title = self.title
tag_help = StringIO()
tag_help.write("## " + " > ".join(["``%s``" % p for p in title.split("|")]))
tag_help.write("\n")
tag_help.write("## " + self._pretty_title)
tag_help.write("\n\n")
tag_help.write(_build_tag(tag, self.hide_attributes))
tag_help.write("\n\n")
return tag_help.getvalue()
@@ -111,7 +136,7 @@ def _build_attributes_table(tag, attributes, hide_attributes=False, attribute_na
attribute_table.write("\n\n")
if attributes and not hide_attributes:
header_prefix = '#' * header_level
attribute_table.write("\n%s Attributes\n" % header_prefix)
attribute_table.write("\n%s Attributes\n\n" % header_prefix)
attribute_table.write("Attribute | Details | Required\n")
attribute_table.write("--- | --- | ---\n")
for attribute in attributes:
+6 -6
View File
@@ -10,7 +10,7 @@ some of the more menial and resource-intensive tasks.
[The Apache HTTP Server][apache] is a widely deployed and very featureful general purpose web server with mature
proxying capabilities.
Instructions for [proxying with NGINX](nginx.html), which is the proxy server used by The Galaxy Project's public
Instructions for [proxying with NGINX](nginx.md), which is the proxy server used by The Galaxy Project's public
servers, [usegalaxy.org][main] ("Main") and [Test][test], as well as the [Docker Galaxy project][docker-galaxy], are
also available.
@@ -89,7 +89,7 @@ And on EL:
The following configuration is not exhaustive, only the portions most relevant to serving Galaxy are shown, these should
be incorporated with your existing/default Apache config as is appropriate for your server. Notably, the Apache package
you installed most likely has a multi-file config layout. If you are not already familiar with that layout and where
best to place your configuration, you can learn more in the [Proxy Package Layouts](proxy_package_layout.html)
best to place your configuration, you can learn more in the [Proxy Package Layouts](proxy_package_layout)
documentation.
```apache
@@ -172,7 +172,7 @@ SSLStaplingCache shmcb:/var/run/ocsp(128000)
Be sure to set `galaxy_root` to the path to your copy of Galaxy and modify the value of `ProxyPass /` to match your
uWSGI socket path. With the default configuration, uWSGI will bind to a random TCP socket, so you will need to set it to
a fixed value as described in the [Scaling and Load Balancing](scaling.html) documentation. If using a UNIX domain
a fixed value as described in the [Scaling and Load Balancing](scaling.md) documentation. If using a UNIX domain
socket, be sure to pay particular attention to the discussion of users and permissions.
### Additional Notes
@@ -243,7 +243,7 @@ previous section:
`cookie_path` should be set to prevent Galaxy's session cookies from clobbering each other if you are running more
than one instance of Galaxy under different URL prefixes on the same hostname.
Be sure to consult the [Scaling and Load Balancing](scaling.html) documentation, other options unrelated to proxying
Be sure to consult the [Scaling and Load Balancing](scaling.md) documentation, other options unrelated to proxying
should also be set in the `uwsgi` section of the config.
## Advanced Configuration Topics
@@ -252,7 +252,7 @@ previous section:
Galaxy sends files (e.g. dataset downloads) by opening the file and streaming it in chunks through the proxy server.
However, this ties up the Galaxy process, which can impact the performance of other operations (see [Production Server
Configuration](production.html) for a more in-depth explanation).
Configuration](production.md) for a more in-depth explanation).
Apache can assume this task instead and as an added benefit, speed up downloads. This is accomplished through the use of
`mod_xsendfile`, a 3rd-party Apache module. Dataset security is maintained in this configuration because Apache will
@@ -299,7 +299,7 @@ group as shown above.
### External user authentication
- [Apache for External Authentication](https://galaxyproject.org/admin/config/apache-external-user-auth/)
- [Built-in Galaxy External Authentication](authentication.html)
- [Built-in Galaxy External Authentication](authentication.md)
#### Display Sites
+3 -3
View File
@@ -2,7 +2,7 @@
Galaxy is designed to run jobs on your local system by default, but it can be configured to run jobs on a cluster. The front-end Galaxy application runs on a single server as usual, but tools are run on cluster nodes instead.
A [general reference for the job configuration file](jobs.html) is also available.
A [general reference for the job configuration file](jobs.md) is also available.
## Distributed Resources Managers
@@ -70,7 +70,7 @@ You may also find that attribute caching in your filesystem causes problems with
## Runner Configuration
**This documentation covers configuration of the various runner plugins, not how to distribute jobs to the various plugins.** Consult the [job configuration file documentation](jobs.html) for full details on the correct syntax, and for instructions on how to configure tools to actually use the runners explained below.
**This documentation covers configuration of the various runner plugins, not how to distribute jobs to the various plugins.** Consult the [job configuration file documentation](jobs.md) for full details on the correct syntax, and for instructions on how to configure tools to actually use the runners explained below.
### Local
@@ -121,7 +121,7 @@ galaxy_server% export DRMAA_LIBRARY_PATH=/galaxy/sge/lib/lx24-amd64/libdrmaa.so
**Limitations**: The DRMAA runner does not work if Galaxy is configured to run jobs as real user, because in this setting jobs are submitted with an external script, i.e. in an extra DRMAA session, and the session based (python) DRMAA library can only query jobs within the session in which started them. Furthermore, the DRMAA job runner only distinguishes successful and failed jobs and ignores information about possible failure sources, e.g. runtime / memory violation, which could be used for job resubmission. Specialized job runners are abvailable that are not affected by these limitations, e.g. univa and slurm runners.
**TORQUE**: The DRMAA runner can also be used (instead of the [PBS](cluster.html#pbs) runner) to submit jobs to TORQUE, however, problems have been reported when using the `libdrmaa.so` provided with TORQUE. Using this library will result in a segmentation fault when the drmaa runner attempts to write the job template, and any native job runner options will not be passed to the DRM. Instead, you should compile the [pbs-drmaa](http://apps.man.poznan.pl/trac/pbs-drmaa/wiki) library and use this as the value for `$DRMAA_LIBRARY_PATH`.
**TORQUE**: The DRMAA runner can also be used (instead of the [PBS](#pbs) runner) to submit jobs to TORQUE, however, problems have been reported when using the `libdrmaa.so` provided with TORQUE. Using this library will result in a segmentation fault when the drmaa runner attempts to write the job template, and any native job runner options will not be passed to the DRM. Instead, you should compile the [pbs-drmaa](http://apps.man.poznan.pl/trac/pbs-drmaa/wiki) library and use this as the value for `$DRMAA_LIBRARY_PATH`.
**Slurm**: You will need to install [slurm-drmaa](https://github.com/natefoo/slurm-drmaa/). In production on [usegalaxy.org](https://usegalaxy.org) we observed pthread deadlocks in slurm-drmaa that would cause Galaxy job handlers to eventually stop processing jobs until the handler was restarted. Compiling slurm-drmaa using the compiler flags `-g -O0` (keep debugging symbols, disable optimization) caused the deadlock to disappear.
+6 -7
View File
@@ -31,12 +31,12 @@ The most commonly modified configuration files include:
- ``galaxy.yml``: Core Galaxy configuration file.
- ``tool_conf.xml``: Describes the paths to local tool configurations that Galaxy should attempt to load. Tools that
are installed via the Tool Shed are configured to load in the ``shed_tool_conf.xml`` file. See the :ref:`Tool Panel
are installed via the Tool Shed are configured to load in the ``shed_tool_conf.xml`` file. See the :doc:`Tool Panel
Administration <tool_panel>` and `Installing Tools into Galaxy`_ documentation for more.
- ``datatypes_conf.xml``: Describes the file formats that are supported in Galaxy. See the `Datatypes documentation`_
for more.
- ``job_conf.xml``: Controls how Galaxy runs tools, e.g. to run them on a compute cluster. See the `Cluster
documentation`_ for more.
- ``job_conf.xml``: Controls how Galaxy runs tools, e.g. to run them on a compute cluster. See the :doc:`Cluster
documentation <cluster>` for more.
Some configuration files are only used when adding local components, rather than ones installed from the Tool Shed:
@@ -50,7 +50,7 @@ Some configuration files are only used when adding local components, rather than
Managers documentation`_ for more.
- ``local_conda_mapping.yml``: Define mappings between the names specified in the tool configuration (``<requirement>``
tags) and the conda resolver's names (conda package name).
- ``lmod_modules_mapping.yml``: Define mappings between the names specified in the tool configuration (``<requirement>``
- ``lmod_modules_mapping.yml``: Define mappings between the names specified in the tool configuration (``<requirement>``
tags) and the Lmod system.
Some configuration files are used to control the way that Galaxy resolves tool dependencies. Most Galaxy tools are only
@@ -69,7 +69,7 @@ Additional configuration files and their purposes are:
particular command line tool) should locate their dependencies (the command line tool) that are not part of the tool.
See the `Dependency Resolvers documentation <dependency_resolvers>` for more.
- ``error_report.yml``: Controls how user-initiated error reporting (e.g. due to tool failure) is performed. See the
:ref:`Bug Reports documentation <bug_reports>` for more.
:doc:`Bug Reports documentation <special_topics/bug_reports>` for more.
- ``job_metrics_conf.xml``: Enables reporting of certain conditions and collection of metrics when jobs run.
- ``job_resource_params_conf.xml``: Describes tool form elements that should be inserted into tool forms that can be
used by users to control runtime parameters such as memory allocations, cluster selection, and so forth.
@@ -85,7 +85,6 @@ Additional configuration files and their purposes are:
.. _standardize and unify configuration formats: https://github.com/galaxyproject/galaxy/issues/5148
.. _Installing Tools into Galaxy: https://galaxyproject.org/admin/tools/add-tool-from-toolshed-tutorial/
.. _Datatypes documentation: https://galaxyproject.org/learn/datatypes/
.. _Cluster documentation: cluster.html
.. _Data Preparation documentation: https://galaxyproject.org/admin/data-preparation/
.. _Data Managers documentation: https://galaxyproject.org/admin/tools/data-managers/
@@ -110,7 +109,7 @@ Configuration Basics
.. _uWSGI YAML configuration file: https://uwsgi-docs.readthedocs.io/en/latest/Configuration.html
.. _large number of options: https://uwsgi-docs.readthedocs.io/en/latest/Options.html
----------------------------
Configuration Options
----------------------------
+19 -20
View File
@@ -2,7 +2,7 @@
By default, jobs in Galaxy are run locally on the server on which the Galaxy application was started. Many options are available for running Galaxy jobs on other systems, including clusters and other remote resources.
This document is a reference for the job configuration file. [Detailed documentation](cluster.html) is provided for configuring Galaxy to work with a variety of Distributed Resource Managers (DRMs) such as TORQUE, Grid Engine, LSF, and HTCondor. Additionally, a wide range of infrastructure decisions and configuration changes should be made when running Galaxy as a production service, as one is likely doing if using a cluster. It is highly recommended that the [production server documentation](production.html) and [cluster configuration documentation](cluster.html) be read before making changes to the job configuration.
This document is a reference for the job configuration file. [Detailed documentation](cluster.md) is provided for configuring Galaxy to work with a variety of Distributed Resource Managers (DRMs) such as TORQUE, Grid Engine, LSF, and HTCondor. Additionally, a wide range of infrastructure decisions and configuration changes should be made when running Galaxy as a production service, as one is likely doing if using a cluster. It is highly recommended that the [production server documentation](production.md) and [cluster configuration documentation](cluster.md) be read before making changes to the job configuration.
**The most up-to-date details of advanced job configuration features can be found in the [sample job_conf.xml](https://github.com/galaxyproject/galaxy/blob/dev/config/job_conf.xml.sample_advanced) found in the Galaxy distribution.**
@@ -38,7 +38,7 @@ workers
### Job Handlers
The `<handlers>` configuration elements defines which Galaxy server processes (when [running multiple server processes](scaling.html)) should be used for running jobs, and how to group those processes.
The `<handlers>` configuration elements defines which Galaxy server processes (when [running multiple server processes](scaling.md)) should be used for running jobs, and how to group those processes.
The handlers configuration may define a ``default`` attribute. This is the the handler(s) that should be used if no explicit handler is defined for a job. If unset, any untagged handlers will be used by default.
@@ -49,7 +49,7 @@ id
A server name that should be used to run jobs. Server names are dependent on your application server deployment scenario and are explained in the :ref:`configuration section of the scaling documentation <scaling-configuration>`.
tags
A comma-separated set of strings that optional define tags to which this handler belongs.
A comma-separated set of strings that optional define tags to which this handler belongs.
```
### Job Destinations
@@ -70,7 +70,7 @@ tags
Tags to which this destination belongs (for example `tags="longwalltime,bigcluster"`).
```
``destination`` elements may contain zero or more ``<param>``s, which are passed to the destination's defined runner plugin and interpreted in a way native to that plugin. For details on the parameter specification, see the documentation on [Cluster configuration](cluster.html).
``destination`` elements may contain zero or more ``<param>``s, which are passed to the destination's defined runner plugin and interpreted in a way native to that plugin. For details on the parameter specification, see the documentation on [Cluster configuration](cluster.md).
### Environment Modifications
@@ -109,7 +109,7 @@ destination
Job destination(s) that should be used to run jobs for this tool after resubmission.
```
**Note:** Currently, failure conditions for memory limits and walltime are only implemented for the [Slurm](cluster.html) job runner plugin. Contributions for other implementations would be greatly appreciated! An example job configuration and an always-fail job runner plugin for development [can be found in this gist](https://gist.github.com/natefoo/361414fbca3c0ea63aa5).
**Note:** Currently, failure conditions for memory limits and walltime are only implemented for the [Slurm](cluster.md) job runner plugin. Contributions for other implementations would be greatly appreciated! An example job configuration and an always-fail job runner plugin for development [can be found in this gist](https://gist.github.com/natefoo/361414fbca3c0ea63aa5).
### Running jobs in containers
@@ -124,7 +124,7 @@ work.
The images used for containers can either be specified explicitely in the ``<destination>`` using the *docker_default_container_id*, *docker_container_id_override*, *singularity_default_container_id* and
*singularity_container_id_override* parameters, but (perhaps more commonly) the image to use can be derived from the
tool requirements of the Galaxy tool being executed. In this latter case the image is specified by the
tool using a ``<container>`` tag in the ``<requirements>`` section.
tool using a ``<container>`` tag in the ``<requirements>`` section.
### Macros
@@ -184,7 +184,6 @@ To define and use rules, copy this sample file to `config/tool_destinations.yml`
</destination>
```
#### Dynamic Destination Mapping (Python method)
The simplest way to get started with dynamic job destinations is to first create a dynamic job destination in `job_conf.xml`'s `<destinations>` section:
@@ -205,7 +204,6 @@ Next for any tool one wants to dynamically assign job destinations for, this `bl
<tool id="ncbi_blastn_wrapper" destination="blast" />
```
Finally, you will need to define a function that describes how `ncbi_blastn_wrapper` should be executed. To do this, one must create a python source file in `lib/galaxy/jobs/rules`, for instance `destinations.py` (though the name of this file is largely unimportant, one can distribute any number of functions across any number of files and they will be automatically detected by Galaxy).
So open `lib/galaxy/jobs/rules/destinations.py` and define a `ncbi_blastn_wrapper` function. A couple possible examples may be:
@@ -228,8 +226,7 @@ def ncbi_blastn_wrapper(job):
```
or
or
```python
from galaxy.jobs import JobDestination
@@ -278,7 +275,7 @@ The above examples demonstrate that the dynamic job destination framework will p
A dictionary of parameters specified by the user using ``job_resource_params_conf.xml`` (if configured).
``workflow_invocation_uuid``
A randomly generated UUID for the workflow invocation generating this job - this can be
A randomly generated UUID for the workflow invocation generating this job - this can be
useful for instance in routing all the jobs in the same workflow to one resource.
```
@@ -356,7 +353,7 @@ def dev_only(user_email):
if user_email in DEV_EMAILS
return JobDestination(runner="drmaa")
else:
raise JobMappingException("This tool is under development and you are not authorized to it.")
raise JobMappingException("This tool is under development and you are not authorized to it.")
```
@@ -377,39 +374,41 @@ The `<limits>` collection has no attributes.
The collection contains `<limit>`s, which have different meanings based on their required `type` attribute:
```eval_rst
type
``type``
Type of limit to define - one of ``registered_user_concurrent_jobs``, ``anonymous_user_concurrent_jobs``, ``destination_user_concurrent_jobs``, ``destination_total_concurrent_jobs``, ``walltime``, and ``output_size``.
id
``id``
Optional destination on which to apply limit (for ``destination_user_concurrent_jobs`` and ``destination_total_concurrent_jobs`` types only) (e.g. ``id="galaxy_cluster"``).
tag
``tag``
Optional destinations on which to apply limit (for ``destination_user_concurrent_jobs`` and ``destination_total_concurrent_jobs`` types only).
```
If a limit tag is defined, its value must be set. If the limit tag is not defined, the default for each type is unlimited. The syntax for the available `type`s are:
```eval_rst
``registered_user_concurrent_jobs``
Limit on the number of jobs a user with a registered Galaxy account can have active across all destinations.
``anonymous_user_concurrent_jobs``
Limit on the number of jobs an unregistered/anonymous user can have active across all destinations.
``destination_user_concurrent_jobs``
``destination_user_concurrent_jobs``
The number of jobs a user can have active in the specified destination, or across all destinations identified by the specified tag.
``destination_total_concurrent_jobs``
The number of jobs that can be active in the specified destination (or across all destinations identified by the specified tag) by any/all users.
``walltime``
Amount of time a job can run (in any destination) before it will be terminated by Galaxy.
Amount of time a job can run (in any destination) before it will be terminated by Galaxy.
``total_walltime``
Total walltime that jobs may not exceed during a set period. If total walltime of finished
jobs exceeds this value, any new jobs are paused. This limit should include a `window`
Total walltime that jobs may not exceed during a set period. If total walltime of finished
jobs exceeds this value, any new jobs are paused. This limit should include a ``window``
attribute that is the number in days representing the period.
``output_size``
Size that any defined tool output can grow to before the job will be terminated. This does not include temporary files created by the job (e.g. ``53687091200`` for (50 GB)).
Size that any defined tool output can grow to before the job will be terminated. This does not include temporary files created by the job (e.g. ``53687091200`` for 50 GB).
```
The concept of "across all destinations" is used because Galaxy allows users to run jobs across any number of local or remote (cluster) resources. A user may always queue an unlimited number of jobs in Galaxy's internal job queue. The concurrency limits apply to jobs that have been dispatched and are in the `queued` or `running` states. These limits prevent users from monopolizing the resources Galaxy runs on by, for example, preventing a single user from submitting more long-running jobs than Galaxy has cluster slots to run and subsequently blocking all Galaxy jobs from running for any other user.
+7 -7
View File
@@ -13,7 +13,7 @@ servers, [usegalaxy.org][main] ("Main") and [Test][test], as well as the [Docker
NGINX, rather than Apache, to proxy Galaxy. NGINX was chosen for its simple, fast load balancing and other
proxy-oriented features.
Instructions for [proxying with Apache](apache.html) are also available.
Instructions for [proxying with Apache](apache.md) are also available.
[nginx]: http://nginx.org/en/
[main]: https://galaxyproject.org/main/
@@ -57,7 +57,7 @@ uWSGI protocol support is built in to nginx, so (unlike Apache) no extra modules
The following configuration is not exhaustive, only the portions most relevant to serving Galaxy are shown, these should
be incorporated with your existing/default nginx config as is appropriate for your server. Notably, the nginx package
you installed most likely has a multi-file config layout. If you are not already familiar with that layout and where
best to place your configuration, you can learn more in the [Proxy Package Layouts](proxy_package_layout.html)
best to place your configuration, you can learn more in the [Proxy Package Layouts](proxy_package_layout)
documentation.
```nginx
@@ -158,7 +158,7 @@ http {
Be sure to set `$galaxy_root` to the path to your copy of Galaxy and modify the value of `uwsgi_pass` to match your
uWSGI socket path. With the default configuration, uWSGI will bind to a random TCP socket, so you will need to set it to
a fixed value as described in the [Scaling and Load Balancing](scaling.html) documentation. If using a UNIX domain
a fixed value as described in the [Scaling and Load Balancing](scaling.md) documentation. If using a UNIX domain
socket, be sure to pay particular attention to the discussion of users and permissions.
### Additional Notes
@@ -235,7 +235,7 @@ previous section:
`cookie_path` should be set to prevent Galaxy's session cookies from clobbering each other if you are running more
than one instance of Galaxy under different URL prefixes on the same hostname.
Be sure to consult the [Scaling and Load Balancing](scaling.html) documentation, other options unrelated to proxying
Be sure to consult the [Scaling and Load Balancing](scaling.md) documentation, other options unrelated to proxying
should also be set in the `uwsgi` section of the config.
## Advanced Configuration Topics
@@ -244,7 +244,7 @@ previous section:
Galaxy sends files (e.g. dataset downloads) by opening the file and streaming it in chunks through the proxy server.
However, this ties up the Galaxy process, which can impact the performance of other operations (see [Production Server
Configuration](production.html) for a more in-depth explanation).
Configuration](production.md) for a more in-depth explanation).
Nginx can assume this task instead and as an added benefit, speed up downloads. This is accomplished through the use of
the special `X-Accel-Redirect` header. Dataset security is maintained in this configuration because nginx will still
@@ -360,7 +360,7 @@ galaxy:
You may find it useful to require authentication for access to certain paths on your server. For example, Galaxy can
run a separate reports app which gives useful information about your Galaxy instance. See the [Reports Configuration
documentation](reports.html) and [Peter Briggs' blog post on the
documentation](reports.md) and [Peter Briggs' blog post on the
subject](http://galacticengineer.blogspot.com/2015/06/exposing-galaxy-reports-via-nginx-in.html) for more.
After successfully following the blog post, Galaxy reports should be available at e.g. `https://galaxy.example.org/reports`.
@@ -390,4 +390,4 @@ To secure this page to only Galaxy administrators, adjust your nginx config acco
### External User Authentication
- [Nginx for External Authentication](https://galaxyproject.org/admin/config/nginx-external-user-auth/)
- [Built-in Galaxy External Authentication](authentication.html)
- [Built-in Galaxy External Authentication](authentication.md)
+12 -12
View File
@@ -7,8 +7,8 @@ The [basic installation instructions](https://getgalaxy.org) are suitable for de
By default, Galaxy:
* Uses [SQLite](https://www.sqlite.org/) (a serverless database), so you don't have to run/configure a database server for quick or basic development. However, while SQLite [supports concurrent access](https://sqlite.org/lockingv3.html) it does not support multiple concurrent writes, which can reduce system throughput.
* Uses a built-in HTTP server, written in Python. Much of the work performed by this server can be moved to [nginx](nginx.html) or Apache, which will increase performance.
* Runs all tools locally. Moving to a [cluster](cluster.html) will greatly increase capacity.
* Uses a built-in HTTP server, written in Python. Much of the work performed by this server can be moved to [nginx](nginx.md) or [Apache](apache.md), which will increase performance.
* Runs all tools locally. Moving to a [cluster](cluster.md) will greatly increase capacity.
* Runs in a single process, which is a performance problem in [CPython](http://en.wikipedia.org/wiki/CPython).
Galaxy ships with this default configuration to ensure the simplest, most error-proof configuration possible when doing basic development. As you'll soon see, the goal is to remove as much work as possible from the Galaxy process, since doing so will greatly speed up the performance of its remaining duties. This is due to the Python Global Interpreter Lock (GIL), which is explained in detail in the [Advanced Configuration](#advanced-configuration) section.
@@ -33,7 +33,7 @@ nate@weyerbacher% cd galaxy-dist
nate@weyerbacher% sh run.sh
```
* Galaxy can be housed in a cluster/network filesystem (it's been tested with NFS and GPFS), and you'll want to do this if you'll be running it on a [cluster](cluster.html).
* Galaxy can be housed in a cluster/network filesystem (it's been tested with NFS and GPFS), and you'll want to do this if you'll be running it on a [cluster](cluster.md).
## Basic configuration
@@ -93,16 +93,16 @@ Downloading and uploading data can also be moved to the proxy server. This is e
Virtually any server that proxies HTTP should work, although we provide configuration examples for:
* [Apache](apache.html), and
* [nginx](nginx.html), a high performance reverse proxy, used by our public Galaxy sites
* [Apache](apache.md), and
* [nginx](nginx.md), a high performance reverse proxy, used by our public Galaxy sites
### Using a compute cluster
Galaxy is a framework that runs command-line tools, and if properly configured, can run these tools on a compute [cluster](cluster.html). Without a cluster, you'll be limited to the number of cores in your server, minus those needed to run Galaxy itself. Galaxy currently supports TORQUE PBS, PBS Pro, Platform LSF, and Sun Grid Engine clusters, and does not require a dedicated or special cluster configuration. Tools can even run on heterogeneous cluster nodes (differing operating systems), as long as any dependencies necessary to run the tool are available on that platform.
Galaxy is a framework that runs command-line tools, and if properly configured, can run these tools on a compute [cluster](cluster.md). Without a cluster, you'll be limited to the number of cores in your server, minus those needed to run Galaxy itself. Galaxy currently supports TORQUE PBS, PBS Pro, Platform LSF, and Sun Grid Engine clusters, and does not require a dedicated or special cluster configuration. Tools can even run on heterogeneous cluster nodes (differing operating systems), as long as any dependencies necessary to run the tool are available on that platform.
Using a cluster will also net you a fringe benefit: When running tools locally, they are child processes of the Galaxy server. This means that if you restart the server, you lose contact with those jobs, and they must be restarted. However on the cluster, if the Galaxy server restarts, the jobs will continue to run and finish. Once the Galaxy job manager starts up, it'll resume tracking and finishing jobs as if nothing had happened.
Configuration is not difficult once your cluster is set up. Details can be found on the [cluster](cluster.html) page.
Configuration is not difficult once your cluster is set up. Details can be found on the [cluster](cluster.md) page.
### Cleaning up datasets
@@ -110,7 +110,7 @@ When datasets are deleted from a history or library, it is simply marked as dele
### Rotate log files
To use logrotate to rotate Galaxy log files, add a new file named "galaxy" to /etc/logrotate.d/ directory with something like:
To use logrotate to rotate Galaxy log files, add a new file named `galaxy` to `/etc/logrotate.d/` directory with something like:
```
PATH_TO_GALAXY_LOG_FILES {
@@ -137,7 +137,7 @@ To get started with setting up local data, please see [Data Integration](https:/
### Enable upload via FTP
File sizes have grown very large thanks to rapidly advancing sequencer technology, and it is not always practical to upload these files through the browser. Thankfully, a simple solution is to allow Galaxy users to upload them via FTP and import those files in to their histories. Configuration for FTP is explained on the [File Upload via FTP](special_topics/ftp.html) page.
File sizes have grown very large thanks to rapidly advancing sequencer technology, and it is not always practical to upload these files through the browser. Thankfully, a simple solution is to allow Galaxy users to upload them via FTP and import those files in to their histories. Configuration for FTP is explained on the [File Upload via FTP](special_topics/ftp.md) page.
## Advanced configuration
@@ -145,11 +145,11 @@ File sizes have grown very large thanks to rapidly advancing sequencer technolog
As already mentioned, unloading work from the Galaxy process is important due to the Python [Global Interpreter Lock](https://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock) (GIL). The GIL is how Python ensures thread safety, and it accomplishes this by only allowing one thread to control execution at a time. This means that regardless of the number of cores in your server, Galaxy can only use one. However, there's a solution: run multiple Galaxy processes and use the proxy server to balance across all of these processes. In practice, Galaxy is split into job handler and web server processes. Job handlers do not service any user requests directly via the web. Instead, they watch the database for new jobs, and upon finding them, handle the preparation, monitoring, running, and completion of them. Likewise, the web server processes are free to deal only with serving content and files to web clients.
Full details on how to configure scaling and load balancing can be found in the [scaling](scaling.html) documentation.
Full details on how to configure scaling and load balancing can be found in the [scaling](scaling.md) documentation.
### Unloading even more work
For those readers who've already been running Galaxy on a cluster, a bit of information was recently added to the [cluster](cluster.html) documentation regarding running the data source tools on the cluster (contrary to the default configuration). Running all tools on the cluster is strongly encouraged, so if you have not done this, please check out the new information.
For those readers who've already been running Galaxy on a cluster, a bit of information was recently added to the [cluster](cluster.md) documentation regarding running the data source tools on the cluster (contrary to the default configuration). Running all tools on the cluster is strongly encouraged, so if you have not done this, please check out the new information.
### Tune the database
@@ -161,4 +161,4 @@ Finally, if you are using Galaxy <= release_2014.06.02, we recommend that you in
### Make the proxy handle uploads and downloads
By default, Galaxy receives file uploads as a stream from the proxy server and then writes this file to disk. Likewise, it sends files as a stream to the proxy server. This occupies the GIL in that Galaxy process and will decrease responsiveness for other operations in that process. To solve this problem, you can configure your proxy server to serve downloads directly, involving Galaxy only for the task of authorizing that the user has permission to read the dataset. If using nginx as the proxy, you can configure it to receive uploaded files and write them to disk itself, only notifying Galaxy of the upload once it's completed. All the details on how to configure these can be found on the [Apache](apache.html) and [nginx](nginx.html) proxy instruction pages.
By default, Galaxy receives file uploads as a stream from the proxy server and then writes this file to disk. Likewise, it sends files as a stream to the proxy server. This occupies the GIL in that Galaxy process and will decrease responsiveness for other operations in that process. To solve this problem, you can configure your proxy server to serve downloads directly, involving Galaxy only for the task of authorizing that the user has permission to read the dataset. If using nginx as the proxy, you can configure it to receive uploaded files and write them to disk itself, only notifying Galaxy of the upload once it's completed. All the details on how to configure these can be found on the [Apache](apache.md) and [nginx](nginx.md) proxy instruction pages.
+8 -8
View File
@@ -6,7 +6,7 @@ which prevents more than one thread from being on CPU at a time. Because of thi
improve the Galaxy framework's performance out of the box since Galaxy can use (at most) one core at a time in its
default configuration. However, Galaxy can easily run in multiple separate processes, which solves this problem. For a
more thorough explanation of this problem and why you will almost surely want to switch to the multiprocess
configuration if running for more than a small handful of users, see the [production configuration](production.html)
configuration if running for more than a small handful of users, see the [production configuration](production.md)
page.
Just to be clear: increasing the values of `threadpool_workers` in `galaxy.yml` or the number of plugin workers in
@@ -43,7 +43,7 @@ Beginning with Galaxy release 18.01, the default application server for new inst
Prior to 18.01, it was possible (and indeed, recommended for production Galaxy servers) to run Galaxy under uWSGI, but
it was necessary to install and configure uWSGI separately from Galaxy. uWSGI is now provided with Galaxy as a Python
Wheel and installed in to its virtualenv, as described in detail in the [Framework
Dependencies](framework_dependencies.html) documentation.
Dependencies](framework_dependencies) documentation.
uWSGI has numerous benefits over Python Paste for our purposes:
@@ -62,15 +62,15 @@ uWSGI has numerous benefits over Python Paste for our purposes:
There are multiple deployment strategies for the Galaxy application that you can choose from. The right one depends on
the configuration of the infrastructure on which you are deploying. In all cases, all Galaxy job features such as
[running on a cluster](cluster.html) are supported.
[running on a cluster](cluster.md) are supported.
Although uWSGI implements nearly all the features that were previously the responsibility of an upstream proxy server,
at this time, it is still recomended to place a proxy server in front of uWSGI and utilize it for all of its traditional
roles (serving static content, serving dataset downloads, etc.) as described in the [production
configuration](production.html) documentation.
configuration](production.md) documentation.
When using uWSGI with a proxy server, it is recommended that you use the native high performance uWSGI protocol
(supported by both [Apache](apache.html) and [nginx](nginx.html)) between uWSGI and the
(supported by both [Apache](apache.md) and [nginx](nginx.md)) between uWSGI and the
proxy server, rather than HTTP.
### uWSGI with jobs handled by web workers (default configuration)
@@ -340,7 +340,7 @@ permission on the socket. Because Galaxy and the proxy server most likely run as
be the case by default. One common solution is to add the proxy server's user to the Galaxy user's primary group.
uWSGI's `chmod-socket` option can also help here.
You can consult the Galaxy documentation for [Apache](apache.html) or [nginx](nginx.html)
You can consult the Galaxy documentation for [Apache](apache.md) or [nginx](nginx.md)
for help with the proxy-side configuration.
By setting the `socket` option, `run.sh` will no longer automatically serve Galaxy via HTTP (since it is assumed that
@@ -440,7 +440,7 @@ separated, to the `job-handlers` farm. For example, 3 handlers are defined like
By default, a job will be handled by whatever mule currently has the lock on the mule message queue. After receiving a
message, it will release the lock, giving other mules a chance to handle future jobs. Jobs can be explicitly mapped to
specific mules as described in the [Job configuration documentation](jobs.html) by using the handler IDs
specific mules as described in the [Job configuration documentation](jobs.md) by using the handler IDs
`main.job-handlers.N`, where `N` is the mule's position in the farm, starting at 1 and incrementing for each mule in the
farm (this is not necessarily the mule ID, but it will be if you only define one farm and you add mules to that farm in
sequential order). Each worker that you wish to explicitly map jobs to should be defined in the `<handlers>` section
@@ -624,7 +624,7 @@ More details on the `unix_signal` hook can be found in [uWSGI Issue #849](https:
It's possible to configure uWSGI to log to a file with the `logto` or `logto2` options (when running in the foreground,
the default), but more advanced logging options that split log files for each process are possible and described in the
Galaxy [Logging Configuration documentation](config_logging.html)
Galaxy [Logging Configuration documentation](config_logging)
When running as a daemon with `run.sh --daemon`, output is logged to `galaxy.log` and the pid is written to
`galaxy.pid`. These can be controlled with the `daemonize` and `pidfile` arguments (their `daemonize2` and `pidfile2`
+3 -1
View File
@@ -40,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 = ['recommonmark', 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx']
extensions = ['recommonmark', 'sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'sphinx_markdown_tables']
if not SKIP_SOURCE:
extensions += ['sphinx.ext.doctest', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.viewcode']
@@ -64,6 +64,8 @@ def setup(app):
app.connect("autodoc-skip-member", dont_skip_init)
app.add_config_value('recommonmark_config', {
'enable_auto_doc_ref': False,
'enable_auto_toc_tree': False,
'enable_inline_math': False, # https://github.com/rtfd/recommonmark/pull/124
}, True)
app.add_transform(AutoStructify)
+3 -3
View File
@@ -285,7 +285,7 @@ Fixes
* Remove unnecessary ``set_output_history`` parameter
(thanks to `@nsoranzo <https://github.com/nsoranzo>`__).
`Pull Request 3155`_
* Fix BLAST database *.loc files inconsistency
* Fix BLAST database ``*.loc`` files inconsistency
(thanks to `@peterjc <https://github.com/peterjc>`__).
`Pull Request 3098`_
* Log invalid XML filename
@@ -387,7 +387,7 @@ Fixes
`Pull Request 3049`_
* Remove incorrect communication server check.
`Pull Request 3053`_
* Fix tool XSD to accept a help attribute for ``section``s
* Fix tool XSD to accept a help attribute for ``section``\ s
(thanks to `@joachimwolff <https://github.com/joachimwolff>`__).
`Pull Request 3131`_
* Fix import orders for updates to flake8_import_order.
@@ -445,8 +445,8 @@ Fixes
* Fix for ToolShed install when copied sample data target exists, but is broken symlink.
`Pull Request 3279`_
.. _Issue 2375: https://github.com/galaxyproject/galaxy/issues/2375
.. github_links
.. _Issue 2375: https://github.com/galaxyproject/galaxy/issues/2375
.. _Pull Request 1768: https://github.com/galaxyproject/galaxy/pull/1768
.. _Pull Request 2588: https://github.com/galaxyproject/galaxy/pull/2588
.. _Pull Request 2653: https://github.com/galaxyproject/galaxy/pull/2653
+4 -4
View File
@@ -62,7 +62,7 @@ Deprecation Notices
* The Galaxy Sample Tracking and External Services functionality is now considered deprecated. In the next releases we will remove it completely. Related PRs:`#4526 <https://github.com/galaxyproject/galaxy/pull/4526>`__ `#4872 <https://github.com/galaxyproject/galaxy/pull/4872>`__ .
* The deprecated admin-only interface for Galaxy Data Libraries is staged to be removed in the next release.
* Workflows API: When exposing WorkflowInvocationSteps ``state`` will no longer be available.
* The ``refresh_on_change`` attribute of a ``<param>`` tag in the tool syntax can no longer be set to a value of another parameter. Use boolean instead (e.g.``refresh_on_change="True"``). `Details <https://github.com/galaxyproject/galaxy/issues/4810>`__
* The ``refresh_on_change`` attribute of a ``<param>`` tag in the tool syntax can no longer be set to a value of another parameter. Use boolean instead (e.g. ``refresh_on_change="True"``). `Details <https://github.com/galaxyproject/galaxy/issues/4810>`__
* The endpoint ``/api/configuration/toolbox`` is now deprecated and will be removed in the future. All tools are now watched for changes and this feature became obsolete.
@@ -105,8 +105,8 @@ on the Galaxy server as the user running the Galaxy server process.
The vulnerability only affects Galaxy servers on which Galaxy Interactive
Environments are enabled (by setting the
`interactive_environment_plugins_directory`
option in `galaxy.ini`). Because the vulnerability can be exploited to
``interactive_environment_plugins_directory``
option in ``galaxy.ini``). Because the vulnerability can be exploited to
execute arbitrary code, the impact for affected servers is severe.
Administrators of Galaxy servers where GIEs *are* enabled should update
@@ -130,7 +130,7 @@ distribution and are enabled by default (most tools under the "Get Data"
section of the tool panel), meaning that its exploitability is fairly high,
as only one such tool needs to be enabled to be vulnerable, including any
custom data source tools (any tool that uses
`tools/data_source/data_source.py`).
``tools/data_source/data_source.py``).
What files are readable depends entirely upon what the job's user has
access to read on the host(s) where jobs run.
File diff suppressed because it is too large Load Diff
@@ -1,152 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="890.447px" height="167.398px" viewBox="0 0 890.447 167.398" enable-background="new 0 0 890.447 167.398"
xml:space="preserve">
<path fill="#5C8BEE" d="M108.421,75.665h80.791v-10h-80.791c-9.799,0-17.771,7.971-17.771,17.771
c0,9.797,7.972,17.771,17.771,17.771h39.413v5.438l24.834-10.439l-24.834-10.438v5.438h-39.413c-4.285,0-7.771-3.479-7.771-7.771
C100.65,79.151,104.136,75.665,108.421,75.665z"/>
<polygon fill="#5C8BEE" points="328.457,76.665 632.869,76.665 632.869,66.665 328.457,66.665 328.457,61.222 303.625,71.665
328.457,82.106 "/>
<rect x="478.624" y="93.664" fill="#5C8BEE" width="15" height="10"/>
<rect x="503.624" y="93.664" fill="#5C8BEE" width="15" height="10"/>
<rect x="578.623" y="93.664" fill="#5C8BEE" width="15" height="10"/>
<polygon fill="#5C8BEE" points="603.037,88.222 603.037,93.665 602.623,93.665 602.623,103.664 603.037,103.664 603.037,109.105
627.869,98.664 "/>
<rect x="553.623" y="93.664" fill="#5C8BEE" width="15" height="10"/>
<rect x="453.625" y="93.664" fill="#5C8BEE" width="15" height="10"/>
<rect x="528.624" y="93.664" fill="#5C8BEE" width="15" height="10"/>
<rect x="428.625" y="93.664" fill="#5C8BEE" width="15" height="10"/>
<rect x="403.625" y="93.664" fill="#5C8BEE" width="15" height="10"/>
<rect x="378.625" y="93.664" fill="#5C8BEE" width="15" height="10"/>
<polygon fill="#5C8BEE" points="822.016,67.828 785.604,67.828 785.604,62.385 760.771,72.828 785.604,83.27 785.604,77.828
822.016,77.828 "/>
<g>
<path d="M684.365,113.559l-9.545-53.396h8.439l6.693,41.621l6.75-41.621h8.445l-9.717,53.396H684.365L684.365,113.559z"/>
</g>
<g>
<path d="M231.792,113.559h-8.055V60.12h11.559l7.506,38.386l7.205-38.386h11.104v53.438h-8.054v-33.58l-6.988,33.58h-6.477
l-7.799-33.494L231.792,113.559L231.792,113.559z"/>
</g>
<path d="M689.988,146.9c-33.771,0-61.229-27.465-61.229-61.229c0-33.759,27.467-61.225,61.229-61.225
c33.762,0,61.227,27.465,61.227,61.225C751.215,119.438,723.748,146.9,689.988,146.9L689.988,146.9z M689.988,32.452
c-29.354,0-53.229,23.876-53.229,53.224c0,29.354,23.877,53.229,53.229,53.229c29.35,0,53.227-23.877,53.227-53.229
C743.215,56.329,719.338,32.452,689.988,32.452L689.988,32.452z"/>
<path d="M242.424,146.9c-33.76,0-61.225-27.465-61.225-61.229c0-33.759,27.465-61.225,61.225-61.225
c33.76,0,61.225,27.465,61.225,61.225C303.649,119.438,276.184,146.9,242.424,146.9L242.424,146.9z M242.424,32.452
c-29.349,0-53.225,23.876-53.225,53.224c0,29.354,23.876,53.229,53.225,53.229c29.349,0,53.225-23.877,53.225-53.229
C295.649,56.329,271.773,32.452,242.424,32.452L242.424,32.452z"/>
<g>
<path d="M38.009,99.439c0,2.115-0.819,3.922-2.458,5.422c-1.639,1.5-3.616,2.25-5.933,2.25h-8.39V75.049h8.391
c2.335,0,4.317,0.75,5.947,2.25c1.629,1.5,2.444,3.309,2.444,5.396L38.009,99.439L38.009,99.439z M26.567,102.33h3.221
c0.848,0,1.563-0.271,2.147-0.831c0.583-0.554,0.876-1.205,0.876-1.955V82.772c0-0.771-0.297-1.422-0.89-1.979
c-0.593-0.546-1.304-0.812-2.133-0.812h-3.221V102.33z"/>
<path d="M41.682,107.111V75.049h7.995c2.109,0,4.012,0.503,5.707,1.518c1.45,0.854,2.486,2.174,3.108,3.963
C58.831,81.482,59,82.617,59,83.923c0,2.146-0.631,3.869-1.893,5.165c-0.528,0.545-1.149,0.963-1.865,1.252
c1.187,0.408,2.193,1.229,3.023,2.438c0.545,0.812,0.951,1.875,1.215,3.17c0.131,0.666,0.197,1.396,0.197,2.227
c0,2.027-0.424,3.75-1.271,5.165c-0.66,1.106-1.593,1.995-2.797,2.659c-1.356,0.75-2.703,1.125-4.04,1.125L41.682,107.111
L41.682,107.111L41.682,107.111z M47.445,88.139h2.232c1.657,0,2.769-0.73,3.333-2.199c0.207-0.545,0.311-1.219,0.311-2.021
c0-1.33-0.358-2.335-1.074-3.018c-0.66-0.631-1.516-0.946-2.571-0.946h-2.232L47.445,88.139L47.445,88.139z M47.445,102.33h2.232
c1.808,0,3.061-0.844,3.757-2.53c0.245-0.569,0.367-1.233,0.367-1.983c0-1.791-0.377-3.104-1.13-3.912
c-0.678-0.75-1.677-1.125-2.995-1.125h-2.232L47.445,102.33L47.445,102.33z"/>
</g>
<path fill="#231F20" d="M39.585,40.734C18.575,40.734,5,46.154,5,54.541v49.711c0,7.872,13.223,16.368,34.585,16.368
s34.584-8.496,34.584-16.368V54.541C74.169,46.154,60.596,40.734,39.585,40.734z M39.591,46.734c20.195,0,28.578,5.084,28.578,7.807
c0,2.726-8.384,7.812-28.584,7.812S11,57.265,11,54.541C11,51.819,19.385,46.734,39.591,46.734z M39.585,114.62
C21.089,114.62,11,107.77,11,104.252V62.95c5.911,3.42,15.886,5.403,28.585,5.403c12.698,0,22.673-1.983,28.584-5.403v41.302
C68.169,107.77,58.08,114.62,39.585,114.62z"/>
<path fill="#5C8BEE" d="M303.081,115.44l8.812,4.725c3.835-8.158,6.291-17.09,7.024-26.5H308.89
C308.203,101.376,306.181,108.706,303.081,115.44z"/>
<path fill="#5C8BEE" d="M322.146,125.657l11.023,5.908c5.629-11.577,9.105-24.383,9.909-37.9h-12.524
C329.788,105.052,326.844,115.852,322.146,125.657z"/>
<path fill="#5C8BEE" d="M343.369,137.03l13.229,7.088c7.619-15.333,12.24-32.406,13.081-50.453h-15.016
C353.841,109.154,349.863,123.818,343.369,137.03z"/>
<path d="M864.363,86.665c0,0,8.65-9.795,8.65-27.766c0-10.746-8.844-19.493-19.488-19.493c-10.844,0-19.496,8.844-19.496,19.493
c0,17.971,8.652,27.766,8.652,27.766c0,13.501-21.68,9.318-21.68,24.342v4.374c0,1.236,0.949,2.188,2.188,2.188h60.76
c1.235,0,2.186-0.952,2.186-2.188v-4.374C886.041,95.793,864.363,100.166,864.363,86.665z"/>
<g>
<path fill="#BFBFBF" d="M123.738,44.126c0.02,1.304-0.318,2.416-1.014,3.341c-0.458,0.626-1.104,1.069-1.939,1.328
c-0.447,0.14-0.969,0.208-1.566,0.208c-1.104,0-2.019-0.272-2.744-0.819c-0.607-0.447-1.086-1.057-1.439-1.827
c-0.353-0.771-0.559-1.653-0.619-2.647l2.685-0.193c0.119,1.09,0.407,1.879,0.865,2.368c0.338,0.37,0.726,0.546,1.164,0.525
c0.616-0.02,1.108-0.323,1.477-0.911c0.188-0.289,0.283-0.701,0.283-1.239c0-0.775-0.353-1.548-1.059-2.313
c-0.557-0.527-1.392-1.318-2.505-2.374c-0.935-0.906-1.596-1.717-1.984-2.434c-0.417-0.807-0.626-1.683-0.626-2.628
c0-1.701,0.572-2.99,1.715-3.866c0.706-0.527,1.581-0.791,2.625-0.791c1.004,0,1.864,0.224,2.58,0.671
c0.557,0.348,1.007,0.835,1.35,1.462c0.343,0.626,0.549,1.347,0.619,2.163l-2.699,0.492c-0.08-0.767-0.298-1.362-0.656-1.79
c-0.259-0.309-0.632-0.462-1.119-0.462c-0.517,0-0.91,0.229-1.178,0.686c-0.219,0.368-0.328,0.825-0.328,1.372
c0,0.854,0.368,1.725,1.104,2.61c0.278,0.338,0.696,0.735,1.253,1.192c0.656,0.547,1.089,0.931,1.297,1.148
c0.696,0.695,1.233,1.382,1.611,2.058c0.179,0.318,0.323,0.612,0.433,0.88C123.589,43.002,123.729,43.599,123.738,44.126z"/>
<path fill="#BFBFBF" d="M128.481,40.949l-3.773-10.873h3.103l2.088,6.711l2.073-6.711h3.117L131.3,40.949v7.83h-2.819V40.949z"/>
<path fill="#BFBFBF" d="M140.505,30.076l3.741,12.57v-12.57h2.819v18.703h-3.028l-3.877-11.978v11.978h-2.819V30.076H140.505z"/>
<path fill="#BFBFBF" d="M154.015,49.018c-1.243,0-2.299-0.436-3.169-1.306c-0.87-0.87-1.305-1.921-1.305-3.153V34.357
c0-1.243,0.438-2.299,1.312-3.169s1.929-1.306,3.162-1.306c1.243,0,2.297,0.438,3.162,1.312c0.865,0.875,1.297,1.929,1.297,3.162
v2.133h-2.923v-2.193c0-0.446-0.159-0.83-0.477-1.147c-0.318-0.318-0.701-0.478-1.148-0.478c-0.448,0-0.828,0.159-1.141,0.478
c-0.313,0.317-0.47,0.701-0.47,1.147v10.232c0,0.447,0.157,0.828,0.47,1.141c0.313,0.313,0.693,0.471,1.141,0.471
c0.447,0,0.83-0.156,1.148-0.471c0.318-0.312,0.477-0.692,0.477-1.141v-2.581h2.923v2.61c0,1.242-0.438,2.297-1.312,3.161
C156.287,48.585,155.238,49.018,154.015,49.018z"/>
</g>
<g>
<path fill="#BFBFBF" d="M593.451,44.304c0,1.232-0.433,2.286-1.297,3.161c-0.865,0.875-1.909,1.312-3.133,1.312h-4.431V30.076
h4.431c1.232,0,2.279,0.438,3.141,1.312c0.859,0.875,1.289,1.924,1.289,3.146V44.304z M587.412,45.99h1.699
c0.446,0,0.825-0.162,1.134-0.485c0.308-0.322,0.462-0.703,0.462-1.141V34.58c0-0.448-0.156-0.83-0.469-1.147
c-0.314-0.318-0.689-0.479-1.127-0.479h-1.699V45.99L587.412,45.99z"/>
<path fill="#BFBFBF" d="M599.01,44.484l-0.684,4.295h-2.937l3.178-18.688h3.878l3.132,18.688h-2.964l-0.66-4.295H599.01z
M600.491,34.371l-1.044,7.368h2.088L600.491,34.371z"/>
<path fill="#BFBFBF" d="M608.307,32.925h-2.998v-2.833h8.801v2.833h-2.983v15.854h-2.818L608.307,32.925L608.307,32.925z"/>
<path fill="#BFBFBF" d="M617.43,44.484l-0.684,4.295h-2.937l3.178-18.688h3.878l3.132,18.688h-2.964l-0.66-4.295H617.43z
M618.911,34.371l-1.044,7.368h2.088L618.911,34.371z"/>
</g>
<g>
<path fill="#BFBFBF" d="M768.561,48.779h-2.819V30.091h2.819V48.779z"/>
<path fill="#BFBFBF" d="M774.245,30.076l3.741,12.57v-12.57h2.817v18.703h-3.026l-3.878-11.978v11.978h-2.819V30.076H774.245z"/>
<path fill="#BFBFBF" d="M787.77,30.091c1.372,0,2.467,0.433,3.281,1.298c0.756,0.824,1.133,1.879,1.133,3.161v2.715
c0,1.232-0.43,2.286-1.289,3.161s-1.901,1.312-3.125,1.312h-1.625v7.04h-2.819V30.091H787.77z M789.455,34.594
c0-0.486-0.146-0.88-0.439-1.178c-0.294-0.298-0.685-0.447-1.172-0.447h-1.699v5.981h1.699c0.447,0,0.828-0.159,1.142-0.478
s0.471-0.701,0.471-1.148L789.455,34.594L789.455,34.594z"/>
<path fill="#BFBFBF" d="M798.881,48.988c-1.243,0-2.297-0.433-3.162-1.298s-1.298-1.914-1.298-3.147V30.091h2.759v14.423
c0,0.446,0.16,0.827,0.479,1.141c0.316,0.312,0.7,0.47,1.147,0.47s0.827-0.157,1.142-0.47c0.312-0.313,0.47-0.694,0.47-1.141
V30.091h2.938v14.452c0,1.253-0.438,2.308-1.312,3.162C801.17,48.56,800.113,48.988,798.881,48.988z"/>
<path fill="#BFBFBF" d="M808.604,32.925h-2.997v-2.833h8.8v2.833h-2.982v15.854h-2.818V32.925H808.604z"/>
</g>
<g>
<path fill="#BFBFBF" d="M384.73,140.802c-1.243,0-2.3-0.435-3.17-1.305c-0.869-0.87-1.305-1.922-1.305-3.154v-10.2
c0-1.244,0.438-2.301,1.312-3.17c0.874-0.87,1.929-1.306,3.162-1.306c1.242,0,2.297,0.438,3.161,1.312
c0.865,0.875,1.298,1.929,1.298,3.162v2.133h-2.924v-2.193c0-0.447-0.158-0.83-0.477-1.147c-0.318-0.318-0.701-0.478-1.148-0.478
s-0.828,0.158-1.141,0.478c-0.312,0.317-0.47,0.7-0.47,1.147v10.232c0,0.446,0.157,0.827,0.47,1.141
c0.312,0.312,0.693,0.469,1.141,0.469s0.83-0.155,1.148-0.469c0.318-0.312,0.477-0.693,0.477-1.141v-2.581h2.924v2.609
c0,1.242-0.438,2.298-1.312,3.162C387.003,140.369,385.954,140.802,384.73,140.802z"/>
<path fill="#BFBFBF" d="M394.32,132.644v7.92h-2.819v-18.688h2.819v7.935h3.399v-7.935h2.819v18.688h-2.819v-7.92H394.32z"/>
<path fill="#BFBFBF" d="M406.516,136.269l-0.685,4.295h-2.937l3.178-18.688h3.877l3.132,18.688h-2.964l-0.66-4.295H406.516z
M407.997,126.156l-1.044,7.369h2.088L407.997,126.156z"/>
<path fill="#BFBFBF" d="M418.619,121.861l3.741,12.57v-12.57h2.818v18.703h-3.027l-3.877-11.978v11.978h-2.819v-18.703H418.619
L418.619,121.861z"/>
<path fill="#BFBFBF" d="M432.128,140.802c-1.243,0-2.299-0.438-3.169-1.312s-1.305-1.924-1.305-3.146v-10.2
c0-1.244,0.438-2.301,1.312-3.17c0.874-0.87,1.929-1.306,3.162-1.306c1.243,0,2.297,0.438,3.162,1.312
c0.865,0.875,1.297,1.929,1.297,3.162v2.133h-2.923v-2.193c0-0.447-0.159-0.83-0.478-1.147c-0.317-0.318-0.7-0.478-1.147-0.478
c-0.448,0-0.828,0.158-1.141,0.478c-0.313,0.317-0.471,0.7-0.471,1.147v10.232c0,0.446,0.157,0.827,0.471,1.141
c0.312,0.312,0.692,0.469,1.141,0.469c0.447,0,0.83-0.154,1.147-0.468c0.318-0.312,0.478-0.69,0.478-1.138v-3.674h-1.566v-2.834
h4.489v6.532c0,1.242-0.438,2.298-1.312,3.162C434.401,140.37,433.352,140.802,432.128,140.802z"/>
<path fill="#BFBFBF" d="M439.033,140.564v-18.703h8.023v2.834h-5.205v5.101h3.804v2.834h-3.804v5.102h5.205v2.834L439.033,140.564
L439.033,140.564z"/>
</g>
<g>
<path fill="#BFBFBF" d="M563.609,123.877c1.569,0,2.724,0.433,3.46,1.297c0.646,0.757,0.97,1.811,0.97,3.162v2.715
c0,1.322-0.503,2.44-1.507,3.355l2.088,8.158h-3.048l-1.71-7.039c-0.079,0-0.164,0-0.253,0h-1.626v7.039h-2.819v-18.688
L563.609,123.877L563.609,123.877z M565.295,128.381c0-1.084-0.537-1.626-1.611-1.626h-1.699v5.981h1.699
c0.447,0,0.828-0.16,1.142-0.479c0.312-0.316,0.471-0.7,0.471-1.147L565.295,128.381L565.295,128.381z"/>
<path fill="#BFBFBF" d="M571.035,142.564v-18.703h8.024v2.834h-5.204v5.101h3.803v2.834h-3.803v5.102h5.204v2.834L571.035,142.564
L571.035,142.564z"/>
<path fill="#BFBFBF" d="M584.164,123.861l3.74,12.57v-12.57h2.818v18.703h-3.027l-3.877-11.978v11.978h-2.819v-18.703H584.164
L584.164,123.861z"/>
<path fill="#BFBFBF" d="M602.104,138.09c0,1.233-0.433,2.287-1.298,3.162c-0.864,0.875-1.908,1.312-3.132,1.312h-4.43v-18.703h4.43
c1.232,0,2.279,0.438,3.139,1.312c0.86,0.875,1.291,1.925,1.291,3.146V138.09z M596.062,139.775h1.7
c0.447,0,0.824-0.162,1.134-0.484c0.309-0.323,0.463-0.703,0.463-1.141v-9.785c0-0.447-0.157-0.83-0.472-1.148
c-0.312-0.317-0.688-0.477-1.125-0.477h-1.7V139.775z"/>
<path fill="#BFBFBF" d="M604.578,142.564v-18.703h8.023v2.834h-5.205v5.101h3.805v2.834h-3.805v5.102h5.205v2.834L604.578,142.564
L604.578,142.564z"/>
<path fill="#BFBFBF" d="M618.986,123.877c1.569,0,2.724,0.433,3.46,1.297c0.646,0.757,0.97,1.811,0.97,3.162v2.715
c0,1.322-0.503,2.44-1.507,3.355l2.088,8.158h-3.048l-1.71-7.039c-0.079,0-0.164,0-0.253,0h-1.626v7.039h-2.819v-18.688
L618.986,123.877L618.986,123.877z M620.672,128.381c0-1.084-0.537-1.626-1.611-1.626h-1.699v5.981h1.699
c0.447,0,0.828-0.16,1.142-0.479c0.312-0.316,0.471-0.7,0.471-1.147L620.672,128.381L620.672,128.381z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 336 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 181 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 46 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 9.1 KiB

@@ -1,23 +0,0 @@
@startuml
!include plantuml_options.txt
class HistoryDatasetAssociation {
hid: integer
history_id: integer
dataset_id: integer
state: string
name: string
info: string
}
class Dataset {
object_store_id: string
external_filename: string
_extra_files_path: string
file_size: integer
total_size: integer
}
HistoryDatasetAssociation "*" -> "1" Dataset
@enduml
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 20 KiB

@@ -1,29 +0,0 @@
@startuml
!include plantuml_options.txt
class History
class HistoryDatasetAssociation {
history_content_type = 'dataset'
hid
}
class HistoryDatasetCollectionAssociation {
history_content_type = 'dataset_collection'
hid
}
class DatasetCollection {
collection_type
}
class DatasetCollectionElement {
element_index
element_identifier
}
History "1" -- "*" HistoryDatasetAssociation
History "1" -- "*" HistoryDatasetCollectionAssociation
HistoryDatasetCollectionAssociation "1" -- "1" DatasetCollection
DatasetCollection "1" -- "0..1" DatasetCollectionElement
DatasetCollectionElement "*" -- "1" DatasetCollection
HistoryDatasetAssociation "1" -- "0..1" DatasetCollectionElement
@enduml
Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 36 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 63 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 24 KiB

@@ -1,28 +0,0 @@
@startuml
!include plantuml_options.txt
abstract class ObjectStore {
exists(obj)
file_ready(obj)
create(obj)
size(obj)
delete(obj)
get_data(obj)
get_filename(obj)
update_from_file(obj)
get_store_usage_percent()
}
class DiskObjectStore
abstract class NestedObjectStore
ObjectStore <|-- DiskObjectStore
ObjectStore <|-- NestedObjectStore
ObjectStore <|-- S3ObjectStore
DiskObjectStore <|-- IRODSObjectStore
NestedObjectStore <|-- DistributedObjectStore
NestedObjectStore <|-- HierarchicalObjectStore
@enduml
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 72 KiB

@@ -1,34 +0,0 @@
skinparam handwritten true
' skinparam roundcorner 20
skinparam class {
ArrowFontColor DarkOrange
BackgroundColor #FFEFD5
ArrowColor Orange
BorderColor DarkOrange
}
skinparam object {
ArrowFontColor DarkOrange
BackgroundColor #FFEFD5
ArrowColor Orange
BorderColor DarkOrange
}
skinparam note {
BackgroundColor #FFEFD5
BorderColor #BF5700
}
skinparam sequence {
ArrowColor Orange
ArrowFontColor DarkOrange
ActorBorderColor DarkOrange
ActorBackgroundColor #FFEFD5
ParticipantBorderColor DarkOrange
ParticipantBackgroundColor #FFEFD5
LifeLineBorderColor DarkOrange
LifeLineBackgroundColor #FFEFD5
}
@@ -1,3 +0,0 @@
{
"mirrorActors": false
}
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 18 KiB

@@ -1,20 +0,0 @@
@startuml
!include plantuml_options.txt
note over Browser, Server: HTTP
Browser -> Server: Page Request
activate Server
Server -->Browser: Static Content (HTML+JS+CSS)
deactivate Server
note left of Browser: MVC with \nbackbone.js
Browser -> Server: API Request (JSON)
activate Server
note right of Server: Build JSON response\nin Galaxy "API" controllers
Server --> Browser: API Response (JSON)
deactivate Server
note left of Browser: HTML rendered from\nclient-side templates\n(in Backbone views).
@enduml
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 13 KiB

@@ -1,14 +0,0 @@
@startuml
!include plantuml_options.txt
note over Browser, Server: HTTP
Browser -> Server: Page Request
activate Server
note right of Server: Build HTML fragments\nusing Mako Python library\nin Galaxy "web" controllers
Server --> Browser: Static Content (HTML+JS+CSS)
deactivate Server
note left of Browser: Render HTML fragraments \nwith JavaScript
@enduml
Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 112 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 204 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.3 KiB

@@ -1,25 +0,0 @@
@startuml
!include plantuml_options.txt
object webapp {
controllers : dict
api_controllers : dict
mapper : routes.Mapper
handle_request: (environ, start_response) -> ()
transaction_factory: (environ) -> GalaxyWebTransaction
}
object app {
}
object trans {
}
webapp -> "app" app
app "app" <-- trans
webapp *-- trans
@enduml
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 335 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 50 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 83 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 123 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 476 KiB

File diff suppressed because one or more lines are too long
-173
View File
@@ -1,173 +0,0 @@
@import url(https://fonts.googleapis.com/css?family=Yanone+Kaffeesatz);
@import url(https://fonts.googleapis.com/css?family=Droid+Serif:400,700,400italic);
@import url(https://fonts.googleapis.com/css?family=Ubuntu+Mono:400,700,400italic);
body { font-family: 'Droid Serif'; }
h1, h2, h3 {
font-family: 'Yanone Kaffeesatz';
font-weight: normal;
text-align: center;
}
h3{
position: absolute;
top: 30px;
left: 0px;
width: 100%;
}
.packed h3{
position: absolute;
top: 10px;
left: 0px;
width: 100%;
margin-top:0px;
}
.hljs-monokai .hljs {
display: block;
overflow-x: auto;
padding: .5em;
background: #272822;
color: #ddd;
}
.remark-code, .remark-inline-code {
font-family: 'Ubuntu Mono';
text-align: left;
}
.remark-code{
font-size: 18px;
}
.remark-code-line {
min-height: 1em;
}
ul, ol {
text-align: left;
}
img{
max-height: 400px;
max-width: 700px;
}
.image-10 img {
width: 10%;
}
.image-25 img {
width: 25%;
}
.image-50 img {
width: 50%;
}
.image-75 img {
width: 75%;
}
.footnote {
position: absolute;
bottom: 60px;
left: 0px;
width: 100%;
font-size: 15px;
color: #444444;
}
.my-footer {
position: absolute;
bottom: 0px;
left: 0px;
height: 50px;
width: 100%;
}
.my-footer span {
font-size: 10pt;
position: absolute;
left: 15px;
bottom: 2px;
}
.remark-slide-number {
font-size: 12px;
}
a{
text-decoration: none;
}
td, th {
text-align: left;
padding-left: 5px;
padding-right: 5px;
border-bottom: 1px solid #ddd;
}
.left-column5 {
width: 5%;
float: left;
}
.right-column95 {
width: 93%;
float: right;
}
.left-column95 {
width: 93%;
float: left;
}
.right-column5 {
width: 5%;
float: right;
}
.reduce90 {
font-size: 90%;
}
.reduce90 .remark-code{
font-size: 16px;
}
.reduce70 {
font-size: 70%;
}
.reduce70 .remark-code{
font-size: 12px;
}
.enlarge120 {
font-size: 120%;
}
.enlarge120 .remark-code{
font-size: 22px;
}
.strike {
text-decoration: line-through;
}
.pull-left {
float: left;
width: 47%;
}
.pull-right {
float: right;
width: 47%;
}
.pull-right ~ p {
clear: both;
}
@@ -20,6 +20,7 @@ pytest-pythonpath = "*"
recommonmark = "*"
selenium = "*"
Sphinx = "<1.7" # Docs do not build with sphinx 1.7 for some reason, can't find issue.
sphinx_markdown_tables = "*"
sphinx_rtd_theme = "*"
testfixtures = "*"
twill = {version = "==0.9.1", markers = "python_version < '3'"}
@@ -16,6 +16,7 @@ idna==2.8
imagesize==1.1.0
jinja2==2.10
lxml==4.3.0
markdown==2.6.11
markupsafe==1.1.0
mock==2.0.0
more-itertools==5.0.0
@@ -40,6 +41,7 @@ scandir==1.9.0 ; python_version < '3.5'
selenium==3.141.0
six==1.11.0
snowballstemmer==1.2.1
sphinx-markdown-tables==0.0.9
sphinx-rtd-theme==0.4.2
sphinx==1.6.7
sphinxcontrib-websupport==1.1.0
+1 -1
View File
@@ -279,7 +279,7 @@ and can be configured locally to adapt to any other package management system.
```
This older example shows a tool that requires R version 2.15.1. The
``tool_depensencies.xml`` should contain matching declarations for Galaxy to
``tool_dependencies.xml`` should contain matching declarations for Galaxy to
actually install the R runtime. The ``set_envirornment`` type is only respected
by the tool shed and is ignored by the newer and preferred conda dependency
resolver.