SublimeFormatSQL icon indicating copy to clipboard operation
SublimeFormatSQL copied to clipboard

No more compatible with Sublime Text 2?

Open Baloobear opened this issue 11 years ago • 7 comments

Hi,

I installed this plugin with the Package Control of ST2, but even after a restart of ST2 the plugin isn't available.

A look at the ST2 console told me the following:

Reloading plugin /Users/dennis/Library/Application Support/Sublime Text 2/Packages/Format SQL/FormatSQL.py Traceback (most recent call last): File "./sublime_plugin.py", line 62, in reload_plugin File "./FormatSQL.py", line 8, in from sqlparse import format File "./sqlparse/init.py", line 17, in from . import engine File "./sqlparse/engine/init.py", line 8, in from .. import lexer File "./sqlparse/lexer.py", line 154 class Lexer(object, metaclass=LexerMeta): ^ SyntaxError: invalid syntax

Unfortunately I cannot update to SF3 (OS X too old) and I also have no idea of python. :(

Is there a chance to make this plugin work in ST2 again?

Thanks, Dennis

Baloobear avatar Oct 03 '13 19:10 Baloobear

Hi there,

I ran into the same error too after installing FormatSQL an hour ago (ST 2.0.2, Build 2221, Mac OSX 10.8.5, Python 2.7.2).

Greets Andreas

akloeber avatar Oct 04 '13 11:10 akloeber

Hello all,

Same problem here using Ubuntu 10.10, ST 2.0.2, build 2221. Installed FormatSQL from package manager.

Any tips?

joaquimpedrooliveira avatar Oct 09 '13 13:10 joaquimpedrooliveira

I'm running into some syntax error as well (ST2 v2.0.2 build 2221 on OSX 10.8.5). I had python 2.5 and it didn't work then I updated it to python 2.7 and it still doesn't work.

The error cursor is point to a different spot though:

File "./sublime_plugin.py", line 62, in reload_plugin File "./FormatSQL.py", line 8, in from sqlparse import format File "./sqlparse/init.py", line 17, in from . import engine File "./sqlparse/engine/init.py", line 8, in from .. import lexer File "./sqlparse/lexer.py", line 154 class Lexer(object, metaclass=LexerMeta): ^

Thanks

superken2001 avatar Oct 09 '13 18:10 superken2001

I investigated a little further and found that the cause is the migration from the Python 2 way of defining meta classes with a __metaclass__ attribute to the Python 3 syntax which uses an additional metaclass parameter in the class definition. Unfortunately the Python 2 compiler considers this as a syntax error and even worse the Python 3 compiler just ignores the old __metaclass__ attribute. There is a good explanation at http://mikewatkins.ca/2008/11/29/python-2-and-3-metaclasses/ that describes this and suggests a backward compatible solution that works on Python 2 and 3.

akloeber avatar Oct 12 '13 09:10 akloeber

Simple solution, at least for Sublime Text 2: Clone the latest version of sqlparse (https://github.com/andialbrecht/sqlparse) and then replace the sqlparse folder in this plugin with the copy from the clone you just made; restart sublime and life should be good.

d42ohpaz avatar Nov 01 '13 18:11 d42ohpaz

@dohpaz42 thanks, worked for me. Make sure to use https://github.com/andialbrecht/sqlparse/tree/master/sqlparse not https://github.com/andialbrecht/sqlparse

jaredbeck avatar Feb 07 '14 15:02 jaredbeck

thanks @dohpaz42, you're a lifesaver!

New-High-Score avatar Feb 17 '14 02:02 New-High-Score