Commit 0b785036 authored by Petri Lehtinen's avatar Petri Lehtinen

Issue #8890: Stop advertising an insecure use of /tmp in docs

parent 9e14755b
...@@ -189,7 +189,7 @@ under the distribution root; if you're excessively concerned with speed, or want ...@@ -189,7 +189,7 @@ under the distribution root; if you're excessively concerned with speed, or want
to keep the source tree pristine, you can change the build directory with the to keep the source tree pristine, you can change the build directory with the
:option:`--build-base` option. For example:: :option:`--build-base` option. For example::
python setup.py build --build-base=/tmp/pybuild/foo-1.0 python setup.py build --build-base=/path/to/pybuild/foo-1.0
(Or you could do this permanently with a directive in your system or personal (Or you could do this permanently with a directive in your system or personal
Distutils configuration file; see section :ref:`inst-config-files`.) Normally, this Distutils configuration file; see section :ref:`inst-config-files`.) Normally, this
......
...@@ -76,7 +76,7 @@ automatically when the program terminates without relying on the application ...@@ -76,7 +76,7 @@ automatically when the program terminates without relying on the application
making an explicit call into this module at termination. :: making an explicit call into this module at termination. ::
try: try:
_count = int(open("/tmp/counter").read()) _count = int(open("counter").read())
except IOError: except IOError:
_count = 0 _count = 0
...@@ -85,7 +85,7 @@ making an explicit call into this module at termination. :: ...@@ -85,7 +85,7 @@ making an explicit call into this module at termination. ::
_count = _count + n _count = _count + n
def savecounter(): def savecounter():
open("/tmp/counter", "w").write("%d" % _count) open("counter", "w").write("%d" % _count)
import atexit import atexit
atexit.register(savecounter) atexit.register(savecounter)
......
...@@ -170,7 +170,7 @@ dictionaries. In addition, they support the methods listed below. ...@@ -170,7 +170,7 @@ dictionaries. In addition, they support the methods listed below.
Example:: Example::
>>> import bsddb >>> import bsddb
>>> db = bsddb.btopen('/tmp/spam.db', 'c') >>> db = bsddb.btopen('spam.db', 'c')
>>> for i in range(10): db['%d'%i] = '%d'% (i*i) >>> for i in range(10): db['%d'%i] = '%d'% (i*i)
... ...
>>> db['3'] >>> db['3']
......
...@@ -81,7 +81,7 @@ program to users of your script, you can have the reports saved to files ...@@ -81,7 +81,7 @@ program to users of your script, you can have the reports saved to files
instead, with code like this:: instead, with code like this::
import cgitb import cgitb
cgitb.enable(display=0, logdir="/tmp") cgitb.enable(display=0, logdir="/path/to/logdir")
It's very helpful to use this feature during script development. The reports It's very helpful to use this feature during script development. The reports
produced by :mod:`cgitb` provide information that can save you a lot of time in produced by :mod:`cgitb` provide information that can save you a lot of time in
......
...@@ -540,7 +540,7 @@ examples demonstrate how to use the :func:`parse` function, what the repr of an ...@@ -540,7 +540,7 @@ examples demonstrate how to use the :func:`parse` function, what the repr of an
AST looks like, and how to access attributes of an AST node. AST looks like, and how to access attributes of an AST node.
The first module defines a single function. Assume it is stored in The first module defines a single function. Assume it is stored in
:file:`/tmp/doublelib.py`. :: :file:`doublelib.py`. ::
"""This is an example module. """This is an example module.
...@@ -557,7 +557,7 @@ to create an instance from a repr, you must import the class names from the ...@@ -557,7 +557,7 @@ to create an instance from a repr, you must import the class names from the
:mod:`compiler.ast` module. :: :mod:`compiler.ast` module. ::
>>> import compiler >>> import compiler
>>> mod = compiler.parseFile("/tmp/doublelib.py") >>> mod = compiler.parseFile("doublelib.py")
>>> mod >>> mod
Module('This is an example module.\n\nThis is the docstring.\n', Module('This is an example module.\n\nThis is the docstring.\n',
Stmt([Function(None, 'double', ['x'], [], 0, Stmt([Function(None, 'double', ['x'], [], 0,
......
...@@ -93,7 +93,7 @@ Examples of usage ...@@ -93,7 +93,7 @@ Examples of usage
Example of how to read a compressed file:: Example of how to read a compressed file::
import gzip import gzip
f = gzip.open('/home/joe/file.txt.gz', 'rb') f = gzip.open('file.txt.gz', 'rb')
file_content = f.read() file_content = f.read()
f.close() f.close()
...@@ -101,15 +101,15 @@ Example of how to create a compressed GZIP file:: ...@@ -101,15 +101,15 @@ Example of how to create a compressed GZIP file::
import gzip import gzip
content = "Lots of content here" content = "Lots of content here"
f = gzip.open('/home/joe/file.txt.gz', 'wb') f = gzip.open('file.txt.gz', 'wb')
f.write(content) f.write(content)
f.close() f.close()
Example of how to GZIP compress an existing file:: Example of how to GZIP compress an existing file::
import gzip import gzip
f_in = open('/home/joe/file.txt', 'rb') f_in = open('file.txt', 'rb')
f_out = gzip.open('/home/joe/file.txt.gz', 'wb') f_out = gzip.open('file.txt.gz', 'wb')
f_out.writelines(f_in) f_out.writelines(f_in)
f_out.close() f_out.close()
f_in.close() f_in.close()
......
...@@ -68,6 +68,6 @@ to this variable: ...@@ -68,6 +68,6 @@ to this variable:
Example:: Example::
>>> import imghdr >>> import imghdr
>>> imghdr.what('/tmp/bass.gif') >>> imghdr.what('bass.gif')
'gif' 'gif'
...@@ -71,6 +71,6 @@ An example usage:: ...@@ -71,6 +71,6 @@ An example usage::
>>> import mailcap >>> import mailcap
>>> d=mailcap.getcaps() >>> d=mailcap.getcaps()
>>> mailcap.findmatch(d, 'video/mpeg', filename='/tmp/tmp1223') >>> mailcap.findmatch(d, 'video/mpeg', filename='tmp1223')
('xmpeg /tmp/tmp1223', {'view': 'xmpeg %s'}) ('xmpeg tmp1223', {'view': 'xmpeg %s'})
...@@ -46,7 +46,7 @@ To post an article from a file (this assumes that the article has valid ...@@ -46,7 +46,7 @@ To post an article from a file (this assumes that the article has valid
headers, and that you have right to post on the particular newsgroup):: headers, and that you have right to post on the particular newsgroup)::
>>> s = NNTP('news.gmane.org') >>> s = NNTP('news.gmane.org')
>>> f = open('/tmp/article') >>> f = open('articlefile')
>>> s.post(f) >>> s.post(f)
'240 Article posted successfully.' '240 Article posted successfully.'
>>> s.quit() >>> s.quit()
......
...@@ -173,10 +173,10 @@ required option ...@@ -173,10 +173,10 @@ required option
For example, consider this hypothetical command-line:: For example, consider this hypothetical command-line::
prog -v --report /tmp/report.txt foo bar prog -v --report report.txt foo bar
``-v`` and ``--report`` are both options. Assuming that ``--report`` ``-v`` and ``--report`` are both options. Assuming that ``--report``
takes one argument, ``/tmp/report.txt`` is an option argument. ``foo`` and takes one argument, ``report.txt`` is an option argument. ``foo`` and
``bar`` are positional arguments. ``bar`` are positional arguments.
......
...@@ -24,12 +24,12 @@ shell for :func:`os.system` and :func:`os.popen` is required. ...@@ -24,12 +24,12 @@ shell for :func:`os.system` and :func:`os.popen` is required.
Example:: Example::
>>> import pipes >>> import pipes
>>> t=pipes.Template() >>> t = pipes.Template()
>>> t.append('tr a-z A-Z', '--') >>> t.append('tr a-z A-Z', '--')
>>> f=t.open('/tmp/1', 'w') >>> f = t.open('pipefile', 'w')
>>> f.write('hello world') >>> f.write('hello world')
>>> f.close() >>> f.close()
>>> open('/tmp/1').read() >>> open('pipefile').read()
'HELLO WORLD' 'HELLO WORLD'
......
...@@ -181,7 +181,7 @@ Examples:: ...@@ -181,7 +181,7 @@ Examples::
import posixfile import posixfile
file = posixfile.open('/tmp/test', 'w') file = posixfile.open('testfile', 'w')
file.lock('w|') file.lock('w|')
... ...
file.lock('u') file.lock('u')
......
...@@ -200,7 +200,7 @@ A simple example demonstrating the use of the programmatic interface:: ...@@ -200,7 +200,7 @@ A simple example demonstrating the use of the programmatic interface::
# run the new command using the given tracer # run the new command using the given tracer
tracer.run('main()') tracer.run('main()')
# make a report, placing output in /tmp # make a report, placing output in the current directory
r = tracer.results() r = tracer.results()
r.write_results(show_missing=True, coverdir="/tmp") r.write_results(show_missing=True, coverdir=".")
...@@ -19,7 +19,7 @@ Typically, :data:`sys.path` is a list of directory names as strings. This modul ...@@ -19,7 +19,7 @@ Typically, :data:`sys.path` is a list of directory names as strings. This modul
also allows an item of :data:`sys.path` to be a string naming a ZIP file archive. also allows an item of :data:`sys.path` to be a string naming a ZIP file archive.
The ZIP archive can contain a subdirectory structure to support package imports, The ZIP archive can contain a subdirectory structure to support package imports,
and a path within the archive can be specified to only import from a and a path within the archive can be specified to only import from a
subdirectory. For example, the path :file:`/tmp/example.zip/lib/` would only subdirectory. For example, the path :file:`example.zip/lib/` would only
import from the :file:`lib/` subdirectory within the archive. import from the :file:`lib/` subdirectory within the archive.
Any files may be present in the ZIP archive, but only files :file:`.py` and Any files may be present in the ZIP archive, but only files :file:`.py` and
...@@ -151,8 +151,8 @@ Examples ...@@ -151,8 +151,8 @@ Examples
Here is an example that imports a module from a ZIP archive - note that the Here is an example that imports a module from a ZIP archive - note that the
:mod:`zipimport` module is not explicitly used. :: :mod:`zipimport` module is not explicitly used. ::
$ unzip -l /tmp/example.zip $ unzip -l example.zip
Archive: /tmp/example.zip Archive: example.zip
Length Date Time Name Length Date Time Name
-------- ---- ---- ---- -------- ---- ---- ----
8467 11-26-02 22:30 jwzthreading.py 8467 11-26-02 22:30 jwzthreading.py
...@@ -161,8 +161,8 @@ Here is an example that imports a module from a ZIP archive - note that the ...@@ -161,8 +161,8 @@ Here is an example that imports a module from a ZIP archive - note that the
$ ./python $ ./python
Python 2.3 (#1, Aug 1 2003, 19:54:32) Python 2.3 (#1, Aug 1 2003, 19:54:32)
>>> import sys >>> import sys
>>> sys.path.insert(0, '/tmp/example.zip') # Add .zip file to front of path >>> sys.path.insert(0, 'example.zip') # Add .zip file to front of path
>>> import jwzthreading >>> import jwzthreading
>>> jwzthreading.__file__ >>> jwzthreading.__file__
'/tmp/example.zip/jwzthreading.py' 'example.zip/jwzthreading.py'
...@@ -236,9 +236,9 @@ arguments: ``open(filename, mode)``. ...@@ -236,9 +236,9 @@ arguments: ``open(filename, mode)``.
:: ::
>>> f = open('/tmp/workfile', 'w') >>> f = open('workfile', 'w')
>>> print f >>> print f
<open file '/tmp/workfile', mode 'w' at 80a0960> <open file 'workfile', mode 'w' at 80a0960>
The first argument is a string containing the filename. The second argument is The first argument is a string containing the filename. The second argument is
another string containing a few characters describing the way in which the file another string containing a few characters describing the way in which the file
...@@ -339,7 +339,7 @@ of the file, 1 uses the current file position, and 2 uses the end of the file as ...@@ -339,7 +339,7 @@ of the file, 1 uses the current file position, and 2 uses the end of the file as
the reference point. *from_what* can be omitted and defaults to 0, using the the reference point. *from_what* can be omitted and defaults to 0, using the
beginning of the file as the reference point. :: beginning of the file as the reference point. ::
>>> f = open('/tmp/workfile', 'r+') >>> f = open('workfile', 'r+')
>>> f.write('0123456789abcdef') >>> f.write('0123456789abcdef')
>>> f.seek(5) # Go to the 6th byte in the file >>> f.seek(5) # Go to the 6th byte in the file
>>> f.read(1) >>> f.read(1)
...@@ -363,7 +363,7 @@ objects. This has the advantage that the file is properly closed after its ...@@ -363,7 +363,7 @@ objects. This has the advantage that the file is properly closed after its
suite finishes, even if an exception is raised on the way. It is also much suite finishes, even if an exception is raised on the way. It is also much
shorter than writing equivalent :keyword:`try`\ -\ :keyword:`finally` blocks:: shorter than writing equivalent :keyword:`try`\ -\ :keyword:`finally` blocks::
>>> with open('/tmp/workfile', 'r') as f: >>> with open('workfile', 'r') as f:
... read_data = f.read() ... read_data = f.read()
>>> f.closed >>> f.closed
True True
......
...@@ -1081,6 +1081,7 @@ Sue Williams ...@@ -1081,6 +1081,7 @@ Sue Williams
Gerald S. Williams Gerald S. Williams
Steven Willis Steven Willis
Frank Willison Frank Willison
Geoff Wilson
Greg V. Wilson Greg V. Wilson
J Derek Wilson J Derek Wilson
Paul Winkler Paul Winkler
......
...@@ -926,6 +926,10 @@ Tools/Demos ...@@ -926,6 +926,10 @@ Tools/Demos
Documentation Documentation
------------- -------------
- Issue #8890: Stop advertising an insecure practice by replacing uses
of the /tmp directory with better alternatives in the documentation.
Patch by Geoff Wilson.
- Issue #17203: add long option names to unittest discovery docs. - Issue #17203: add long option names to unittest discovery docs.
- Issue #13094: add "Why do lambdas defined in a loop with different values - Issue #13094: add "Why do lambdas defined in a loop with different values
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment