107107# [[[end]]]
108108
109109import codecs
110- from typing import Iterable
110+ from pathlib import Path
111+ from typing import Iterable , Union , Optional , TextIO
111112
112- from .node import parse_lines , OrgNode # todo basenode??
113+
114+ from .node import parse_lines , OrgEnv , OrgNode # todo basenode??
113115from .utils .py3compat import basestring
114116
115117__author__ = 'Takafumi Arakaki, Dmitrii Gerasimov'
116118__license__ = 'BSD License'
117119__all__ = ["load" , "loads" , "loadi" ]
118120
119121
120- def load (path , env = None ):
122+ def load (path : Union [ str , Path , TextIO ], env : Optional [ OrgEnv ] = None ) -> OrgNode :
121123 """
122124 Load org-mode document from a file.
123125
@@ -127,18 +129,18 @@ def load(path, env=None):
127129 :rtype: :class:`orgparse.node.OrgRootNode`
128130
129131 """
130- path = str ( path ) # in case of pathlib.Path
131- if isinstance (path , basestring ):
132- orgfile = codecs .open (path , encoding = 'utf8' )
133- filename = path
132+ orgfile : TextIO
133+ if isinstance (path , ( str , Path ) ):
134+ orgfile = codecs .open (str ( path ) , encoding = 'utf8' )
135+ filename = str ( path )
134136 else :
135137 orgfile = path
136138 filename = path .name if hasattr (path , 'name' ) else '<file-like>'
137139 return loadi ((l .rstrip ('\n ' ) for l in orgfile .readlines ()),
138140 filename = filename , env = env )
139141
140142
141- def loads (string : str , filename = '<string>' , env = None ) -> OrgNode :
143+ def loads (string : str , filename : str = '<string>' , env : Optional [ OrgEnv ] = None ) -> OrgNode :
142144 """
143145 Load org-mode document from a string.
144146
@@ -148,7 +150,7 @@ def loads(string: str, filename='<string>', env=None) -> OrgNode:
148150 return loadi (string .splitlines (), filename = filename , env = env )
149151
150152
151- def loadi (lines : Iterable [str ], filename = '<lines>' , env = None ) -> OrgNode :
153+ def loadi (lines : Iterable [str ], filename : str = '<lines>' , env : Optional [ OrgEnv ] = None ) -> OrgNode :
152154 """
153155 Load org-mode document from an iterative object.
154156
0 commit comments