--- /srv/rebuilderd/tmp/rebuilderdg2MSPf/inputs/python3-geneagrapher-core_0.1.3-1_all.deb +++ /srv/rebuilderd/tmp/rebuilderdg2MSPf/out/python3-geneagrapher-core_0.1.3-1_all.deb ├── file list │ @@ -1,3 +1,3 @@ │ -rw-r--r-- 0 0 0 4 2024-02-06 23:05:06.000000 debian-binary │ -rw-r--r-- 0 0 0 2056 2024-02-06 23:05:06.000000 control.tar.xz │ --rw-r--r-- 0 0 0 25424 2024-02-06 23:05:06.000000 data.tar.xz │ +-rw-r--r-- 0 0 0 25172 2024-02-06 23:05:06.000000 data.tar.xz ├── control.tar.xz │ ├── control.tar │ │ ├── ./control │ │ │ @@ -1,13 +1,13 @@ │ │ │ Package: python3-geneagrapher-core │ │ │ Source: geneagrapher-core │ │ │ Version: 0.1.3-1 │ │ │ Architecture: all │ │ │ Maintainer: Debian Python Team │ │ │ -Installed-Size: 210 │ │ │ +Installed-Size: 202 │ │ │ Depends: python3-aiodns, python3-aiohttp, python3-bs4 (>= 4.11.1), python3-bs4 (<< 5.0.0), python3-typeshed, python3:any │ │ │ Section: python │ │ │ Priority: optional │ │ │ Homepage: https://github.com/davidalber/geneagrapher-core │ │ │ Description: request and build graphs of records from the Math Genealogy Project │ │ │ Geneagrapher is a tool for extracting information from the │ │ │ Mathematics Genealogy Project to form a math family tree, where │ │ ├── ./md5sums │ │ │ ├── ./md5sums │ │ │ │┄ Files differ ├── data.tar.xz │ ├── data.tar │ │ ├── file list │ │ │ @@ -27,23 +27,23 @@ │ │ │ -rw-r--r-- 0 root (0) root (0) 328 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/_static/documentation_options.js │ │ │ -rw-r--r-- 0 root (0) root (0) 286 2023-12-19 10:34:25.000000 ./usr/share/doc/python3-geneagrapher-core/_static/file.png │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/_static/fonts/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/_static/js/ │ │ │ -rw-r--r-- 0 root (0) root (0) 90 2023-12-19 10:34:25.000000 ./usr/share/doc/python3-geneagrapher-core/_static/minus.png │ │ │ -rw-r--r-- 0 root (0) root (0) 90 2023-12-19 10:34:25.000000 ./usr/share/doc/python3-geneagrapher-core/_static/plus.png │ │ │ -rw-r--r-- 0 root (0) root (0) 4902 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/_static/pygments.css │ │ │ --rw-r--r-- 0 root (0) root (0) 35797 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/build-graph.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 32027 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/build-graph.html │ │ │ -rw-r--r-- 0 root (0) root (0) 390 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/changelog.Debian.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 778 2024-02-06 18:19:40.000000 ./usr/share/doc/python3-geneagrapher-core/changelog.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 1444 2024-02-06 22:50:22.000000 ./usr/share/doc/python3-geneagrapher-core/copyright │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/examples/ │ │ │ -rw-r--r-- 0 root (0) root (0) 2804 2024-02-06 18:19:40.000000 ./usr/share/doc/python3-geneagrapher-core/examples/cache_driver.py │ │ │ -rw-r--r-- 0 root (0) root (0) 10336 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/genindex.html │ │ │ --rw-r--r-- 0 root (0) root (0) 29746 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/get-one-record.html │ │ │ --rw-r--r-- 0 root (0) root (0) 6419 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/index.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 25538 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/get-one-record.html │ │ │ +-rw-r--r-- 0 root (0) root (0) 6290 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/index.html │ │ │ -rw-r--r-- 0 root (0) root (0) 544 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/objects.inv │ │ │ -rw-r--r-- 0 root (0) root (0) 3826 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/search.html │ │ │ -rw-r--r-- 0 root (0) root (0) 9038 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/searchindex.js │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-06 23:05:06.000000 ./usr/share/doc-base/ │ │ │ -rw-r--r-- 0 root (0) root (0) 397 2024-02-06 22:50:22.000000 ./usr/share/doc-base/python3-geneagrapher-core.geneagrapher-core │ │ │ lrwxrwxrwx 0 root (0) root (0) 0 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/_static/css/badge_only.css -> ../../../../sphinx_rtd_theme/static/css/badge_only.css │ │ │ lrwxrwxrwx 0 root (0) root (0) 0 2024-02-06 23:05:06.000000 ./usr/share/doc/python3-geneagrapher-core/_static/css/theme.css -> ../../../../sphinx_rtd_theme/static/css/theme.css │ │ ├── ./usr/share/doc/python3-geneagrapher-core/build-graph.html │ │ │ @@ -111,21 +111,21 @@ │ │ │
│ │ │ async geneagrapher_core.traverse.build_graph(start_items, *, http_semaphore=None, max_records=None, user_agent=None, cache=None, record_callback=None, report_callback=None)
│ │ │

Build a complete geneagraph using the start_nodes as the │ │ │ graph’s leaf nodes.

│ │ │
│ │ │
Parameters:
│ │ │
    │ │ │ -
  • start_items (List[TraverseItem]) – a list of nodes and direction from which to traverse from them

  • │ │ │ -
  • http_semaphore (Optional[Semaphore]) – a semaphore to limit HTTP request concurrency

  • │ │ │ -
  • max_records (Optional[int]) – the maximum number of records to include in the built graph

  • │ │ │ -
  • user_agent (Optional[str]) – a custom user agent string to use in HTTP requests

  • │ │ │ -
  • cache (Optional[Cache]) – a cache object for getting and storing results

  • │ │ │ -
  • record_callback (Optional[Callable[[TaskGroup, Record], Awaitable[None]]]) – callback function called with record data as it is retrieved

  • │ │ │ -
  • report_callback (Optional[Callable[[TaskGroup, int, int, int], Awaitable[None]]]) – callback function called to report graph-building progress

  • │ │ │ +
  • start_items (List[TraverseItem]) – a list of nodes and direction from which to traverse from them

  • │ │ │ +
  • http_semaphore (Optional[Semaphore]) – a semaphore to limit HTTP request concurrency

  • │ │ │ +
  • max_records (Optional[int]) – the maximum number of records to include in the built graph

  • │ │ │ +
  • user_agent (Optional[str]) – a custom user agent string to use in HTTP requests

  • │ │ │ +
  • cache (Optional[Cache]) – a cache object for getting and storing results

  • │ │ │ +
  • record_callback (Optional[Callable[[TaskGroup, Record], Awaitable[None]]]) – callback function called with record data as it is retrieved

  • │ │ │ +
  • report_callback (Optional[Callable[[TaskGroup, int, int, int], Awaitable[None]]]) – callback function called to report graph-building progress

  • │ │ │
│ │ │
│ │ │
Return type:
│ │ │

Geneagraph

│ │ │
│ │ │
│ │ │

Example:

│ │ │ @@ -146,15 +146,15 @@ │ │ │ │ │ │
│ │ │

Callbacks

│ │ │ @@ -207,15 +207,15 @@ │ │ │

Report callback

│ │ │

The build_graph function optionally takes a │ │ │ reporting callback function. If provided, this function will be called │ │ │ when new records are added to the traversal plan or when records have │ │ │ been retrieved.

│ │ │

The report_callback function is called with:

│ │ │
    │ │ │ -
  • An asyncio.TaskGroup, which is useful if you want to do │ │ │ +

  • An asyncio.TaskGroup, which is useful if you want to do │ │ │ something expensive in the reporting callback and do not want to │ │ │ block the graph-building path.

  • │ │ │
  • Three integers that report:

    │ │ │
      │ │ │
    1. The number of known records yet to be retrieved.

    2. │ │ │
    3. The number of records in the process of being retrieved.

    4. │ │ │
    5. The number of records that have been retrieved.

    6. │ │ │ @@ -251,15 +251,15 @@ │ │ │

      Record callback

      │ │ │

      The build_graph function optionally takes a │ │ │ record callback function. If provided, this function will be called │ │ │ when a record has been retrieved. The callback function receives the │ │ │ record data as an argument.

      │ │ │

      The record_callback function is called with:

      │ │ │
        │ │ │ -
      • An asyncio.TaskGroup, which is useful if you want to do │ │ │ +

      • An asyncio.TaskGroup, which is useful if you want to do │ │ │ something expensive in the reporting callback and do not want to │ │ │ block the graph-building path.

      • │ │ │
      • A Record object │ │ │ containing the record data.

      • │ │ │
      │ │ │
      │ │ │

      Examples

      │ │ │ ├── html2text {} │ │ │ │ @@ -28,29 +28,29 @@ │ │ │ │ Get all records in a graph using the _b_u_i_l_d___g_r_a_p_h function. │ │ │ │ aassyynncc geneagrapher_core.traverse.build_graph(ssttaarrtt__iitteemmss, **, │ │ │ │ hhttttpp__sseemmaapphhoorree==NNoonnee, mmaaxx__rreeccoorrddss==NNoonnee, uusseerr__aaggeenntt==NNoonnee, ccaacchhee==NNoonnee, │ │ │ │ rreeccoorrdd__ccaallllbbaacckk==NNoonnee, rreeppoorrtt__ccaallllbbaacckk==NNoonnee)_ │ │ │ │ Build a complete geneagraph using the start_nodes as the graph’s leaf │ │ │ │ nodes. │ │ │ │ Parameters: │ │ │ │ - * ssttaarrtt__iitteemmss (_L_i_s_t[_T_r_a_v_e_r_s_e_I_t_e_m]) – a list of nodes and │ │ │ │ + * ssttaarrtt__iitteemmss (List[_T_r_a_v_e_r_s_e_I_t_e_m]) – a list of nodes and │ │ │ │ direction from which to traverse from them │ │ │ │ - * hhttttpp__sseemmaapphhoorree (_O_p_t_i_o_n_a_l[Semaphore]) – a semaphore to limit │ │ │ │ + * hhttttpp__sseemmaapphhoorree (Optional[Semaphore]) – a semaphore to limit │ │ │ │ HTTP request concurrency │ │ │ │ - * mmaaxx__rreeccoorrddss (_O_p_t_i_o_n_a_l[_i_n_t]) – the maximum number of records │ │ │ │ + * mmaaxx__rreeccoorrddss (Optional[int]) – the maximum number of records │ │ │ │ to include in the built graph │ │ │ │ - * uusseerr__aaggeenntt (_O_p_t_i_o_n_a_l[_s_t_r]) – a custom user agent string to │ │ │ │ + * uusseerr__aaggeenntt (Optional[str]) – a custom user agent string to │ │ │ │ use in HTTP requests │ │ │ │ - * ccaacchhee (_O_p_t_i_o_n_a_l[_C_a_c_h_e]) – a cache object for getting and │ │ │ │ + * ccaacchhee (Optional[_C_a_c_h_e]) – a cache object for getting and │ │ │ │ storing results │ │ │ │ - * rreeccoorrdd__ccaallllbbaacckk (_O_p_t_i_o_n_a_l[_C_a_l_l_a_b_l_e[[TaskGroup, _R_e_c_o_r_d], │ │ │ │ - _A_w_a_i_t_a_b_l_e[_N_o_n_e]]]) – callback function called with record │ │ │ │ + * rreeccoorrdd__ccaallllbbaacckk (Optional[Callable[[TaskGroup, _R_e_c_o_r_d], │ │ │ │ + Awaitable[None]]]) – callback function called with record │ │ │ │ data as it is retrieved │ │ │ │ - * rreeppoorrtt__ccaallllbbaacckk (_O_p_t_i_o_n_a_l[_C_a_l_l_a_b_l_e[[TaskGroup, _i_n_t, _i_n_t, │ │ │ │ - _i_n_t], _A_w_a_i_t_a_b_l_e[_N_o_n_e]]]) – callback function called to report │ │ │ │ + * rreeppoorrtt__ccaallllbbaacckk (Optional[Callable[[TaskGroup, int, int, │ │ │ │ + int], Awaitable[None]]]) – callback function called to report │ │ │ │ graph-building progress │ │ │ │ Return type: │ │ │ │ _G_e_n_e_a_g_r_a_p_h │ │ │ │ EExxaammppllee: │ │ │ │ # Build a graph that contains Carl Friedrich Gauß (18231), his advisor │ │ │ │ tree, │ │ │ │ # Johann Friedrich Pfaff (18230), his advisor tree, and his descendant │ │ │ │ @@ -61,34 +61,34 @@ │ │ │ │ RecordId(18230), │ │ │ │ TraverseDirection.ADVISORS | TraverseDirection.DESCENDANTS │ │ │ │ ), │ │ │ │ ] │ │ │ │ graph = await build_graph(start_items) │ │ │ │ ********** RReellaatteedd ttyyppeess_? ********** │ │ │ │ ccllaassss geneagrapher_core.traverse.TraverseItem(iidd, ttrraavveerrssee__ddiirreeccttiioonn)_ │ │ │ │ - id:: _NN_ee_ww_TT_yy_pp_ee((RReeccoorrddIIdd,, _ii_nn_tt))_ │ │ │ │ + id:: NNeewwTTyyppee((RReeccoorrddIIdd,, iinntt))_ │ │ │ │ Alias for field number 0 │ │ │ │ traverse_direction:: _TT_rr_aa_vv_ee_rr_ss_ee_DD_ii_rr_ee_cc_tt_ii_oo_nn_ │ │ │ │ Alias for field number 1 │ │ │ │ ccllaassss geneagrapher_core.traverse.TraverseDirection_ │ │ │ │ A flag that specifies the traversal direction for a node. This is a │ │ │ │ - _e_n_u_m_._F_l_a_g, so attributes can be combined (e.g., ADVISORS | DESCENDANTS). │ │ │ │ + enum.Flag, so attributes can be combined (e.g., ADVISORS | DESCENDANTS). │ │ │ │ ADVISORS == 11_ │ │ │ │ DESCENDANTS == 22_ │ │ │ │ ccllaassss geneagrapher_core.traverse.Geneagraph_ │ │ │ │ - start_nodes:: _LL_ii_ss_tt[[_NN_ee_ww_TT_yy_pp_ee((RReeccoorrddIIdd,, _ii_nn_tt))]]_ │ │ │ │ - nodes:: _dd_ii_cc_tt[[_NN_ee_ww_TT_yy_pp_ee((RReeccoorrddIIdd,, _ii_nn_tt)),, _RR_ee_cc_oo_rr_dd]]_ │ │ │ │ - status:: _LL_ii_tt_ee_rr_aa_ll[[''ccoommpplleettee'',, ''ttrruunnccaatteedd'']]_ │ │ │ │ + start_nodes:: LLiisstt[[NNeewwTTyyppee((RReeccoorrddIIdd,, iinntt))]]_ │ │ │ │ + nodes:: ddiicctt[[NNeewwTTyyppee((RReeccoorrddIIdd,, iinntt)),, _RR_ee_cc_oo_rr_dd]]_ │ │ │ │ + status:: LLiitteerraall[[''ccoommpplleettee'',, ''ttrruunnccaatteedd'']]_ │ │ │ │ ********** CCaallllbbaacckkss_? ********** │ │ │ │ ******** RReeppoorrtt ccaallllbbaacckk_? ******** │ │ │ │ The _b_u_i_l_d___g_r_a_p_h function optionally takes a reporting callback function. If │ │ │ │ provided, this function will be called when new records are added to the │ │ │ │ traversal plan or when records have been retrieved. │ │ │ │ The report_callback function is called with: │ │ │ │ - * An _a_s_y_n_c_i_o_._T_a_s_k_G_r_o_u_p, which is useful if you want to do something │ │ │ │ + * An asyncio.TaskGroup, which is useful if you want to do something │ │ │ │ expensive in the reporting callback and do not want to block the graph- │ │ │ │ building path. │ │ │ │ * Three integers that report: │ │ │ │ 1. The number of known records yet to be retrieved. │ │ │ │ 2. The number of records in the process of being retrieved. │ │ │ │ 3. The number of records that have been retrieved. │ │ │ │ ****** EExxaammpplleess_? ****** │ │ │ │ @@ -110,15 +110,15 @@ │ │ │ │ ) -> None: │ │ │ │ tg.create_task(do_expensive_network_request(to_fetch, fetching, fetched)) │ │ │ │ ******** RReeccoorrdd ccaallllbbaacckk_? ******** │ │ │ │ The _b_u_i_l_d___g_r_a_p_h function optionally takes a record callback function. If │ │ │ │ provided, this function will be called when a record has been retrieved. The │ │ │ │ callback function receives the record data as an argument. │ │ │ │ The record_callback function is called with: │ │ │ │ - * An _a_s_y_n_c_i_o_._T_a_s_k_G_r_o_u_p, which is useful if you want to do something │ │ │ │ + * An asyncio.TaskGroup, which is useful if you want to do something │ │ │ │ expensive in the reporting callback and do not want to block the graph- │ │ │ │ building path. │ │ │ │ * A _R_e_c_o_r_d object containing the record data. │ │ │ │ ****** EExxaammpplleess_? ****** │ │ │ │ Here’s an example of a simple, blocking callback: │ │ │ │ async def got_record(tg: asyncio.TaskGroup, record: Record) -> None: │ │ │ │ print(record) │ │ ├── ./usr/share/doc/python3-geneagrapher-core/get-one-record.html │ │ │ @@ -97,131 +97,131 @@ │ │ │
      │ │ │ │ │ │
      │ │ │

      Get a Single Record

      │ │ │

      To get a single record, use the get_record │ │ │ function. If you are requesting many records, consider using │ │ │ get_record_inner, which allows you to reuse │ │ │ -an aiohttp.ClientSession and optionally pass a │ │ │ -asyncio.Semaphore to cap maximum HTTP request concurrency.

      │ │ │ +an aiohttp.ClientSession and optionally pass a │ │ │ +asyncio.Semaphore to cap maximum HTTP request concurrency.

      │ │ │
      │ │ │
      │ │ │ async geneagrapher_core.record.get_record(record_id, cache=None)
      │ │ │

      Get a single record. This is meant to be called for one-off │ │ │ requests. If the calling code is planning to get several records │ │ │ during its lifetime, it should instantiate a │ │ │ -aiohttp.ClientSession object as │ │ │ +aiohttp.ClientSession object as │ │ │ ClientSession("https://www.mathgenealogy.org") and call │ │ │ get_record_inner instead.

      │ │ │
      │ │ │
      Parameters:
      │ │ │
        │ │ │ -
      • record_id (NewType(RecordId, int)) – Math Genealogy Project ID of the record to retrieve

      • │ │ │ -
      • cache (Optional[Cache]) – a cache object for getting and storing results

      • │ │ │ +
      • record_id (NewType(RecordId, int)) – Math Genealogy Project ID of the record to retrieve

      • │ │ │ +
      • cache (Optional[Cache]) – a cache object for getting and storing results

      • │ │ │
      │ │ │
      │ │ │
      Return type:
      │ │ │ -

      Optional[Record]

      │ │ │ +

      Optional[Record]

      │ │ │
      │ │ │
      │ │ │

      Example:

      │ │ │
      record = await get_record(RecordId(18231))
      │ │ │  
      │ │ │
      │ │ │
      │ │ │ │ │ │
      │ │ │
      │ │ │ async geneagrapher_core.record.get_record_inner(record_id, client, http_semaphore=None, cache=None)
      │ │ │

      Get a single record using the provided │ │ │ -aiohttp.ClientSession and asyncio.Semaphore │ │ │ +aiohttp.ClientSession and asyncio.Semaphore │ │ │ objects. This is useful when making several record requests.

      │ │ │
      │ │ │
      Parameters:
      │ │ │
        │ │ │ -
      • record_id (NewType(RecordId, int)) – Math Genealogy Project ID of the record to retrieve

      • │ │ │ +
      • record_id (NewType(RecordId, int)) – Math Genealogy Project ID of the record to retrieve

      • │ │ │
      • client (ClientSession) – a client session object with which to make HTTP requests

      • │ │ │ -
      • http_semaphore (Optional[Semaphore]) – a semaphore to limit HTTP request concurrency

      • │ │ │ -
      • cache (Optional[Cache]) – a cache object for getting and storing results

      • │ │ │ +
      • http_semaphore (Optional[Semaphore]) – a semaphore to limit HTTP request concurrency

      • │ │ │ +
      • cache (Optional[Cache]) – a cache object for getting and storing results

      • │ │ │
      │ │ │
      │ │ │
      Return type:
      │ │ │ -

      Optional[Record]

      │ │ │ +

      Optional[Record]

      │ │ │
      │ │ │
      │ │ │
      │ │ │ │ │ │ │ │ │
      │ │ │

      Overview

      │ │ │ -

      This package uses asyncio to concurrently retrieve records. In │ │ │ +

      This package uses asyncio to concurrently retrieve records. In │ │ │ order to use the package, your code will need to call it from within │ │ │ an event loop.

      │ │ │

      The package provides two main features:

      │ │ │
        │ │ │
      • Functions to get single records. These functions are described in │ │ │ Get a Single Record.

      • │ │ │
      • A function that will return all data for a tree that begins with │ │ │ ├── html2text {} │ │ │ │ @@ -13,15 +13,15 @@ │ │ │ │ advisors and their students. │ │ │ │ This package contains the core data-grabbing and manipulation functions needed │ │ │ │ to build a math family tree. The functionality here is low level and intended │ │ │ │ to support the development of other tools. If you just want to build a │ │ │ │ geneagraph, take a look at _G_e_n_e_a_g_r_a_p_h_e_r. If you want to get mathematician │ │ │ │ records and use them in code, then this project may be useful to you. │ │ │ │ ********** OOvveerrvviieeww_? ********** │ │ │ │ -This package uses _a_s_y_n_c_i_o to concurrently retrieve records. In order to use the │ │ │ │ +This package uses asyncio to concurrently retrieve records. In order to use the │ │ │ │ package, your code will need to call it from within an event loop. │ │ │ │ The package provides two main features: │ │ │ │ * Functions to get single records. These functions are described in _G_e_t_ _a │ │ │ │ _S_i_n_g_l_e_ _R_e_c_o_r_d. │ │ │ │ * A function that will return all data for a tree that begins with │ │ │ │ specified records. This function is described in _G_e_t_t_i_n_g_ _A_l_l_ _R_e_c_o_r_d_s_ _i_n_ _a │ │ │ │ _G_r_a_p_h.