Mercurial > repos > shellac > guppy_basecaller
diff env/lib/python3.7/site-packages/planemo/database/postgres.py @ 5:9b1c78e6ba9c draft default tip
"planemo upload commit 6c0a8142489327ece472c84e558c47da711a9142"
| author | shellac |
|---|---|
| date | Mon, 01 Jun 2020 08:59:25 -0400 |
| parents | 79f47841a781 |
| children |
line wrap: on
line diff
--- a/env/lib/python3.7/site-packages/planemo/database/postgres.py Thu May 14 16:47:39 2020 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,106 +0,0 @@ -"""Module describes a :class:`DatabaseSource` for local postgres databases.""" - -import subprocess - -from galaxy.util import unicodify - -from planemo.io import communicate -from .interface import DatabaseSource - - -class ExecutesPostgresSqlMixin: - - def list_databases(self): - """Use `psql --list` to generate a list of identifiers.""" - command_builder = self._psql_command_builder("--list") - stdout = unicodify(self._communicate(command_builder)) - output_lines = stdout.splitlines() - identifiers = [] - for line in output_lines: - identifiers.append(line.split("|")[0].strip()) - return [i for i in identifiers if i] - - def create_database(self, identifier): - """Use `psql -c "create database"` to create a database.""" - sql = "create database %s;" % identifier - self._run_sql_command(sql) - - def delete_database(self, identifier): - """Use `psql -c "drop database"` to delete a database.""" - sql = "drop database %s;" % identifier - self._run_sql_command(sql) - - def _run_sql_command(self, sql): - # communicate is just joining commands so we need to modify the - # sql as an argument - it shouldn't do this. - sql_arg = '%s' % sql - command_builder = self._psql_command_builder("--command", sql_arg) - self._communicate(command_builder) - - def _communicate(self, command_builder): - stdout, _ = communicate( - command_builder.command, - stdout=subprocess.PIPE, - stderr=subprocess.PIPE, - ) - return stdout - - -class LocalPostgresDatabaseSource(ExecutesPostgresSqlMixin, DatabaseSource): - """Local postgres database source managed through psql application.""" - - def __init__(self, **kwds): - """Construct a postgres database source from planemo configuration.""" - self.psql_path = kwds.get("postgres_psql_path", None) or 'psql' - self.database_user = kwds.get("postgres_database_user", None) - self.database_host = kwds.get("postgres_database_host", None) - self.database_port = kwds.get("postgres_database_port", None) - self._kwds = kwds - - def sqlalchemy_url(self, identifier): - """Return URL or form postgresql://username:password@localhost/mydatabase.""" - hostname = self.database_host or "localhost" - if self.database_port: - hostname += ":%s" % self.database_port - return "postgresql://%s@%s/%s" % ( - self.database_user, - hostname, - identifier - ) - - def _psql_command_builder(self, *args): - command_builder = _CommandBuilder(self.psql_path) - # Print only tuples so output is easier to parse - command_builder.append_command("--tuples-only") - - # Specify connection information - if self.database_user: - command_builder.append_command("--username", self.database_user) - if self.database_host: - command_builder.append_command("--host", self.database_host) - if self.database_port: - command_builder.append_command("--port", self.database_port) - command_builder.append_command("-P", "pager=off") - command_builder.extend_command(args) - return command_builder - - -class _CommandBuilder(object): - - def __init__(self, *args): - self.command = list(args) - - def append_command(self, *args_or_none): - args_or_none = args_or_none or [] - for arg_or_none in args_or_none: - if arg_or_none is not None: - self.command.append(arg_or_none) - - def extend_command(self, args): - for arg in (args or []): - self.append_command(arg) - - -__all__ = ( - "LocalPostgresDatabaseSource", -)
