# Copyright 2014-2019 Brett Slatkin, Pearson Education Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Reproduce book environment
importrandom
random.seed(1234)
importlogging
frompprintimportpprint
fromsysimportstdoutasSTDOUT
# Write all output to a temporary directory
importatexit
importgc
importio
importos
importtempfile
TEST_DIR=tempfile.TemporaryDirectory()
atexit.register(TEST_DIR.cleanup)
# Make sure Windows processes exit cleanly
OLD_CWD=os.getcwd()
atexit.register(lambda: os.chdir(OLD_CWD))
os.chdir(TEST_DIR.name)
defclose_open_files():
everything=gc.get_objects()
forobjineverything:
ifisinstance(obj, io.IOBase):
obj.close()
atexit.register(close_open_files)
# Example 1
defindex_words(text):
result= []
iftext:
result.append(0)
forindex, letterinenumerate(text):
ifletter==' ':
result.append(index+1)
returnresult
# Example 2
address='Four score and seven years ago...'
address='Four score and seven years ago our fathers brought forth on this continent a new nation, conceived in liberty, and dedicated to the proposition that all men are created equal.'