cs.app.pilfer.pilfer: Pilfer.session: may be supplied as a session name
1 files changed, 7 insertions(+), 2 deletions(-)

M lib/python/cs/app/pilfer/pilfer.py
M lib/python/cs/app/pilfer/pilfer.py +7 -2
@@ 219,7 219,7 @@ class Pilfer(HasThreadState, HasFSPath, 
   )
   content_cache: ContentCache = None
   # a session for storing cookies etc
-  session: PilferSession = None
+  session: str | PilferSession = None
   # for optional extra things hung on the Pilfer object
   state: NS = field(default_factory=NS)
   _diversion_tasks: dict = field(default_factory=dict)

          
@@ 227,6 227,7 @@ class Pilfer(HasThreadState, HasFSPath, 
   @uses_later
   def __post_init__(self, item=None, later: Later = None):
     self.url_opener.add_handler(HTTPBasicAuthHandler(NetrcHTTPPasswordMgr()))
+    # TODO: should this be in the PilferSession? find out how it is used
     self.url_opener.add_handler(HTTPCookieProcessor())
     if self.fspath is None:
       self.fspath = abspath(

          
@@ 238,8 239,12 @@ class Pilfer(HasThreadState, HasFSPath, 
       self.content_cache = ContentCache(
           expanduser(self.rc_map[None]['cache'] or self.pathto('cache'))
       )
+    # default session named '_'
     if self.session is None:
-      self.session = PilferSession(P=self, key='_')
+      self.session = '_'
+    # promote string to session named by the string
+    if isinstance(self.session, str):
+      self.session = PilferSession(P=self, key=self.session)
     ##self._lock = Lock()
     self._lock = RLock()