1) What is the preferable shebang? What I have seen are:
- #!/usr/bin/python (such as scripts/add_text.py)
- #!/usr/bin/env python (such as scripts/archivebot.py)
- no shebang (such as scripts/catall.py)

2) Why some scripts (such as blockpageschecker.py) are executable , while the others (such as archivebot.py) are not?

3) Why don't we always use async=True with all scripts? I admit that I don't know whether async has a negative impact, so I asked it here. Anyway, I think that we can add async=True to touch.py, for example, without causing any problem.

4) Which one is preferable between "summary" and "reason"? I think this topic was previously discussed before, but I can't remember the final resolution.

/^ *def [^)]*?(reason|summary)/


- reason
    def move(self, newtitle, reason=None, movetalkpage=True, sysop=False,
    def delete(self, reason=None, prompt=True, mark=False):
    def protect(self, edit='sysop', move='sysop', create=None, upload=None,
                unprotect=False, reason=None, prompt=True, expiry=None):
    def block(self, expiry, reason, anononly=True, nocreate=True,

- summary
    def removeImage(self, image, put=False, summary=None, safe=True):
    def replaceImage(self, image, replacement=None, put=False, summary=None,

- reason
    def blockuser(self, user, expiry, reason, anononly=True, nocreate=True,
    def unblockuser(self, user, reason):

- summary
    def editpage(self, page, summary, minor=True, notminor=False,
    def movepage(self, page, newtitle, summary, movetalk=True,
    def deletepage(self, page, summary):
    def protect(self, page, protections, summary, expiry=None):
scripts in scripts directory

- summary
    def add_text(page=None, addText=None, summary=None, regexSkip=None,
    def update(self, summary, sort_threads=False):
    def __init__(self, generator, always, summary=None):
    def __init__(self, generator, summary, always=False, undelete=True):
    def __init__(self, generator, oldImage, newImage=None, summary='',
    def __init__(self, generator, addprefix, noredirect, movetalkpage,
                 always, skipredirects, summary):
    def __init__(self, reader, force, append, summary, minor, autosummary,
    def __init__(self, generator, summary, always=False, unprotect=False,
    def __init__(self, generator, acceptall=False, limit=None, ignorepdf=False,
    def __init__(self, generator, replacements, exceptions={},
                 acceptall=False, allowoverlap=False, recursive=False,
                 addedCat=None, sleep=None, summary='', site=None):

Sorawee Porncharoenwase