mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge branch 'release_22.05' into dev
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
-----------------------------------------------
|
||||
|
||||
|
||||
@@ -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:
|
||||
@@ -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
|
||||
------------------------------------
|
||||
|
||||
|
||||
@@ -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
|
||||
---------------------------------------------
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
----------------------------
|
||||
|
||||
|
||||
@@ -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:
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
-------------------------------
|
||||
|
||||
|
||||
@@ -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
|
||||
----------
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -18,7 +18,6 @@ Subpackages
|
||||
galaxy.authnz
|
||||
galaxy.celery
|
||||
galaxy.config
|
||||
galaxy.containers
|
||||
galaxy.datatypes
|
||||
galaxy.dependencies
|
||||
galaxy.exceptions
|
||||
|
||||
@@ -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:
|
||||
@@ -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:
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
@@ -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
|
||||
--------------------------------------------
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
@@ -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:
|
||||
@@ -12,5 +12,6 @@ Subpackages
|
||||
.. toctree::
|
||||
:maxdepth: 4
|
||||
|
||||
galaxy_ext.container_monitor
|
||||
galaxy_ext.expressions
|
||||
galaxy_ext.metadata
|
||||
|
||||
@@ -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
|
||||
----------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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": [],
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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">
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user