@@ -196,11 +196,13 @@ def _load_package_modules(
196
196
return modules_by_namespace
197
197
198
198
199
- def _construct_doc (pkg : str , members_by_namespace : Dict [str , ModuleMembers ]) -> str :
199
+ def _construct_doc (
200
+ package_namespace : str , members_by_namespace : Dict [str , ModuleMembers ]
201
+ ) -> str :
200
202
"""Construct the contents of the reference.rst file for the given package.
201
203
202
204
Args:
203
- pkg : The package name
205
+ package_namespace : The package top level namespace
204
206
members_by_namespace: The members of the package, dict organized by top level
205
207
module contains a list of classes and functions
206
208
inside of the top level namespace.
@@ -210,7 +212,7 @@ def _construct_doc(pkg: str, members_by_namespace: Dict[str, ModuleMembers]) ->
210
212
"""
211
213
full_doc = f"""\
212
214
=======================
213
- ``{ pkg } `` API Reference
215
+ ``{ package_namespace } `` API Reference
214
216
=======================
215
217
216
218
"""
@@ -222,13 +224,13 @@ def _construct_doc(pkg: str, members_by_namespace: Dict[str, ModuleMembers]) ->
222
224
functions = _members ["functions" ]
223
225
if not (classes or functions ):
224
226
continue
225
- section = f":mod:`{ pkg } .{ module } `"
227
+ section = f":mod:`{ package_namespace } .{ module } `"
226
228
underline = "=" * (len (section ) + 1 )
227
229
full_doc += f"""\
228
230
{ section }
229
231
{ underline }
230
232
231
- .. automodule:: { pkg } .{ module }
233
+ .. automodule:: { package_namespace } .{ module }
232
234
:no-members:
233
235
:no-inherited-members:
234
236
@@ -238,7 +240,7 @@ def _construct_doc(pkg: str, members_by_namespace: Dict[str, ModuleMembers]) ->
238
240
full_doc += f"""\
239
241
Classes
240
242
--------------
241
- .. currentmodule:: { pkg }
243
+ .. currentmodule:: { package_namespace }
242
244
243
245
.. autosummary::
244
246
:toctree: { module }
@@ -270,7 +272,7 @@ def _construct_doc(pkg: str, members_by_namespace: Dict[str, ModuleMembers]) ->
270
272
full_doc += f"""\
271
273
Functions
272
274
--------------
273
- .. currentmodule:: { pkg }
275
+ .. currentmodule:: { package_namespace }
274
276
275
277
.. autosummary::
276
278
:toctree: { module }
@@ -282,57 +284,57 @@ def _construct_doc(pkg: str, members_by_namespace: Dict[str, ModuleMembers]) ->
282
284
return full_doc
283
285
284
286
285
- def _document_langchain_experimental () -> None :
286
- """Document the langchain_experimental package."""
287
- # Generate experimental_api_reference.rst
288
- exp_members = _load_package_modules (EXP_DIR )
289
- exp_doc = ".. _experimental_api_reference:\n \n " + _construct_doc (
290
- "langchain_experimental" , exp_members
291
- )
292
- with open (EXP_WRITE_FILE , "w" ) as f :
293
- f .write (exp_doc )
287
+ def _build_rst_file (package_name : str = "langchain" ) -> None :
288
+ """Create a rst file for building of documentation.
294
289
290
+ Args:
291
+ package_name: Can be either "langchain" or "core" or "experimental".
292
+ """
293
+ package_members = _load_package_modules (_package_dir (package_name ))
294
+ with open (_out_file_path (package_name ), "w" ) as f :
295
+ f .write (
296
+ _doc_first_line (package_name )
297
+ + _construct_doc (package_namespace [package_name ], package_members )
298
+ )
295
299
296
- def _document_langchain_core () -> None :
297
- """Document the langchain_core package."""
298
- # Generate core_api_reference.rst
299
- core_members = _load_package_modules (CORE_DIR )
300
- core_doc = ".. _core_api_reference:\n \n " + _construct_doc (
301
- "langchain_core" , core_members
302
- )
303
- with open (CORE_WRITE_FILE , "w" ) as f :
304
- f .write (core_doc )
305
-
306
-
307
- def _document_langchain () -> None :
308
- """Document the main langchain package."""
309
- # load top level module members
310
- lc_members = _load_package_modules (PKG_DIR )
311
-
312
- # Add additional packages
313
- tools = _load_package_modules (PKG_DIR , "tools" )
314
- agents = _load_package_modules (PKG_DIR , "agents" )
315
- schema = _load_package_modules (PKG_DIR , "schema" )
316
-
317
- lc_members .update (
318
- {
319
- "agents.output_parsers" : agents ["output_parsers" ],
320
- "agents.format_scratchpad" : agents ["format_scratchpad" ],
321
- "tools.render" : tools ["render" ],
322
- }
323
- )
324
300
325
- lc_doc = ".. _api_reference:\n \n " + _construct_doc ("langchain" , lc_members )
301
+ package_namespace = {
302
+ "langchain" : "langchain" ,
303
+ "experimental" : "langchain_experimental" ,
304
+ "core" : "langchain_core" ,
305
+ }
306
+
307
+
308
+ def _package_dir (package_name : str = "langchain" ) -> Path :
309
+ """Return the path to the directory containing the documentation."""
310
+ return ROOT_DIR / "libs" / package_name / package_namespace [package_name ]
311
+
312
+
313
+ def _out_file_path (package_name : str = "langchain" ) -> Path :
314
+ """Return the path to the file containing the documentation."""
315
+ name_prefix = {
316
+ "langchain" : "" ,
317
+ "experimental" : "experimental_" ,
318
+ "core" : "core_" ,
319
+ }
320
+ return HERE / f"{ name_prefix [package_name ]} api_reference.rst"
321
+
326
322
327
- with open (WRITE_FILE , "w" ) as f :
328
- f .write (lc_doc )
323
+ def _doc_first_line (package_name : str = "langchain" ) -> str :
324
+ """Return the path to the file containing the documentation."""
325
+ prefix = {
326
+ "langchain" : "" ,
327
+ "experimental" : "experimental" ,
328
+ "core" : "core" ,
329
+ }
330
+ return f".. { prefix [package_name ]} _api_reference:\n \n "
329
331
330
332
331
333
def main () -> None :
332
- """Generate the reference .rst file for each package."""
333
- _document_langchain ( )
334
- _document_langchain_experimental ( )
335
- _document_langchain_core ( )
334
+ """Generate the api_reference .rst file for each package."""
335
+ _build_rst_file ( package_name = "core" )
336
+ _build_rst_file ( package_name = "langchain" )
337
+ _build_rst_file ( package_name = "experimental" )
336
338
337
339
338
340
if __name__ == "__main__" :
0 commit comments