Merge branch 'release_22.05' into dev

This commit is contained in:
mvdbeek
2022-08-22 19:17:35 +02:00
75 changed files with 711 additions and 2113 deletions
@@ -70,6 +70,7 @@
v-for="output in outputs"
:key="output.name"
:output="output"
:post-job-actions="postJobActions"
:get-node="getNode"
:get-manager="getManager"
@onAdd="onAddOutput"
@@ -61,10 +61,11 @@ export default {
oldTerminal.destroyInvalidConnections();
} else {
// create new terminal, connect like old terminal, destroy old terminal
// this might be a little buggy, the terminals and connectors should be vue components
this.$emit("onRemove", this.input);
const newTerminal = this.createTerminal(newInput);
newTerminal.connectors = this.terminal.connectors.map((c) => {
return new Connector(this.getManager(), c.outputHandle, newTerminal);
return new Connector(this.getManager().canvasManager, c.outputHandle, newTerminal);
});
newTerminal.destroyInvalidConnections();
this.terminal = newTerminal;
@@ -34,6 +34,10 @@ export default {
type: Function,
required: true,
},
postJobActions: {
type: Object,
required: true,
},
},
data() {
return {
@@ -46,12 +50,8 @@ export default {
return `node-${node.id}-output-${this.output.name}`;
},
label() {
let extensions = this.output.extensions || this.output.type || "unspecified";
if (Array.isArray(extensions)) {
extensions = extensions.join(", ");
}
const activeLabel = this.output.activeLabel || this.output.label || this.output.name;
return `${activeLabel} (${extensions})`;
return `${activeLabel} (${this.extensions.join(", ")})`;
},
activeClass() {
return this.output.activeOutput && "mark-terminal-active";
@@ -67,6 +67,19 @@ export default {
}
return cls;
},
forcedExtension() {
const changeDatatype =
this.postJobActions[`ChangeDatatypeAction${this.output.label}`] ||
this.postJobActions[`ChangeDatatypeAction${this.output.name}`];
return changeDatatype?.action_arguments.newtype;
},
extensions() {
let extensions = this.forcedExtension || this.output.extensions || this.output.type || "unspecified";
if (!Array.isArray(extensions)) {
extensions = [extensions];
}
return extensions;
},
},
watch: {
label() {
@@ -78,14 +91,15 @@ export default {
output(newOutput) {
const oldTerminal = this.terminal;
if (oldTerminal instanceof this.terminalClassForOutput(newOutput)) {
oldTerminal.update(newOutput);
oldTerminal.update({ ...newOutput, extensions: this.extensions });
oldTerminal.destroyInvalidConnections();
} else {
// create new terminal, connect like old terminal, destroy old terminal
// this might be a little buggy, we should replace this with proper vue components
this.$emit("onRemove", this.output);
this.createTerminal(newOutput);
this.terminal.connectors = oldTerminal.connectors.map((c) => {
return new Connector(this.getManager(), this.terminal, c.inputHandle);
return new Connector(this.getManager().canvasManager, this.terminal, c.inputHandle);
});
this.terminal.destroyInvalidConnections();
oldTerminal.destroy();
@@ -124,7 +138,7 @@ export default {
...parameters,
collection_type: collection_type,
collection_type_source: collection_type_source,
datatypes: output.extensions,
datatypes: this.extensions,
});
} else if (output.parameter) {
this.terminal = new terminalClass({
@@ -134,7 +148,7 @@ export default {
} else {
this.terminal = new terminalClass({
...parameters,
datatypes: output.extensions,
datatypes: this.extensions,
});
}
new OutputDragging(this.getManager(), {
@@ -1,4 +1,3 @@
import $ from "jquery";
import * as d3 from "d3";
import { Toast } from "ui/toast";
@@ -13,9 +12,17 @@ const ribbonOuterSingle = 6;
const ribbonInnerMultiple = 1;
const ribbonOuterMultiple = 3;
function offset(element) {
const rect = element.getBoundingClientRect();
return {
top: rect.top + window.scrollY,
left: rect.left + window.scrollX,
};
}
class Connector {
constructor(manager = {}, outputHandle = null, inputHandle = null) {
this.manager = manager;
constructor(canvasManager = {}, outputHandle = null, inputHandle = null) {
this.manager = canvasManager;
this.dragging = false;
this.innerClass = "ribbon-inner";
this.canvas = document.createElement("div");
@@ -59,31 +66,33 @@ class Connector {
}
redraw() {
// Identify handles
const canvasContainer = $("#canvas-container");
const canvasContainer = document.getElementById("canvas-container");
const outputHandle = this.outputHandle;
const inputHandle = this.inputHandle;
if (!canvasContainer.length || !outputHandle || !inputHandle) {
if (!canvasContainer || !outputHandle || !inputHandle) {
return;
}
const canvasZoom = this.manager.canvasZoom;
if (this.dragging) {
this.canvas.style.zIndex = zIndex;
}
const relativeLeft = (e) => ($(e).offset().left - canvasContainer.offset().left) / canvasZoom;
const relativeTop = (e) => ($(e).offset().top - canvasContainer.offset().top) / canvasZoom;
if (!outputHandle || !inputHandle) {
return;
}
// Set handle ids, used in test cases
this.canvas.setAttribute("output-handle-id", outputHandle.element.getAttribute("id"));
this.canvas.setAttribute("input-handle-id", inputHandle.element.getAttribute("id"));
// Find the position of each handle
let start_x = relativeLeft(outputHandle.element) + handleMarginX;
let start_y = relativeTop(outputHandle.element) + 0.5 * $(outputHandle.element).height();
let end_x = relativeLeft(inputHandle.element) + handleMarginX;
let end_y = relativeTop(inputHandle.element) + 0.5 * $(inputHandle.element).height();
const canvasZoom = this.manager.canvasZoom;
const relativeLeft = (e) => (offset(e).left - offset(canvasContainer).left) / canvasZoom + handleMarginX;
const relativeTop = (e) =>
(offset(e).top - offset(canvasContainer).top) / canvasZoom + 0.5 * inputHandle.element.offsetHeight;
let start_x = relativeLeft(outputHandle.element);
let start_y = relativeTop(outputHandle.element);
let end_x = relativeLeft(inputHandle.element);
let end_y = relativeTop(inputHandle.element);
// Calculate canvas area
const canvas_min_x = Math.min(start_x, end_x);
@@ -333,34 +333,37 @@ class BaseInputTerminal extends Terminal {
}
_producesAcceptableDatatype(other) {
// other is a non-collection output...
for (var t in this.datatypes) {
var thisDatatype = this.datatypes[t];
for (const t in this.datatypes) {
const thisDatatype = this.datatypes[t];
if (thisDatatype == "input") {
return new ConnectionAcceptable(true, null);
}
var cat_outputs = [];
const other_datatypes = other.force_datatype ? [other.force_datatype] : other.datatypes;
cat_outputs = cat_outputs.concat(other_datatypes);
// FIXME: No idea what to do about case when datatype is 'input'
for (var other_datatype_i in cat_outputs) {
var other_datatype = cat_outputs[other_datatype_i];
if (
const validMatch = other.datatypes.some(
(other_datatype) =>
other_datatype == "input" ||
other_datatype == "_sniff_" ||
this._isSubType(cat_outputs[other_datatype_i], thisDatatype)
) {
return new ConnectionAcceptable(true, null);
} else if (!this.datatypesMapper.datatypes.includes(other_datatype)) {
return new ConnectionAcceptable(
false,
`Effective output data type [${other_datatype}] unknown. This tool cannot be executed on this Galaxy Server at this moment, please contact the Administrator.`
);
}
this._isSubType(other_datatype, thisDatatype)
);
if (validMatch) {
return new ConnectionAcceptable(true, null);
}
}
const datatypesSet = new Set(this.datatypesMapper.datatypes);
const invalidDatatypes = other.datatypes.filter((datatype) => !datatypesSet.has(datatype));
if (invalidDatatypes.length) {
return new ConnectionAcceptable(
false,
`Effective output data type(s) [${invalidDatatypes.join(
", "
)}] unknown. This tool cannot be executed on this Galaxy Server at this moment, please contact the Administrator.`
);
}
return new ConnectionAcceptable(
false,
`Effective output data type(s) [${cat_outputs}] do not appear to match input type(s) [${this.datatypes}].`
`Effective output data type(s) [${other.datatypes.join(
", "
)}] do not appear to match input type(s) [${this.datatypes.join(", ")}].`
);
}
_isSubType(child, parent) {
@@ -606,10 +609,6 @@ class BaseOutputTerminal extends Terminal {
this.setMapOver(this.node.mapOver);
}
}
get force_datatype() {
const changeOutputDatatype = this.node.postJobActions["ChangeDatatypeAction" + this.name];
return changeOutputDatatype ? changeOutputDatatype.action_arguments["newtype"] : null;
}
update(output) {
this.datatypes = output.datatypes || output.extensions;
this.optional = output.optional;
@@ -580,6 +580,10 @@ workflow_editor:
destroy: '${_} .node-destroy'
clone: '${_} .node-clone'
output_data_row:
type: xpath
selector: '//div[contains(@class, "output-data-row") and contains(string(), "${output_name} (${extension})")]'
output_terminal: "${_} [output-name='${name}']"
input_terminal: "${_} [input-name='${name}']"
@@ -148,7 +148,7 @@ QUnit.test("test destroy", function (assert) {
});
QUnit.test("can accept exact datatype", function (assert) {
const other = { node: {}, datatypes: ["txt"], force_datatype: null }; // input also txt
const other = { node: {}, datatypes: ["txt"] }; // input also txt
assert.ok(this.test_accept(other));
});
@@ -162,16 +162,6 @@ QUnit.test("cannot accept incorrect datatype", function (assert) {
assert.ok(!this.test_accept(other));
});
QUnit.test("can accept incorrect datatype if converted with PJA", function (assert) {
const other = { node: {}, datatypes: ["binary"], force_datatype: "txt", name: "out1" }; // Was binary but converted to txt
assert.ok(this.test_accept(other));
});
QUnit.test("cannot accept incorrect datatype if converted with PJA to incompatible type", function (assert) {
const other = { node: {}, datatypes: ["binary"], force_datatype: "bam", name: "out1" };
assert.ok(!this.test_accept(other));
});
QUnit.test("can accept inputs", function (assert) {
// Other is data input module - always accept (currently - could be
// more intelligent by looking at what else input is connected to.
@@ -324,11 +314,11 @@ QUnit.module("Input collection terminal model test", {
QUnit.test("Collection output can connect to same collection input type", function (assert) {
const inputTerminal = this.input_terminal;
const outputTerminal = new Terminals.OutputCollectionTerminal({
datatypes: "txt",
datatypes: ["txt"],
collection_type: "list",
node: {},
});
outputTerminal.node = {postJobActions: {}};
outputTerminal.node = { postJobActions: {} };
assert.ok(
inputTerminal.canAccept(outputTerminal).canAccept,
"Input terminal " + inputTerminal + " can not accept " + outputTerminal
@@ -338,7 +328,7 @@ QUnit.test("Collection output can connect to same collection input type", functi
QUnit.test("Optional collection output can not connect to required collection input", function (assert) {
const inputTerminal = this.input_terminal;
const outputTerminal = new Terminals.OutputCollectionTerminal({
datatypes: "txt",
datatypes: ["txt"],
collection_type: "list",
optional: true,
node: {},
@@ -350,7 +340,7 @@ QUnit.test("Optional collection output can not connect to required collection in
QUnit.test("Collection output cannot connect to different collection input type", function (assert) {
const inputTerminal = this.input_terminal;
const outputTerminal = new Terminals.OutputCollectionTerminal({
datatypes: "txt",
datatypes: ["txt"],
collection_type: "paired",
node: {},
});
@@ -519,7 +509,7 @@ QUnit.test("update_field_data destroys old terminals", function (assert) {
this.update_field_data_with_new_input();
Vue.nextTick(() => {
assert.ok(destroy_spy.called);
})
});
});
});
@@ -698,37 +688,38 @@ QUnit.test("replacing terminal on data input with collection changes mapping vie
});
});
QUnit.test("replacing terminal on data collection input with simple input changes mapping view type", function (
assert
) {
const node = this.node;
node.inputs.push({ name: "TestName", extensions: ["txt"], input_type: "parameter" });
this.connectAttachedMappedOutput((connector) => {
const connector_destroy_spy = sinon.spy(connector, "destroy");
const data = {
inputs: [{ name: "TestName", extensions: ["txt"], input_type: "dataset" }],
outputs: [],
};
node.setNode(data);
Vue.nextTick(() => {
$(node.element).find(".input-terminal")[0].terminal;
assert.ok(connector_destroy_spy.called);
QUnit.test(
"replacing terminal on data collection input with simple input changes mapping view type",
function (assert) {
const node = this.node;
node.inputs.push({ name: "TestName", extensions: ["txt"], input_type: "parameter" });
this.connectAttachedMappedOutput((connector) => {
const connector_destroy_spy = sinon.spy(connector, "destroy");
const data = {
inputs: [{ name: "TestName", extensions: ["txt"], input_type: "dataset" }],
outputs: [],
};
node.setNode(data);
Vue.nextTick(() => {
$(node.element).find(".input-terminal")[0].terminal;
assert.ok(connector_destroy_spy.called);
});
});
});
});
}
);
// global InputTerminalView
QUnit.module("Input terminal view", {
beforeEach: function () {
this.node = buildNode({ type: "tool", name: "newnode" });
this.input = { name: "i1", extensions: "txt", multiple: false };
this.input = { name: "i1", extensions: ["txt"], multiple: false };
this.node.initData({ inputs: [this.input], outputs: [] });
},
});
QUnit.test("terminal added to node", function (assert) {
assert.ok(this.node.inputTerminals.i1);
assert.equal(this.node.inputTerminals.i1.datatypes, ["txt"]);
assert.equal(this.node.inputTerminals.i1.datatypes[0], "txt");
assert.equal(this.node.inputTerminals.i1.multiple, false);
});
@@ -746,14 +737,14 @@ QUnit.test("terminal element", function (assert) {
QUnit.module("Output terminal view", {
beforeEach: function () {
this.node = buildNode({ type: "tool", name: "newnode" });
this.output = { name: "o1", extensions: "txt" };
this.output = { name: "o1", extensions: ["txt"] };
this.node.initData({ inputs: [], outputs: [this.output] });
},
});
QUnit.test("terminal added to node", function (assert) {
assert.ok(this.node.outputTerminals.o1);
assert.equal(this.node.outputTerminals.o1.datatypes, ["txt"]);
assert.equal(this.node.outputTerminals.o1.datatypes[0], "txt");
});
QUnit.test("terminal element", function (assert) {
@@ -1022,7 +1013,7 @@ QUnit.module("terminal mapping logic", {
verifyNotMappedOver: function (assert, terminal) {
assert.ok(!terminal.mapOver.isCollection);
},
verifyDefaultMapOver: function(assert, terminal) {
verifyDefaultMapOver: function (assert, terminal) {
const outputCollectionTerminal = this.newOutputCollectionTerminal("list");
assert.ok(!terminal.node.mapOver);
const connector = new Connector({}, outputCollectionTerminal, terminal);
@@ -1030,7 +1021,7 @@ QUnit.module("terminal mapping logic", {
assert.ok(terminal.node.mapOver);
terminal.disconnect(connector);
assert.ok(!terminal.node.mapOver);
}
},
});
QUnit.test("unconstrained input can be mapped over", function (assert) {
@@ -1046,14 +1037,15 @@ QUnit.test("unmapped input can be mapped over if matching connected input termin
this.verifyAttachable(assert, this.inputTerminal1, "list");
});
QUnit.test("unmapped input cannot be mapped over if not matching connected input terminals map type", function (
assert
) {
this.inputTerminal1 = this.newInputTerminal();
const connectedInput = this.addConnectedInput(this.inputTerminal1);
connectedInput.setMapOver(new Terminals.CollectionTypeDescription("paired"));
this.verifyNotAttachable(assert, this.inputTerminal1, "list");
});
QUnit.test(
"unmapped input cannot be mapped over if not matching connected input terminals map type",
function (assert) {
this.inputTerminal1 = this.newInputTerminal();
const connectedInput = this.addConnectedInput(this.inputTerminal1);
connectedInput.setMapOver(new Terminals.CollectionTypeDescription("paired"));
this.verifyNotAttachable(assert, this.inputTerminal1, "list");
}
);
QUnit.test(
"unmapped input can be attached to by output collection if matching connected input terminals map type",
@@ -1137,17 +1129,18 @@ QUnit.test("unmapped input with connected mapped outputs can be mapped over if m
this.verifyAttachable(assert, this.inputTerminal1, "list");
});
QUnit.test("unmapped input with connected mapped outputs cannot be mapped over if mapover not matching", function (
assert
) {
// It would invalidate the connections - someday maybe we could try to
// recursively map over everything down the DAG - it would be expensive
// to check that though.
this.inputTerminal1 = this.newInputTerminal();
const connectedOutput = this.addConnectedOutput(this.inputTerminal1);
connectedOutput.setMapOver(new Terminals.CollectionTypeDescription("paired"));
this.verifyNotAttachable(assert, this.inputTerminal1, "list");
});
QUnit.test(
"unmapped input with connected mapped outputs cannot be mapped over if mapover not matching",
function (assert) {
// It would invalidate the connections - someday maybe we could try to
// recursively map over everything down the DAG - it would be expensive
// to check that though.
this.inputTerminal1 = this.newInputTerminal();
const connectedOutput = this.addConnectedOutput(this.inputTerminal1);
connectedOutput.setMapOver(new Terminals.CollectionTypeDescription("paired"));
this.verifyNotAttachable(assert, this.inputTerminal1, "list");
}
);
QUnit.test("explicitly constrained input can not be mapped over by incompatible collection type", function (assert) {
this.inputTerminal1 = this.newInputTerminal();
@@ -1245,15 +1238,16 @@ QUnit.test("resetMappingIfNeeded an input resets node outputs if they not connec
this.verifyNotMappedOver(assert, output);
});
QUnit.test("resetMappingIfNeeded an input resets node collection outputs if they not connected to anything", function (
assert
) {
this.inputTerminal1 = this.newInputTerminal("list");
const output = this.addCollectionOutput(this.inputTerminal1);
output.setMapOver(new Terminals.CollectionTypeDescription("list"));
this.inputTerminal1.resetMappingIfNeeded();
this.verifyNotMappedOver(assert, output);
});
QUnit.test(
"resetMappingIfNeeded an input resets node collection outputs if they not connected to anything",
function (assert) {
this.inputTerminal1 = this.newInputTerminal("list");
const output = this.addCollectionOutput(this.inputTerminal1);
output.setMapOver(new Terminals.CollectionTypeDescription("list"));
this.inputTerminal1.resetMappingIfNeeded();
this.verifyNotMappedOver(assert, output);
}
);
QUnit.test("resetMappingIfNeeded resets if not last mapped over input", function (assert) {
// Idea here is that other nodes are forcing output to still be mapped
+1 -1
View File
@@ -60,7 +60,7 @@ then
cp -f "${GALAXY}/tool-data/shared/ucsc/new/ucsc_build_sites.txt" "${GALAXY}/tool-data/shared/ucsc/ucsc_build_sites.txt"
fi
else
echo "Failed to update builds.txt" >&2
echo "Failed to update ucsc_build_sites.txt" >&2
fi
# Try to build chromInfo tables
+1 -1
View File
@@ -93,7 +93,7 @@ Configuration Basics
----------------------------
- Edit ``config/galaxy.yml`` (copy it from ``config/galaxy.yml.sample`` if it does not exist) to make configuration
changes. This is a `YAML configuration file`_ and should contain one or two sections, one named ``gravity`` for
changes. This is a YAML configuration file and should contain one or two sections, one named ``gravity`` for
process management via `Gravity`_ (optional) and one named ``galaxy`` for Galaxy (required).
- The `gravity` section contain several important options about how to
+8 -11
View File
@@ -9,22 +9,19 @@ There are two ways in which you can configure logging for Galaxy servers:
1. Basic/automatic configuration with control over log level and log destination (standard output or a named log file).
2. More complex configuration using the Python :mod:`logging` module's :func:`logging.config.dictConfig` or :func:`logging.config.fileConfig`.
By default, Galaxy logs all messages to standard output at the ``DEBUG`` logging level, unless the ``--daemon`` argument
is passed to ``run.sh``, in which case, output is logged to a location configured in `gravity`_.
Gravity and related terminology are explained in detail in the :doc:`Scaling and Load Balancing <scaling>` documentation.
Basic Configuration
----------------------------
Basic logging configuration can be used to modify the level of log messages and the file to which Galaxy logs. The level
is controlled by the ``log_level`` configuration option.
Basic logging configuration can be used to modify the level of log messages and the file to which Galaxy logs.
If not set, Galaxy logs all messages at the ``DEBUG`` level (versions prior to 18.01 defaulted to ``INFO`` if unset, but
the default config file shipped with ``log_level`` explicitly set to ``DEBUG`` for development purposes).
The logging level is controlled by the ``log_level`` configuration option. By default, Galaxy logs all messages at the
``DEBUG`` level.
Galaxy logs all messages to standard output by default if running in the foreground. If running in the background, the
log is written to a location configured in `gravity`_.
Galaxy logs all messages to standard output by default if running in the foreground. If running in the background (e.g.
by passing the ``--daemon`` argument to ``run.sh``), the log is written to a location configured in
`gravity <https://github.com/galaxyproject/gravity/>`_.
Gravity and related terminology are explained in detail in the :doc:`Scaling and Load Balancing <scaling>` documentation.
**Setting the log level:**
@@ -9,14 +9,6 @@ galaxy.app\_unittest\_utils package
Submodules
----------
galaxy.app\_unittest\_utils.celery\_helper module
-------------------------------------------------
.. automodule:: galaxy.app_unittest_utils.celery_helper
:members:
:undoc-members:
:show-inheritance:
galaxy.app\_unittest\_utils.galaxy\_mock module
-----------------------------------------------
-42
View File
@@ -1,42 +0,0 @@
galaxy.containers package
=========================
.. automodule:: galaxy.containers
:members:
:undoc-members:
:show-inheritance:
Submodules
----------
galaxy.containers.docker module
-------------------------------
.. automodule:: galaxy.containers.docker
:members:
:undoc-members:
:show-inheritance:
galaxy.containers.docker\_decorators module
-------------------------------------------
.. automodule:: galaxy.containers.docker_decorators
:members:
:undoc-members:
:show-inheritance:
galaxy.containers.docker\_model module
--------------------------------------
.. automodule:: galaxy.containers.docker_model
:members:
:undoc-members:
:show-inheritance:
galaxy.containers.docker\_swarm module
--------------------------------------
.. automodule:: galaxy.containers.docker_swarm
:members:
:undoc-members:
:show-inheritance:
+8
View File
@@ -268,6 +268,14 @@ galaxy.datatypes.proteomics module
:undoc-members:
:show-inheritance:
galaxy.datatypes.qiime2 module
------------------------------
.. automodule:: galaxy.datatypes.qiime2
:members:
:undoc-members:
:show-inheritance:
galaxy.datatypes.qualityscore module
------------------------------------
+11
View File
@@ -14,3 +14,14 @@ Subpackages
galaxy.files.sources
galaxy.files.unittest_utils
Submodules
----------
galaxy.files.uris module
------------------------
.. automodule:: galaxy.files.uris
:members:
:undoc-members:
:show-inheritance:
@@ -17,14 +17,6 @@ galaxy.job\_metrics.instrumenters.cgroup module
:undoc-members:
:show-inheritance:
galaxy.job\_metrics.instrumenters.collectl module
-------------------------------------------------
.. automodule:: galaxy.job_metrics.instrumenters.collectl
:members:
:undoc-members:
:show-inheritance:
galaxy.job\_metrics.instrumenters.core module
---------------------------------------------
+8
View File
@@ -24,3 +24,11 @@ galaxy.job\_metrics.formatting module
:members:
:undoc-members:
:show-inheritance:
galaxy.job\_metrics.safety module
---------------------------------
.. automodule:: galaxy.job_metrics.safety
:members:
:undoc-members:
:show-inheritance:
+8
View File
@@ -273,6 +273,14 @@ galaxy.managers.metrics module
:undoc-members:
:show-inheritance:
galaxy.managers.model\_stores module
------------------------------------
.. automodule:: galaxy.managers.model_stores
:members:
:undoc-members:
:show-inheritance:
galaxy.managers.pages module
----------------------------
-27
View File
@@ -1,27 +0,0 @@
galaxy.model.migrate package
============================
.. automodule:: galaxy.model.migrate
:members:
:undoc-members:
:show-inheritance:
Subpackages
-----------
.. toctree::
:maxdepth: 4
galaxy.model.migrate.triggers
galaxy.model.migrate.versions
Submodules
----------
galaxy.model.migrate.check module
---------------------------------
.. automodule:: galaxy.model.migrate.check
:members:
:undoc-members:
:show-inheritance:
@@ -1,26 +0,0 @@
galaxy.model.migrate.triggers package
=====================================
.. automodule:: galaxy.model.migrate.triggers
:members:
:undoc-members:
:show-inheritance:
Submodules
----------
galaxy.model.migrate.triggers.history\_update\_time\_field module
-----------------------------------------------------------------
.. automodule:: galaxy.model.migrate.triggers.history_update_time_field
:members:
:undoc-members:
:show-inheritance:
galaxy.model.migrate.triggers.update\_audit\_table module
---------------------------------------------------------
.. automodule:: galaxy.model.migrate.triggers.update_audit_table
:members:
:undoc-members:
:show-inheritance:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,26 @@
galaxy.model.migrations package
===============================
.. automodule:: galaxy.model.migrations
:members:
:undoc-members:
:show-inheritance:
Submodules
----------
galaxy.model.migrations.scripts module
--------------------------------------
.. automodule:: galaxy.model.migrations.scripts
:members:
:undoc-members:
:show-inheritance:
galaxy.model.migrations.util module
-----------------------------------
.. automodule:: galaxy.model.migrations.util
:members:
:undoc-members:
:show-inheritance:
+8
View File
@@ -32,3 +32,11 @@ galaxy.model.orm.scripts module
:members:
:undoc-members:
:show-inheritance:
galaxy.model.orm.util module
----------------------------
.. automodule:: galaxy.model.orm.util
:members:
:undoc-members:
:show-inheritance:
+18 -1
View File
@@ -13,10 +13,11 @@ Subpackages
:maxdepth: 4
galaxy.model.dataset_collections
galaxy.model.migrate
galaxy.model.migrations
galaxy.model.orm
galaxy.model.store
galaxy.model.tool_shed_install
galaxy.model.triggers
galaxy.model.unittest_utils
galaxy.model.view
@@ -55,6 +56,22 @@ galaxy.model.database\_utils module
:undoc-members:
:show-inheritance:
galaxy.model.deferred module
----------------------------
.. automodule:: galaxy.model.deferred
:members:
:undoc-members:
:show-inheritance:
galaxy.model.index\_filter\_util module
---------------------------------------
.. automodule:: galaxy.model.index_filter_util
:members:
:undoc-members:
:show-inheritance:
galaxy.model.item\_attrs module
-------------------------------
+8
View File
@@ -24,3 +24,11 @@ galaxy.model.store.discover module
:members:
:undoc-members:
:show-inheritance:
galaxy.model.store.load\_objects module
---------------------------------------
.. automodule:: galaxy.model.store.load_objects
:members:
:undoc-members:
:show-inheritance:
@@ -1,26 +0,0 @@
galaxy.model.tool\_shed\_install.migrate package
================================================
.. automodule:: galaxy.model.tool_shed_install.migrate
:members:
:undoc-members:
:show-inheritance:
Subpackages
-----------
.. toctree::
:maxdepth: 4
galaxy.model.tool_shed_install.migrate.versions
Submodules
----------
galaxy.model.tool\_shed\_install.migrate.check module
-----------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.check
:members:
:undoc-members:
:show-inheritance:
@@ -1,146 +0,0 @@
galaxy.model.tool\_shed\_install.migrate.versions package
=========================================================
.. automodule:: galaxy.model.tool_shed_install.migrate.versions
:members:
:undoc-members:
:show-inheritance:
Submodules
----------
galaxy.model.tool\_shed\_install.migrate.versions.0001\_add\_tool\_shed\_repository\_table module
-------------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0001_add_tool_shed_repository_table
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0002\_add\_tool\_shed\_repository\_table\_columns module
----------------------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0002_add_tool_shed_repository_table_columns
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0003\_tool\_id\_guid\_map\_table module
-----------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0003_tool_id_guid_map_table
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0004\_add\_installed\_changeset\_revison\_column module
---------------------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0004_add_installed_changeset_revison_column
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0005\_add\_tool\_shed\_repository\_table\_columns module
----------------------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0005_add_tool_shed_repository_table_columns
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0006\_add\_tool\_version\_tables module
-----------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0006_add_tool_version_tables
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0007\_add\_migrate\_tools\_table module
-----------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0007_add_migrate_tools_table
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0008\_add\_ctx\_rev\_column module
------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0008_add_ctx_rev_column
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0009\_add\_tool\_dependency\_table module
-------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0009_add_tool_dependency_table
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0010\_alter\_tool\_dependency\_table\_version\_column module
--------------------------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0010_alter_tool_dependency_table_version_column
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0011\_drop\_installed\_changeset\_revision\_column module
-----------------------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0011_drop_installed_changeset_revision_column
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0012\_add\_tool\_dependency\_status\_columns module
-----------------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0012_add_tool_dependency_status_columns
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0013\_add\_tool\_shed\_repository\_status\_columns module
-----------------------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0013_add_tool_shed_repository_status_columns
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0014\_add\_repository\_dependency\_tables module
--------------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0014_add_repository_dependency_tables
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0015\_update\_migrate\_tools\_table module
--------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0015_update_migrate_tools_table
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0016\_update\_migrate\_tools\_table\_again module
---------------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0016_update_migrate_tools_table_again
:members:
:undoc-members:
:show-inheritance:
galaxy.model.tool\_shed\_install.migrate.versions.0017\_drop\_update\_available\_col\_add\_tool\_shed\_status\_col module
-------------------------------------------------------------------------------------------------------------------------
.. automodule:: galaxy.model.tool_shed_install.migrate.versions.0017_drop_update_available_col_add_tool_shed_status_col
:members:
:undoc-members:
:show-inheritance:
@@ -6,14 +6,6 @@ galaxy.model.tool\_shed\_install package
:undoc-members:
:show-inheritance:
Subpackages
-----------
.. toctree::
:maxdepth: 4
galaxy.model.tool_shed_install.migrate
Submodules
----------
+34
View File
@@ -0,0 +1,34 @@
galaxy.model.triggers package
=============================
.. automodule:: galaxy.model.triggers
:members:
:undoc-members:
:show-inheritance:
Submodules
----------
galaxy.model.triggers.history\_update\_time\_field module
---------------------------------------------------------
.. automodule:: galaxy.model.triggers.history_update_time_field
:members:
:undoc-members:
:show-inheritance:
galaxy.model.triggers.update\_audit\_table module
-------------------------------------------------
.. automodule:: galaxy.model.triggers.update_audit_table
:members:
:undoc-members:
:show-inheritance:
galaxy.model.triggers.utils module
----------------------------------
.. automodule:: galaxy.model.triggers.utils
:members:
:undoc-members:
:show-inheritance:
@@ -16,3 +16,11 @@ galaxy.model.unittest\_utils.data\_app module
:members:
:undoc-members:
:show-inheritance:
galaxy.model.unittest\_utils.store\_fixtures module
---------------------------------------------------
.. automodule:: galaxy.model.unittest_utils.store_fixtures
:members:
:undoc-members:
:show-inheritance:
-1
View File
@@ -18,7 +18,6 @@ Subpackages
galaxy.authnz
galaxy.celery
galaxy.config
galaxy.containers
galaxy.datatypes
galaxy.dependencies
galaxy.exceptions
+16
View File
@@ -9,6 +9,14 @@ galaxy.schema package
Submodules
----------
galaxy.schema.fetch\_data module
--------------------------------
.. automodule:: galaxy.schema.fetch_data
:members:
:undoc-members:
:show-inheritance:
galaxy.schema.fields module
---------------------------
@@ -33,6 +41,14 @@ galaxy.schema.schema module
:undoc-members:
:show-inheritance:
galaxy.schema.tasks module
--------------------------
.. automodule:: galaxy.schema.tasks
:members:
:undoc-members:
:show-inheritance:
galaxy.schema.types module
--------------------------
@@ -15,7 +15,6 @@ Subpackages
galaxy.tool_shed.galaxy_install.datatypes
galaxy.tool_shed.galaxy_install.metadata
galaxy.tool_shed.galaxy_install.repository_dependencies
galaxy.tool_shed.galaxy_install.tool_dependencies
galaxy.tool_shed.galaxy_install.tools
Submodules
@@ -1,58 +0,0 @@
galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe package
===================================================================
.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe
:members:
:undoc-members:
:show-inheritance:
Submodules
----------
galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe.asynchronous\_reader module
---------------------------------------------------------------------------------------
.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.asynchronous_reader
:members:
:undoc-members:
:show-inheritance:
galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe.env\_file\_builder module
-------------------------------------------------------------------------------------
.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.env_file_builder
:members:
:undoc-members:
:show-inheritance:
galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe.install\_environment module
---------------------------------------------------------------------------------------
.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.install_environment
:members:
:undoc-members:
:show-inheritance:
galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe.recipe\_manager module
----------------------------------------------------------------------------------
.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.recipe_manager
:members:
:undoc-members:
:show-inheritance:
galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe.step\_handler module
--------------------------------------------------------------------------------
.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.step_handler
:members:
:undoc-members:
:show-inheritance:
galaxy.tool\_shed.galaxy\_install.tool\_dependencies.recipe.tag\_handler module
-------------------------------------------------------------------------------
.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.recipe.tag_handler
:members:
:undoc-members:
:show-inheritance:
@@ -1,26 +0,0 @@
galaxy.tool\_shed.galaxy\_install.tool\_dependencies package
============================================================
.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies
:members:
:undoc-members:
:show-inheritance:
Subpackages
-----------
.. toctree::
:maxdepth: 4
galaxy.tool_shed.galaxy_install.tool_dependencies.recipe
Submodules
----------
galaxy.tool\_shed.galaxy\_install.tool\_dependencies.env\_manager module
------------------------------------------------------------------------
.. automodule:: galaxy.tool_shed.galaxy_install.tool_dependencies.env_manager
:members:
:undoc-members:
:show-inheritance:
+8
View File
@@ -67,6 +67,14 @@ galaxy.tool\_util.deps.container\_classes module
:undoc-members:
:show-inheritance:
galaxy.tool\_util.deps.container\_volumes module
------------------------------------------------
.. automodule:: galaxy.tool_util.deps.container_volumes
:members:
:undoc-members:
:show-inheritance:
galaxy.tool\_util.deps.containers module
----------------------------------------
@@ -0,0 +1,18 @@
galaxy.tool\_util.ontologies package
====================================
.. automodule:: galaxy.tool_util.ontologies
:members:
:undoc-members:
:show-inheritance:
Submodules
----------
galaxy.tool\_util.ontologies.ontology\_data module
--------------------------------------------------
.. automodule:: galaxy.tool_util.ontologies.ontology_data
:members:
:undoc-members:
:show-inheritance:
+1
View File
@@ -18,6 +18,7 @@ Subpackages
galaxy.tool_util.deps
galaxy.tool_util.linters
galaxy.tool_util.locations
galaxy.tool_util.ontologies
galaxy.tool_util.parser
galaxy.tool_util.toolbox
galaxy.tool_util.unittest_utils
+11
View File
@@ -5,3 +5,14 @@ galaxy.tours package
:members:
:undoc-members:
:show-inheritance:
Submodules
----------
galaxy.tours.validate module
----------------------------
.. automodule:: galaxy.tours.validate
:members:
:undoc-members:
:show-inheritance:
@@ -1,26 +0,0 @@
galaxy.util.pastescript package
===============================
.. automodule:: galaxy.util.pastescript
:members:
:undoc-members:
:show-inheritance:
Submodules
----------
galaxy.util.pastescript.loadwsgi module
---------------------------------------
.. automodule:: galaxy.util.pastescript.loadwsgi
:members:
:undoc-members:
:show-inheritance:
galaxy.util.pastescript.serve module
------------------------------------
.. automodule:: galaxy.util.pastescript.serve
:members:
:undoc-members:
:show-inheritance:
-9
View File
@@ -13,7 +13,6 @@ Subpackages
:maxdepth: 4
galaxy.util.custom_logging
galaxy.util.pastescript
galaxy.util.path
galaxy.util.tool_shed
@@ -388,14 +387,6 @@ galaxy.util.watcher module
:undoc-members:
:show-inheritance:
galaxy.util.web\_compat module
------------------------------
.. automodule:: galaxy.util.web_compat
:members:
:undoc-members:
:show-inheritance:
galaxy.util.xml\_macros module
------------------------------
@@ -17,14 +17,6 @@ galaxy.visualization.plugins.config\_parser module
:undoc-members:
:show-inheritance:
galaxy.visualization.plugins.interactive\_environments module
-------------------------------------------------------------
.. automodule:: galaxy.visualization.plugins.interactive_environments
:members:
:undoc-members:
:show-inheritance:
galaxy.visualization.plugins.plugin module
------------------------------------------
@@ -9,14 +9,6 @@ galaxy.web.framework.middleware package
Submodules
----------
galaxy.web.framework.middleware.batch module
--------------------------------------------
.. automodule:: galaxy.web.framework.middleware.batch
:members:
:undoc-members:
:show-inheritance:
galaxy.web.framework.middleware.error module
--------------------------------------------
+1 -8
View File
@@ -15,18 +15,11 @@ Subpackages
galaxy.web.framework
galaxy.web.legacy_framework
galaxy.web.proxy
galaxy.web.short_term_storage
Submodules
----------
galaxy.web.buildapp module
--------------------------
.. automodule:: galaxy.web.buildapp
:members:
:undoc-members:
:show-inheritance:
galaxy.web.form\_builder module
-------------------------------
@@ -0,0 +1,7 @@
galaxy.web.short\_term\_storage package
=======================================
.. automodule:: galaxy.web.short_term_storage
:members:
:undoc-members:
:show-inheritance:
@@ -337,6 +337,14 @@ galaxy.webapps.galaxy.api.search module
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.api.short\_term\_storage module
-----------------------------------------------------
.. automodule:: galaxy.webapps.galaxy.api.short_term_storage
:members:
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.api.tags module
-------------------------------------
@@ -345,6 +353,14 @@ galaxy.webapps.galaxy.api.tags module
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.api.tasks module
--------------------------------------
.. automodule:: galaxy.webapps.galaxy.api.tasks
:members:
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.api.tool\_data module
-------------------------------------------
@@ -81,14 +81,6 @@ galaxy.webapps.galaxy.controllers.history module
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.controllers.interactive\_environments module
------------------------------------------------------------------
.. automodule:: galaxy.webapps.galaxy.controllers.interactive_environments
:members:
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.controllers.library module
------------------------------------------------
@@ -9,6 +9,14 @@ galaxy.webapps.galaxy.services package
Submodules
----------
galaxy.webapps.galaxy.services.authenticate module
--------------------------------------------------
.. automodule:: galaxy.webapps.galaxy.services.authenticate
:members:
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.services.base module
------------------------------------------
@@ -49,6 +57,22 @@ galaxy.webapps.galaxy.services.history\_contents module
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.services.invocations module
-------------------------------------------------
.. automodule:: galaxy.webapps.galaxy.services.invocations
:members:
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.services.jobs module
------------------------------------------
.. automodule:: galaxy.webapps.galaxy.services.jobs
:members:
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.services.libraries module
-----------------------------------------------
@@ -97,6 +121,22 @@ galaxy.webapps.galaxy.services.sharable module
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.services.tools module
-------------------------------------------
.. automodule:: galaxy.webapps.galaxy.services.tools
:members:
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.services.users module
-------------------------------------------
.. automodule:: galaxy.webapps.galaxy.services.users
:members:
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.services.visualizations module
----------------------------------------------------
@@ -104,3 +144,11 @@ galaxy.webapps.galaxy.services.visualizations module
:members:
:undoc-members:
:show-inheritance:
galaxy.webapps.galaxy.services.workflows module
-----------------------------------------------
.. automodule:: galaxy.webapps.galaxy.services.workflows
:members:
:undoc-members:
:show-inheritance:
+18
View File
@@ -0,0 +1,18 @@
galaxy.webapps.openapi package
==============================
.. automodule:: galaxy.webapps.openapi
:members:
:undoc-members:
:show-inheritance:
Submodules
----------
galaxy.webapps.openapi.utils module
-----------------------------------
.. automodule:: galaxy.webapps.openapi.utils
:members:
:undoc-members:
:show-inheritance:
+1
View File
@@ -14,6 +14,7 @@ Subpackages
galaxy.webapps.base
galaxy.webapps.galaxy
galaxy.webapps.openapi
galaxy.webapps.reports
Submodules
@@ -0,0 +1,18 @@
galaxy\_ext.container\_monitor package
======================================
.. automodule:: galaxy_ext.container_monitor
:members:
:undoc-members:
:show-inheritance:
Submodules
----------
galaxy\_ext.container\_monitor.monitor module
---------------------------------------------
.. automodule:: galaxy_ext.container_monitor.monitor
:members:
:undoc-members:
:show-inheritance:
+1
View File
@@ -12,5 +12,6 @@ Subpackages
.. toctree::
:maxdepth: 4
galaxy_ext.container_monitor
galaxy_ext.expressions
galaxy_ext.metadata
-16
View File
@@ -17,14 +17,6 @@ Subpackages
Submodules
----------
galaxy\_test.api.conftest module
--------------------------------
.. automodule:: galaxy_test.api.conftest
:members:
:undoc-members:
:show-inheritance:
galaxy\_test.api.sharable module
--------------------------------
@@ -33,14 +25,6 @@ galaxy\_test.api.sharable module
:undoc-members:
:show-inheritance:
galaxy\_test.api.test\_api\_batch module
----------------------------------------
.. automodule:: galaxy_test.api.test_api_batch
:members:
:undoc-members:
:show-inheritance:
galaxy\_test.api.test\_authenticate module
------------------------------------------
@@ -9,14 +9,6 @@ galaxy\_test.performance package
Submodules
----------
galaxy\_test.performance.conftest module
----------------------------------------
.. automodule:: galaxy_test.performance.conftest
:members:
:undoc-members:
:show-inheritance:
galaxy\_test.performance.test\_workflow\_framework\_performance module
----------------------------------------------------------------------
+11
View File
@@ -17,3 +17,14 @@ Subpackages
galaxy_test.driver
galaxy_test.performance
galaxy_test.selenium
Submodules
----------
galaxy\_test.conftest module
----------------------------
.. automodule:: galaxy_test.conftest
:members:
:undoc-members:
:show-inheritance:
+16
View File
@@ -97,6 +97,14 @@ galaxy\_test.selenium.test\_data\_source\_tools module
:undoc-members:
:show-inheritance:
galaxy\_test.selenium.test\_dataset\_metadata\_download module
--------------------------------------------------------------
.. automodule:: galaxy_test.selenium.test_dataset_metadata_download
:members:
:undoc-members:
:show-inheritance:
galaxy\_test.selenium.test\_histories\_list module
--------------------------------------------------
@@ -185,6 +193,14 @@ galaxy\_test.selenium.test\_history\_structure module
:undoc-members:
:show-inheritance:
galaxy\_test.selenium.test\_invocation\_grid module
---------------------------------------------------
.. automodule:: galaxy_test.selenium.test_invocation_grid
:members:
:undoc-members:
:show-inheritance:
galaxy\_test.selenium.test\_jupyter module
------------------------------------------
@@ -441,14 +441,6 @@ tool\_shed.test.functional.test\_1410\_update\_manager module
:undoc-members:
:show-inheritance:
tool\_shed.test.functional.test\_1420\_tool\_dependency\_environment\_inheritance module
----------------------------------------------------------------------------------------
.. automodule:: tool_shed.test.functional.test_1420_tool_dependency_environment_inheritance
:members:
:undoc-members:
:show-inheritance:
tool\_shed.test.functional.test\_1430\_repair\_installed\_repository module
---------------------------------------------------------------------------
@@ -457,14 +449,6 @@ tool\_shed.test.functional.test\_1430\_repair\_installed\_repository module
:undoc-members:
:show-inheritance:
tool\_shed.test.functional.test\_1440\_missing\_env\_sh\_files module
---------------------------------------------------------------------
.. automodule:: tool_shed.test.functional.test_1440_missing_env_sh_files
:members:
:undoc-members:
:show-inheritance:
tool\_shed.test.functional.test\_1450\_installing\_datatypes\_sniffers module
-----------------------------------------------------------------------------
@@ -180,6 +180,7 @@
</datatype>
<datatype extension="toolshed.gz" type="galaxy.datatypes.binary:Binary" mimetype="multipart/x-gzip" subclass="true"/>
<datatype extension="h5" type="galaxy.datatypes.binary:H5" mimetype="application/octet-stream" display_in_upload="true"/>
<datatype extension="scool" type="galaxy.datatypes.binary:H5" mimetype="application/octet-stream" display_in_upload="true" subclass="true"/>
<datatype extension="grib" type="galaxy.datatypes.binary:Grib" mimetype="application/octet-stream" display_in_upload="true"/>
<datatype extension="loom" type="galaxy.datatypes.binary:Loom" description="An HDF5-based Loom File" mimetype="application/octet-stream" display_in_upload="true"/>
<datatype extension="h5ad" type="galaxy.datatypes.binary:Anndata" description="An HDF5-based anndata File" mimetype="application/octet-stream" display_in_upload="true"/>
+1 -1
View File
@@ -1092,7 +1092,7 @@ class WorkflowContentsManager(UsesAnnotations):
"outputs": module.get_all_outputs(),
"config_form": config_form,
"annotation": annotation_str,
"post_job_actions": {},
"post_job_actions": module.get_post_job_actions({}),
"uuid": str(step.uuid) if step.uuid else None,
"workflow_outputs": [],
}
+3 -2
View File
@@ -8,12 +8,13 @@ def add_object_to_object_session(object, object_with_session):
https://docs.sqlalchemy.org/en/14/changelog/migration_14.html#cascade-backrefs-behavior-deprecated-for-removal-in-2-0
This function preserves SQLAlchemy's pre-2.0 logic and should be used when:
1. foo and bar are model instances, that are associated (via SQLAlchemy's relationship), AND
2. bar is assigned to foo's bar relationship (e.g. foo.bar = bar), AND
3. bar is in a session and foo is not, AND
4. foo is implicitly added to bar's session upon assignment(2), as indicated
by a RemovedIn20Warning specifying that the '"foo" object is being merged into a Session
along the backref cascade path...'
by a RemovedIn20Warning specifying that the '"foo" object is being merged into a Session
along the backref cascade path...'
"""
if object_with_session:
session = get_object_session(object_with_session)
+1 -1
View File
@@ -340,7 +340,7 @@ def parse_requirements_from_xml(xml_root, parse_resources=False):
containers = [container_from_element(c) for c in container_elems]
if parse_resources:
resource_elems = requirements_elem.findall("resource") if requirements_elem else []
resource_elems = requirements_elem.findall("resource") if requirements_elem is not None else []
resources = [resource_from_element(r) for r in resource_elems]
return requirements, containers, resources
+2
View File
@@ -57,6 +57,7 @@ PARAMETER_VALIDATOR_TYPE_COMPATIBILITY = {
"float": ["in_range", "expression"],
"data": [
"metadata",
"no_options",
"unspecified_build",
"dataset_ok_validator",
"dataset_metadata_in_range",
@@ -67,6 +68,7 @@ PARAMETER_VALIDATOR_TYPE_COMPATIBILITY = {
],
"data_collection": [
"metadata",
"no_options",
"unspecified_build",
"dataset_ok_validator",
"dataset_metadata_in_range",
+1 -1
View File
@@ -38,7 +38,7 @@ def lint_tsts(tool_xml, lint_ctx):
if len(assertions) == 0:
continue
if len(assertions) > 1:
lint_ctx.error("Test {test_idx}: More than one {ta} found. Only the first is considered.")
lint_ctx.error(f"Test {test_idx}: More than one {ta} found. Only the first is considered.")
has_test = True
_check_asserts(test_idx, assertions, lint_ctx)
_check_asserts(test_idx, test.findall(".//assert_contents"), lint_ctx)
+1 -1
View File
@@ -15,7 +15,7 @@ def _parse_name(name, argument):
all remaining dashes are replaced by underscores.
"""
if name is None:
if not argument:
if argument is None:
raise ValueError("parameter must specify a 'name' or 'argument'.")
name = argument.lstrip("-").replace("-", "_")
return name
+2 -2
View File
@@ -4172,7 +4172,7 @@ used to generate dynamic options.
</xs:attribute>
<xs:attribute name="startswith" type="xs:string">
<xs:annotation>
<xs:documentation xml:lang="en">Ignore lines starting with the given string.</xs:documentation>
<xs:documentation xml:lang="en">Keep only lines starting with the given string.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="meta_file_key" type="xs:string">
@@ -7002,7 +7002,7 @@ and ``contains``. In addtion there is ``sim_size`` which is discouraged in fafou
<xs:documentation xml:lang="en">Number of bytes alowing for suffix (k|K|M|G|P|E)i? </xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:pattern value="[1-9][0-9]*([kKMGTPE]i?)?"></xs:pattern>
<xs:pattern value="(0|[1-9][0-9]*)([kKMGTPE]i?)?"></xs:pattern>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="EdamTopics">
+1 -1
View File
@@ -277,7 +277,7 @@ WORKFLOW_SAFE_TOOL_VERSION_UPDATES = {
"__BUILD_LIST__": safe_update(packaging.version.parse("1.0.0"), packaging.version.parse("1.1.0")),
"__APPLY_RULES__": safe_update(packaging.version.parse("1.0.0"), packaging.version.parse("1.1.0")),
"__EXTRACT_DATASET__": safe_update(packaging.version.parse("1.0.0"), packaging.version.parse("1.0.1")),
"Grep1": safe_update(packaging.version.parse("1.0.1"), packaging.version.parse("1.0.3")),
"Grep1": safe_update(packaging.version.parse("1.0.1"), packaging.version.parse("1.0.4")),
"Show beginning1": safe_update(packaging.version.parse("1.0.0"), packaging.version.parse("1.0.1")),
"Show tail1": safe_update(packaging.version.parse("1.0.0"), packaging.version.parse("1.0.1")),
"sort1": safe_update(packaging.version.parse("1.1.0"), packaging.version.parse("1.2.0")),
@@ -655,7 +655,7 @@ class DynamicOptions:
rval = []
field_count = None
for line in reader:
if line.startswith("#") or (self.line_startswith and line.startswith(self.line_startswith)):
if line.startswith("#") or (self.line_startswith and not line.startswith(self.line_startswith)):
continue
line = line.rstrip("\n\r")
if line:
+41
View File
@@ -18,6 +18,7 @@ from galaxy.schema import (
ValueFilterQueryParams,
)
from galaxy.schema.schema import UpdateDatasetPermissionsPayload
from galaxy.util import listify
SerializationViewQueryParam: Optional[str] = Query(
None,
@@ -142,3 +143,43 @@ def get_query_parameters_from_request_excluding(request: Request, exclude: Set[s
for param_name in exclude:
extra_params.pop(param_name, None)
return extra_params
def query_parameter_as_list(query):
"""Used as FastAPI dependable for query parameters that need to behave as a list of values separated by comma
or as multiple instances of the same parameter.
.. important:: the ``query`` annotation provided must define the ``alias`` exactly as the name of the actual parameter name.
Usage example::
ValueQueryParam = Query(
default=None,
alias="value", # Important! this is the parameter name that will be displayed in the API docs
title="My Value",
description="A single value, a comma-separated list of values or a list of values.",
)
@router.get("/api/my_route")
def index(
self,
values: Optional[List[str]] = Depends(query_parameter_as_list(ValueQueryParam)),
):
...
This will render in the API docs as a single string query parameter but will make the following requests equivalent:
- ``api/my_route?value=val1,val2,val3``
- ``api/my_route?value=val1&value=val2&value=val3``
"""
def parse_elements(
elements: Optional[List[str]] = query,
) -> Optional[List[Any]]:
if query.default != Ellipsis and not elements:
return query.default
if elements and len(elements) == 1:
return listify(elements[0])
return elements
return parse_elements
+22 -26
View File
@@ -17,7 +17,10 @@ from typing import (
Union,
)
from fastapi import Query
from fastapi import (
Depends,
Query,
)
from galaxy import (
exceptions,
@@ -39,20 +42,13 @@ from galaxy.managers.jobs import (
from galaxy.schema.fields import EncodedDatabaseIdField
from galaxy.schema.schema import JobIndexSortByEnum
from galaxy.schema.types import OffsetNaiveDatetime
from galaxy.util import listify
from galaxy.web import (
expose_api,
expose_api_anonymous,
require_admin,
)
from galaxy.webapps.base.controller import UsesVisualizationMixin
from galaxy.webapps.galaxy.services.jobs import (
JobIndexPayload,
JobIndexViewEnum,
JobsService,
)
from galaxy.work.context import WorkRequestContext
from . import (
from galaxy.webapps.galaxy.api import (
BaseGalaxyAPIController,
depends,
DependsOnTrans,
@@ -60,16 +56,24 @@ from . import (
Router,
search_query_param,
)
from galaxy.webapps.galaxy.api.common import query_parameter_as_list
from galaxy.webapps.galaxy.services.jobs import (
JobIndexPayload,
JobIndexViewEnum,
JobsService,
)
from galaxy.work.context import WorkRequestContext
log = logging.getLogger(__name__)
router = Router(tags=["jobs"])
StateQueryParam: Optional[str] = Query(
StateQueryParam = Query(
default=None,
alias="state",
title="States",
description="Comma-separated list of states to filter job query on. If unspecified, jobs of any state may be returned.",
description="A list or comma-separated list of states to filter job query on. If unspecified, jobs of any state may be returned.",
)
UserDetailsQueryParam: bool = Query(
@@ -91,15 +95,17 @@ ViewQueryParam: JobIndexViewEnum = Query(
)
ToolIdQueryParam: Optional[str] = Query(
ToolIdQueryParam = Query(
default=None,
alias="tool_id",
title="Tool ID(s)",
description="Limit listing of jobs to those that match one of the included tool_ids. If none, all are returned",
)
ToolIdLikeQueryParam: Optional[str] = Query(
ToolIdLikeQueryParam = Query(
default=None,
alias="tool_id_like",
title="Tool ID Pattern(s)",
description="Limit listing of jobs to those that match one of the included tool ID sql-like patterns. If none, all are returned",
)
@@ -186,12 +192,12 @@ class FastAPIJobs:
def index(
self,
trans: ProvidesUserContext = DependsOnTrans,
state: Optional[str] = StateQueryParam,
states: Optional[List[str]] = Depends(query_parameter_as_list(StateQueryParam)),
user_details: bool = UserDetailsQueryParam,
user_id: Optional[EncodedDatabaseIdField] = UserIdQueryParam,
view: JobIndexViewEnum = ViewQueryParam,
tool_id: Optional[str] = ToolIdQueryParam,
tool_id_like: Optional[str] = ToolIdLikeQueryParam,
tool_ids: Optional[List[str]] = Depends(query_parameter_as_list(ToolIdQueryParam)),
tool_ids_like: Optional[List[str]] = Depends(query_parameter_as_list(ToolIdLikeQueryParam)),
date_range_min: Optional[Union[datetime, date]] = DateRangeMinQueryParam,
date_range_max: Optional[Union[datetime, date]] = DateRangeMaxQueryParam,
history_id: Optional[EncodedDatabaseIdField] = HistoryIdQueryParam,
@@ -202,16 +208,6 @@ class FastAPIJobs:
limit: int = LimitQueryParam,
offset: int = OffsetQueryParam,
) -> List[Dict[str, Any]]:
def optional_list(input: Optional[str]) -> Optional[List[str]]:
if input is None:
return None
else:
return listify(input)
states = optional_list(state)
tool_ids = optional_list(tool_id)
tool_ids_like = optional_list(tool_id_like)
payload = JobIndexPayload(
states=states,
user_details=user_details,
+19 -2
View File
@@ -227,7 +227,7 @@ class WorkflowModule:
return self.get_all_outputs(data_only=True)
def get_post_job_actions(self, incoming):
return []
return {}
def check_and_update_state(self):
"""
@@ -428,6 +428,10 @@ class SubWorkflowModule(WorkflowModule):
_modules: Optional[List[Any]] = None
subworkflow: Workflow
def __init__(self, trans, content_id=None, **kwds):
super().__init__(trans, content_id, **kwds)
self.post_job_actions: Optional[Dict[str, Any]] = None
@classmethod
def from_dict(Class, trans, d, **kwds):
module = super().from_dict(trans, d, **kwds)
@@ -510,6 +514,7 @@ class SubWorkflowModule(WorkflowModule):
def get_all_outputs(self, data_only=False):
outputs = []
self.post_job_actions = {}
if hasattr(self.subworkflow, "workflow_outputs"):
from galaxy.managers.workflows import WorkflowContentsManager
@@ -535,7 +540,7 @@ class SubWorkflowModule(WorkflowModule):
data_output["name"] == workflow_output["output_name"]
or data_output_uuid == workflow_output_uuid
):
data_output["name"] = label
data_output["label"] = label
# That's the right data_output
break
else:
@@ -546,9 +551,21 @@ class SubWorkflowModule(WorkflowModule):
f"Workflow output '{workflow_output['output_name']}' defined, but not listed among data outputs"
)
continue
post_job_actions = step["post_job_actions"].copy()
change_datatype_action = post_job_actions.pop(f"ChangeDatatypeAction{data_output['name']}", None)
# Post job actions are referred to by tool output name,
# but that's not guaranteed to be unique within a workflow,
# but the label is unique.
if change_datatype_action:
post_job_actions[f"ChangeDatatypeAction{label}"] = change_datatype_action
self.post_job_actions.update(post_job_actions)
outputs.append(data_output)
return outputs
def get_post_job_actions(self, incoming):
return self.post_job_actions
def get_content_id(self):
return self.trans.security.encode_id(self.subworkflow.id)
+1 -1
View File
@@ -517,7 +517,7 @@ class WorkflowRefactorExecutor:
# TODO: find workflow outputs that need to be dropped and report them
upgrade_inputs = step.module.get_all_inputs()
upgrade_outputs = step.module.get_all_outputs()
upgrade_output_names = [u["name"] for u in upgrade_outputs]
upgrade_output_names = [u.get("label") or u["name"] for u in upgrade_outputs]
upgrade_order_index = step_def["id"]
upgrade_label = step_def.get("label")
all_input_connections = step_def.get("input_connections")
@@ -1,6 +1,7 @@
import json
import yaml
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from galaxy_test.base.workflow_fixtures import (
@@ -531,6 +532,64 @@ steps:
element.wait_for_and_send_keys(Keys.BACKSPACE)
element.wait_for_and_send_keys(value)
@selenium_test
def test_change_datatype(self):
self.open_in_workflow_editor(
"""
class: GalaxyWorkflow
inputs: []
steps:
- tool_id: create_2
label: create_2
- tool_id: checksum
label: checksum
in:
input: create_2/out_file1
"""
)
editor = self.components.workflow_editor
self.assert_connected("create_2#out_file1", "checksum#input")
node = editor.node._(label="create_2")
node.wait_for_and_click()
editor.configure_output(output="out_file1").wait_for_and_click()
editor.change_datatype.wait_for_and_click()
editor.select_dataype_text_search.wait_for_and_send_keys("bam")
editor.select_datatype(datatype="bam").wait_for_and_click()
editor.node.output_data_row(output_name="out_file1", extension="bam").wait_for_visible()
self.assert_not_connected("create_2#out_file1", "checksum#input")
def test_change_datatype_in_subworkflow(self):
self.open_in_workflow_editor(
"""
class: GalaxyWorkflow
inputs: []
steps:
nested_workflow:
run:
class: GalaxyWorkflow
inputs: []
steps:
- tool_id: create_2
label: create_2
outputs:
out_file1:
change_datatype: bam
outputs:
workflow_output:
outputSource: create_2/out_file1
metadata_bam:
tool_id: metadata_bam
"""
)
editor = self.components.workflow_editor
node = editor.node._(label="nested_workflow")
node.wait_for_and_click()
node.output_data_row(output_name="workflow_output", extension="bam").wait_for_visible()
# Move canvas, so terminals are in viewport
self.move_center_of_canvas(xoffset=100, yoffset=100)
self.workflow_editor_connect("nested_workflow#out_file1", "metadata_bam#input_bam")
self.assert_connected("nested_workflow#out_file1", "metadata_bam#input_bam")
@selenium_test
def test_editor_duplicate_node(self):
workflow_id = self.workflow_populator.upload_yaml_workflow(WORKFLOW_SIMPLE_CAT_TWICE)
@@ -784,3 +843,8 @@ steps:
modal_element = self.components.workflow_editor.state_modal_body.wait_for_visible()
text = modal_element.text
assert expected_text in text, f"Failed to find expected text [{expected_text}] in modal text [{text}]"
def move_center_of_canvas(self, xoffset=0, yoffset=0):
canvas = self.find_element_by_id("canvas-container")
chains = ActionChains(self.driver)
chains.click_and_hold(canvas).move_by_offset(xoffset=xoffset, yoffset=yoffset).release().perform()
@@ -6,7 +6,7 @@ echo select_single '$select_single' > '$output'
<inputs>
<param name="single" type="data" format="csv" label="single"/>
<param name="select_single" type="select" label="select_single">
<options from_dataset="single" separator="," startswith="Transaction_date">
<options from_dataset="single" separator="," startswith="1/3/09">
<column name="name" index="1"/>
<column name="value" index="2"/>
<validator type="no_options" message="No data is available in single" />
@@ -29,11 +29,15 @@ echo select_single '$select_single' > '$output'
</assert_contents>
</output>
</test>
<!-- test that data from "comment" lines can not be selected, i.e. if the startswith attribute of <options> works-->
<!-- test that only data from lines starting with "1/2/09" can be selected, i.e. if the startswith attribute of <options> works-->
<test expect_failure="true">
<param name="single" value="1.csv" />
<param name="select_single" value="Product" />
</test>
<test expect_failure="true">
<param name="single" value="1.csv" />
<param name="select_single" value="Product2" />
</test>
</tests>
<help>
</help>
@@ -0,0 +1,56 @@
from typing import List
from fastapi.applications import FastAPI
from fastapi.param_functions import (
Depends,
Query,
)
from fastapi.testclient import TestClient
from galaxy.webapps.galaxy.api.common import query_parameter_as_list
app = FastAPI()
client = TestClient(app)
@app.get("/test/get_value_as_list")
async def get_value_as_list(
values: List[str] = Depends(query_parameter_as_list(Query(alias="value"))),
):
return values
def test_single_value():
query_params = "value=val"
result = _get_result_for_params(query_params)
assert len(result) == 1
assert result[0] == "val"
def test_list_as_comma_separated_values():
query_params = "value=val1,val2,val3"
result = _get_result_for_params(query_params)
assert len(result) == 3
assert result[0] == "val1"
assert result[1] == "val2"
assert result[2] == "val3"
def test_list_as_multiple_query_entries():
query_params = "value=val1&value=val2&value=val3"
result = _get_result_for_params(query_params)
assert len(result) == 3
assert result[0] == "val1"
assert result[1] == "val2"
assert result[2] == "val3"
def _get_result_for_params(query_params: str):
response = client.get(f"/test/get_value_as_list?{query_params}")
assert response.status_code == 200
result = response.json()
return result
+2 -2
View File
@@ -244,9 +244,9 @@ def test_subworkflow_new_outputs():
outputs = subworkflow_module.get_data_outputs()
assert len(outputs) == 2, len(outputs)
output1, output2 = outputs
assert output1["name"] == "out1"
assert output1["label"] == "out1"
assert output1["extensions"] == ["input"]
assert output2["name"] == "4:out_file1", output2["name"]
assert output2["label"] == "4:out_file1", output2["label"]
class MapOverTestCase(NamedTuple):
+14 -2
View File
@@ -1,4 +1,4 @@
<tool id="Grep1" name="Select" version="1.0.3" profile="20.05">
<tool id="Grep1" name="Select" version="1.0.4" profile="20.05">
<description>lines that match an expression</description>
<requirements>
<requirement type="package" version="3.4">grep</requirement>
@@ -17,7 +17,7 @@
#else
cat '$input'
#end if
| grep -P -f '$pattern_file' $invert > '$out_file1'
| grep -P -f '$pattern_file' $invert >> '$out_file1'
]]></command>
<configfiles>
<configfile name="pattern_file">$pattern</configfile>
@@ -51,9 +51,21 @@
<param name="invert" value=""/>
<param name="pattern" value="+"/>
<param name="keep_header" value="true"/>
<output name="out_file1">
<assert_contents>
<has_text text="CCDS989.1_cds_0_0_chr1_147962193_r"/>
<not_has_text text="CCDS993.1_cds_0_0_chr1_148078401_r"/>
</assert_contents>
</output>
</test>
<test>
<param name="input" value="1.bed"/>
<param name="invert" value=""/>
<param name="pattern" value="+"/>
<output name="out_file1">
<assert_contents>
<not_has_text text="CCDS989.1_cds_0_0_chr1_147962193_r"/>
<not_has_text text="CCDS993.1_cds_0_0_chr1_148078401_r"/>
</assert_contents>
</output>
</test>