Merge branch 'dev' into remove_unused_workflow_endpoint

This commit is contained in:
guerler
2017-11-16 11:24:41 -05:00
348 changed files with 1859 additions and 1795 deletions
-177
View File
@@ -1,177 +0,0 @@
client/galaxy/style/source_material/circle.py
config/
contrib/
cron/
doc/parse_gx_xsd.py
lib/galaxy/actions/
lib/galaxy/auth/
lib/galaxy/config.py
lib/galaxy/containers/
lib/galaxy/dataset_collections/
lib/galaxy/datatypes/
lib/galaxy/dependencies/
lib/galaxy/eggs/
lib/galaxy/exceptions/
lib/galaxy/external_services/__init__.py
lib/galaxy/external_services/parameters.py
lib/galaxy/external_services/result_handlers/basic.py
lib/galaxy/external_services/result_handlers/__init__.py
lib/galaxy/forms/__init__.py
lib/galaxy/jobs/actions/
lib/galaxy/jobs/command_factory.py
lib/galaxy/jobs/datasets.py
lib/galaxy/jobs/deferred/
lib/galaxy/jobs/error_level.py
lib/galaxy/jobs/handler.py
lib/galaxy/jobs/__init__.py
lib/galaxy/jobs/manager.py
lib/galaxy/jobs/metrics/
lib/galaxy/jobs/output_checker.py
lib/galaxy/jobs/rules/
lib/galaxy/jobs/runners/
lib/galaxy/jobs/splitters/basic.py
lib/galaxy/jobs/splitters/__init__.py
lib/galaxy/jobs/stock_rules.py
lib/galaxy/jobs/transfer_manager.py
lib/galaxy/main.py
lib/galaxy/managers/annotatable.py
lib/galaxy/managers/api_keys.py
lib/galaxy/managers/base.py
lib/galaxy/managers/collections.py
lib/galaxy/managers/collections_util.py
lib/galaxy/managers/context.py
lib/galaxy/managers/deletable.py
lib/galaxy/managers/__init__.py
lib/galaxy/managers/jobs.py
lib/galaxy/managers/lddas.py
lib/galaxy/managers/libraries.py
lib/galaxy/managers/secured.py
lib/galaxy/managers/taggable.py
lib/galaxy/model/
lib/galaxy/objectstore/pulsar.py
lib/galaxy/objectstore/s3_multipart_upload.py
lib/galaxy/objectstore/s3.py
lib/galaxy/openid/__init__.py
lib/galaxy/quota/
lib/galaxy/sample_tracking/
lib/galaxy/security/
lib/galaxy/tags/
lib/galaxy/tools/
lib/galaxy/util/
lib/galaxy/version.py
lib/galaxy/visualization/data_providers/basic.py
lib/galaxy/visualization/data_providers/cigar.py
lib/galaxy/visualization/data_providers/genome.py
lib/galaxy/visualization/data_providers/__init__.py
lib/galaxy/visualization/data_providers/phyloviz/baseparser.py
lib/galaxy/visualization/genome/
lib/galaxy/visualization/genomes.py
lib/galaxy/visualization/__init__.py
lib/galaxy/visualization/plugins/__init__.py
lib/galaxy/visualization/plugins/plugin.py
lib/galaxy/visualization/plugins/utils.py
lib/galaxy/visualization/tracks/
lib/galaxy/web/base/
lib/galaxy/web/buildapp.py
lib/galaxy/web/formatting.py
lib/galaxy/web/form_builder.py
lib/galaxy/web/framework/base.py
lib/galaxy/web/framework/decorators.py
lib/galaxy/web/framework/helpers/grids.py
lib/galaxy/web/framework/__init__.py
lib/galaxy/web/framework/middleware/error.py
lib/galaxy/web/framework/middleware/__init__.py
lib/galaxy/web/framework/middleware/request_id.py
lib/galaxy/web/framework/middleware/sentry.py
lib/galaxy/web/framework/middleware/static.py
lib/galaxy/web/framework/middleware/statsd.py
lib/galaxy/web/framework/middleware/translogger.py
lib/galaxy/web/framework/middleware/xforwardedhost.py
lib/galaxy/web/framework/webapp.py
lib/galaxy/web/__init__.py
lib/galaxy/web/params.py
lib/galaxy/web/stack/
lib/galaxy/webapps/galaxy/api/authenticate.py
lib/galaxy/webapps/galaxy/api/forms.py
lib/galaxy/webapps/galaxy/api/genomes.py
lib/galaxy/webapps/galaxy/api/group_roles.py
lib/galaxy/webapps/galaxy/api/group_users.py
lib/galaxy/webapps/galaxy/api/groups.py
lib/galaxy/webapps/galaxy/api/histories.py
lib/galaxy/webapps/galaxy/api/__init__.py
lib/galaxy/webapps/galaxy/api/jobs.py
lib/galaxy/webapps/galaxy/api/library_contents.py
lib/galaxy/webapps/galaxy/api/library_datasets.py
lib/galaxy/webapps/galaxy/api/requests.py
lib/galaxy/webapps/galaxy/api/request_types.py
lib/galaxy/webapps/galaxy/api/roles.py
lib/galaxy/webapps/galaxy/api/samples.py
lib/galaxy/webapps/galaxy/api/tool_data.py
lib/galaxy/webapps/galaxy/api/tools.py
lib/galaxy/webapps/galaxy/api/tours.py
lib/galaxy/webapps/galaxy/api/users.py
lib/galaxy/webapps/galaxy/api/workflows.py
lib/galaxy/webapps/galaxy/buildapp.py
lib/galaxy/webapps/galaxy/config_watchers.py
lib/galaxy/webapps/galaxy/controllers/admin_toolshed.py
lib/galaxy/webapps/galaxy/controllers/async.py
lib/galaxy/webapps/galaxy/controllers/data_manager.py
lib/galaxy/webapps/galaxy/controllers/dataset.py
lib/galaxy/webapps/galaxy/controllers/error.py
lib/galaxy/webapps/galaxy/controllers/external_services.py
lib/galaxy/webapps/galaxy/controllers/forms.py
lib/galaxy/webapps/galaxy/controllers/history.py
lib/galaxy/webapps/galaxy/controllers/__init__.py
lib/galaxy/webapps/galaxy/controllers/library_common.py
lib/galaxy/webapps/galaxy/controllers/mobile.py
lib/galaxy/webapps/galaxy/controllers/page.py
lib/galaxy/webapps/galaxy/controllers/requests_admin.py
lib/galaxy/webapps/galaxy/controllers/requests_common.py
lib/galaxy/webapps/galaxy/controllers/requests.py
lib/galaxy/webapps/galaxy/controllers/request_type.py
lib/galaxy/webapps/galaxy/controllers/root.py
lib/galaxy/webapps/galaxy/controllers/search.py
lib/galaxy/webapps/galaxy/controllers/tool_runner.py
lib/galaxy/webapps/galaxy/controllers/userskeys.py
lib/galaxy/webapps/galaxy/__init__.py
lib/galaxy/webapps/__init__.py
lib/galaxy/webapps/reports/buildapp.py
lib/galaxy/webapps/reports/config.py
lib/galaxy/webapps/reports/controllers/__init__.py
lib/galaxy/webapps/reports/controllers/query.py
lib/galaxy/webapps/reports/controllers/system.py
lib/galaxy/webapps/reports/controllers/tools.py
lib/galaxy/webapps/reports/__init__.py
lib/galaxy/webapps/tool_shed/api/__init__.py
lib/galaxy/webapps/tool_shed/buildapp.py
lib/galaxy/webapps/tool_shed/config.py
lib/galaxy/webapps/tool_shed/controllers/groups.py
lib/galaxy/webapps/tool_shed/controllers/__init__.py
lib/galaxy/webapps/tool_shed/controllers/repository.py
lib/galaxy/webapps/tool_shed/controllers/user.py
lib/galaxy/webapps/tool_shed/framework/__init__.py
lib/galaxy/webapps/tool_shed/framework/middleware/__init__.py
lib/galaxy/webapps/tool_shed/framework/middleware/remoteuser.py
lib/galaxy/webapps/tool_shed/__init__.py
lib/galaxy/webapps/tool_shed/model/__init__.py
lib/galaxy/webapps/tool_shed/model/mapping.py
lib/galaxy/webapps/tool_shed/model/migrate/
lib/galaxy/webapps/tool_shed/search/__init__.py
lib/galaxy/webapps/tool_shed/search/repo_search.py
lib/galaxy/webapps/tool_shed/security/
lib/galaxy/webapps/tool_shed/util/__init__.py
lib/galaxy/webapps/tool_shed/util/ratings_util.py
lib/galaxy/webapps/tool_shed/util/shed_statistics.py
lib/galaxy/webapps/util.py
lib/galaxy/webhooks/
lib/galaxy/work/
lib/galaxy/workflow/
lib/galaxy_ext/
lib/log_tempfile.py
lib/mimeparse.py
lib/psyco_full.py
lib/tool_shed/
scripts/
test/
tool_list.py
tools/
-5
View File
@@ -1,5 +0,0 @@
#!/bin/bash
set -e
flake8 `paste .ci/flake8_lint_include_list.txt`
-3
View File
@@ -9,15 +9,12 @@ env:
- TOX_ENV=py27-unit
- TOX_ENV=qunit
- TOX_ENV=first_startup
- TOX_ENV=py27-lint-imports
- TOX_ENV=py27-lint-imports-include-list
- TOX_ENV=validate-test-tools
- TOX_ENV=py27-lint-docstring-include-list
- TOX_ENV=check-python-dependencies
matrix:
allow_failures:
- env: TOX_ENV=py27-lint-imports
- env: TOX_ENV=check-python-dependencies
addons:
@@ -129,9 +129,10 @@ var DatasetDCE = DATASET_MODEL.DatasetAssociation.extend(
),
_downloadQueryParameters: function() {
return `?to_ext=${this.get("file_ext")}&hdca_id=${this.get(
"parent_hdca_id"
)}&element_identifier=${this.get("element_identifier")}`;
var fileExt = this.get("file_ext");
var elementIdentifier = this.get("element_identifier");
var parentHdcaId = this.get("parent_hdca_id");
return `?to_ext=${fileExt}&hdca_id=${parentHdcaId}&element_identifier=${elementIdentifier}`;
},
// because all objects have constructors (as this hashmap would even if this next line wasn't present)
@@ -152,7 +153,7 @@ var DatasetDCE = DATASET_MODEL.DatasetAssociation.extend(
/** String representation. */
toString: function() {
var objStr = this.get("element_identifier");
return ["DatasetDCE(", objStr, ")"].join("");
return `DatasetDCE({objStr})`;
}
}
)
@@ -42,7 +42,6 @@ var CollectionView = _super.extend(
/** foldout or drilldown */
this.foldoutStyle = attributes.foldoutStyle || "foldout";
this.downloadUrl = `${Galaxy.root}api/dataset_collections/${this.model.attributes.id}/download`;
console.log(this);
},
_queueNewRender: function($newRender, speed) {
+12 -22
View File
@@ -1,5 +1,6 @@
import DATASET_LI from "mvc/dataset/dataset-li";
import BASE_MVC from "mvc/base-mvc";
import HISTORY_ITEM_LI from "mvc/history/history-item-li";
import _l from "utils/localization";
//==============================================================================
@@ -29,28 +30,17 @@ var HDAListItemView = _super.extend(
// ............................................................................ TEMPLATES
/** underscore templates */
HDAListItemView.prototype.templates = (() => {
var titleBarTemplate = BASE_MVC.wrapTemplate(
[
// adding the hid display to the title
'<div class="title-bar clear" tabindex="0">',
'<span class="state-icon"></span>',
'<div class="title">',
//TODO: remove whitespace and use margin-right
'<span class="hid"><%- dataset.hid %></span> ',
'<span class="name"><%- dataset.name %></span>',
"</div>",
"</br>",
'<span class="nametags">',
"<% _.each(_.sortBy(_.uniq(dataset.tags), function(x) { return x }), function(tag){ %>",
'<% if (tag.indexOf("name:") == 0){ %>',
'<span class="label label-info"><%- tag.slice(5) %></span>',
"<% } %>",
"<% }); %>",
"</span>",
"</div>"
],
"dataset"
);
var titleBarTemplate = dataset => `
<div class="title-bar clear" tabindex="0">
<span class="state-icon"></span>
<div class="title">
<span class="hid">${dataset.hid}</span>
<span class="name">${_.escape(dataset.name)}</span>
</div>
</br>
${HISTORY_ITEM_LI.nametagTemplate(dataset)}
</div>
`;
var warnings = _.extend({}, _super.prototype.templates.warnings, {
hidden: BASE_MVC.wrapTemplate(
@@ -14,7 +14,8 @@ var HDCAListItemEdit = _super.extend(
/** Override to return editable versions of the collection panels */
_getFoldoutPanelClass: function() {
switch (this.model.get("collection_type")) {
var collectionType = this.model.get("collection_type");
switch (collectionType) {
case "list":
return DC_VIEW_EDIT.ListCollectionViewEdit;
case "paired":
@@ -24,7 +25,7 @@ var HDCAListItemEdit = _super.extend(
case "list:list":
return DC_VIEW_EDIT.ListOfListsCollectionViewEdit;
}
throw new TypeError(`Uknown collection_type: ${this.model.get("collection_type")}`);
throw new TypeError(`Unknown collection_type: ${collectionType}`);
},
// ......................................................................... delete
@@ -37,17 +38,16 @@ var HDCAListItemEdit = _super.extend(
/** Render icon-button to delete this collection. */
_renderDeleteButton: function() {
var self = this;
var deleted = this.model.get("deleted");
return faIconButton({
title: deleted ? _l("Dataset collection is already deleted") : _l("Delete"),
classes: "delete-btn",
faIcon: "fa-times",
disabled: deleted,
onclick: function() {
onclick: () => {
// ...bler... tooltips being left behind in DOM (hover out never called on deletion)
self.$el.find(".icon-btn.delete-btn").trigger("mouseout");
self.model["delete"]();
this.$el.find(".icon-btn.delete-btn").trigger("mouseout");
this.model["delete"]();
}
});
},
+20 -35
View File
@@ -2,6 +2,7 @@ import STATES from "mvc/dataset/states";
import DC_LI from "mvc/collection/collection-li";
import DC_VIEW from "mvc/collection/collection-view";
import BASE_MVC from "mvc/base-mvc";
import HISTORY_ITEM_LI from "mvc/history/history-item-li";
import _l from "utils/localization";
//==============================================================================
@@ -24,7 +25,8 @@ var HDCAListItemView = _super.extend(
/** Override to provide the proper collections panels as the foldout */
_getFoldoutPanelClass: function() {
switch (this.model.get("collection_type")) {
var collectionType = this.model.get("collection_type");
switch (collectionType) {
case "list":
return DC_VIEW.ListCollectionView;
case "paired":
@@ -34,7 +36,7 @@ var HDCAListItemView = _super.extend(
case "list:list":
return DC_VIEW.ListOfListsCollectionView;
}
throw new TypeError(`Uknown collection_type: ${this.model.get("collection_type")}`);
throw new TypeError(`Unknown collection_type: ${collectionType}`);
},
/** In this override, add the state as a class for use with state-based CSS */
@@ -60,42 +62,25 @@ var HDCAListItemView = _super.extend(
/** underscore templates */
HDCAListItemView.prototype.templates = (() => {
var warnings = _.extend({}, _super.prototype.templates.warnings, {
hidden: BASE_MVC.wrapTemplate(
[
// add a warning when hidden
"<% if( !collection.visible ){ %>",
'<div class="hidden-msg warningmessagesmall">',
_l("This collection has been hidden"),
"</div>",
"<% } %>"
],
"collection"
)
hidden: collection => {
collection.visible
? ""
: `<div class="hidden-msg warningmessagesmall">${_l("This collection has been hidden")}</div>`;
}
});
// could steal this from hda-base (or use mixed content)
var titleBarTemplate = BASE_MVC.wrapTemplate(
[
// adding the hid display to the title
'<div class="title-bar clear" tabindex="0">',
'<span class="state-icon"></span>',
'<div class="title">',
//TODO: remove whitespace and use margin-right
'<span class="hid"><%- collection.hid %></span> ',
'<span class="name"><%- collection.name %></span>',
"</div>",
'<div class="subtitle"></div>',
'<span class="nametags">',
"<% _.each(_.sortBy(_.uniq(collection.tags), function(x) { return x }), function(tag){ %>",
'<% if (tag.indexOf("name:") == 0){ %>',
'<span class="label label-info"><%- tag.slice(5) %></span>',
"<% } %>",
"<% }); %>",
"</span>",
"</div>"
],
"collection"
);
var titleBarTemplate = collection => `
<div class="title-bar clear" tabindex="0">
<span class="state-icon"></span>
<div class="title">
<span class="hid">${collection.hid}</span>
<span class="name">${_.escape(collection.name)}</span>
</div>
<div class="subtitle"></div>
${HISTORY_ITEM_LI.nametagTemplate(collection)}
</div>
`;
return _.extend({}, _super.prototype.templates, {
warnings: warnings,
@@ -107,7 +107,7 @@ var HistoryListOfListsDatasetCollection = ListOfListsDC.extend(hcontentMixin).ex
/** String representation. */
toString: function() {
return ["HistoryListOfListsDatasetCollection(", this.get("name"), ")"].join("");
return `HistoryListOfListsDatasetCollection(${this.get("name")})`;
}
});
@@ -54,9 +54,10 @@ var HistoryContentMixin = {
/** full url spec. for this content */
url: function() {
var url = `${this.urlRoot + this.get("history_id")}/contents/${this.get("history_content_type")}s/${this.get(
"id"
)}`;
var historyContentType = this.get("history_content_type");
var historyId = this.get("history_id");
var historyContentId = this.get("id");
var url = `${this.urlRoot}${historyId}/contents/${historyContentType}s/${historyContentId}`;
return url;
},
@@ -267,7 +267,6 @@ var HistoryContents = _super.extend(BASE_MVC.LoggableMixin).extend({
/** fetch all the deleted==true contents of this collection */
fetchDeleted: function(options) {
options = options || {};
var self = this;
options.filters = _.extend(options.filters, {
// all deleted, purged or not
deleted: true,
@@ -275,9 +274,9 @@ var HistoryContents = _super.extend(BASE_MVC.LoggableMixin).extend({
});
options.remove = false;
self.trigger("fetching-deleted", self);
return self.fetch(options).always(() => {
self.trigger("fetching-deleted-done", self);
this.trigger("fetching-deleted", this);
return this.fetch(options).always(() => {
this.trigger("fetching-deleted-done", this);
});
},
@@ -0,0 +1,17 @@
function _labelIfName(tag) {
if (tag.indexOf("name:") == 0) {
return `<span class="label label-info">${_.escape(tag.slice(5))}</span>`;
} else {
return "";
}
}
function nametagTemplate(historyItem) {
return `<span class="nametags">${_.sortBy(_.uniq(historyItem.tags))
.map(_labelIfName)
.join("")}</span>`;
}
export default {
nametagTemplate: nametagTemplate
};
@@ -171,24 +171,23 @@ var History = Backbone.Model.extend(BASE_MVC.LoggableMixin).extend(
refresh: function(options) {
// console.log( this + '.refresh' );
options = options || {};
var self = this;
// note if there was no previous update time, all summary contents will be fetched
var lastUpdateTime = self.lastUpdateTime;
var lastUpdateTime = this.lastUpdateTime;
// if we don't flip this, then a fully-fetched list will not be re-checked via fetch
this.contents.allFetched = false;
var fetchFn =
self.contents.currentPage !== 0
? () => self.contents.fetchPage(self.contents.currentPage)
: () => self.contents.fetchUpdated(lastUpdateTime);
this.contents.currentPage !== 0
? () => this.contents.fetchPage(this.contents.currentPage)
: () => this.contents.fetchUpdated(lastUpdateTime);
// note: if there was no previous update time, all summary contents will be fetched
return fetchFn().done((response, status, xhr) => {
var serverResponseDatetime;
try {
serverResponseDatetime = new Date(xhr.getResponseHeader("Date"));
} catch (err) {}
self.lastUpdateTime = serverResponseDatetime || new Date();
self.checkForUpdates(options);
this.lastUpdateTime = serverResponseDatetime || new Date();
this.checkForUpdates(options);
});
},
@@ -197,18 +196,17 @@ var History = Backbone.Model.extend(BASE_MVC.LoggableMixin).extend(
// console.log( this + '.checkForUpdates' );
options = options || {};
var delay = this.UPDATE_DELAY;
var self = this;
if (!self.id) {
if (!this.id) {
return;
}
function _delayThenUpdate() {
var _delayThenUpdate = () => {
// prevent buildup of updater timeouts by clearing previous if any, then set new and cache id
self.clearUpdateTimeout();
self.updateTimeoutId = setTimeout(() => {
self.refresh(options);
this.clearUpdateTimeout();
this.updateTimeoutId = setTimeout(() => {
this.refresh(options);
}, delay);
}
};
// if there are still datasets in the non-ready state, recurse into this function with the new time
var nonReadyContentCount = this.numOfUnfinishedShownContents();
@@ -219,13 +217,13 @@ var History = Backbone.Model.extend(BASE_MVC.LoggableMixin).extend(
// no datasets are running, but currently runnning jobs may still produce new datasets
// see if the history has any running jobs and continue to update if so
// (also update the size for the user in either case)
self._fetchContentRelatedAttributes().done(historyData => {
this._fetchContentRelatedAttributes().done(historyData => {
// console.log( 'non_ready_jobs:', historyData.non_ready_jobs );
if (self.numOfUnfinishedJobs() > 0) {
if (this.numOfUnfinishedJobs() > 0) {
_delayThenUpdate();
} else {
// otherwise, let listeners know that all updates have stopped
self.trigger("ready");
this.trigger("ready");
}
});
}
@@ -101,13 +101,12 @@ var HistoryView = _super.extend(
error: function(model, xhr, options, msg, details) {
this.errorHandler(model, xhr, options, msg, details);
},
"loading-done": function() {
var self = this;
"loading-done": () => {
// after the initial load, decorate with more time consuming fields (like HDCA element_counts)
self.detailedFetchTimeoutId = _.delay(() => {
self.detailedFetchTimeoutId = null;
self.model.contents.fetchCollectionCounts();
}, self.FETCH_COLLECTION_COUNTS_DELAY);
this.detailedFetchTimeoutId = _.delay(() => {
this.detailedFetchTimeoutId = null;
this.model.contents.fetchCollectionCounts();
}, this.FETCH_COLLECTION_COUNTS_DELAY);
},
"views:ready view:attached view:removed": function(view) {
this._renderSelectButton();
@@ -124,14 +123,13 @@ var HistoryView = _super.extend(
loadHistory: function(historyId, options, contentsOptions) {
contentsOptions = _.extend(contentsOptions || { silent: true });
this.info("loadHistory:", historyId, options, contentsOptions);
var self = this;
self.setModel(new HISTORY_MODEL.History({ id: historyId }));
this.setModel(new HISTORY_MODEL.History({ id: historyId }));
contentsOptions.silent = true;
self.trigger("loading");
return self.model.fetchWithContents(options, contentsOptions).always(() => {
self.render();
self.trigger("loading-done");
this.trigger("loading");
return this.model.fetchWithContents(options, contentsOptions).always(() => {
this.render();
this.trigger("loading-done");
});
},
@@ -209,19 +207,17 @@ var HistoryView = _super.extend(
/** override to avoid showing intial empty message using contents_active */
_renderEmptyMessage: function($whereTo) {
var self = this;
var $emptyMsg = self.$emptyMessage($whereTo);
var empty = self.model.get("contents_active").active <= 0;
var $emptyMsg = this.$emptyMessage($whereTo);
var empty = this.model.get("contents_active").active <= 0;
if (empty) {
return $emptyMsg
.empty()
.append(self.emptyMsg)
.append(this.emptyMsg)
.show();
} else if (self.searchFor && self.model.contents.haveSearchDetails() && !self.views.length) {
} else if (this.searchFor && this.model.contents.haveSearchDetails() && !this.views.length) {
return $emptyMsg
.empty()
.append(self.noneFoundMsg)
.append(this.noneFoundMsg)
.show();
}
$emptyMsg.hide();
@@ -251,27 +247,26 @@ var HistoryView = _super.extend(
renderItems: function($whereTo) {
// console.log( this + '.renderItems-----------------', new Date() );
$whereTo = $whereTo || this.$el;
var self = this;
var $list = self.$list($whereTo);
var $list = this.$list($whereTo);
// TODO: bootstrap hack to remove orphaned tooltips
$(".tooltip").remove();
$list.empty();
self.views = [];
this.views = [];
var models = self._filterCollection();
var models = this._filterCollection();
if (models.length) {
self._renderPagination($whereTo);
self.views = self._renderSomeItems(models, $list);
this._renderPagination($whereTo);
this.views = this._renderSomeItems(models, $list);
} else {
// TODO: consolidate with _renderPagination above by (???) passing in models/length?
$whereTo.find("> .controls .list-pagination").empty();
}
self._renderEmptyMessage($whereTo).toggle(!models.length);
this._renderEmptyMessage($whereTo).toggle(!models.length);
self.trigger("views:ready", self.views);
return self.views;
this.trigger("views:ready", this.views);
return this.views;
},
/** render pagination controls if not searching and contents says we're paginating */
@@ -295,13 +290,12 @@ var HistoryView = _super.extend(
/** render a subset of the entire collection (client-side pagination) */
_renderSomeItems: function(models, $list) {
var self = this;
var views = [];
$list.append(
models.map(m => {
var view = self._createItemView(m);
var view = this._createItemView(m);
views.push(view);
return self._renderItemView$el(view);
return this._renderItemView$el(view);
})
);
return views;
@@ -310,12 +304,11 @@ var HistoryView = _super.extend(
// ------------------------------------------------------------------------ sub-views
/** in this override, check if the contents would also display based on includeDeleted/hidden */
_filterItem: function(model) {
var self = this;
var contents = self.model.contents;
var contents = this.model.contents;
return (
(contents.includeHidden || !model.hidden()) &&
(contents.includeDeleted || !model.isDeletedOrPurged()) &&
_super.prototype._filterItem.call(self, model)
_super.prototype._filterItem.call(this, model)
);
},
@@ -405,10 +398,9 @@ var HistoryView = _super.extend(
*/
toggleShowDeleted: function(show, options) {
show = show !== undefined ? show : !this.model.contents.includeDeleted;
var self = this;
var contents = self.model.contents;
var contents = this.model.contents;
contents.setIncludeDeleted(show, options);
self.trigger("show-deleted", show);
this.trigger("show-deleted", show);
contents.fetchCurrentPage({ renderAll: true });
return show;
@@ -420,10 +412,9 @@ var HistoryView = _super.extend(
toggleShowHidden: function(show, store, options) {
// console.log( 'toggleShowHidden', show, store );
show = show !== undefined ? show : !this.model.contents.includeHidden;
var self = this;
var contents = self.model.contents;
var contents = this.model.contents;
contents.setIncludeHidden(show, options);
self.trigger("show-hidden", show);
this.trigger("show-hidden", show);
contents.fetchCurrentPage({ renderAll: true });
return show;
@@ -431,48 +422,46 @@ var HistoryView = _super.extend(
/** On the first search, if there are no details - load them, then search */
_firstSearch: function(searchFor) {
var self = this;
var inputSelector = "> .controls .search-input";
this.log("onFirstSearch", searchFor);
// if the contents already have enough details to search, search and return now
if (self.model.contents.haveSearchDetails()) {
self.searchItems(searchFor);
if (this.model.contents.haveSearchDetails()) {
this.searchItems(searchFor);
return;
}
// otherwise, load the details progressively here
self.$(inputSelector).searchInput("toggle-loading");
this.$(inputSelector).searchInput("toggle-loading");
// set this now so that only results will show during progress
self.searchFor = searchFor;
var xhr = self.model.contents
this.searchFor = searchFor;
var xhr = this.model.contents
.progressivelyFetchDetails({ silent: true })
.progress((response, limit, offset) => {
self.renderItems();
self.trigger("search:loading-progress", limit, offset);
this.renderItems();
this.trigger("search:loading-progress", limit, offset);
})
.always(() => {
self.$el.find(inputSelector).searchInput("toggle-loading");
this.$el.find(inputSelector).searchInput("toggle-loading");
})
.done(() => {
self.searchItems(searchFor, "force");
this.searchItems(searchFor, "force");
});
},
/** clear the search filters and show all views that are normally shown */
clearSearch: function(searchFor) {
var self = this;
if (!self.searchFor) return self;
//self.log( 'onSearchClear', self );
self.searchFor = "";
self.trigger("search:clear", self);
self.$("> .controls .search-query").val("");
if (!this.searchFor) return this;
//this.log( 'onSearchClear', this );
this.searchFor = "";
this.trigger("search:clear", this);
this.$("> .controls .search-query").val("");
// NOTE: silent + render prevents collection update event with merge only
// - which causes an empty page due to event handler above
self.model.contents.fetchCurrentPage({ silent: true }).done(() => {
self.renderItems();
this.model.contents.fetchCurrentPage({ silent: true }).done(() => {
this.renderItems();
});
return self;
return this;
},
// ........................................................................ error handling
@@ -550,14 +539,12 @@ var HistoryView = _super.extend(
//------------------------------------------------------------------------------ TEMPLATES
HistoryView.prototype.templates = (() => {
var mainTemplate = BASE_MVC.wrapTemplate([
// temp container
"<div>",
'<div class="controls"></div>',
'<ul class="list-items"></ul>',
'<div class="empty-message infomessagesmall"></div>',
"</div>"
]);
var mainTemplate = () =>
`<div>
<div class="controls"></div>
<ul class="list-items"></ul>
<div class="empty-message infomessagesmall"></div>',
</div>`;
var controlsTemplate = BASE_MVC.wrapTemplate(
[
@@ -122,6 +122,7 @@ export default FormBase.extend({
// button for options e.g. search, help
var menu_button = new Ui.ButtonMenu({
id: "options",
icon: "fa-caret-down",
title: (!options.narrow && "Options") || null,
tooltip: "View available options"
+1 -1
View File
@@ -39,7 +39,7 @@
<datatype extension="len" type="galaxy.datatypes.chrominfo:ChromInfo" display_in_upload="true">
<converter file="len_to_linecount.xml" target_datatype="linecount" />
</datatype>
<datatype extension="dmnd" type="galaxy.datatypes.binary:Binary:DMND" subclass="True" display_in_upload="false"/>
<datatype extension="dmnd" type="galaxy.datatypes.binary:Binary:DMND" display_in_upload="false"/>
<datatype extension="bigbed" type="galaxy.datatypes.binary:BigBed" mimetype="application/octet-stream" display_in_upload="true">
<display file="ucsc/bigbed.xml" />
<display file="igb/bb.xml" />
+2
View File
@@ -1105,6 +1105,8 @@ use_interactive = True
# stable API.
#enable_beta_workflow_modules = False
# Following options only apply to workflows scheduled using the legacy workflow
# run API (running workflows via a POST to /api/workflows).
# Force usage of Galaxy's beta workflow scheduler under certain circumstances -
# this workflow scheduling forces Galaxy to schedule workflows in the background
# so initial submission of the workflows is significantly sped up. This does
@@ -0,0 +1,11 @@
# This file lists acceptable images to allow runing.
#
# This allows you, the admin, to create multiple flavours
# for your users to run. E.g. maybe you need a geosciences flavour,
# you can create the image based on our default image and add the
# appropriate `apt-get/pip install` statements.
---
-
image: askomics/askomics-ie
description: |
AskOmics, a visual SPARQL query builder
@@ -0,0 +1,43 @@
[main]
# Unused
[docker]
# Command to launch docker container. For example `sudo docker` or `docker-lxc`.
# If you need to use a command like `sg` you can do that here, just be sure to
# wrap all of the docker portion in single quotes. E.g. `sg 'docker' 'docker {docker_args}'`
#
# It is recommended that you use command_inject if you need to inject
# additional parameters. This command string is re-used for a `docker inspect`
# command and will likely cause errors if it is extensively modified, past the
# usual group/sudo changes.
#command = docker {docker_args}
# The image argument was moved to "allowed_images.yml.sample"
# Additional arguments that are passed to the `docker run` command.
#command_inject = --sig-proxy=true -e DEBUG=false
# URL to access the Galaxy API with from the spawn Docker containter, if empty
# this falls back to galaxy.ini's galaxy_infrastructure_url and finally to the
# Docker host of the spawned container if that is also not set.
#galaxy_url =
# The Docker hostname. It can be useful to run the Docker daemon on a different
# host than Galaxy.
#docker_hostname = localhost
# Try to set the tempdirectory to world execute - this can fix the issue
# where 'sudo docker' is not able to mount the folder otherwise.
# "finalize namespace chdir to /import permission denied"
#wx_tempdir = False
# Overwride the IE tempdirectory. This can be useful if you regular tempdir is
# located on an NFS share, which does not work well as Docker volume. In this case
# you can have a shared sshfs share which you can use as temporary directory to
# share data between the IE and Galaxy.
#docker_galaxy_temp_dir = None
# If your Docker container exposes more then one port, Galaxy needs to know to
# which ports it needs to connect. With this option you can specify the port number
# inside your container to which Galaxy should connect the UI.
docker_connect_port = 6543
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE interactive_environment SYSTEM "../../interactive_environments.dtd">
<interactive_environment name="AskOmics">
<data_sources>
<data_source>
<model_class>HistoryDatasetAssociation</model_class>
<test type="isinstance" test_attr="datatype" result_type="datatype">tabular.Tabular</test>
<test type="isinstance" test_attr="datatype" result_type="datatype">tabular.gff</test>
<test type="isinstance" test_attr="datatype" result_type="datatype">tabular.gff3</test>
<test type="isinstance" test_attr="datatype" result_type="datatype">tabular.bed</test>
<to_param param_attr="id">dataset_id</to_param>
</data_source>
</data_sources>
<params>
<param type="dataset" var_name_in_template="hda" required="true">dataset_id</param>
</params>
<entry_point entry_point_type="mako">askomics.mako</entry_point>
</interactive_environment>
@@ -0,0 +1,9 @@
var IES = window.IES;
function load_askomics(url){
$( document ).ready(function() {
IES.test_ie_availability(url, function(){
IES.append_notebook(url);
});
});
}
@@ -0,0 +1,51 @@
<%namespace name="ie" file="ie.mako" />
<%
import random
import string
# Sets ID and sets up a lot of other variables
ie_request.load_deploy_config()
# get an API key for AskOmics
askomics_api_key = ie_request.notebook_pw
# Get ids of selected datasets
additional_ids = trans.request.params.get('additional_dataset_ids', None)
if not additional_ids:
additional_ids = str(trans.security.encode_id( hda.id ) )
else:
additional_ids += "," + trans.security.encode_id( hda.id )
# Launch the IE. This builds and runs the docker command in the background.
ie_request.launch(
additional_ids=additional_ids if ie_request.use_volumes else None,
env_override={
'ASKO_load_url': 'http://localhost:6543',
'ASKOMICS_API_KEY': askomics_api_key,
'ASKO_files_dir': '/tmp/askomics-ie',
'VIRT_Parameters_NumberOfBuffers': 10000, # see https://github.com/xgaia/askomics-docker-compose/tree/master/virtuoso#virtuoso for this values
'VIRT_Parameters_MaxDirtyBuffers': 6000
}
)
# Only once the container is launched can we template our URLs. The ie_request
# doesn't have all of the information needed until the container is running.
url = ie_request.url_template('${PROXY_URL}/login_api_gie?key=' + askomics_api_key)
%>
<html>
<head>
${ ie.load_default_js() }
</head>
<body>
<script type="text/javascript">
${ ie.default_javascript_variables() }
var url = '${ url }';
${ ie.plugin_require_config() }
requirejs(['galaxy.interactive_environments', 'plugin/askomics'], function(IES){
window.IES = IES;
load_askomics(url);
});
</script>
<div id="main" width="100%" height="100%">
</div>
</body>
</html>
@@ -58,7 +58,7 @@ $(document).ready(function() {
},
_generateTour: function(data) {
var tourData = Tours.hooked_tour_from_data(data);
var tourData = Tours.default.hooked_tour_from_data(data);
sessionStorage.setItem('activeGalaxyTour', JSON.stringify(data));
// Generate and run the tour
+17 -16
View File
@@ -1,39 +1,40 @@
from __future__ import absolute_import
import logging
import signal
import sys
import time
from galaxy import config, jobs
import galaxy.model
import galaxy.security
import galaxy.queues
from galaxy.managers.collections import DatasetCollectionManager
import galaxy.quota
import galaxy.security
from galaxy import config, jobs
from galaxy.jobs import metrics as job_metrics
from galaxy.managers.collections import DatasetCollectionManager
from galaxy.managers.tags import GalaxyTagManager
from galaxy.visualization.genomes import Genomes
from galaxy.visualization.data_providers.registry import DataProviderRegistry
from galaxy.visualization.plugins.registry import VisualizationsRegistry
from galaxy.tools.special_tools import load_lib_tools
from galaxy.tours import ToursRegistry
from galaxy.webapps.galaxy.config_watchers import ConfigWatchers
from galaxy.webhooks import WebhooksRegistry
from galaxy.sample_tracking import external_service_types
from galaxy.openid.providers import OpenIDProviders
from galaxy.tools.data_manager.manager import DataManagers
from galaxy.queue_worker import GalaxyQueueWorker
from galaxy.sample_tracking import external_service_types
from galaxy.tools.cache import (
ToolCache,
ToolShedRepositoryCache
)
from galaxy.jobs import metrics as job_metrics
from galaxy.tools.data_manager.manager import DataManagers
from galaxy.tools.error_reports import ErrorReports
from galaxy.web.proxy import ProxyManager
from galaxy.web.stack import application_stack_instance
from galaxy.queue_worker import GalaxyQueueWorker
from galaxy.tools.special_tools import load_lib_tools
from galaxy.tours import ToursRegistry
from galaxy.util import (
ExecutionTimer,
heartbeat
)
from galaxy.visualization.data_providers.registry import DataProviderRegistry
from galaxy.visualization.genomes import Genomes
from galaxy.visualization.plugins.registry import VisualizationsRegistry
from galaxy.web.proxy import ProxyManager
from galaxy.web.stack import application_stack_instance
from galaxy.webapps.galaxy.config_watchers import ConfigWatchers
from galaxy.webhooks import WebhooksRegistry
from tool_shed.galaxy_install import update_repository_manager
-1
View File
@@ -16,7 +16,6 @@ import sys
import tempfile
import threading
import time
from datetime import timedelta
from six import string_types
@@ -1,6 +1,5 @@
from galaxy import exceptions
from galaxy.util import bunch
from .structure import (
get_structure,
leaf
@@ -1,5 +1,4 @@
from galaxy import model
from .types import (
list,
paired
@@ -1,5 +1,4 @@
from galaxy.model import DatasetCollectionElement
from ..types import BaseDatasetCollectionType
@@ -1,5 +1,4 @@
from galaxy.model import DatasetCollectionElement, HistoryDatasetAssociation
from ..types import BaseDatasetCollectionType
FORWARD_IDENTIFIER = "forward"
+10 -7
View File
@@ -16,16 +16,19 @@ import six
from galaxy import util
from galaxy.datatypes.metadata import MetadataElement # import directly to maintain ease of use in Datatype class definitions
from galaxy.util import compression_utils
from galaxy.util import FILENAME_VALID_CHARS
from galaxy.util import inflector
from galaxy.util import unicodify
from galaxy.util import (
compression_utils,
FILENAME_VALID_CHARS,
inflector,
unicodify
)
from galaxy.util.bunch import Bunch
from galaxy.util.odict import odict
from galaxy.util.sanitize_html import sanitize_html
from . import dataproviders
from . import metadata
from . import (
dataproviders,
metadata
)
XSS_VULNERABLE_MIME_TYPES = [
'image/svg+xml', # Unfiltered by Galaxy and may contain JS that would be executed by some browsers.
@@ -14,7 +14,6 @@ from bx import (
)
from galaxy.util import sqlite
from . import (
base,
column,
@@ -12,7 +12,6 @@ from galaxy.util import (
from galaxy.util.odict import odict
from galaxy.util.template import fill_template
from galaxy.web import url_for
from .parameters import (
DEFAULT_DATASET_NAME,
DisplayApplicationDataParameter,
-1
View File
@@ -4,7 +4,6 @@ Graph content classes.
import logging
from galaxy.util import simplegraph
from . import (
data,
dataproviders,
-1
View File
@@ -20,7 +20,6 @@ from galaxy.datatypes.sniff import (
from galaxy.datatypes.tabular import Tabular
from galaxy.datatypes.util.gff_util import parse_gff3_attributes, parse_gff_attributes
from galaxy.web import url_for
from . import (
data,
dataproviders
-1
View File
@@ -13,7 +13,6 @@ from xml.etree.ElementTree import Element
import yaml
import galaxy.util
from . import (
binary,
coverage,
-2
View File
@@ -30,9 +30,7 @@ from galaxy.util.checkers import (
is_bz2,
is_gzip
)
from galaxy.util.image_util import check_image_type
from . import data
if sys.version_info > (3,):
-1
View File
@@ -23,7 +23,6 @@ from galaxy.datatypes.sniff import (
iter_headers
)
from galaxy.util import compression_utils
from . import dataproviders
if sys.version_info > (3,):
-1
View File
@@ -4,7 +4,6 @@ Datatype classes for tracks/track views within galaxy.
import logging
from galaxy.datatypes.text import Html
from . import binary
log = logging.getLogger(__name__)
-1
View File
@@ -5,7 +5,6 @@ import copy
from bx.intervals.io import GenomicInterval, GenomicIntervalReader, MissingFieldError, NiceReaderWrapper, ParseError
from bx.tabular.io import Comment, Header
from six import Iterator
from galaxy.util.odict import odict
@@ -3,8 +3,8 @@
# is built properly (see #4982).
numpy==1.9.2
bx-python==0.7.3
MarkupSafe==0.23
PyYAML==3.11
MarkupSafe==1.0
PyYAML==3.12
SQLAlchemy==1.0.15
sqlalchemy-utils==0.32.19
mercurial==3.7.3
@@ -19,23 +19,24 @@ pysam>=0.13
# pure Python packages
bz2file==0.98; python_version < '3.3'
ipaddress==1.0.18; python_version < '3.3'
boltons==17.1.0
Paste==2.0.2
PasteDeploy==1.5.2
docutils==0.12
docutils==0.14
wchartype==0.1
repoze.lru==0.6
Routes==2.4.1
WebOb==1.4.1
WebHelpers==1.3
Mako==1.0.2
pytz==2015.4
pytz==2017.3
Babel==2.5.1
Beaker==1.7.0
dictobj==0.3.1
nose==1.3.7
Parsley==1.3
six==1.10.0
six==1.11.0
Whoosh==2.7.4
galaxy_sequence_utils==1.0.2
h5py==2.7.1
@@ -76,7 +77,7 @@ sqlalchemy-migrate==0.10.0
decorator==4.0.2
Tempita==0.5.3dev
sqlparse==0.1.16
pbr==1.8.0
pbr==3.1.1
# svgwrite and dependencies
svgwrite==1.1.6
@@ -11,4 +11,5 @@ name = "pypi"
[packages]
"flake8" = "*"
"flake8" = "*"
"flake8-import-order" = "==0.14.3"
+27 -6
View File
@@ -1,7 +1,7 @@
{
"_meta": {
"hash": {
"sha256": "23a9dc7e33425cf99801df781bf42cfb2ee9a72cfc8bbf725e1008ae543a821f"
"sha256": "fd536e5360456866463f669e38bd7977303b59f1995671fcc2508dfdc744fd6b"
},
"host-environment-markers": {
"implementation_name": "cpython",
@@ -9,12 +9,12 @@
"os_name": "posix",
"platform_machine": "x86_64",
"platform_python_implementation": "CPython",
"platform_release": "16.7.0",
"platform_system": "Darwin",
"platform_version": "Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64",
"python_full_version": "2.7.12",
"platform_release": "3.13.0-133-generic",
"platform_system": "Linux",
"platform_version": "#182-Ubuntu SMP Tue Sep 19 15:49:21 UTC 2017",
"python_full_version": "2.7.6",
"python_version": "2.7",
"sys_platform": "darwin"
"sys_platform": "linux2"
},
"pipfile-spec": 6,
"requires": {},
@@ -27,6 +27,13 @@
]
},
"default": {
"asttokens": {
"hashes": [
"sha256:af77320626fbe29b8f5c6c43f82d5012a145a1dadbd2de286ea9398c640c072b",
"sha256:3d630eb1532e6877bc01c0a933570693783b7c97ece3260bd3ad964aaf7d566b"
],
"version": "==1.1.7"
},
"configparser": {
"hashes": [
"sha256:5308b47021bc2340965c371f0f058cc6971a04502638d4244225c49d80db273a"
@@ -51,6 +58,13 @@
],
"version": "==3.5.0"
},
"flake8-import-order": {
"hashes": [
"sha256:26c052d93d8b2d17c5e31bdcf0cdcb513c0b039d2671905dc9ddb5bcec8f72e1",
"sha256:a025f6d691e6ca3a749ebcb9dea8ee3aa341407d767dda1c263060f80f6b377e"
],
"version": "==0.14.3"
},
"mccabe": {
"hashes": [
"sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42",
@@ -71,6 +85,13 @@
"sha256:8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805"
],
"version": "==1.6.0"
},
"six": {
"hashes": [
"sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb",
"sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
],
"version": "==1.11.0"
}
},
"develop": {}
@@ -1,6 +1,9 @@
mccabe==0.6.1 --hash=sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42 --hash=sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f
pycodestyle==2.3.1 --hash=sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9 --hash=sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766
asttokens==1.1.7 --hash=sha256:af77320626fbe29b8f5c6c43f82d5012a145a1dadbd2de286ea9398c640c072b --hash=sha256:3d630eb1532e6877bc01c0a933570693783b7c97ece3260bd3ad964aaf7d566b
pyflakes==1.6.0 --hash=sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f --hash=sha256:8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805
enum34==1.1.6; python_version < '3.4' --hash=sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79 --hash=sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a --hash=sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1 --hash=sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850
flake8-import-order==0.14.3 --hash=sha256:26c052d93d8b2d17c5e31bdcf0cdcb513c0b039d2671905dc9ddb5bcec8f72e1 --hash=sha256:a025f6d691e6ca3a749ebcb9dea8ee3aa341407d767dda1c263060f80f6b377e
six==1.11.0 --hash=sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb --hash=sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9
mccabe==0.6.1 --hash=sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42 --hash=sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f
pycodestyle==2.3.1 --hash=sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9 --hash=sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766
flake8==3.5.0 --hash=sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37 --hash=sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0
configparser==3.5.0; python_version < '3.2' --hash=sha256:5308b47021bc2340965c371f0f058cc6971a04502638d4244225c49d80db273a
@@ -1,6 +1,9 @@
mccabe==0.6.1
pycodestyle==2.3.1
asttokens==1.1.7
pyflakes==1.6.0
enum34==1.1.6; python_version < '3.4'
flake8-import-order==0.14.3
six==1.11.0
mccabe==0.6.1
pycodestyle==2.3.1
flake8==3.5.0
configparser==3.5.0; python_version < '3.2'
@@ -1,15 +0,0 @@
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[dev-packages]
[packages]
"flake8" = "*"
"flake8-import-order" = "*"
@@ -1,98 +0,0 @@
{
"_meta": {
"hash": {
"sha256": "68f35c8c353b79ccfd80ad884f83009e2b196c6fe761fa91b01f3d3c6804bb93"
},
"host-environment-markers": {
"implementation_name": "cpython",
"implementation_version": "0",
"os_name": "posix",
"platform_machine": "x86_64",
"platform_python_implementation": "CPython",
"platform_release": "16.7.0",
"platform_system": "Darwin",
"platform_version": "Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64",
"python_full_version": "2.7.12",
"python_version": "2.7",
"sys_platform": "darwin"
},
"pipfile-spec": 6,
"requires": {},
"sources": [
{
"name": "pypi",
"url": "https://pypi.python.org/simple",
"verify_ssl": true
}
]
},
"default": {
"asttokens": {
"hashes": [
"sha256:37d32633cdeaebfd171f548aa0e77cc863b0692a1e96dc93d49c997a8d655a1a",
"sha256:97f568e6eaf9a133850bd5370193ef10a459fc9fff0c8954e986a30b44415a88"
],
"version": "==1.1.6"
},
"configparser": {
"hashes": [
"sha256:5308b47021bc2340965c371f0f058cc6971a04502638d4244225c49d80db273a"
],
"markers": "python_version < '3.2'",
"version": "==3.5.0"
},
"enum34": {
"hashes": [
"sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79",
"sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a",
"sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1",
"sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850"
],
"markers": "python_version < '3.4'",
"version": "==1.1.6"
},
"flake8": {
"hashes": [
"sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37",
"sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0"
],
"version": "==3.5.0"
},
"flake8-import-order": {
"hashes": [
"sha256:26c052d93d8b2d17c5e31bdcf0cdcb513c0b039d2671905dc9ddb5bcec8f72e1",
"sha256:a025f6d691e6ca3a749ebcb9dea8ee3aa341407d767dda1c263060f80f6b377e"
],
"version": "==0.14.3"
},
"mccabe": {
"hashes": [
"sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42",
"sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f"
],
"version": "==0.6.1"
},
"pycodestyle": {
"hashes": [
"sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9",
"sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766"
],
"version": "==2.3.1"
},
"pyflakes": {
"hashes": [
"sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f",
"sha256:8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805"
],
"version": "==1.6.0"
},
"six": {
"hashes": [
"sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb",
"sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9"
],
"version": "==1.11.0"
}
},
"develop": {}
}
@@ -1,9 +0,0 @@
asttokens==1.1.6 --hash=sha256:37d32633cdeaebfd171f548aa0e77cc863b0692a1e96dc93d49c997a8d655a1a --hash=sha256:97f568e6eaf9a133850bd5370193ef10a459fc9fff0c8954e986a30b44415a88
pyflakes==1.6.0 --hash=sha256:08bd6a50edf8cffa9fa09a463063c425ecaaf10d1eb0335a7e8b1401aef89e6f --hash=sha256:8d616a382f243dbf19b54743f280b80198be0bca3a5396f1d2e1fca6223e8805
enum34==1.1.6; python_version < '3.4' --hash=sha256:6bd0f6ad48ec2aa117d3d141940d484deccda84d4fcd884f5c3d93c23ecd8c79 --hash=sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a --hash=sha256:8ad8c4783bf61ded74527bffb48ed9b54166685e4230386a9ed9b1279e2df5b1 --hash=sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850
flake8-import-order==0.14.3 --hash=sha256:26c052d93d8b2d17c5e31bdcf0cdcb513c0b039d2671905dc9ddb5bcec8f72e1 --hash=sha256:a025f6d691e6ca3a749ebcb9dea8ee3aa341407d767dda1c263060f80f6b377e
six==1.11.0 --hash=sha256:832dc0e10feb1aa2c68dcc57dbb658f1c7e65b9b61af69048abc87a2db00a0eb --hash=sha256:70e8a77beed4562e7f14fe23a786b54f6296e34344c23bc42f07b15018ff98e9
mccabe==0.6.1 --hash=sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42 --hash=sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f
pycodestyle==2.3.1 --hash=sha256:6c4245ade1edfad79c3446fadfc96b0de2759662dc29d07d80a6f27ad1ca6ba9 --hash=sha256:682256a5b318149ca0d2a9185d365d8864a768a28db66a84a2ea946bcc426766
flake8==3.5.0 --hash=sha256:c7841163e2b576d435799169b78703ad6ac1bbb0f199994fc05f700b2a90ea37 --hash=sha256:7253265f7abd8b313e3892944044a365e3f4ac3fcdcfb4298f55ee9ddf188ba0
configparser==3.5.0; python_version < '3.2' --hash=sha256:5308b47021bc2340965c371f0f058cc6971a04502638d4244225c49d80db273a
@@ -1,9 +0,0 @@
asttokens==1.1.6
pyflakes==1.6.0
enum34==1.1.6; python_version < '3.4'
flake8-import-order==0.14.3
six==1.11.0
mccabe==0.6.1
pycodestyle==2.3.1
flake8==3.5.0
configparser==3.5.0; python_version < '3.2'
+1 -2
View File
@@ -31,8 +31,7 @@ done
THIS_DIRECTORY="$(cd "$(dirname "$0")" > /dev/null && pwd)"
ENVS="develop
flake8
flake8_imports"
flake8"
for env in $ENVS
do
+1
View File
@@ -16,6 +16,7 @@ pysam>=0.13
# pure Python packages
bz2file; python_version < '3.3'
ipaddress; python_version < '3.3'
boltons
Paste
PasteDeploy
+4 -2
View File
@@ -1,9 +1,11 @@
# Contains actions that are used in External Services
import logging
import requests
from galaxy.web import url_for
from galaxy.util.template import fill_template
from result_handlers.basic import ExternalServiceActionResultHandler
from galaxy.web import url_for
from .result_handlers.basic import ExternalServiceActionResultHandler
log = logging.getLogger(__name__)
+3 -2
View File
@@ -1,8 +1,9 @@
# Contains objects for accessing external services applications
import logging
from parameters import ExternalServiceParameter
from actions import ExternalServiceAction
from galaxy.util.bunch import Bunch
from .actions import ExternalServiceAction
from .parameters import ExternalServiceParameter
log = logging.getLogger(__name__)
+4 -1
View File
@@ -3,8 +3,11 @@ FormDefinition and field factories
"""
# TODO: A FormDefinitionField is closely linked to a form_builder result.
# Can this functionality be further abstracted and merged with form_builder?
from galaxy.model import (
FormDefinition,
FormDefinitionCurrent
)
from galaxy.util import string_as_bool
from galaxy.model import FormDefinitionCurrent, FormDefinition
FORM_TYPES = dict([(f_type.lower(), f_descript) for f_type, f_descript in FormDefinition.types.items()])
-1
View File
@@ -32,7 +32,6 @@ from galaxy.util.bunch import Bunch
from galaxy.util.expressions import ExpressionContext
from galaxy.util.handlers import ConfiguresHandlers
from galaxy.util.xml_macros import load
from .datasets import (DatasetPath, NullDatasetPathRewriter,
OutputsToWorkingDirectoryPathRewriter, TaskPathRewriter)
from .output_checker import check_output
+9 -10
View File
@@ -1,18 +1,17 @@
from __future__ import print_function
__version__ = '1.0.0'
import argparse
import collections
import copy
import logging
import os
import re
import sys
from functools import reduce
from yaml import load
import argparse
import logging
import os
import sys
import copy
import collections
import re
from functools import reduce
__version__ = '1.0.0'
# log to galaxy's logger
log = logging.getLogger(__name__)
+1 -1
View File
@@ -1,5 +1,5 @@
import logging
import inspect
import logging
import os
import sys
-1
View File
@@ -16,7 +16,6 @@ import os
from galaxy import util
from galaxy.util import plugin_config
from ..metrics import formatting
log = logging.getLogger(__name__)
@@ -8,7 +8,6 @@ import sys
import tempfile
from galaxy import util
from ..collectl import stats
if sys.version_info > (3,):
@@ -4,7 +4,6 @@ import os
import shutil
from galaxy import util
from ..collectl import (
cli,
processes,
@@ -3,7 +3,6 @@ import logging
import re
from galaxy import util
from ..instrumenters import InstrumentPlugin
from ...metrics import formatting
@@ -3,7 +3,6 @@ import re
import sys
from galaxy import util
from ..instrumenters import InstrumentPlugin
from ...metrics import formatting
+6 -4
View File
@@ -1,13 +1,15 @@
from datetime import datetime
import hashlib
import logging
import random
from datetime import datetime
from sqlalchemy import func
from galaxy import model
from galaxy import util
from galaxy import (
model,
util
)
import logging
log = logging.getLogger(__name__)
VALID_JOB_HASH_STRATEGIES = ["job", "user", "history", "workflow_invocation"]
-1
View File
@@ -30,7 +30,6 @@ from galaxy.util import (
)
from galaxy.util.bunch import Bunch
from galaxy.util.monitors import Monitors
from .state_handler_factory import build_state_handlers
log = logging.getLogger(__name__)
+2
View File
@@ -1,6 +1,8 @@
from __future__ import absolute_import
import functools
import logging
from galaxy import model
from galaxy.jobs.runners import AsynchronousJobRunner, AsynchronousJobState
-1
View File
@@ -12,7 +12,6 @@ from galaxy.jobs.runners import (
AsynchronousJobState
)
from galaxy.util import asbool
from .util.cli import CliInterface, split_params
log = logging.getLogger(__name__)
-1
View File
@@ -16,7 +16,6 @@ from galaxy.util import (
DATABASE_MAX_STRING_SIZE,
shrink_stream_by_size
)
from ..runners import (
BaseJobRunner,
JobState
@@ -1,17 +1,14 @@
import logging
from datetime import datetime
from galaxy import model
from galaxy.jobs.runners import JobState
from ._safe_eval import safe_eval
__all__ = ('failure', )
log = logging.getLogger(__name__)
from galaxy import model
from galaxy.jobs.runners import JobState
from ._safe_eval import safe_eval
MESSAGES = dict(
walltime_reached='it reached the walltime',
memory_limit_reached='it exceeded the amount of allocated memory',
-1
View File
@@ -4,7 +4,6 @@ processes and interfacing with job managers. This module should contain
functionality shared between Galaxy and the Pulsar.
"""
from galaxy.util.bunch import Bunch
from .kill import kill_pid
__all__ = ('kill_pid', 'Bunch')
+3 -3
View File
@@ -1,7 +1,7 @@
import os
import logging
import shutil
import inspect
import logging
import os
import shutil
from galaxy import model, util
+2 -2
View File
@@ -1,11 +1,11 @@
import functools
import logging
import os
import requests
import requests
from beaker.cache import CacheManager
from beaker.util import parse_cache_config_options
import logging
log = logging.getLogger(__name__)
+4 -4
View File
@@ -7,11 +7,11 @@ Used by both the API and bootstrapped data.
# TODO: this is a bit of an odd duck. It uses the serializer structure from managers
# but doesn't have a model like them. It might be better in config.py or a
# totally new area, but I'm leaving it in managers for now for class consistency.
from galaxy.web.framework.base import server_starttime
from galaxy.managers import base
import logging
from galaxy.managers import base
from galaxy.web.framework.base import server_starttime
log = logging.getLogger(__name__)
+2 -3
View File
@@ -6,14 +6,13 @@ and other (nested) containers.
"""
# Histories should be DatasetCollections.
# Libraries should be DatasetCollections.
import logging
import operator
from galaxy import model
import galaxy.exceptions
import galaxy.util
from galaxy import model
import logging
log = logging.getLogger(__name__)
+14 -10
View File
@@ -2,21 +2,25 @@
Manager and Serializer for Datasets.
"""
import glob
import logging
import os
from six import string_types
from galaxy import model
from galaxy import exceptions
import galaxy.datatypes.metadata
from galaxy import (
exceptions,
model
)
from galaxy.managers import (
base,
deletable,
rbac_secured,
roles,
secured,
users
)
from galaxy.managers import base
from galaxy.managers import secured
from galaxy.managers import deletable
from galaxy.managers import roles
from galaxy.managers import rbac_secured
from galaxy.managers import users
import logging
log = logging.getLogger(__name__)
+16 -10
View File
@@ -1,17 +1,23 @@
"""
Manager and Serializer for Library Folders.
"""
from galaxy.exceptions import ItemAccessibilityException
from galaxy.exceptions import InconsistentDatabase
from galaxy.exceptions import RequestParameterInvalidException
from galaxy.exceptions import InternalServerError
from galaxy.exceptions import AuthenticationRequired
from galaxy.exceptions import InsufficientPermissionsException
from galaxy.exceptions import MalformedId
from sqlalchemy.orm.exc import MultipleResultsFound
from sqlalchemy.orm.exc import NoResultFound
import logging
from sqlalchemy.orm.exc import (
MultipleResultsFound,
NoResultFound
)
from galaxy.exceptions import (
AuthenticationRequired,
InconsistentDatabase,
InsufficientPermissionsException,
InternalServerError,
ItemAccessibilityException,
MalformedId,
RequestParameterInvalidException
)
log = logging.getLogger(__name__)
+15 -12
View File
@@ -4,20 +4,23 @@ Manager and Serializer for HDAs.
HistoryDatasetAssociations (HDAs) are datasets contained or created in a
history.
"""
import os
import gettext
from galaxy import model
from galaxy import exceptions
from galaxy import datatypes
from galaxy.managers import datasets
from galaxy.managers import secured
from galaxy.managers import taggable
from galaxy.managers import annotatable
from galaxy.managers import users
import logging
import os
from galaxy import (
datatypes,
exceptions,
model
)
from galaxy.managers import (
annotatable,
datasets,
secured,
taggable,
users
)
log = logging.getLogger(__name__)
+9 -9
View File
@@ -4,18 +4,18 @@ Manager and Serializer for HDCAs.
HistoryDatasetCollectionAssociations (HDCAs) are datasets contained or created in a
history.
"""
import logging
from galaxy import model
from galaxy.managers import (
annotatable,
base,
deletable,
hdas,
secured,
taggable
)
from galaxy.managers import base
from galaxy.managers import secured
from galaxy.managers import deletable
from galaxy.managers import taggable
from galaxy.managers import annotatable
from galaxy.managers import hdas
import logging
log = logging.getLogger(__name__)
+17 -12
View File
@@ -4,19 +4,24 @@ Manager and Serializer for histories.
Histories are containers for datasets or dataset collections
created (or copied) by users over the course of an analysis.
"""
from sqlalchemy import desc, asc
from galaxy import model
from galaxy import exceptions as glx_exceptions
from galaxy.managers import sharable
from galaxy.managers import deletable
from galaxy.managers import hdas
# from galaxy.managers import hdcas
from galaxy.managers import history_contents
import logging
from sqlalchemy import (
asc,
desc
)
from galaxy import (
exceptions as glx_exceptions,
model
)
from galaxy.managers import (
deletable,
hdas,
history_contents,
sharable
)
log = logging.getLogger(__name__)
+27 -18
View File
@@ -2,25 +2,34 @@
Heterogenous lists/contents are difficult to query properly since unions are
not easily made.
"""
from sqlalchemy import literal
from sqlalchemy import sql
from sqlalchemy import asc, desc
from sqlalchemy import true, false
from sqlalchemy import func
from sqlalchemy.orm import eagerload
from sqlalchemy.orm import undefer
from galaxy import model
from galaxy import exceptions as glx_exceptions
from galaxy.managers import base
from galaxy.managers import deletable
from galaxy.managers import containers
from galaxy.managers import hdas
from galaxy.managers import hdcas
import logging
from sqlalchemy import (
asc,
desc,
false,
func,
literal,
sql,
true
)
from sqlalchemy.orm import (
eagerload,
undefer
)
from galaxy import (
exceptions as glx_exceptions,
model
)
from galaxy.managers import (
base,
containers,
deletable,
hdas,
hdcas
)
log = logging.getLogger(__name__)
+6 -5
View File
@@ -2,11 +2,12 @@
import logging
from galaxy import util
from galaxy.exceptions import InternalServerError
from galaxy.exceptions import InsufficientPermissionsException
from galaxy.exceptions import ObjectNotFound
from galaxy.exceptions import RequestParameterInvalidException
from galaxy.exceptions import (
InsufficientPermissionsException,
InternalServerError,
ObjectNotFound,
RequestParameterInvalidException
)
from galaxy.managers import tags
from galaxy.util import validation
+1 -1
View File
@@ -5,11 +5,11 @@ Pages are markup created and saved by users that can contain Galaxy objects
(such as datasets) and are often used to describe or present an analysis
from within Galaxy.
"""
import logging
from galaxy import model
from galaxy.managers import sharable
import logging
log = logging.getLogger(__name__)
+2 -1
View File
@@ -1,11 +1,12 @@
"""
Mixins for Ratable model managers and serializers.
"""
import logging
from sqlalchemy.sql.expression import func
from . import base
import logging
log = logging.getLogger(__name__)
+6 -3
View File
@@ -1,9 +1,12 @@
from galaxy import security
import logging
import galaxy.exceptions
from galaxy import model
from galaxy import (
model,
security
)
from galaxy.managers import users
import logging
log = logging.getLogger(__name__)
+1 -1
View File
@@ -1,6 +1,7 @@
"""
Manager and Serializer for Roles.
"""
import logging
from sqlalchemy.orm import exc as sqlalchemy_exceptions
@@ -8,7 +9,6 @@ import galaxy.exceptions
from galaxy import model
from galaxy.managers import base
import logging
log = logging.getLogger(__name__)
+11 -9
View File
@@ -9,19 +9,21 @@ A sharable Galaxy object:
can be published effectively making it available to all other Users
can be rated
"""
import logging
import re
from sqlalchemy import true
import re
from galaxy import exceptions
from galaxy.managers import (
annotatable,
base,
ratable,
secured,
taggable,
users
)
from galaxy.managers import base
from galaxy.managers import secured
from galaxy.managers import taggable
from galaxy.managers import annotatable
from galaxy.managers import ratable
from galaxy.managers import users
import logging
log = logging.getLogger(__name__)
+3 -2
View File
@@ -1,12 +1,13 @@
import logging
import re
import galaxy.model
from galaxy.util import unicodify
from six import string_types
from sqlalchemy.sql import select
from sqlalchemy.sql.expression import func
import galaxy.model
from galaxy.util import unicodify
log = logging.getLogger(__name__)
+11 -8
View File
@@ -1,19 +1,22 @@
"""
Manager and Serializer for Users.
"""
import logging
import sqlalchemy
from galaxy import model
from galaxy import exceptions
from galaxy import util
from galaxy.managers import base
from galaxy.managers import deletable
from galaxy.managers import api_keys
from galaxy import (
exceptions,
model,
util
)
from galaxy.managers import (
api_keys,
base,
deletable
)
from galaxy.security import validate_user_input
import logging
log = logging.getLogger(__name__)
+1 -1
View File
@@ -4,11 +4,11 @@ Manager and Serializers for Visualizations.
Visualizations are saved configurations/variables used to
reproduce a specific view in a Galaxy visualization.
"""
import logging
from galaxy import model
from galaxy.managers import sharable
import logging
log = logging.getLogger(__name__)
+30 -18
View File
@@ -1,31 +1,43 @@
from __future__ import absolute_import
from six import string_types
from collections import namedtuple
import logging
import json
import logging
import uuid
from collections import namedtuple
from six import string_types
from sqlalchemy import and_
from sqlalchemy.orm import joinedload, subqueryload
from galaxy import model
from galaxy import util
from galaxy import exceptions
from galaxy.model.item_attrs import UsesAnnotations
from galaxy.util.json import safe_loads
from galaxy.workflow import modules
from .base import decode_id
# For WorkflowContentManager
from galaxy.util.sanitize_html import sanitize_html
from galaxy.workflow.steps import attach_ordered_steps
from galaxy.workflow.modules import module_factory, is_tool_module_type, ToolModule, WorkflowModuleInjector
from galaxy.tools.parameters.basic import DataToolParameter, DataCollectionToolParameter, RuntimeValue, workflow_building_modes
from galaxy.tools.parameters import visit_input_values, params_to_incoming
from galaxy import (
exceptions,
model,
util
)
from galaxy.jobs.actions.post import ActionBox
from galaxy.model.item_attrs import UsesAnnotations
from galaxy.tools.parameters import (
params_to_incoming,
visit_input_values
)
from galaxy.tools.parameters.basic import (
DataCollectionToolParameter,
DataToolParameter,
RuntimeValue,
workflow_building_modes
)
from galaxy.util.json import safe_loads
from galaxy.util.sanitize_html import sanitize_html
from galaxy.web import url_for
from galaxy.workflow import modules
from galaxy.workflow.modules import (
is_tool_module_type,
module_factory,
ToolModule,
WorkflowModuleInjector
)
from galaxy.workflow.steps import attach_ordered_steps
from .base import decode_id
log = logging.getLogger(__name__)
-1
View File
@@ -28,7 +28,6 @@ import galaxy.model.metadata
import galaxy.model.orm.now
import galaxy.security.passwords
import galaxy.util
from galaxy.managers import tags
from galaxy.model.item_attrs import UsesAnnotations
from galaxy.model.util import pgcalc
-1
View File
@@ -3,7 +3,6 @@ import os.path
import sys
from migrate.versioning import repository, schema
from sqlalchemy import (
create_engine,
MetaData,
+4 -3
View File
@@ -10,7 +10,6 @@ import os
import random
import shutil
import threading
from xml.etree import ElementTree
try:
@@ -22,11 +21,13 @@ from galaxy.exceptions import ObjectInvalid, ObjectNotFound
from galaxy.util import (
directory_hash_id,
force_symlink,
safe_makedirs,
safe_relpath,
umask_fix_perms,
)
from galaxy.util.odict import odict
from galaxy.util.path import (
safe_makedirs,
safe_relpath,
)
from galaxy.util.sleeper import Sleeper
NO_SESSION_ERROR_MESSAGE = "Attempted to 'create' object store entity in configuration with no database session present."
+15 -6
View File
@@ -7,14 +7,8 @@ import os
import shutil
import threading
import time
from datetime import datetime
from galaxy.exceptions import ObjectInvalid, ObjectNotFound
from galaxy.util import directory_hash_id, safe_relpath, umask_fix_perms
from galaxy.util.sleeper import Sleeper
from ..objectstore import convert_bytes, ObjectStore
try:
from azure.common import AzureHttpError
from azure.storage import CloudStorageAccount
@@ -23,6 +17,21 @@ try:
except ImportError:
BlockBlobService = None
from galaxy.exceptions import (
ObjectInvalid,
ObjectNotFound
)
from galaxy.util import (
directory_hash_id,
umask_fix_perms
)
from galaxy.util.path import safe_relpath
from galaxy.util.sleeper import Sleeper
from ..objectstore import (
convert_bytes,
ObjectStore
)
NO_BLOBSERVICE_ERROR_MESSAGE = ("ObjectStore configured, but no azure.storage.blob dependency available."
"Please install and properly configure azure.storage.blob or modify Object Store configuration.")
+17 -8
View File
@@ -5,20 +5,29 @@
import logging
import os
import shutil
from galaxy.exceptions import ObjectInvalid, ObjectNotFound
from galaxy.util import (
directory_hash_id,
safe_relpath,
umask_fix_perms,
)
from ..objectstore import ObjectStore
try:
from kamaki.clients import (
astakos, pithos, utils, ClientError, Client as KamakiClient)
astakos,
Client as KamakiClient,
ClientError,
pithos,
utils
)
except ImportError:
KamakiClient = None
from galaxy.exceptions import (
ObjectInvalid,
ObjectNotFound
)
from galaxy.util import (
directory_hash_id,
umask_fix_perms,
)
from galaxy.util.path import safe_relpath
from ..objectstore import ObjectStore
NO_KAMAKI_ERROR_MESSAGE = (
"ObjectStore configured, but no kamaki.clients dependency available."
"Please install and properly configure kamaki.clients or modify Object "
+14 -9
View File
@@ -7,21 +7,26 @@ The module is named rods to avoid conflicting with the PyRods module, irods
import logging
import os
import time
from posixpath import basename as path_basename
from posixpath import dirname as path_dirname
from posixpath import join as path_join
from galaxy.exceptions import ObjectInvalid, ObjectNotFound
from galaxy.util import safe_relpath
from ..objectstore import DiskObjectStore, local_extra_dirs
from posixpath import (
basename as path_basename,
dirname as path_dirname,
join as path_join
)
try:
import irods
except ImportError:
irods = None
from galaxy.exceptions import (
ObjectInvalid,
ObjectNotFound
)
from galaxy.util.path import safe_relpath
from ..objectstore import (
DiskObjectStore,
local_extra_dirs
)
IRODS_IMPORT_MESSAGE = ('The Python irods package is required to use this '
'feature, please install it')
+1 -2
View File
@@ -22,13 +22,12 @@ except ImportError:
from galaxy.exceptions import ObjectInvalid, ObjectNotFound
from galaxy.util import (
directory_hash_id,
safe_relpath,
string_as_bool,
umask_fix_perms,
which,
)
from galaxy.util.path import safe_relpath
from galaxy.util.sleeper import Sleeper
from .s3_multipart_upload import multipart_upload
from ..objectstore import convert_bytes, ObjectStore
@@ -11,7 +11,6 @@ import glob
import multiprocessing
import os
import subprocess
from multiprocessing.pool import IMapIterator
try:
+2 -2
View File
@@ -1,9 +1,9 @@
"""
Contains OpenID provider functionality
"""
import os
import logging
import os
from galaxy.util import parse_xml, string_as_bool
from galaxy.util.odict import odict
+3 -3
View File
@@ -6,13 +6,13 @@ reloading the toolbox, etc., across multiple processes.
import logging
import threading
import galaxy.queues
from galaxy import util
from kombu import Connection
from kombu.mixins import ConsumerMixin
from kombu.pools import producers
import galaxy.queues
from galaxy import util
logging.getLogger('kombu').setLevel(logging.WARNING)
log = logging.getLogger(__name__)
+5 -1
View File
@@ -4,7 +4,11 @@ All message queues used by Galaxy
"""
from kombu import Exchange, Queue, Connection
from kombu import (
Connection,
Exchange,
Queue
)
ALL_CONTROL = "control.*"
galaxy_exchange = Exchange('galaxy_core_exchange', type='topic')
@@ -2,7 +2,6 @@
RequestType
"""
from galaxy.model import RequestType
from .sample import sample_state_factory
RENAME_DATASET_OPTIONS = dict([(f_type.lower(), f_descript) for f_type, f_descript in RequestType.rename_dataset_options.items()])

Some files were not shown because too many files have changed in this diff Show More