This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: A program to scan python files and list those require coding
Type: Stage:
Components: Demos and Tools Versions: Python 2.5
process
Status: closed Resolution: accepted
Dependencies: Superseder:
Assigned To: georg.brandl Nosy List: akuchling, georg.brandl, georg.brandl, lemburg, phd, rhettinger
Priority: normal Keywords: patch

Created on 2003-08-06 10:47 by phd, last changed 2022-04-10 16:10 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
find-nocoding.tar.bz2 phd, 2005-04-05 16:29 The pysource.py module, find-nocoding.py program and 3 tests in one tarball
Messages (13)
msg44389 - (view) Author: Oleg Broytman (phd) * Date: 2003-08-06 10:47
A program to scan python files (recursively) and list
those that require coding directive (pseudocomment)
because there non-ASCII characters in the file
(including comments).

The program treats files as python files if the
extension is .py or there is "python" in the first line
of the file.
msg44390 - (view) Author: Marc-Andre Lemburg (lemburg) * (Python committer) Date: 2003-08-06 12:36
Logged In: YES 
user_id=38388

Thanks.
msg44391 - (view) Author: A.M. Kuchling (akuchling) * (Python committer) Date: 2004-08-07 21:50
Logged In: YES 
user_id=11375

So, does something need to be done with this script, like adding it to the 
distribution?
msg44392 - (view) Author: Oleg Broytman (phd) * Date: 2004-10-07 07:49
Logged In: YES 
user_id=4799

And don't forget to make it executable.
msg44393 - (view) Author: Raymond Hettinger (rhettinger) * (Python committer) Date: 2004-10-20 06:04
Logged In: YES 
user_id=80475

Will make a few cleanups, replace the recursion and fileext
guessing to a glob.glob format, and will add to Tools/scripts.
msg44394 - (view) Author: Oleg Broytman (phd) * Date: 2004-12-17 19:52
Logged In: YES 
user_id=4799

Added pysource.py module and an alternative implementation
using the module. The pysource.py module is, probably, of a
general interest and can be added to the standard library.
msg44395 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2005-03-03 15:18
Logged In: YES 
user_id=1188172

The script only checks for "-*- coding", while the docs
state that the correct regex is "coding[=:]\s*([-\w.]+)".

In the pysource.py, I don't know if it is useful to open the
file and check the first line for "python". Normally, Python
files should be given the extension .py, so there is a great
probability of false positives.
msg44396 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2005-03-03 15:35
Logged In: YES 
user_id=1188172

Also, perhaps there could be another mode of operation in
which the files in question are checked if they need an
encoding declaration anyways.
msg44397 - (view) Author: Oleg Broytman (phd) * Date: 2005-03-03 15:41
Logged In: YES 
user_id=4799

Thank you for pointing the regex. I fixed both programs.

But you are wrong about .py extension. A python module
really can only has .py extension, but a python program may
has any, for example, .cgi, or no extension at all.
msg44398 - (view) Author: Oleg Broytman (phd) * Date: 2005-03-03 15:42
Logged In: YES 
user_id=4799

Sorry for my poor English. "Can have" and "may have"...
msg44399 - (view) Author: Oleg Broytman (phd) * Date: 2005-04-05 16:29
Logged In: YES 
user_id=4799

I've reworked and advanced the patch. See the attached
bzipped tarball.

The pysource.py module exports three functions.
looks_like_python() takes a quick look and recognizes a
Python source file if it is not too big, has .py expension
and has the word "python" in the first line.

The function can_be_compiled() tries to compile the file.

The generator python_files() runs through all paths whether
they are files or directories, descends into directories,
test if all encountered files are python source files and
yield them.

find-nocoding.py now has an option -c to use
can_be_compiled() instead of the default loks_like_python().
The arguments can be files or directories.

There are also 3 simple tests. "find-nocoding.py ." must
find test/test2.py; "find-nocoding.py -c ." must find
test/test2.py and test/test3.py.
msg44400 - (view) Author: Raymond Hettinger (rhettinger) * (Python committer) Date: 2005-08-24 07:19
Logged In: YES 
user_id=80475

Apply only to Py2.5.
msg44401 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2005-08-24 18:31
Logged In: YES 
user_id=1188172

Committed both modules to Tools/scripts after a bit of cleanup.
History
Date User Action Args
2022-04-10 16:10:30adminsetgithub: 39023
2003-08-06 10:47:58phdcreate