openpreserve / jpylyzer

JP2 (JPEG 2000 Part 1) validator and properties extractor. Jpylyzer was specifically created to check that a JP2 file really conforms to the format's specifications. Additionally jpylyzer is able to extract technical characteristics.
http://jpylyzer.openpreservation.org/
Other
69 stars 28 forks source link

PyLint errors #101

Closed bitsgalore closed 6 years ago

bitsgalore commented 6 years ago

Prompted by Stefan Weil's Pylint fixes:

https://github.com/openpreserve/jpylyzer/pull/92

Running Pylint resulted in lots of warnings; by the look of it too many to fix manually (and most don't look serious).

However running Pylint with the -E switch yielded the following errors:

************* Module jpylyzer.jpylyzer
E:623,53: Instance of 'file' has no 'buffer' member (no-member)
************* Module jpylyzer.six
E: 92,17: Instance of '_LazyDescr' has no '_resolve' member (no-member) 
E:723, 4: function already defined line 721 (function-redefined)
E:779, 4: function already defined line 721 (function-redefined)
E:852, 4: Undefined variable '__spec__' (undefined-variable)

Ignoring the six errors for now, the 'file' has no 'buffer' originates from the following lines (the offending line is only used for Python 3):

# Set encoding of the terminal to UTF-8
if config.PYTHON_VERSION.startswith(config.PYTHON_2):
    out = codecs.getwriter(config.UTF8_ENCODING)(sys.stdout)
elif config.PYTHON_VERSION.startswith(config.PYTHON_3):
    out = codecs.getwriter(config.UTF8_ENCODING)(sys.stdout.buffer)

Looking at the Python docs, this looks completely legal to me in Python 3 (but not Python 2):

https://docs.python.org/3/library/sys.html

So perhaps Pylint isn't completely up to spec with Py 3?

bitsgalore commented 6 years ago

Addition to above: Pylint3 does not report this error, but instead it reports various other errors:

************* Module jpylyzer.boxvalidator
E: 22, 0: Unable to import 'shared' (import-error)
E: 23, 0: Unable to import 'shared' (import-error)
E:227,11: Module 'config' has no 'outputVerboseFlag' member (no-member)
E:2059,15: Module 'config' has no 'extractNullTerminatedXMLFlag' member (no-member)
E:2109,19: Module 'config' has no 'extractNullTerminatedXMLFlag' member (no-member)
************* Module jpylyzer.etpatch
E: 17, 0: Unable to import 'byteconv' (import-error)
E: 18, 0: Unable to import 'byteconv' (import-error)
E:110,15: Module 'config' has no 'PYTHON_VERSION' member (no-member)
E:110,48: Module 'config' has no 'PYTHON_2' member (no-member)
E:112,37: Undefined variable 'long' (undefined-variable)
************* Module jpylyzer.jpylyzer
E: 49, 0: Unable to import 'boxvalidator' (import-error)
E: 51, 0: Unable to import 'byteconv' (import-error)
E: 52, 0: Unable to import 'shared' (import-error)
E:260,15: Module 'config' has no 'PLATFORM' member (no-member)
E:381,17: Module 'config' has no 'ERR_CODE_NO_IMAGES' member (no-member)
E:390,17: Module 'config' has no 'ERR_CODE_NO_IMAGES' member (no-member)
E:406, 7: Module 'config' has no 'PYTHON_VERSION' member (no-member)
E:406,40: Module 'config' has no 'PYTHON_3' member (no-member)
E:417, 7: Module 'config' has no 'PYTHON_VERSION' member (no-member)
E:417,40: Module 'config' has no 'PYTHON_2' member (no-member)
E:486,11: Module 'config' has no 'PYTHON_VERSION' member (no-member)
E:486,44: Module 'config' has no 'PYTHON_2' member (no-member)
E:488,19: Undefined variable 'unicode' (undefined-variable)
E:578, 7: Module 'config' has no 'PYTHON_VERSION' member (no-member)
E:578,40: Module 'config' has no 'PYTHON_2' member (no-member)
E:580, 7: Module 'config' has no 'PYTHON_VERSION' member (no-member)
E:580,40: Module 'config' has no 'PYTHON_3' member (no-member)
E:600,11: Module 'config' has no 'PYTHON_VERSION' member (no-member)
E:600,44: Module 'config' has no 'PYTHON_2' member (no-member)
E:605,11: Module 'config' has no 'PYTHON_VERSION' member (no-member)
E:605,44: Module 'config' has no 'PYTHON_3' member (no-member)
E:620, 7: Module 'config' has no 'PYTHON_VERSION' member (no-member)
E:620,40: Module 'config' has no 'PYTHON_2' member (no-member)
E:621,31: Module 'config' has no 'UTF8_ENCODING' member (no-member)
E:622, 9: Module 'config' has no 'PYTHON_VERSION' member (no-member)
E:622,42: Module 'config' has no 'PYTHON_3' member (no-member)
E:623,31: Module 'config' has no 'UTF8_ENCODING' member (no-member)
************* Module jpylyzer.six
E: 49,19: Undefined variable 'basestring' (undefined-variable)
E: 50,26: Undefined variable 'long' (undefined-variable)
E: 51,25: Module 'types' has no 'ClassType' member (no-member)
E: 52,16: Undefined variable 'unicode' (undefined-variable)
E: 92,17: Instance of '_LazyDescr' has no '_resolve' member (no-member)
E:647,15: Undefined variable 'unicode' (undefined-variable)
E:656,34: Module 'itertools' has no 'imap' member (no-member)
E:723, 4: function already defined line 721 (function-redefined)
E:730,36: Undefined variable 'basestring' (undefined-variable)
E:733,31: Undefined variable 'file' (undefined-variable)
E:734,37: Undefined variable 'unicode' (undefined-variable)
E:744,31: Undefined variable 'unicode' (undefined-variable)
E:750,31: Undefined variable 'unicode' (undefined-variable)
E:758,35: Undefined variable 'unicode' (undefined-variable)
E:762,22: Undefined variable 'unicode' (undefined-variable)
E:763,20: Undefined variable 'unicode' (undefined-variable)
E:779, 4: function already defined line 721 (function-redefined)

Some observations:

bitsgalore commented 6 years ago

Closing b/c duplicated of https://github.com/openpreserve/jpylyzer/issues/91