Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-sqlparse for openSUSE:Factory
checked in at 2022-10-04 20:37:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-sqlparse (Old)
and /work/SRC/openSUSE:Factory/.python-sqlparse.new.2275 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-sqlparse"
Tue Oct 4 20:37:14 2022 rev:14 rq:1007717 version:0.4.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-sqlparse/python-sqlparse.changes
2021-10-20 20:23:49.585361117 +0200
+++
/work/SRC/openSUSE:Factory/.python-sqlparse.new.2275/python-sqlparse.changes
2022-10-04 20:37:15.852876933 +0200
@@ -1,0 +2,16 @@
+Mon Oct 3 16:01:20 UTC 2022 - Dirk M??ller <[email protected]>
+
+- update to 0.4.3:
+ * Add support for DIV operator.
+ * Add support for additional SPARK keywords.
+ * Avoid tokens copy.
+ * Add REGEXP as a comparision.
+ * Add DISTINCTROW keyword for MS Access.
+ * Improve parsing of CREATE TABLE AS SELECT.
+ * Fix spelling of INDICATOR keyword.
+ * Fix formatting error in EXTRACT function.
+ * Fix bad parsing of create table statements that use lower case.
+ * Handle backtick as valid quote char.
+ * Allow any unicode character as valid identifier name.
+
+-------------------------------------------------------------------
Old:
----
sqlparse-0.4.2.tar.gz
New:
----
sqlparse-0.4.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-sqlparse.spec ++++++
--- /var/tmp/diff_new_pack.eQsn0X/_old 2022-10-04 20:37:16.432877757 +0200
+++ /var/tmp/diff_new_pack.eQsn0X/_new 2022-10-04 20:37:16.436877763 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-sqlparse
#
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define skip_python2 1
Name: python-sqlparse
-Version: 0.4.2
+Version: 0.4.3
Release: 0
Summary: Non-validating SQL parser
License: BSD-3-Clause
++++++ sqlparse-0.4.2.tar.gz -> sqlparse-0.4.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/AUTHORS new/sqlparse-0.4.3/AUTHORS
--- old/sqlparse-0.4.2/AUTHORS 2020-12-12 09:28:18.000000000 +0100
+++ new/sqlparse-0.4.3/AUTHORS 2022-09-06 21:32:40.000000000 +0200
@@ -8,6 +8,7 @@
Alphabetical list of contributors:
* Adam Greenhall <[email protected]>
+* Aki Ariga <[email protected]>
* Alexander Beedie <[email protected]>
* Alexey Malyshev <[email protected]>
* ali-tny <[email protected]>
@@ -16,20 +17,24 @@
* atronah <[email protected]>
* casey <[email protected]>
* Cau?? Beloni <[email protected]>
+* Christian Clauss <[email protected]>
* circld <[email protected]>
* Corey Zumar <[email protected]>
* Cristian Orellana <[email protected]>
* Dag Wieers <[email protected]>
+* Daniel Harding <[email protected]>
* Darik Gamble <[email protected]>
* Demetrio92 <[email protected]>
* Dennis Taylor <[email protected]>
* Dvo????k V??clav <[email protected]>
+* Erik Cederstrand <[email protected]>
* Florian Bauer <[email protected]>
* Fredy Wijaya <[email protected]>
* Gavin Wahl <[email protected]>
* hurcy <[email protected]>
* Ian Robertson <[email protected]>
* JacekPliszka <[email protected]>
+* JavierPan <[email protected]>
* Jean-Martin Archer <[email protected]>
* Jes??s Legan??s Combarro "Piranna" <[email protected]>
* Johannes Hoff <[email protected]>
@@ -39,11 +44,13 @@
* Kevin Jing Qiu <[email protected]>
* koljonen <[email protected]>
* Likai Liu <[email protected]>
+* Long Le Xich <[email protected]>
* mathilde.oustlant <[email protected]>
* Michael Schuller <[email protected]>
* Mike Amy <[email protected]>
* mulos <[email protected]>
* Oleg Broytman <[email protected]>
+* osmnv <[email protected]>
* Patrick Schemitz <[email protected]>
* Pi Delport <[email protected]>
* Prudhvi Vatala <[email protected]>
@@ -55,6 +62,7 @@
* Ryan Wooden <[email protected]>
* saaj <[email protected]>
* Shen Longxing <[email protected]>
+* Simon Heisterkamp <[email protected]>
* Sjoerd Job Postmus
* Soloman Weng <[email protected]>
* spigwitmer <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/CHANGELOG new/sqlparse-0.4.3/CHANGELOG
--- old/sqlparse-0.4.2/CHANGELOG 2021-09-10 08:50:44.000000000 +0200
+++ new/sqlparse-0.4.3/CHANGELOG 2022-09-23 20:30:49.000000000 +0200
@@ -1,3 +1,28 @@
+Release 0.4.3 (Sep 23, 2022)
+----------------------------
+
+Enhancements
+
+* Add support for DIV operator (pr664, by chezou).
+* Add support for additional SPARK keywords (pr643, by mrmasterplan).
+* Avoid tokens copy (pr622, by living180).
+* Add REGEXP as a comparision (pr647, by PeterSandwich).
+* Add DISTINCTROW keyword for MS Access (issue677).
+* Improve parsing of CREATE TABLE AS SELECT (pr662, by chezou).
+
+Bug Fixes
+
+* Fix spelling of INDICATOR keyword (pr653, by ptld).
+* Fix formatting error in EXTRACT function (issue562, issue670, pr676, by
ecederstrand).
+* Fix bad parsing of create table statements that use lower case (issue217,
pr642, by mrmasterplan).
+* Handle backtick as valid quote char (issue628, pr629, by codenamelxl).
+* Allow any unicode character as valid identifier name (issue641).
+
+Other
+
+* Update github actions to test on Python 3.10 as well (pr661, by cclaus).
+
+
Release 0.4.2 (Sep 10, 2021)
----------------------------
@@ -78,7 +103,7 @@
* Remove support for parsing double slash comments introduced in
0.3.0 (issue456) as it had some side-effects with other dialects and
doesn't seem to be widely used (issue476).
-* Restrict detection of alias names to objects that acutally could
+* Restrict detection of alias names to objects that actually could
have an alias (issue455, adopted some parts of pr509 by john-bodley).
* Fix parsing of date/time literals (issue438, by vashek).
* Fix initialization of TokenList (issue499, pr505 by john-bodley).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/PKG-INFO new/sqlparse-0.4.3/PKG-INFO
--- old/sqlparse-0.4.2/PKG-INFO 2021-09-10 08:51:15.000000000 +0200
+++ new/sqlparse-0.4.3/PKG-INFO 2022-09-23 20:40:44.459821500 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.2
+Metadata-Version: 2.1
Name: sqlparse
-Version: 0.4.2
+Version: 0.4.3
Summary: A non-validating SQL parser.
Home-page: https://github.com/andialbrecht/sqlparse
Author: Andi Albrecht
@@ -10,83 +10,6 @@
Project-URL: Release Notes, https://sqlparse.readthedocs.io/en/latest/changes/
Project-URL: Source, https://github.com/andialbrecht/sqlparse
Project-URL: Tracker, https://github.com/andialbrecht/sqlparse/issues
-Description: python-sqlparse - Parse SQL statements
- ======================================
-
- |buildstatus|_
- |coverage|_
- |docs|_
-
- .. docincludebegin
-
- sqlparse is a non-validating SQL parser for Python.
- It provides support for parsing, splitting and formatting SQL
statements.
-
- The module is compatible with Python 3.5+ and released under the terms
of the
- `New BSD license <https://opensource.org/licenses/BSD-3-Clause>`_.
-
- Visit the project page at https://github.com/andialbrecht/sqlparse for
- further information about this project.
-
-
- Quick Start
- -----------
-
- .. code-block:: sh
-
- $ pip install sqlparse
-
- .. code-block:: python
-
- >>> import sqlparse
-
- >>> # Split a string containing two SQL statements:
- >>> raw = 'select * from foo; select * from bar;'
- >>> statements = sqlparse.split(raw)
- >>> statements
- ['select * from foo;', 'select * from bar;']
-
- >>> # Format the first statement and print it out:
- >>> first = statements[0]
- >>> print(sqlparse.format(first, reindent=True,
keyword_case='upper'))
- SELECT *
- FROM foo;
-
- >>> # Parsing a SQL statement:
- >>> parsed = sqlparse.parse('select * from foo')[0]
- >>> parsed.tokens
- [<DML 'select' at 0x7f22c5e15368>, <Whitespace ' ' at
0x7f22c5e153b0>, <Wildcard '*' ??? ]
- >>>
-
- Links
- -----
-
- Project page
- https://github.com/andialbrecht/sqlparse
-
- Bug tracker
- https://github.com/andialbrecht/sqlparse/issues
-
- Documentation
- https://sqlparse.readthedocs.io/
-
- Online Demo
- https://sqlformat.org/
-
-
- sqlparse is licensed under the BSD license.
-
- Parts of the code are based on pygments written by Georg Brandl and
others.
- pygments-Homepage: http://pygments.org/
-
- .. |buildstatus| image::
https://secure.travis-ci.org/andialbrecht/sqlparse.png?branch=master
- .. _buildstatus: https://travis-ci.org/#!/andialbrecht/sqlparse
- .. |coverage| image::
https://codecov.io/gh/andialbrecht/sqlparse/branch/master/graph/badge.svg
- .. _coverage: https://codecov.io/gh/andialbrecht/sqlparse
- .. |docs| image::
https://readthedocs.org/projects/sqlparse/badge/?version=latest
- .. _docs: https://sqlparse.readthedocs.io/en/latest/?badge=latest
-
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
@@ -99,8 +22,90 @@
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Database
Classifier: Topic :: Software Development
Requires-Python: >=3.5
+License-File: LICENSE
+License-File: AUTHORS
+
+python-sqlparse - Parse SQL statements
+======================================
+
+|buildstatus|_
+|coverage|_
+|docs|_
+|packageversion|_
+
+.. docincludebegin
+
+sqlparse is a non-validating SQL parser for Python.
+It provides support for parsing, splitting and formatting SQL statements.
+
+The module is compatible with Python 3.5+ and released under the terms of the
+`New BSD license <https://opensource.org/licenses/BSD-3-Clause>`_.
+
+Visit the project page at https://github.com/andialbrecht/sqlparse for
+further information about this project.
+
+
+Quick Start
+-----------
+
+.. code-block:: sh
+
+ $ pip install sqlparse
+
+.. code-block:: python
+
+ >>> import sqlparse
+
+ >>> # Split a string containing two SQL statements:
+ >>> raw = 'select * from foo; select * from bar;'
+ >>> statements = sqlparse.split(raw)
+ >>> statements
+ ['select * from foo;', 'select * from bar;']
+
+ >>> # Format the first statement and print it out:
+ >>> first = statements[0]
+ >>> print(sqlparse.format(first, reindent=True, keyword_case='upper'))
+ SELECT *
+ FROM foo;
+
+ >>> # Parsing a SQL statement:
+ >>> parsed = sqlparse.parse('select * from foo')[0]
+ >>> parsed.tokens
+ [<DML 'select' at 0x7f22c5e15368>, <Whitespace ' ' at 0x7f22c5e153b0>,
<Wildcard '*' ??? ]
+ >>>
+
+Links
+-----
+
+Project page
+ https://github.com/andialbrecht/sqlparse
+
+Bug tracker
+ https://github.com/andialbrecht/sqlparse/issues
+
+Documentation
+ https://sqlparse.readthedocs.io/
+
+Online Demo
+ https://sqlformat.org/
+
+
+sqlparse is licensed under the BSD license.
+
+Parts of the code are based on pygments written by Georg Brandl and others.
+pygments-Homepage: http://pygments.org/
+
+.. |buildstatus| image::
https://github.com/andialbrecht/sqlparse/actions/workflows/python-app.yml/badge.svg
+.. _buildstatus:
https://github.com/andialbrecht/sqlparse/actions/workflows/python-app.yml
+.. |coverage| image::
https://codecov.io/gh/andialbrecht/sqlparse/branch/master/graph/badge.svg
+.. _coverage: https://codecov.io/gh/andialbrecht/sqlparse
+.. |docs| image::
https://readthedocs.org/projects/sqlparse/badge/?version=latest
+.. _docs: https://sqlparse.readthedocs.io/en/latest/?badge=latest
+.. |packageversion| image::
https://img.shields.io/pypi/v/sqlparse?color=%2334D058&label=pypi%20package
+.. _packageversion: https://pypi.org/project/sqlparse
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/README.rst
new/sqlparse-0.4.3/README.rst
--- old/sqlparse-0.4.2/README.rst 2020-09-30 15:44:45.000000000 +0200
+++ new/sqlparse-0.4.3/README.rst 2022-09-06 21:32:40.000000000 +0200
@@ -4,6 +4,7 @@
|buildstatus|_
|coverage|_
|docs|_
+|packageversion|_
.. docincludebegin
@@ -59,7 +60,7 @@
https://sqlparse.readthedocs.io/
Online Demo
- https://sqlformat.org/
+ https://sqlformat.org/
sqlparse is licensed under the BSD license.
@@ -67,9 +68,11 @@
Parts of the code are based on pygments written by Georg Brandl and others.
pygments-Homepage: http://pygments.org/
-.. |buildstatus| image::
https://secure.travis-ci.org/andialbrecht/sqlparse.png?branch=master
-.. _buildstatus: https://travis-ci.org/#!/andialbrecht/sqlparse
+.. |buildstatus| image::
https://github.com/andialbrecht/sqlparse/actions/workflows/python-app.yml/badge.svg
+.. _buildstatus:
https://github.com/andialbrecht/sqlparse/actions/workflows/python-app.yml
.. |coverage| image::
https://codecov.io/gh/andialbrecht/sqlparse/branch/master/graph/badge.svg
.. _coverage: https://codecov.io/gh/andialbrecht/sqlparse
.. |docs| image::
https://readthedocs.org/projects/sqlparse/badge/?version=latest
.. _docs: https://sqlparse.readthedocs.io/en/latest/?badge=latest
+.. |packageversion| image::
https://img.shields.io/pypi/v/sqlparse?color=%2334D058&label=pypi%20package
+.. _packageversion: https://pypi.org/project/sqlparse
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/setup.cfg new/sqlparse-0.4.3/setup.cfg
--- old/sqlparse-0.4.2/setup.cfg 2021-09-10 08:51:15.000000000 +0200
+++ new/sqlparse-0.4.3/setup.cfg 2022-09-23 20:40:44.461999000 +0200
@@ -20,6 +20,7 @@
Programming Language :: Python :: 3.7
Programming Language :: Python :: 3.8
Programming Language :: Python :: 3.9
+ Programming Language :: Python :: 3.10
Programming Language :: Python :: Implementation :: CPython
Programming Language :: Python :: Implementation :: PyPy
Topic :: Database
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/sqlparse/__init__.py
new/sqlparse-0.4.3/sqlparse/__init__.py
--- old/sqlparse-0.4.2/sqlparse/__init__.py 2021-09-10 08:50:06.000000000
+0200
+++ new/sqlparse-0.4.3/sqlparse/__init__.py 2022-09-23 20:29:53.000000000
+0200
@@ -16,7 +16,7 @@
from sqlparse import formatter
-__version__ = '0.4.2'
+__version__ = '0.4.3'
__all__ = ['engine', 'filters', 'formatter', 'sql', 'tokens', 'cli']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/sqlparse/engine/grouping.py
new/sqlparse-0.4.3/sqlparse/engine/grouping.py
--- old/sqlparse-0.4.2/sqlparse/engine/grouping.py 2020-10-07
08:52:56.000000000 +0200
+++ new/sqlparse-0.4.3/sqlparse/engine/grouping.py 2022-09-06
21:32:40.000000000 +0200
@@ -91,13 +91,20 @@
def match(token):
return token.ttype == T.Keyword.TZCast
- def valid(token):
+ def valid_prev(token):
return token is not None
+ def valid_next(token):
+ return token is not None and (
+ token.is_whitespace
+ or token.match(T.Keyword, 'AS')
+ or token.match(*sql.TypedLiteral.M_CLOSE)
+ )
+
def post(tlist, pidx, tidx, nidx):
return pidx, nidx
- _group(tlist, sql.Identifier, match, valid, valid, post)
+ _group(tlist, sql.Identifier, match, valid_prev, valid_next, post)
def group_typed_literal(tlist):
@@ -334,12 +341,15 @@
def group_functions(tlist):
has_create = False
has_table = False
+ has_as = False
for tmp_token in tlist.tokens:
- if tmp_token.value == 'CREATE':
+ if tmp_token.value.upper() == 'CREATE':
has_create = True
- if tmp_token.value == 'TABLE':
+ if tmp_token.value.upper() == 'TABLE':
has_table = True
- if has_create and has_table:
+ if tmp_token.value == 'AS':
+ has_as = True
+ if has_create and has_table and not has_as:
return
tidx, token = tlist.token_next_by(t=T.Name)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/sqlparse/keywords.py
new/sqlparse-0.4.3/sqlparse/keywords.py
--- old/sqlparse-0.4.2/sqlparse/keywords.py 2021-07-14 15:55:03.000000000
+0200
+++ new/sqlparse-0.4.3/sqlparse/keywords.py 2022-09-10 10:36:58.000000000
+0200
@@ -11,11 +11,17 @@
def is_keyword(value):
+ """Checks for a keyword.
+
+ If the given value is in one of the KEYWORDS_* dictionary
+ it's considered a keyword. Otherwise tokens.Name is returned.
+ """
val = value.upper()
return (KEYWORDS_COMMON.get(val)
or KEYWORDS_ORACLE.get(val)
or KEYWORDS_PLPGSQL.get(val)
or KEYWORDS_HQL.get(val)
+ or KEYWORDS_MSACCESS.get(val)
or KEYWORDS.get(val, tokens.Name)), value
@@ -56,7 +62,7 @@
# see issue #39
# Spaces around period `schema . name` are valid identifier
# TODO: Spaces before period not implemented
- (r'[A-Z??-??]\w*(?=\s*\.)', tokens.Name), # 'Name' .
+ (r'[A-Z??-??]\w*(?=\s*\.)', tokens.Name), # 'Name'.
# FIXME(atronah): never match,
# because `re.match` doesn't work with look-behind regexp feature
(r'(?<=\.)[A-Z??-??]\w*', tokens.Name), # .'Name'
@@ -90,7 +96,10 @@
tokens.Keyword),
(r"(AT|WITH')\s+TIME\s+ZONE\s+'[^']+'", tokens.Keyword.TZCast),
(r'(NOT\s+)?(LIKE|ILIKE|RLIKE)\b', tokens.Operator.Comparison),
- (r'[0-9_A-Z??-??][_$#\w]*', is_keyword),
+ (r'(NOT\s+)?(REGEXP)\b', tokens.Operator.Comparison),
+ # Check for keywords, also returns tokens.Name if regex matches
+ # but the match isn't a keyword.
+ (r'[0-9_\w][_$#\w]*', is_keyword),
(r'[;:()\[\],\.]', tokens.Punctuation),
(r'[<>=~!]+', tokens.Operator.Comparison),
(r'[+/@#%^&|^-]+', tokens.Operator),
@@ -241,6 +250,7 @@
'DISABLE': tokens.Keyword,
'DISCONNECT': tokens.Keyword,
'DISPATCH': tokens.Keyword,
+ 'DIV': tokens.Operator,
'DO': tokens.Keyword,
'DOMAIN': tokens.Keyword,
'DYNAMIC': tokens.Keyword,
@@ -314,7 +324,7 @@
'INCREMENT': tokens.Keyword,
'INDEX': tokens.Keyword,
- 'INDITCATOR': tokens.Keyword,
+ 'INDICATOR': tokens.Keyword,
'INFIX': tokens.Keyword,
'INHERITS': tokens.Keyword,
'INITIAL': tokens.Keyword,
@@ -907,6 +917,7 @@
'INLINE': tokens.Keyword,
'INSTR': tokens.Keyword,
'LEN': tokens.Keyword,
+ 'MAP': tokens.Name.Builtin,
'MAXELEMENT': tokens.Keyword,
'MAXINDEX': tokens.Keyword,
'MAX_PART_DATE': tokens.Keyword,
@@ -938,9 +949,12 @@
'SQRT': tokens.Keyword,
'STACK': tokens.Keyword,
'STR': tokens.Keyword,
+ 'STRING': tokens.Name.Builtin,
+ 'STRUCT': tokens.Name.Builtin,
'SUBSTR': tokens.Keyword,
'SUMMARY': tokens.Keyword,
'TBLPROPERTIES': tokens.Keyword,
+ 'TIMESTAMP': tokens.Name.Builtin,
'TIMESTAMP_ISO': tokens.Keyword,
'TO_CHAR': tokens.Keyword,
'TO_DATE': tokens.Keyword,
@@ -956,3 +970,8 @@
'BREAK': tokens.Keyword,
'LEAVE': tokens.Keyword,
}
+
+
+KEYWORDS_MSACCESS = {
+ 'DISTINCTROW': tokens.Keyword,
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/sqlparse/sql.py
new/sqlparse-0.4.3/sqlparse/sql.py
--- old/sqlparse-0.4.2/sqlparse/sql.py 2020-10-07 08:52:52.000000000 +0200
+++ new/sqlparse-0.4.3/sqlparse/sql.py 2022-09-06 21:32:40.000000000 +0200
@@ -234,16 +234,16 @@
if reverse:
assert end is None
- for idx in range(start - 2, -1, -1):
- token = self.tokens[idx]
- for func in funcs:
- if func(token):
- return idx, token
+ indexes = range(start - 2, -1, -1)
else:
- for idx, token in enumerate(self.tokens[start:end], start=start):
- for func in funcs:
- if func(token):
- return idx, token
+ if end is None:
+ end = len(self.tokens)
+ indexes = range(start, end)
+ for idx in indexes:
+ token = self.tokens[idx]
+ for func in funcs:
+ if func(token):
+ return idx, token
return None, None
def token_first(self, skip_ws=True, skip_cm=False):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/sqlparse/utils.py
new/sqlparse-0.4.3/sqlparse/utils.py
--- old/sqlparse-0.4.2/sqlparse/utils.py 2020-10-07 08:53:00.000000000
+0200
+++ new/sqlparse-0.4.3/sqlparse/utils.py 2022-09-06 21:32:40.000000000
+0200
@@ -55,7 +55,7 @@
"""Helper that removes surrounding quotes from strings."""
if val is None:
return
- if val[0] in ('"', "'") and val[0] == val[-1]:
+ if val[0] in ('"', "'", '`') and val[0] == val[-1]:
val = val[1:-1]
return val
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/sqlparse.egg-info/PKG-INFO
new/sqlparse-0.4.3/sqlparse.egg-info/PKG-INFO
--- old/sqlparse-0.4.2/sqlparse.egg-info/PKG-INFO 2021-09-10
08:51:14.000000000 +0200
+++ new/sqlparse-0.4.3/sqlparse.egg-info/PKG-INFO 2022-09-23
20:40:44.000000000 +0200
@@ -1,6 +1,6 @@
-Metadata-Version: 1.2
+Metadata-Version: 2.1
Name: sqlparse
-Version: 0.4.2
+Version: 0.4.3
Summary: A non-validating SQL parser.
Home-page: https://github.com/andialbrecht/sqlparse
Author: Andi Albrecht
@@ -10,83 +10,6 @@
Project-URL: Release Notes, https://sqlparse.readthedocs.io/en/latest/changes/
Project-URL: Source, https://github.com/andialbrecht/sqlparse
Project-URL: Tracker, https://github.com/andialbrecht/sqlparse/issues
-Description: python-sqlparse - Parse SQL statements
- ======================================
-
- |buildstatus|_
- |coverage|_
- |docs|_
-
- .. docincludebegin
-
- sqlparse is a non-validating SQL parser for Python.
- It provides support for parsing, splitting and formatting SQL
statements.
-
- The module is compatible with Python 3.5+ and released under the terms
of the
- `New BSD license <https://opensource.org/licenses/BSD-3-Clause>`_.
-
- Visit the project page at https://github.com/andialbrecht/sqlparse for
- further information about this project.
-
-
- Quick Start
- -----------
-
- .. code-block:: sh
-
- $ pip install sqlparse
-
- .. code-block:: python
-
- >>> import sqlparse
-
- >>> # Split a string containing two SQL statements:
- >>> raw = 'select * from foo; select * from bar;'
- >>> statements = sqlparse.split(raw)
- >>> statements
- ['select * from foo;', 'select * from bar;']
-
- >>> # Format the first statement and print it out:
- >>> first = statements[0]
- >>> print(sqlparse.format(first, reindent=True,
keyword_case='upper'))
- SELECT *
- FROM foo;
-
- >>> # Parsing a SQL statement:
- >>> parsed = sqlparse.parse('select * from foo')[0]
- >>> parsed.tokens
- [<DML 'select' at 0x7f22c5e15368>, <Whitespace ' ' at
0x7f22c5e153b0>, <Wildcard '*' ??? ]
- >>>
-
- Links
- -----
-
- Project page
- https://github.com/andialbrecht/sqlparse
-
- Bug tracker
- https://github.com/andialbrecht/sqlparse/issues
-
- Documentation
- https://sqlparse.readthedocs.io/
-
- Online Demo
- https://sqlformat.org/
-
-
- sqlparse is licensed under the BSD license.
-
- Parts of the code are based on pygments written by Georg Brandl and
others.
- pygments-Homepage: http://pygments.org/
-
- .. |buildstatus| image::
https://secure.travis-ci.org/andialbrecht/sqlparse.png?branch=master
- .. _buildstatus: https://travis-ci.org/#!/andialbrecht/sqlparse
- .. |coverage| image::
https://codecov.io/gh/andialbrecht/sqlparse/branch/master/graph/badge.svg
- .. _coverage: https://codecov.io/gh/andialbrecht/sqlparse
- .. |docs| image::
https://readthedocs.org/projects/sqlparse/badge/?version=latest
- .. _docs: https://sqlparse.readthedocs.io/en/latest/?badge=latest
-
-Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
@@ -99,8 +22,90 @@
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Database
Classifier: Topic :: Software Development
Requires-Python: >=3.5
+License-File: LICENSE
+License-File: AUTHORS
+
+python-sqlparse - Parse SQL statements
+======================================
+
+|buildstatus|_
+|coverage|_
+|docs|_
+|packageversion|_
+
+.. docincludebegin
+
+sqlparse is a non-validating SQL parser for Python.
+It provides support for parsing, splitting and formatting SQL statements.
+
+The module is compatible with Python 3.5+ and released under the terms of the
+`New BSD license <https://opensource.org/licenses/BSD-3-Clause>`_.
+
+Visit the project page at https://github.com/andialbrecht/sqlparse for
+further information about this project.
+
+
+Quick Start
+-----------
+
+.. code-block:: sh
+
+ $ pip install sqlparse
+
+.. code-block:: python
+
+ >>> import sqlparse
+
+ >>> # Split a string containing two SQL statements:
+ >>> raw = 'select * from foo; select * from bar;'
+ >>> statements = sqlparse.split(raw)
+ >>> statements
+ ['select * from foo;', 'select * from bar;']
+
+ >>> # Format the first statement and print it out:
+ >>> first = statements[0]
+ >>> print(sqlparse.format(first, reindent=True, keyword_case='upper'))
+ SELECT *
+ FROM foo;
+
+ >>> # Parsing a SQL statement:
+ >>> parsed = sqlparse.parse('select * from foo')[0]
+ >>> parsed.tokens
+ [<DML 'select' at 0x7f22c5e15368>, <Whitespace ' ' at 0x7f22c5e153b0>,
<Wildcard '*' ??? ]
+ >>>
+
+Links
+-----
+
+Project page
+ https://github.com/andialbrecht/sqlparse
+
+Bug tracker
+ https://github.com/andialbrecht/sqlparse/issues
+
+Documentation
+ https://sqlparse.readthedocs.io/
+
+Online Demo
+ https://sqlformat.org/
+
+
+sqlparse is licensed under the BSD license.
+
+Parts of the code are based on pygments written by Georg Brandl and others.
+pygments-Homepage: http://pygments.org/
+
+.. |buildstatus| image::
https://github.com/andialbrecht/sqlparse/actions/workflows/python-app.yml/badge.svg
+.. _buildstatus:
https://github.com/andialbrecht/sqlparse/actions/workflows/python-app.yml
+.. |coverage| image::
https://codecov.io/gh/andialbrecht/sqlparse/branch/master/graph/badge.svg
+.. _coverage: https://codecov.io/gh/andialbrecht/sqlparse
+.. |docs| image::
https://readthedocs.org/projects/sqlparse/badge/?version=latest
+.. _docs: https://sqlparse.readthedocs.io/en/latest/?badge=latest
+.. |packageversion| image::
https://img.shields.io/pypi/v/sqlparse?color=%2334D058&label=pypi%20package
+.. _packageversion: https://pypi.org/project/sqlparse
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/sqlparse.egg-info/SOURCES.txt
new/sqlparse-0.4.3/sqlparse.egg-info/SOURCES.txt
--- old/sqlparse-0.4.2/sqlparse.egg-info/SOURCES.txt 2021-09-10
08:51:14.000000000 +0200
+++ new/sqlparse-0.4.3/sqlparse.egg-info/SOURCES.txt 2022-09-23
20:40:44.000000000 +0200
@@ -55,6 +55,7 @@
tests/test_regressions.py
tests/test_split.py
tests/test_tokenize.py
+tests/test_utils.py
tests/files/_Make_DirEntry.sql
tests/files/begintag.sql
tests/files/begintag_2.sql
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/sqlparse.egg-info/entry_points.txt
new/sqlparse-0.4.3/sqlparse.egg-info/entry_points.txt
--- old/sqlparse-0.4.2/sqlparse.egg-info/entry_points.txt 2021-09-10
08:51:14.000000000 +0200
+++ new/sqlparse-0.4.3/sqlparse.egg-info/entry_points.txt 2022-09-23
20:40:44.000000000 +0200
@@ -1,3 +1,2 @@
[console_scripts]
sqlformat = sqlparse.__main__:main
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/tests/test_grouping.py
new/sqlparse-0.4.3/tests/test_grouping.py
--- old/sqlparse-0.4.2/tests/test_grouping.py 2020-09-30 15:44:45.000000000
+0200
+++ new/sqlparse-0.4.3/tests/test_grouping.py 2022-09-06 21:32:40.000000000
+0200
@@ -324,6 +324,11 @@
assert p.tokens[0].get_alias() == 'foo'
+def test_grouping_alias_ctas():
+ p = sqlparse.parse('CREATE TABLE tbl1 AS SELECT coalesce(t1.col1, 0) AS
col1 FROM t1')[0]
+ assert p.tokens[10].get_alias() == 'col1'
+ assert isinstance(p.tokens[10].tokens[0], sql.Function)
+
def test_grouping_subquery_no_parens():
# Not totally sure if this is the right approach...
# When a THEN clause contains a subquery w/o parenthesis around it *and*
@@ -655,3 +660,7 @@
assert p[0].get_alias() is None
assert p[2].value == 'AS'
assert p[4].value == 'WITH'
+
+def test_grouping_create_table():
+ p = sqlparse.parse("create table db.tbl (a string)")[0].tokens
+ assert p[4].value == "db.tbl"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/tests/test_parse.py
new/sqlparse-0.4.3/tests/test_parse.py
--- old/sqlparse-0.4.2/tests/test_parse.py 2021-07-14 15:57:11.000000000
+0200
+++ new/sqlparse-0.4.3/tests/test_parse.py 2022-09-10 10:05:08.000000000
+0200
@@ -132,6 +132,12 @@
assert type(t[0]) is sql.Function
+def test_parse_div_operator():
+ p = sqlparse.parse('col1 DIV 5 AS div_col1')[0].tokens
+ assert p[0].tokens[0].tokens[2].ttype is T.Operator
+ assert p[0].get_alias() == 'div_col1'
+
+
def test_quoted_identifier():
t = sqlparse.parse('select x.y as "z" from foo')[0].tokens
assert isinstance(t[2], sql.Identifier)
@@ -142,6 +148,7 @@
@pytest.mark.parametrize('name', [
'foo', '_foo', # issue175
'1_data', # valid MySQL table name, see issue337
+ '????????????', # valid at least for SQLite3, see issue641
])
def test_valid_identifier_names(name):
t = sqlparse.parse(name)[0].tokens
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/tests/test_regressions.py
new/sqlparse-0.4.3/tests/test_regressions.py
--- old/sqlparse-0.4.2/tests/test_regressions.py 2020-10-19
08:40:01.000000000 +0200
+++ new/sqlparse-0.4.3/tests/test_regressions.py 2022-09-06
21:32:40.000000000 +0200
@@ -401,6 +401,15 @@
assert p.tokens[-1].get_alias() == 'foo'
+def test_issue562_tzcasts():
+ # Test that whitespace between 'from' and 'bar' is retained
+ formatted = sqlparse.format(
+ 'SELECT f(HOUR from bar AT TIME ZONE \'UTC\') from foo', reindent=True
+ )
+ assert formatted == \
+ 'SELECT f(HOUR\n from bar AT TIME ZONE \'UTC\')\nfrom foo'
+
+
def test_as_in_parentheses_indents():
# did raise NoneType has no attribute is_group in _process_parentheses
formatted = sqlparse.format('(as foo)', reindent=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/sqlparse-0.4.2/tests/test_utils.py
new/sqlparse-0.4.3/tests/test_utils.py
--- old/sqlparse-0.4.2/tests/test_utils.py 1970-01-01 01:00:00.000000000
+0100
+++ new/sqlparse-0.4.3/tests/test_utils.py 2022-09-06 21:32:40.000000000
+0200
@@ -0,0 +1,12 @@
+import pytest
+
+from sqlparse import utils
+
+
[email protected]('value, expected', (
+ [None, None],
+ ['\'foo\'', 'foo'],
+ ['"foo"', 'foo'],
+ ['`foo`', 'foo']))
+def test_remove_quotes(value, expected):
+ assert utils.remove_quotes(value) == expected