mirror of
https://github.com/dbcli/pgcli.git
synced 2024-09-11 13:56:36 +03:00
removed py2-related stuff
This commit is contained in:
parent
0f3d4602ef
commit
61c81b05f5
@ -26,12 +26,7 @@ def load_config(usr_cfg, def_cfg=None):
|
|||||||
|
|
||||||
def ensure_dir_exists(path):
|
def ensure_dir_exists(path):
|
||||||
parent_dir = expanduser(dirname(path))
|
parent_dir = expanduser(dirname(path))
|
||||||
try:
|
os.makedirs(parent_dir, exist_ok=True)
|
||||||
os.makedirs(parent_dir)
|
|
||||||
except OSError as exc:
|
|
||||||
# ignore existing destination (py2 has no exist_ok arg to makedirs)
|
|
||||||
if exc.errno != errno.EEXIST:
|
|
||||||
raise
|
|
||||||
|
|
||||||
|
|
||||||
def write_default_config(source, destination, overwrite=False):
|
def write_default_config(source, destination, overwrite=False):
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
import sys
|
|
||||||
|
|
||||||
PY2 = sys.version_info[0] == 2
|
|
||||||
PY3 = sys.version_info[0] == 3
|
|
||||||
|
|
||||||
text_type = unicode if PY2 else str
|
|
||||||
|
|
||||||
|
|
||||||
def unicode2utf8(arg):
|
|
||||||
"""
|
|
||||||
Only in Python 2. Psycopg2 expects the args as bytes not unicode.
|
|
||||||
In Python 3 the args are expected as unicode.
|
|
||||||
"""
|
|
||||||
|
|
||||||
if PY2 and isinstance(arg, unicode):
|
|
||||||
return arg.encode("utf-8")
|
|
||||||
return arg
|
|
||||||
|
|
||||||
|
|
||||||
def utf8tounicode(arg):
|
|
||||||
"""
|
|
||||||
Only in Python 2. Psycopg2 returns the error message as utf-8.
|
|
||||||
In Python 3 the errors are returned as unicode.
|
|
||||||
"""
|
|
||||||
|
|
||||||
if PY2 and isinstance(arg, str):
|
|
||||||
return arg.decode("utf-8")
|
|
||||||
return arg
|
|
@ -1,5 +1,3 @@
|
|||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
from prompt_toolkit.enums import EditingMode
|
from prompt_toolkit.enums import EditingMode
|
||||||
from prompt_toolkit.key_binding import KeyBindings
|
from prompt_toolkit.key_binding import KeyBindings
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
from __future__ import print_function
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import warnings
|
import warnings
|
||||||
|
|
||||||
from pgspecial.namedqueries import NamedQueries
|
from pgspecial.namedqueries import NamedQueries
|
||||||
@ -63,8 +60,6 @@ from .config import (
|
|||||||
get_config,
|
get_config,
|
||||||
)
|
)
|
||||||
from .key_bindings import pgcli_bindings
|
from .key_bindings import pgcli_bindings
|
||||||
from .encodingutils import utf8tounicode
|
|
||||||
from .encodingutils import text_type
|
|
||||||
from .packages.prompt_utils import confirm_destructive_query
|
from .packages.prompt_utils import confirm_destructive_query
|
||||||
from .__init__ import __version__
|
from .__init__ import __version__
|
||||||
|
|
||||||
@ -538,7 +533,7 @@ class PGCli(object):
|
|||||||
# fails. Don't prompt if the -w flag is supplied
|
# fails. Don't prompt if the -w flag is supplied
|
||||||
if self.never_passwd_prompt:
|
if self.never_passwd_prompt:
|
||||||
return False
|
return False
|
||||||
error_msg = utf8tounicode(exc.args[0])
|
error_msg = exc.args[0]
|
||||||
if "no password supplied" in error_msg:
|
if "no password supplied" in error_msg:
|
||||||
return True
|
return True
|
||||||
if "password authentication failed" in error_msg:
|
if "password authentication failed" in error_msg:
|
||||||
@ -1365,7 +1360,7 @@ def is_select(status):
|
|||||||
|
|
||||||
|
|
||||||
def exception_formatter(e):
|
def exception_formatter(e):
|
||||||
return click.style(utf8tounicode(str(e)), fg="red")
|
return click.style(str(e), fg="red")
|
||||||
|
|
||||||
|
|
||||||
def format_output(title, cur, headers, status, settings):
|
def format_output(title, cur, headers, status, settings):
|
||||||
@ -1381,7 +1376,7 @@ def format_output(title, cur, headers, status, settings):
|
|||||||
return settings.missingval
|
return settings.missingval
|
||||||
if not isinstance(val, list):
|
if not isinstance(val, list):
|
||||||
return val
|
return val
|
||||||
return "{" + ",".join(text_type(format_array(e)) for e in val) + "}"
|
return "{" + ",".join(str(format_array(e)) for e in val) + "}"
|
||||||
|
|
||||||
def format_arrays(data, headers, **_):
|
def format_arrays(data, headers, **_):
|
||||||
data = list(data)
|
data = list(data)
|
||||||
@ -1411,7 +1406,7 @@ def format_output(title, cur, headers, status, settings):
|
|||||||
output.append(title)
|
output.append(title)
|
||||||
|
|
||||||
if cur:
|
if cur:
|
||||||
headers = [case_function(utf8tounicode(x)) for x in headers]
|
headers = [case_function(x) for x in headers]
|
||||||
if max_width is not None:
|
if max_width is not None:
|
||||||
cur = list(cur)
|
cur = list(cur)
|
||||||
column_types = None
|
column_types = None
|
||||||
@ -1429,10 +1424,10 @@ def format_output(title, cur, headers, status, settings):
|
|||||||
):
|
):
|
||||||
column_types.append(int)
|
column_types.append(int)
|
||||||
else:
|
else:
|
||||||
column_types.append(text_type)
|
column_types.append(str)
|
||||||
|
|
||||||
formatted = formatter.format_output(cur, headers, **output_kwargs)
|
formatted = formatter.format_output(cur, headers, **output_kwargs)
|
||||||
if isinstance(formatted, (text_type)):
|
if isinstance(formatted, str):
|
||||||
formatted = iter(formatted.splitlines())
|
formatted = iter(formatted.splitlines())
|
||||||
first_line = next(formatted)
|
first_line = next(formatted)
|
||||||
formatted = itertools.chain([first_line], formatted)
|
formatted = itertools.chain([first_line], formatted)
|
||||||
@ -1440,7 +1435,7 @@ def format_output(title, cur, headers, status, settings):
|
|||||||
formatted = formatter.format_output(
|
formatted = formatter.format_output(
|
||||||
cur, headers, format_name="vertical", column_types=None, **output_kwargs
|
cur, headers, format_name="vertical", column_types=None, **output_kwargs
|
||||||
)
|
)
|
||||||
if isinstance(formatted, (text_type)):
|
if isinstance(formatted, str):
|
||||||
formatted = iter(formatted.splitlines())
|
formatted = iter(formatted.splitlines())
|
||||||
|
|
||||||
output = itertools.chain(output, formatted)
|
output = itertools.chain(output, formatted)
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from sqlparse import parse
|
from sqlparse import parse
|
||||||
from sqlparse.tokens import Keyword, CTE, DML
|
from sqlparse.tokens import Keyword, CTE, DML
|
||||||
from sqlparse.sql import Identifier, IdentifierList, Parenthesis
|
from sqlparse.sql import Identifier, IdentifierList, Parenthesis
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from __future__ import unicode_literals
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
|
||||||
_ColumnMetadata = namedtuple(
|
_ColumnMetadata = namedtuple(
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
from __future__ import print_function, unicode_literals
|
|
||||||
|
|
||||||
import sqlparse
|
import sqlparse
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
from sqlparse.sql import IdentifierList, Identifier, Function
|
from sqlparse.sql import IdentifierList, Identifier, Function
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from __future__ import print_function
|
|
||||||
import re
|
import re
|
||||||
import sqlparse
|
import sqlparse
|
||||||
from sqlparse.sql import Identifier
|
from sqlparse.sql import Identifier
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import sqlparse
|
import sqlparse
|
||||||
from sqlparse.tokens import Name
|
from sqlparse.tokens import Name
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import click
|
import click
|
||||||
from .parseutils import is_destructive
|
from .parseutils import is_destructive
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
from __future__ import print_function, unicode_literals
|
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import re
|
import re
|
||||||
import sqlparse
|
import sqlparse
|
||||||
@ -10,14 +8,6 @@ from .parseutils.tables import extract_tables
|
|||||||
from .parseutils.ctes import isolate_query_ctes
|
from .parseutils.ctes import isolate_query_ctes
|
||||||
from pgspecial.main import parse_special_command
|
from pgspecial.main import parse_special_command
|
||||||
|
|
||||||
PY2 = sys.version_info[0] == 2
|
|
||||||
PY3 = sys.version_info[0] == 3
|
|
||||||
|
|
||||||
if PY3:
|
|
||||||
string_types = str
|
|
||||||
else:
|
|
||||||
string_types = basestring
|
|
||||||
|
|
||||||
|
|
||||||
Special = namedtuple("Special", [])
|
Special = namedtuple("Special", [])
|
||||||
Database = namedtuple("Database", [])
|
Database = namedtuple("Database", [])
|
||||||
@ -301,7 +291,7 @@ def suggest_special(text):
|
|||||||
|
|
||||||
def suggest_based_on_last_token(token, stmt):
|
def suggest_based_on_last_token(token, stmt):
|
||||||
|
|
||||||
if isinstance(token, string_types):
|
if isinstance(token, str):
|
||||||
token_v = token.lower()
|
token_v = token.lower()
|
||||||
elif isinstance(token, Comparison):
|
elif isinstance(token, Comparison):
|
||||||
# If 'token' is a Comparison type such as
|
# If 'token' is a Comparison type such as
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from __future__ import unicode_literals
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from prompt_toolkit.enums import DEFAULT_BUFFER
|
from prompt_toolkit.enums import DEFAULT_BUFFER
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from __future__ import print_function, unicode_literals
|
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
from itertools import count, repeat, chain
|
from itertools import count, repeat, chain
|
||||||
|
@ -9,7 +9,6 @@ import pgspecial as special
|
|||||||
import select
|
import select
|
||||||
from psycopg2.extensions import POLL_OK, POLL_READ, POLL_WRITE, make_dsn
|
from psycopg2.extensions import POLL_OK, POLL_READ, POLL_WRITE, make_dsn
|
||||||
from .packages.parseutils.meta import FunctionMetadata, ForeignKey
|
from .packages.parseutils.meta import FunctionMetadata, ForeignKey
|
||||||
from .encodingutils import unicode2utf8, PY2, utf8tounicode
|
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@ -250,7 +249,7 @@ class PGExecute(object):
|
|||||||
new_params["dsn"], password=new_params.pop("password")
|
new_params["dsn"], password=new_params.pop("password")
|
||||||
)
|
)
|
||||||
|
|
||||||
conn_params.update({k: unicode2utf8(v) for k, v in new_params.items() if v})
|
conn_params.update({k: v for k, v in new_params.items() if v})
|
||||||
|
|
||||||
conn = psycopg2.connect(**conn_params)
|
conn = psycopg2.connect(**conn_params)
|
||||||
cursor = conn.cursor()
|
cursor = conn.cursor()
|
||||||
@ -333,10 +332,7 @@ class PGExecute(object):
|
|||||||
See http://initd.org/psycopg/docs/connection.html#connection.encoding
|
See http://initd.org/psycopg/docs/connection.html#connection.encoding
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if PY2:
|
return json_data
|
||||||
return json_data.decode(self.conn.encoding)
|
|
||||||
else:
|
|
||||||
return json_data
|
|
||||||
|
|
||||||
def failed_transaction(self):
|
def failed_transaction(self):
|
||||||
status = self.conn.get_transaction_status()
|
status = self.conn.get_transaction_status()
|
||||||
@ -450,7 +446,7 @@ class PGExecute(object):
|
|||||||
# conn.notices persist between queies, we use pop to clear out the list
|
# conn.notices persist between queies, we use pop to clear out the list
|
||||||
title = ""
|
title = ""
|
||||||
while len(self.conn.notices) > 0:
|
while len(self.conn.notices) > 0:
|
||||||
title = utf8tounicode(self.conn.notices.pop()) + title
|
title = self.conn.notices.pop() + title
|
||||||
|
|
||||||
# cur.description will be None for operations that do not return
|
# cur.description will be None for operations that do not return
|
||||||
# rows.
|
# rows.
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import pygments.styles
|
import pygments.styles
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from prompt_toolkit.key_binding.vi_state import InputMode
|
from prompt_toolkit.key_binding.vi_state import InputMode
|
||||||
from prompt_toolkit.application import get_app
|
from prompt_toolkit.application import get_app
|
||||||
|
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
"""A script to publish a release of pgcli to PyPI."""
|
"""A script to publish a release of pgcli to PyPI."""
|
||||||
|
|
||||||
from __future__ import print_function
|
|
||||||
import io
|
import io
|
||||||
from optparse import OptionParser
|
from optparse import OptionParser
|
||||||
import re
|
import re
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import pytest
|
import pytest
|
||||||
from utils import (
|
from utils import (
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
from psycopg2 import connect
|
from psycopg2 import connect
|
||||||
from psycopg2.extensions import AsIs
|
from psycopg2.extensions import AsIs
|
||||||
|
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
from __future__ import unicode_literals, print_function
|
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import codecs
|
import codecs
|
||||||
|
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
# -*- coding: utf-8
|
|
||||||
from __future__ import unicode_literals, print_function
|
|
||||||
|
|
||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
from behave import then, when
|
from behave import then, when
|
||||||
import wrappers
|
import wrappers
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
# -*- coding: utf-8
|
|
||||||
"""
|
"""
|
||||||
Steps for behavioral style tests are defined in this module.
|
Steps for behavioral style tests are defined in this module.
|
||||||
Each step is defined by the string decorating it.
|
Each step is defined by the string decorating it.
|
||||||
This string is used to call the step in "*.feature" file.
|
This string is used to call the step in "*.feature" file.
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals, print_function
|
|
||||||
|
|
||||||
import pexpect
|
import pexpect
|
||||||
import subprocess
|
import subprocess
|
||||||
|
@ -1,11 +1,8 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
"""
|
"""
|
||||||
Steps for behavioral style tests are defined in this module.
|
Steps for behavioral style tests are defined in this module.
|
||||||
Each step is defined by the string decorating it.
|
Each step is defined by the string decorating it.
|
||||||
This string is used to call the step in "*.feature" file.
|
This string is used to call the step in "*.feature" file.
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals, print_function
|
|
||||||
|
|
||||||
import pexpect
|
import pexpect
|
||||||
|
|
||||||
from behave import when, then
|
from behave import when, then
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
# -*- coding: utf-8
|
|
||||||
"""
|
"""
|
||||||
Steps for behavioral style tests are defined in this module.
|
Steps for behavioral style tests are defined in this module.
|
||||||
Each step is defined by the string decorating it.
|
Each step is defined by the string decorating it.
|
||||||
This string is used to call the step in "*.feature" file.
|
This string is used to call the step in "*.feature" file.
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals, print_function
|
|
||||||
|
|
||||||
from behave import when, then
|
from behave import when, then
|
||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
# -*- coding: utf-8
|
|
||||||
"""Steps for behavioral style tests are defined in this module.
|
"""Steps for behavioral style tests are defined in this module.
|
||||||
|
|
||||||
Each step is defined by the string decorating it. This string is used
|
Each step is defined by the string decorating it. This string is used
|
||||||
to call the step in "*.feature" file.
|
to call the step in "*.feature" file.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals, print_function
|
|
||||||
|
|
||||||
from behave import when, then
|
from behave import when, then
|
||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
# -*- coding: utf-8
|
|
||||||
from __future__ import unicode_literals, print_function
|
|
||||||
import os
|
import os
|
||||||
import os.path
|
import os.path
|
||||||
|
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
# -*- coding: utf-8
|
|
||||||
"""
|
"""
|
||||||
Steps for behavioral style tests are defined in this module.
|
Steps for behavioral style tests are defined in this module.
|
||||||
Each step is defined by the string decorating it.
|
Each step is defined by the string decorating it.
|
||||||
This string is used to call the step in "*.feature" file.
|
This string is used to call the step in "*.feature" file.
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals, print_function
|
|
||||||
|
|
||||||
from behave import when, then
|
from behave import when, then
|
||||||
import wrappers
|
import wrappers
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
# -*- coding: utf-8
|
|
||||||
"""
|
"""
|
||||||
Steps for behavioral style tests are defined in this module.
|
Steps for behavioral style tests are defined in this module.
|
||||||
Each step is defined by the string decorating it.
|
Each step is defined by the string decorating it.
|
||||||
This string is used to call the step in "*.feature" file.
|
This string is used to call the step in "*.feature" file.
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals, print_function
|
|
||||||
|
|
||||||
from behave import when, then
|
from behave import when, then
|
||||||
import wrappers
|
import wrappers
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
# -*- coding: utf-8
|
|
||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
import re
|
import re
|
||||||
import pexpect
|
import pexpect
|
||||||
from pgcli.main import COLOR_CODE_REGEX
|
from pgcli.main import COLOR_CODE_REGEX
|
||||||
|
@ -1,12 +1,9 @@
|
|||||||
from __future__ import unicode_literals
|
|
||||||
|
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from itertools import product
|
from itertools import product
|
||||||
from pgcli.packages.parseutils.meta import FunctionMetadata, ForeignKey
|
from pgcli.packages.parseutils.meta import FunctionMetadata, ForeignKey
|
||||||
from prompt_toolkit.completion import Completion
|
from prompt_toolkit.completion import Completion
|
||||||
from prompt_toolkit.document import Document
|
from prompt_toolkit.document import Document
|
||||||
from mock import Mock
|
from mock import Mock
|
||||||
from six import iteritems
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
parametrize = pytest.mark.parametrize
|
parametrize = pytest.mark.parametrize
|
||||||
@ -78,7 +75,7 @@ class MetaData(object):
|
|||||||
def specials(self, pos=0):
|
def specials(self, pos=0):
|
||||||
return [
|
return [
|
||||||
Completion(text=k, start_position=pos, display_meta=v.description)
|
Completion(text=k, start_position=pos, display_meta=v.description)
|
||||||
for k, v in iteritems(self.completer.pgspecial.commands)
|
for k, v in self.completer.pgspecial.commands.items()
|
||||||
]
|
]
|
||||||
|
|
||||||
def columns(self, tbl, parent="public", typ="tables", pos=0):
|
def columns(self, tbl, parent="public", typ="tables", pos=0):
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from __future__ import unicode_literals
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
# coding=utf-8
|
|
||||||
from __future__ import unicode_literals, print_function
|
|
||||||
import os
|
import os
|
||||||
import platform
|
import platform
|
||||||
import mock
|
import mock
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from __future__ import unicode_literals
|
|
||||||
import pytest
|
import pytest
|
||||||
from prompt_toolkit.completion import Completion
|
from prompt_toolkit.completion import Completion
|
||||||
from prompt_toolkit.document import Document
|
from prompt_toolkit.document import Document
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
# coding=UTF-8
|
|
||||||
from __future__ import print_function
|
|
||||||
|
|
||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
|
|
||||||
import psycopg2
|
import psycopg2
|
||||||
|
@ -1,6 +1,3 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
|
|
||||||
|
|
||||||
import click
|
import click
|
||||||
|
|
||||||
from pgcli.packages.prompt_utils import confirm_destructive_query
|
from pgcli.packages.prompt_utils import confirm_destructive_query
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
from __future__ import unicode_literals, print_function
|
|
||||||
|
|
||||||
import itertools
|
import itertools
|
||||||
from metadata import (
|
from metadata import (
|
||||||
MetaData,
|
MetaData,
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
from __future__ import unicode_literals, print_function
|
|
||||||
|
|
||||||
from metadata import (
|
from metadata import (
|
||||||
MetaData,
|
MetaData,
|
||||||
alias,
|
alias,
|
||||||
|
Loading…
Reference in New Issue
Block a user