[Python-checkins] CVS: python/dist/src/Lib site.py,1.31,1.32

Fred L. Drake fdrake@users.sourceforge.net
Fri, 20 Jul 2001 13:06:19 -0700


Update of /cvsroot/python/python/dist/src/Lib
In directory usw-pr-cvs1:/tmp/cvs-serv25448

Modified Files:
	site.py 
Log Message:

Make the add*() helper functions more robust for use after intialization
is complete:  recompute _dirs_in_sys_path each time these functions are
entered after module initialization is complete, and reset before 
returning to user code.

This closes SF patch #442983.


Index: site.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/site.py,v
retrieving revision 1.31
retrieving revision 1.32
diff -C2 -r1.31 -r1.32
*** site.py	2001/07/20 14:57:12	1.31
--- site.py	2001/07/20 20:06:17	1.32
***************
*** 78,82 ****
  # only absolute pathnames, even if we're running from the build directory.
  L = []
! dirs_in_sys_path = {}
  for dir in sys.path:
      # Filter out paths that don't exist, but leave in the empty string
--- 78,82 ----
  # only absolute pathnames, even if we're running from the build directory.
  L = []
! _dirs_in_sys_path = {}
  for dir in sys.path:
      # Filter out paths that don't exist, but leave in the empty string
***************
*** 85,91 ****
          continue
      dir, dircase = makepath(dir)
!     if not dirs_in_sys_path.has_key(dircase):
          L.append(dir)
!         dirs_in_sys_path[dircase] = 1
  sys.path[:] = L
  del dir, L
--- 85,91 ----
          continue
      dir, dircase = makepath(dir)
!     if not _dirs_in_sys_path.has_key(dircase):
          L.append(dir)
!         _dirs_in_sys_path[dircase] = 1
  sys.path[:] = L
  del dir, L
***************
*** 100,106 ****
      del get_platform, s
  
  def addsitedir(sitedir):
      sitedir, sitedircase = makepath(sitedir)
!     if not dirs_in_sys_path.has_key(sitedircase):
          sys.path.append(sitedir)        # Add path component
      try:
--- 100,121 ----
      del get_platform, s
  
+ def _init_pathinfo():
+     global _dirs_in_sys_path
+     _dirs_in_sys_path = d = {}
+     for dir in sys.path:
+         if dir and not os.path.isdir(dir):
+             continue
+         dir, dircase = makepath(dir)
+         d[dircase] = 1
+ 
  def addsitedir(sitedir):
+     global _dirs_in_sys_path
+     if _dirs_in_sys_path is None:
+         _init_pathinfo()
+         reset = 1
+     else:
+         reset = 0
      sitedir, sitedircase = makepath(sitedir)
!     if not _dirs_in_sys_path.has_key(sitedircase):
          sys.path.append(sitedir)        # Add path component
      try:
***************
*** 112,117 ****
--- 127,140 ----
          if name[-4:] == endsep + "pth":
              addpackage(sitedir, name)
+     if reset:
+         _dirs_in_sys_path = None
  
  def addpackage(sitedir, name):
+     global _dirs_in_sys_path
+     if _dirs_in_sys_path is None:
+         _init_pathinfo()
+         reset = 1
+     else:
+         reset = 0
      fullname = os.path.join(sitedir, name)
      try:
***************
*** 131,137 ****
              dir = dir[:-1]
          dir, dircase = makepath(sitedir, dir)
!         if not dirs_in_sys_path.has_key(dircase) and os.path.exists(dir):
              sys.path.append(dir)
!             dirs_in_sys_path[dircase] = 1
  
  prefixes = [sys.prefix]
--- 154,162 ----
              dir = dir[:-1]
          dir, dircase = makepath(sitedir, dir)
!         if not _dirs_in_sys_path.has_key(dircase) and os.path.exists(dir):
              sys.path.append(dir)
!             _dirs_in_sys_path[dircase] = 1
!     if reset:
!         _dirs_in_sys_path = None
  
  prefixes = [sys.prefix]
***************
*** 151,154 ****
--- 176,181 ----
              if os.path.isdir(sitedir):
                  addsitedir(sitedir)
+ 
+ _dirs_in_sys_path = None