Merge remote-tracking branch 'upstream/dev' into dev_update_rst

This commit is contained in:
Sergey Golitsynskiy
2019-07-06 09:46:04 +02:00
78 changed files with 665 additions and 54 deletions
+1
View File
@@ -18,6 +18,7 @@ database/files
database/jobs_directory
database/job_working_directory
database/pbs
database/shed_tools
database/test_errors
database/tmp
database/*.sqlite
+1 -1
View File
@@ -112,5 +112,5 @@ If no existing Galaxy issue seems appropriate, a new issue can be opened using
this repository - please checkout the
[tools-iuc](https://github.com/galaxyproject/tools-iuc) repository on GitHub.
More information about tool development can be found [on the comunity
More information about tool development can be found [on the community
hub](https://galaxyproject.org/develop).
@@ -0,0 +1,53 @@
<template>
<b-card>
<h4 slot="header" class="mb-0">
References
</h4>
<table>
<tr v-for="(xref, index) in xrefs" v-bind:key="index">
<th> - {{xref.reftype}}: </th>
<td>
<template v-if="xref.reftype == 'bio.tools'">
<a :href="`https://bio.tools/${xref.value}`" target="_blank">{{xref.value}}</a>
</template>
<template v-else>
{{ xref.value }}
</template>
</td>
</tr>
</table>
</b-card>
</template>
<script>
import { getAppRoot } from "onload/loadConfig";
import axios from "axios";
export default {
props: {
source: {
type: String,
required: true
},
id: {
type: String,
required: true
}
},
data() {
return {
xrefs: [],
errors: []
};
},
created: function() {
axios
.get(`${getAppRoot()}api/${this.source}/${this.id}/xrefs`)
.then(response => {
this.xrefs = response.data;
})
.catch(e => {
console.error(e);
});
}
};
</script>
@@ -12,6 +12,7 @@ import Ui from "mvc/ui/ui-misc";
import FormBase from "mvc/form/form-view";
import Webhooks from "mvc/webhooks";
import Citations from "components/Citations.vue";
import xrefs from "components/xrefs.vue";
import Vue from "vue";
import axios from "axios";
@@ -279,6 +280,17 @@ export default FormBase.extend({
}
}).$mount(vm);
}
if (options.xrefs) {
var xrefInstance = Vue.extend(xrefs);
vm = document.createElement("div");
$el.append(vm);
new xrefInstance({
propsData: {
id: options.id,
source: "tools"
}
}).$mount(vm);
}
return $el;
},
+2
View File
@@ -18,6 +18,8 @@ $tag:tool|description://element[@name='tool']//element[@name='description']
$tag:tool|macros://complexType[@name='Macros']
$tag:tool|edam_topics://complexType[@name='EdamTopics']
$tag:tool|edam_operations://complexType[@name='EdamOperations']
$tag:tool|xrefs://complexType[@name='xrefs']
$tag:tool|xrefs|xref://complexType[@name='xref']
$tag:tool|requirements://complexType[@name='Requirements']
$tag:tool|requirements|requirement://complexType[@name='Requirement']
$tag:tool|requirements|container://complexType[@name='Container']
-19
View File
@@ -2394,22 +2394,3 @@ class NoopQueue(object):
def shutdown(self):
return
class ParallelismInfo(object):
"""
Stores the information (if any) for running multiple instances of the tool in parallel
on the same set of inputs.
"""
def __init__(self, tag):
self.method = tag.get('method')
if isinstance(tag, dict):
items = tag.items()
else:
items = tag.attrib.items()
self.attributes = dict([item for item in items if item[0] != 'method'])
if len(self.attributes) == 0:
# legacy basic mode - provide compatible defaults
self.attributes['split_size'] = 20
self.attributes['split_mode'] = 'number_of_parts'
+6 -6
View File
@@ -1,11 +1,11 @@
import logging
import os
from ..deps import commands
from ..deps import docker_util
from ..deps.container_classes import docker_cache_path
from ..deps.requirements import parse_requirements_from_xml
from ...tools import loader_directory
from galaxy.tool_util.deps import commands
from galaxy.tool_util.deps import docker_util
from galaxy.tool_util.deps.container_classes import docker_cache_path
from galaxy.tool_util.deps.requirements import parse_requirements_from_xml
from galaxy.tool_util.loader_directory import load_tool_elements_from_path
log = logging.getLogger(__name__)
@@ -22,7 +22,7 @@ def docker_host_args(**kwds):
def dockerfile_build(path, dockerfile=None, error=log.error, **kwds):
expected_container_names = set()
tool_directories = set()
for (tool_path, tool_xml) in loader_directory.load_tool_elements_from_path(path):
for (tool_path, tool_xml) in load_tool_elements_from_path(path):
requirements, containers = parse_requirements_from_xml(tool_xml)
for container in containers:
if container.type == "docker":
+25 -1
View File
@@ -95,6 +95,12 @@ class XmlToolSource(ToolSource):
return []
return [edam_topic.text for edam_topic in edam_topics.findall("edam_topic")]
def parse_xrefs(self):
xrefs = self.root.find("xrefs")
if xrefs is None:
return []
return [dict(value=xref.text.strip(), reftype=xref.attrib['type']) for xref in xrefs.findall("xref") if xref.get("type")]
def parse_description(self):
return xml_text(self.root, "description")
@@ -191,7 +197,6 @@ class XmlToolSource(ToolSource):
parallelism = self.root.find("parallelism")
parallelism_info = None
if parallelism is not None and parallelism.get("method"):
from galaxy.jobs import ParallelismInfo
return ParallelismInfo(parallelism)
return parallelism_info
@@ -1092,3 +1097,22 @@ class XmlInputSource(InputSource):
case_page_source = XmlPageSource(case_elem)
sources.append((value, case_page_source))
return sources
class ParallelismInfo(object):
"""
Stores the information (if any) for running multiple instances of the tool in parallel
on the same set of inputs.
"""
def __init__(self, tag):
self.method = tag.get('method')
if isinstance(tag, dict):
items = tag.items()
else:
items = tag.attrib.items()
self.attributes = dict([item for item in items if item[0] != 'method'])
if len(self.attributes) == 0:
# legacy basic mode - provide compatible defaults
self.attributes['split_size'] = 20
self.attributes['split_mode'] = 'number_of_parts'
+4
View File
@@ -40,6 +40,10 @@ class YamlToolSource(ToolSource):
def parse_edam_topics(self):
return self.root_dict.get("edam_topics", [])
def parse_xrefs(self):
xrefs = self.root_dict.get("xrefs", [])
return [dict(value=xref["value"], reftype=xref["type"]) for xref in xrefs if xref["type"]]
def parse_is_multi_byte(self):
return self.root_dict.get("is_multi_byte", self.default_is_multi_byte)
+56 -9
View File
@@ -47,6 +47,7 @@ A ``data_source`` tool contains a few more relevant attributes.
<xs:element name="macros" type="Macros" minOccurs="0"/>
<xs:element name="edam_topics" type="EdamTopics" minOccurs="0"/>
<xs:element name="edam_operations" type="EdamOperations" minOccurs="0"/>
<xs:element name="xrefs" type="xrefs" minOccurs="0" />
<xs:element name="requirements" type="Requirements" minOccurs="0"/>
<xs:element name="description" type="xs:string" minOccurs="0">
<xs:annotation gxdocs:best_practices="tool-descriptions">
@@ -5581,14 +5582,60 @@ A tool can have any number of EDAM operation references.
]]></xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="edam_operation" minOccurs="0" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="operation_[0-9]{4}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:element name="edam_operation" minOccurs="0" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="operation_[0-9]{4}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="xrefs">
<xs:annotation>
<xs:documentation xml:lang="en"><![CDATA[
Container tag set for the ``<xref>`` tags.
A tool can refer multiple reference IDs.
```xml
<!-- Example: this tool is seqtk -->
<xrefs>
<xref type="bio.tools">seqtk</xref>
</xrefs>
<!-- https://bio.tools/seqtk -->
```
]]></xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="xref" type="xref" minOccurs="0" maxOccurs="unbounded">
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="xref">
<xs:annotation>
<xs:documentation xml:lang="en">The ``xref`` element specifies reference
information according to a catalog.</xs:documentation>
</xs:annotation>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type" type="xrefType" use="required">
<xs:annotation>
<xs:documentation xml:lang="en">Type of reference - currently ``bio.tools``
is the only supported options.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="xrefType">
<xs:annotation>
<xs:documentation xml:lang="en">Type of Reference.</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:enumeration value="bio.tools"/>
<!--xs:enumeration value="whatelse"/-->
</xs:restriction>
</xs:simpleType>
</xs:schema>
+2
View File
@@ -797,6 +797,7 @@ class Tool(Dictifiable):
self.containers = containers
self.citations = self._parse_citations(tool_source)
self.xrefs = tool_source.parse_xrefs()
# Determine if this tool can be used in workflows
self.is_workflow_compatible = self.check_workflow_compatible(tool_source)
@@ -1865,6 +1866,7 @@ class Tool(Dictifiable):
tool_dict["edam_operations"] = self.edam_operations
tool_dict["edam_topics"] = self.edam_topics
tool_dict["xrefs"] = self.xrefs
# Fill in ToolShedRepository info
if hasattr(self, 'tool_shed') and self.tool_shed:
+1 -1
View File
@@ -12,7 +12,7 @@ from six.moves.urllib.parse import urlparse
from galaxy.exceptions import MessageException, ObjectNotFound
from galaxy.tool_util.deps import build_dependency_manager
from galaxy.tools.loader_directory import looks_like_a_tool
from galaxy.tool_util.loader_directory import looks_like_a_tool
from galaxy.util import (
ExecutionTimer,
listify,
+5
View File
@@ -403,6 +403,11 @@ class ToolsController(BaseAPIController, UsesVisualizationMixin):
rval.append(citation.to_dict('bibtex'))
return rval
@expose_api_anonymous_and_sessionless
def xrefs(self, trans, id, **kwds):
tool = self._get_tool(id, user=trans.user)
return tool.xrefs
@web.legacy_expose_api_raw
@web.require_admin
def download(self, trans, id, **kwds):
+1
View File
@@ -349,6 +349,7 @@ def populate_api_routes(webapp, app):
webapp.mapper.connect('/api/tools/{id:.+?}/test_data', action='test_data', controller="tools")
webapp.mapper.connect('/api/tools/{id:.+?}/diagnostics', action='diagnostics', controller="tools")
webapp.mapper.connect('/api/tools/{id:.+?}/citations', action='citations', controller="tools")
webapp.mapper.connect('/api/tools/{id:.+?}/xrefs', action='xrefs', controller="tools")
webapp.mapper.connect('/api/tools/{id:.+?}/download', action='download', controller="tools")
webapp.mapper.connect('/api/tools/{id:.+?}/requirements', action='requirements', controller="tools")
webapp.mapper.connect('/api/tools/{id:.+?}/install_dependencies', action='install_dependencies', controller="tools", conditions=dict(method=["POST"]))
+1 -1
View File
@@ -6,9 +6,9 @@ import tempfile
from sqlalchemy import and_
from galaxy import util
from galaxy.tool_util.loader_directory import looks_like_a_tool
from galaxy.tool_util.parser.interface import TestCollectionDef
from galaxy.tools.data_manager.manager import DataManager
from galaxy.tools.loader_directory import looks_like_a_tool
from galaxy.tools.repositories import ValidationContext
from galaxy.web import url_for
from tool_shed.repository_types import util as rt_util
+12
View File
@@ -0,0 +1,12 @@
.. :changelog:
History
-------
.. to_doc
---------------------
19.9.0.dev0
---------------------
* Initial import from dev branch of Galaxy during 19.09 development cycle.
+1
View File
@@ -0,0 +1 @@
../../LICENSE.txt
+1
View File
@@ -0,0 +1 @@
include *.rst LICENSE
+1
View File
@@ -0,0 +1 @@
../package.Makefile
+14
View File
@@ -0,0 +1,14 @@
.. image:: https://badge.fury.io/py/galaxy-app.svg
:target: https://pypi.org/project/galaxy-app/
Overview
--------
The Galaxy_ application logic (backend).
* Free software: Academic Free License version 3.0
* Code: https://github.com/galaxyproject/galaxy
.. _Galaxy: http://galaxyproject.org/
+1
View File
@@ -0,0 +1 @@
../package-dev-requirements.txt
+1
View File
@@ -0,0 +1 @@
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
+1
View File
@@ -0,0 +1 @@
../../../lib/galaxy/actions
+1
View File
@@ -0,0 +1 @@
../../../lib/galaxy/forms
+13
View File
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
__version__ = '19.9.0.dev0'
PROJECT_NAME = "galaxy-app"
PROJECT_OWNER = PROJECT_USERAME = "galaxyproject"
PROJECT_URL = "https://github.com/galaxyproject/galaxy"
PROJECT_AUTHOR = 'Galaxy Project and Community'
PROJECT_DESCRIPTION = 'Galaxy Application (backend)'
PROJECT_EMAIL = 'galaxy-committers@lists.galaxyproject.org'
RAW_CONTENT_URL = "https://raw.github.com/%s/%s/master/" % (
PROJECT_USERAME, PROJECT_NAME
)
+1
View File
@@ -0,0 +1 @@
../../../lib/galaxy/tours
+1
View File
@@ -0,0 +1 @@
../../../lib/galaxy/webhooks
+3
View File
@@ -0,0 +1,3 @@
galaxy-auth
galaxy-job-execution
+1
View File
@@ -0,0 +1 @@
../build_scripts
+1
View File
@@ -0,0 +1 @@
../../setup.cfg
+103
View File
@@ -0,0 +1,103 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ast
import os
import re
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
SOURCE_DIR = "galaxy"
_version_re = re.compile(r'__version__\s+=\s+(.*)')
project_short_name = os.path.basename(os.path.dirname(os.path.realpath(__file__)))
with open('%s/project_galaxy_%s.py' % (SOURCE_DIR, project_short_name), 'rb') as f:
init_contents = f.read().decode('utf-8')
def get_var(var_name):
pattern = re.compile(r'%s\s+=\s+(.*)' % var_name)
match = pattern.search(init_contents).group(1)
return str(ast.literal_eval(match))
version = get_var("__version__")
PROJECT_NAME = get_var("PROJECT_NAME")
PROJECT_URL = get_var("PROJECT_URL")
PROJECT_AUTHOR = get_var("PROJECT_AUTHOR")
PROJECT_EMAIL = get_var("PROJECT_EMAIL")
PROJECT_DESCRIPTION = get_var("PROJECT_DESCRIPTION")
TEST_DIR = 'tests'
PACKAGES = [
'galaxy',
'galaxy.actions',
'galaxy.forms',
'galaxy.tours',
'galaxy.webhooks',
]
ENTRY_POINTS = '''
[console_scripts]
'''
PACKAGE_DATA = {
# Be sure to update MANIFEST.in for source dist.
'galaxy': [
],
}
PACKAGE_DIR = {
SOURCE_DIR: SOURCE_DIR,
}
readme = open('README.rst').read()
history = open('HISTORY.rst').read().replace('.. :changelog:', '')
if os.path.exists("requirements.txt"):
requirements = open("requirements.txt").read().split("\n")
else:
# In tox, it will cover them anyway.
requirements = []
test_requirements = [
# TODO: put package test requirements here
]
setup(
name=PROJECT_NAME,
version=version,
description=PROJECT_DESCRIPTION,
long_description=readme + '\n\n' + history,
long_description_content_type='text/x-rst',
author=PROJECT_AUTHOR,
author_email=PROJECT_EMAIL,
url=PROJECT_URL,
packages=PACKAGES,
entry_points=ENTRY_POINTS,
package_data=PACKAGE_DATA,
package_dir=PACKAGE_DIR,
include_package_data=True,
install_requires=requirements,
license="AFL",
zip_safe=False,
keywords='galaxy',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Environment :: Console',
'License :: OSI Approved :: Academic Free License (AFL)',
'Operating System :: POSIX',
'Topic :: Software Development',
'Topic :: Software Development :: Code Generators',
'Topic :: Software Development :: Testing',
'Natural Language :: English',
"Programming Language :: Python :: 2",
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
],
test_suite=TEST_DIR,
tests_require=test_requirements
)
+12
View File
@@ -0,0 +1,12 @@
.. :changelog:
History
-------
.. to_doc
---------------------
19.9.0.dev0
---------------------
* Initial import from dev branch of Galaxy during 19.09 development cycle.
+1
View File
@@ -0,0 +1 @@
../../LICENSE.txt
+1
View File
@@ -0,0 +1 @@
include *.rst LICENSE
+1
View File
@@ -0,0 +1 @@
../package.Makefile
+14
View File
@@ -0,0 +1,14 @@
.. image:: https://badge.fury.io/py/galaxy-auth.svg
:target: https://pypi.org/project/galaxy-auth/
Overview
--------
The Galaxy_ auth framework and default plugins.
* Free software: Academic Free License version 3.0
* Code: https://github.com/galaxyproject/galaxy
.. _Galaxy: http://galaxyproject.org/
+1
View File
@@ -0,0 +1 @@
../package-dev-requirements.txt
+1
View File
@@ -0,0 +1 @@
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
+1
View File
@@ -0,0 +1 @@
../../../lib/galaxy/auth
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
__version__ = '19.9.0.dev0'
PROJECT_NAME = "galaxy-auth"
PROJECT_OWNER = PROJECT_USERAME = "galaxyproject"
PROJECT_URL = "https://github.com/galaxyproject/galaxy"
PROJECT_AUTHOR = 'Galaxy Project and Community'
PROJECT_DESCRIPTION = 'Galaxy Auth Framework and Implementations'
PROJECT_EMAIL = 'galaxy-committers@lists.galaxyproject.org'
RAW_CONTENT_URL = "https://raw.github.com/%s/%s/master/" % (
PROJECT_USERAME, PROJECT_NAME
)
+1
View File
@@ -0,0 +1 @@
galaxy-data
+1
View File
@@ -0,0 +1 @@
../build_scripts
+1
View File
@@ -0,0 +1 @@
../../setup.cfg
+101
View File
@@ -0,0 +1,101 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ast
import os
import re
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
SOURCE_DIR = "galaxy"
_version_re = re.compile(r'__version__\s+=\s+(.*)')
project_short_name = os.path.basename(os.path.dirname(os.path.realpath(__file__)))
with open('%s/project_galaxy_%s.py' % (SOURCE_DIR, project_short_name), 'rb') as f:
init_contents = f.read().decode('utf-8')
def get_var(var_name):
pattern = re.compile(r'%s\s+=\s+(.*)' % var_name)
match = pattern.search(init_contents).group(1)
return str(ast.literal_eval(match))
version = get_var("__version__")
PROJECT_NAME = get_var("PROJECT_NAME")
PROJECT_URL = get_var("PROJECT_URL")
PROJECT_AUTHOR = get_var("PROJECT_AUTHOR")
PROJECT_EMAIL = get_var("PROJECT_EMAIL")
PROJECT_DESCRIPTION = get_var("PROJECT_DESCRIPTION")
TEST_DIR = 'tests'
PACKAGES = [
'galaxy',
'galaxy.auth',
'galaxy.auth.providers',
]
ENTRY_POINTS = '''
[console_scripts]
'''
PACKAGE_DATA = {
# Be sure to update MANIFEST.in for source dist.
'galaxy': [
],
}
PACKAGE_DIR = {
SOURCE_DIR: SOURCE_DIR,
}
readme = open('README.rst').read()
history = open('HISTORY.rst').read().replace('.. :changelog:', '')
if os.path.exists("requirements.txt"):
requirements = open("requirements.txt").read().split("\n")
else:
# In tox, it will cover them anyway.
requirements = []
test_requirements = [
# TODO: put package test requirements here
]
setup(
name=PROJECT_NAME,
version=version,
description=PROJECT_DESCRIPTION,
long_description=readme + '\n\n' + history,
long_description_content_type='text/x-rst',
author=PROJECT_AUTHOR,
author_email=PROJECT_EMAIL,
url=PROJECT_URL,
packages=PACKAGES,
entry_points=ENTRY_POINTS,
package_data=PACKAGE_DATA,
package_dir=PACKAGE_DIR,
include_package_data=True,
install_requires=requirements,
license="AFL",
zip_safe=False,
keywords='galaxy',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Environment :: Console',
'License :: OSI Approved :: Academic Free License (AFL)',
'Operating System :: POSIX',
'Topic :: Software Development',
'Topic :: Software Development :: Code Generators',
'Topic :: Software Development :: Testing',
'Natural Language :: English',
"Programming Language :: Python :: 2",
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
],
test_suite=TEST_DIR,
tests_require=test_requirements
)
+12
View File
@@ -0,0 +1,12 @@
.. :changelog:
History
-------
.. to_doc
---------------------
19.9.0.dev0
---------------------
* Initial import from dev branch of Galaxy during 19.09 development cycle.
+1
View File
@@ -0,0 +1 @@
../../LICENSE.txt
+1
View File
@@ -0,0 +1 @@
include *.rst LICENSE
+1
View File
@@ -0,0 +1 @@
../package.Makefile
+14
View File
@@ -0,0 +1,14 @@
.. image:: https://badge.fury.io/py/galaxy-authnz.svg
:target: https://pypi.org/project/galaxy-authnz/
Overview
--------
The Galaxy_ authnz module.
* Free software: Academic Free License version 3.0
* Code: https://github.com/galaxyproject/galaxy
.. _Galaxy: http://galaxyproject.org/
+1
View File
@@ -0,0 +1 @@
../package-dev-requirements.txt
+1
View File
@@ -0,0 +1 @@
__path__ = __import__('pkgutil').extend_path(__path__, __name__)
+1
View File
@@ -0,0 +1 @@
../../../lib/galaxy/authnz
@@ -0,0 +1,13 @@
# -*- coding: utf-8 -*-
__version__ = '19.9.0.dev0'
PROJECT_NAME = "galaxy-authnz"
PROJECT_OWNER = PROJECT_USERAME = "galaxyproject"
PROJECT_URL = "https://github.com/galaxyproject/galaxy"
PROJECT_AUTHOR = 'Galaxy Project and Community'
PROJECT_DESCRIPTION = 'Galaxy AuthNZ'
PROJECT_EMAIL = 'galaxy-committers@lists.galaxyproject.org'
RAW_CONTENT_URL = "https://raw.github.com/%s/%s/master/" % (
PROJECT_USERAME, PROJECT_NAME
)
+7
View File
@@ -0,0 +1,7 @@
galaxy-data
pyjwt
cloudauthz
# Following three shouldn't be needed, cloudauthz should be updated to require them
google-api-python-client
httplib2
oauth2client
+1
View File
@@ -0,0 +1 @@
../build_scripts
+1
View File
@@ -0,0 +1 @@
../../setup.cfg
+100
View File
@@ -0,0 +1,100 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import ast
import os
import re
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
SOURCE_DIR = "galaxy"
_version_re = re.compile(r'__version__\s+=\s+(.*)')
project_short_name = os.path.basename(os.path.dirname(os.path.realpath(__file__)))
with open('%s/project_galaxy_%s.py' % (SOURCE_DIR, project_short_name), 'rb') as f:
init_contents = f.read().decode('utf-8')
def get_var(var_name):
pattern = re.compile(r'%s\s+=\s+(.*)' % var_name)
match = pattern.search(init_contents).group(1)
return str(ast.literal_eval(match))
version = get_var("__version__")
PROJECT_NAME = get_var("PROJECT_NAME")
PROJECT_URL = get_var("PROJECT_URL")
PROJECT_AUTHOR = get_var("PROJECT_AUTHOR")
PROJECT_EMAIL = get_var("PROJECT_EMAIL")
PROJECT_DESCRIPTION = get_var("PROJECT_DESCRIPTION")
TEST_DIR = 'tests'
PACKAGES = [
'galaxy',
'galaxy.authnz',
]
ENTRY_POINTS = '''
[console_scripts]
'''
PACKAGE_DATA = {
# Be sure to update MANIFEST.in for source dist.
'galaxy': [
],
}
PACKAGE_DIR = {
SOURCE_DIR: SOURCE_DIR,
}
readme = open('README.rst').read()
history = open('HISTORY.rst').read().replace('.. :changelog:', '')
if os.path.exists("requirements.txt"):
requirements = open("requirements.txt").read().split("\n")
else:
# In tox, it will cover them anyway.
requirements = []
test_requirements = [
# TODO: put package test requirements here
]
setup(
name=PROJECT_NAME,
version=version,
description=PROJECT_DESCRIPTION,
long_description=readme + '\n\n' + history,
long_description_content_type='text/x-rst',
author=PROJECT_AUTHOR,
author_email=PROJECT_EMAIL,
url=PROJECT_URL,
packages=PACKAGES,
entry_points=ENTRY_POINTS,
package_data=PACKAGE_DATA,
package_dir=PACKAGE_DIR,
include_package_data=True,
install_requires=requirements,
license="AFL",
zip_safe=False,
keywords='galaxy',
classifiers=[
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Environment :: Console',
'License :: OSI Approved :: Academic Free License (AFL)',
'Operating System :: POSIX',
'Topic :: Software Development',
'Topic :: Software Development :: Code Generators',
'Topic :: Software Development :: Testing',
'Natural Language :: English',
"Programming Language :: Python :: 2",
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7',
],
test_suite=TEST_DIR,
tests_require=test_requirements
)
+1
View File
@@ -0,0 +1 @@
../../../test/unit/authnz/test_custos_authnz.py
+1 -1
View File
@@ -1,6 +1,6 @@
.. image:: https://badge.fury.io/py/galaxy-containers.svg
:target: https://pypi.python.org/pypi/galaxy-containers/
:target: https://pypi.org/project/galaxy-containers/
Overview
@@ -7,7 +7,7 @@ PROJECT_OWNER = PROJECT_USERAME = "galaxyproject"
PROJECT_URL = "https://github.com/galaxyproject/galaxy"
PROJECT_AUTHOR = 'Galaxy Project and Community'
PROJECT_DESCRIPTION = 'Galaxy Container Modeling and Interaction Abstractions'
PROJECT_EMAIL = 'jmchilton@gmail.com'
PROJECT_EMAIL = 'galaxy-committers@lists.galaxyproject.org'
RAW_CONTENT_URL = "https://raw.github.com/%s/%s/master/" % (
PROJECT_USERAME, PROJECT_NAME
)
+1 -1
View File
@@ -1,6 +1,6 @@
.. image:: https://badge.fury.io/py/galaxy-data.svg
:target: https://pypi.python.org/pypi/galaxy-data/
:target: https://pypi.org/project/galaxy-data/
Overview
+1 -1
View File
@@ -7,7 +7,7 @@ PROJECT_OWNER = PROJECT_USERAME = "galaxyproject"
PROJECT_URL = "https://github.com/galaxyproject/galaxy"
PROJECT_AUTHOR = 'Galaxy Project and Community'
PROJECT_DESCRIPTION = 'Galaxy Datatype Framework and Datatypes'
PROJECT_EMAIL = 'jmchilton@gmail.com'
PROJECT_EMAIL = 'galaxy-committers@lists.galaxyproject.org'
RAW_CONTENT_URL = "https://raw.github.com/%s/%s/master/" % (
PROJECT_USERAME, PROJECT_NAME
)
+1
View File
@@ -0,0 +1 @@
../../../lib/galaxy/quota
+1
View File
@@ -42,6 +42,7 @@ PACKAGES = [
'galaxy.model.orm',
'galaxy.model.store',
'galaxy.model.tool_shed_install',
'galaxy.quota',
'galaxy.security',
]
ENTRY_POINTS = '''
+1 -1
View File
@@ -1,6 +1,6 @@
.. image:: https://badge.fury.io/py/galaxy-job-execution.svg
:target: https://pypi.python.org/pypi/galaxy-job-execution/
:target: https://pypi.org/project/galaxy-job-execution/
Overview
@@ -7,7 +7,7 @@ PROJECT_OWNER = PROJECT_USERAME = "galaxyproject"
PROJECT_URL = "https://github.com/galaxyproject/galaxy"
PROJECT_AUTHOR = 'Galaxy Project and Community'
PROJECT_DESCRIPTION = 'Galaxy Job Execution Runtime Utilities'
PROJECT_EMAIL = 'jmchilton@gmail.com'
PROJECT_EMAIL = 'galaxy-committers@lists.galaxyproject.org'
RAW_CONTENT_URL = "https://raw.github.com/%s/%s/master/" % (
PROJECT_USERAME, PROJECT_NAME
)
+1 -1
View File
@@ -1,6 +1,6 @@
.. image:: https://badge.fury.io/py/galaxy-job-metrics.svg
:target: https://pypi.python.org/pypi/galaxy-job-metrics/
:target: https://pypi.org/project/galaxy-job-metrics/
Overview
@@ -7,7 +7,7 @@ PROJECT_OWNER = PROJECT_USERAME = "galaxyproject"
PROJECT_URL = "https://github.com/galaxyproject/galaxy"
PROJECT_AUTHOR = 'Galaxy Project and Community'
PROJECT_DESCRIPTION = 'Galaxy Job Metrics'
PROJECT_EMAIL = 'jmchilton@gmail.com'
PROJECT_EMAIL = 'galaxy-committers@lists.galaxyproject.org'
RAW_CONTENT_URL = "https://raw.github.com/%s/%s/master/" % (
PROJECT_USERAME, PROJECT_NAME
)
+1 -1
View File
@@ -1,6 +1,6 @@
.. image:: https://badge.fury.io/py/galaxy-objectstore.svg
:target: https://pypi.python.org/pypi/galaxy-objectstore/
:target: https://pypi.org/project/galaxy-objectstore/
Overview
@@ -7,7 +7,7 @@ PROJECT_OWNER = PROJECT_USERAME = "galaxyproject"
PROJECT_URL = "https://github.com/galaxyproject/galaxy"
PROJECT_AUTHOR = 'Galaxy Project and Community'
PROJECT_DESCRIPTION = 'Galaxy Objectstore Framework and Plugins'
PROJECT_EMAIL = 'jmchilton@gmail.com'
PROJECT_EMAIL = 'galaxy-committers@lists.galaxyproject.org'
RAW_CONTENT_URL = "https://raw.github.com/%s/%s/master/" % (
PROJECT_USERAME, PROJECT_NAME
)
+4 -1
View File
@@ -22,10 +22,13 @@ PACKAGE_DIRS=(
tool_util
data
job_execution
auth
authnz
app
)
# containers has no tests, tool_util not yet working 100%,
# data has many problems quota, tool shed install database, etc..
RUN_TESTS=(1 1 1 0 0 0 0 1)
RUN_TESTS=(1 1 1 0 1 0 0 0 1 0)
for ((i=0; i<${#PACKAGE_DIRS[@]}; i++)); do
package_dir=${PACKAGE_DIRS[$i]}
+1 -1
View File
@@ -1,6 +1,6 @@
.. image:: https://badge.fury.io/py/galaxy-tool-util.svg
:target: https://pypi.python.org/pypi/galaxy-tool-util/
:target: https://pypi.org/project/galaxy-tool-util/
Overview
@@ -7,7 +7,7 @@ PROJECT_OWNER = PROJECT_USERAME = "galaxyproject"
PROJECT_URL = "https://github.com/galaxyproject/galaxy"
PROJECT_AUTHOR = 'Galaxy Project and Community'
PROJECT_DESCRIPTION = 'Galaxy Tool and Tool Dependency Utilities'
PROJECT_EMAIL = 'jmchilton@gmail.com'
PROJECT_EMAIL = 'galaxy-committers@lists.galaxyproject.org'
RAW_CONTENT_URL = "https://raw.github.com/%s/%s/master/" % (
PROJECT_USERAME, PROJECT_NAME
)
+1 -1
View File
@@ -1,6 +1,6 @@
.. image:: https://badge.fury.io/py/galaxy-util.svg
:target: https://pypi.python.org/pypi/galaxy-util/
:target: https://pypi.org/project/galaxy-util/
Overview
+1 -1
View File
@@ -7,7 +7,7 @@ PROJECT_OWNER = PROJECT_USERAME = "galaxyproject"
PROJECT_URL = "https://github.com/galaxyproject/galaxy"
PROJECT_AUTHOR = 'Galaxy Project and Community'
PROJECT_DESCRIPTION = 'Galaxy Generic Utilities'
PROJECT_EMAIL = 'jmchilton@gmail.com'
PROJECT_EMAIL = 'galaxy-committers@lists.galaxyproject.org'
RAW_CONTENT_URL = "https://raw.github.com/%s/%s/master/" % (
PROJECT_USERAME, PROJECT_NAME
)
+1 -1
View File
@@ -24,7 +24,7 @@ from whoosh.filedb.filestore import FileStorage
sys.path.insert(1, os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, 'lib')))
import galaxy.webapps.tool_shed.model.mapping
from galaxy.tools.loader_directory import load_tool_elements_from_path
from galaxy.tool_util.loader_directory import load_tool_elements_from_path
from galaxy.util import (
directory_hash_id,
pretty_print_time_interval,
+14
View File
@@ -12,6 +12,9 @@ from galaxy.util import galaxy_directory
TOOL_XML_1 = """
<tool name="BWA Mapper" id="bwa" version="1.0.1" is_multi_byte="true" display_interface="true" require_login="true" hidden="true">
<description>The BWA Mapper</description>
<xrefs>
<xref type="bio.tools">bwa</xref>
</xrefs>
<version_command interpreter="python">bwa.py --version</version_command>
<parallelism method="multi" split_inputs="input1" split_mode="to_size" split_size="1" merge_outputs="out_file1" />
<command interpreter="python">bwa.py --arg1=42</command>
@@ -84,6 +87,9 @@ class: GalaxyTool
id: bowtie
version: 1.0.2
description: "The Bowtie Mapper"
xrefs:
- type: bio.tools
value: bwa
command: "bowtie_wrapper.pl --map-the-stuff"
interpreter: "perl"
runtime_version:
@@ -311,6 +317,10 @@ class XmlLoaderTestCase(BaseLoaderTestCase):
assert attributes1["compare"] == "sim_size"
assert attributes1["lines_diff"] == 4
def test_xrefs(self):
xrefs = self._tool_source.parse_xrefs()
assert xrefs == [{'value': 'bwa', 'reftype': 'bio.tools'}]
def test_exit_code(self):
tool_source = self._get_tool_source(source_contents="""<tool id="bwa" name="bwa">
<command detect_errors="exit_code">
@@ -468,6 +478,10 @@ class YamlLoaderTestCase(BaseLoaderTestCase):
assert attributes1["compare"] == "sim_size"
assert attributes1["lines_diff"] == 4
def test_xrefs(self):
xrefs = self._tool_source.parse_xrefs()
assert xrefs == [{'value': 'bwa', 'reftype': 'bio.tools'}]
def test_sanitize(self):
assert self._tool_source.parse_sanitize() is True