From 863f3e3211749cf0a8c19ad1ab9b8b63ba4dbf77 Mon Sep 17 00:00:00 2001 From: Dirk Roorda Date: Wed, 8 May 2024 14:35:56 +0100 Subject: [PATCH] docs update --- index.js | 22 +- tf/about/annotate.html | 2 +- tf/about/annotateBrowser.html | 2 +- tf/about/apps.html | 2 +- tf/about/background.html | 2 +- tf/about/browser.html | 2 +- tf/about/clientmanual.html | 2 +- tf/about/code.html | 2 +- tf/about/corpora.html | 2 +- tf/about/datamodel.html | 2 +- tf/about/datasharing.html | 2 +- tf/about/displaydesign.html | 2 +- tf/about/faq.html | 2 +- tf/about/fileformats.html | 2 +- tf/about/index.html | 2 +- tf/about/install.html | 2 +- tf/about/manual.html | 2 +- tf/about/optimizations.html | 2 +- tf/about/releases.html | 19 +- tf/about/releasesold.html | 2 +- tf/about/searchdesign.html | 2 +- tf/about/searchusage.html | 2 +- tf/about/tests.html | 2 +- tf/about/use.html | 2 +- tf/about/usefunc.html | 2 +- tf/about/variants.html | 2 +- tf/about/volumes.html | 2 +- tf/advanced/annotate.html | 6 +- tf/advanced/app.html | 18 +- tf/advanced/condense.html | 6 +- tf/advanced/data.html | 18 +- tf/advanced/display.html | 32 +- tf/advanced/find.html | 8 +- tf/advanced/helpers.html | 56 +-- tf/advanced/highlight.html | 10 +- tf/advanced/index.html | 2 +- tf/advanced/interchange.html | 4 +- tf/advanced/links.html | 16 +- tf/advanced/options.html | 22 +- tf/advanced/render.html | 4 +- tf/advanced/repo.html | 108 +++--- tf/advanced/search.html | 12 +- tf/advanced/sections.html | 10 +- tf/advanced/settings.html | 36 +- tf/advanced/tables.html | 8 +- tf/advanced/text.html | 8 +- tf/advanced/unravel.html | 14 +- tf/advanced/volumes.html | 10 +- tf/advanced/zipdata.html | 16 +- tf/app.html | 4 +- tf/browser/command.html | 10 +- tf/browser/html.html | 40 +- tf/browser/index.html | 2 +- tf/browser/kernel.html | 4 +- tf/browser/ner/annotate.html | 8 +- tf/browser/ner/corpus.html | 4 +- tf/browser/ner/data.html | 26 +- tf/browser/ner/form.html | 20 +- tf/browser/ner/fragments.html | 38 +- tf/browser/ner/helpers.html | 22 +- tf/browser/ner/match.html | 6 +- tf/browser/ner/ner.html | 12 +- tf/browser/ner/request.html | 12 +- tf/browser/ner/serve.html | 26 +- tf/browser/ner/sets.html | 16 +- tf/browser/ner/settings.html | 6 +- tf/browser/ner/show.html | 10 +- tf/browser/ner/web.html | 4 +- tf/browser/serve.html | 14 +- tf/browser/servelib.html | 12 +- tf/browser/start.html | 8 +- tf/browser/web.html | 12 +- tf/browser/wrap.html | 16 +- tf/capable.html | 18 +- tf/cheatsheet.html | 2 +- tf/clean.html | 8 +- tf/client/index.html | 2 +- tf/client/make/build.html | 68 ++-- tf/client/make/gh.html | 6 +- tf/client/make/help.html | 2 +- tf/client/make/index.html | 2 +- tf/convert/addnlp.html | 20 +- tf/convert/app/app.html | 6 +- tf/convert/helpers.html | 18 +- tf/convert/index.html | 2 +- tf/convert/makewatm.html | 673 ++++++++++++++++++---------------- tf/convert/mql.html | 20 +- tf/convert/pagexml.html | 32 +- tf/convert/pandas.html | 4 +- tf/convert/recorder.html | 24 +- tf/convert/tei.html | 34 +- tf/convert/tf.html | 4 +- tf/convert/variants.html | 20 +- tf/convert/walker.html | 40 +- tf/convert/watm.html | 36 +- tf/convert/xml.html | 24 +- tf/convert/xmlCustom.html | 6 +- tf/core/api.html | 34 +- tf/core/command.html | 4 +- tf/core/computed.html | 6 +- tf/core/data.html | 12 +- tf/core/edgefeature.html | 16 +- tf/core/fabric.html | 14 +- tf/core/files.html | 78 ++-- tf/core/generic.html | 12 +- tf/core/helpers.html | 84 ++--- tf/core/index.html | 2 +- tf/core/locality.html | 14 +- tf/core/nodefeature.html | 14 +- tf/core/nodes.html | 10 +- tf/core/oslotsfeature.html | 8 +- tf/core/otypefeature.html | 12 +- tf/core/prepare.html | 20 +- tf/core/text.html | 32 +- tf/core/timestamp.html | 30 +- tf/dataset/index.html | 2 +- tf/dataset/modify.html | 4 +- tf/dataset/nodemaps.html | 22 +- tf/fabric.html | 10 +- tf/index.html | 2 +- tf/lib.html | 10 +- tf/parameters.html | 4 +- tf/search/graph.html | 12 +- tf/search/index.html | 2 +- tf/search/relations.html | 10 +- tf/search/search.html | 20 +- tf/search/searchexe.html | 18 +- tf/search/semantics.html | 4 +- tf/search/spin.html | 8 +- tf/search/stitch.html | 6 +- tf/search/syntax.html | 12 +- tf/tools/checkdiffs.html | 4 +- tf/tools/index.html | 2 +- tf/tools/myspacy.html | 14 +- tf/tools/nbconvert.html | 10 +- tf/tools/pdocs.html | 14 +- tf/tools/release.html | 4 +- tf/tools/xmlschema.html | 50 +-- tf/volumes/collect.html | 4 +- tf/volumes/extract.html | 6 +- tf/volumes/index.html | 2 +- tf/writing/arabic.html | 2 +- tf/writing/greek.html | 2 +- tf/writing/hebrew.html | 2 +- tf/writing/index.html | 2 +- tf/writing/neoaramaic.html | 2 +- tf/writing/syriac.html | 2 +- tf/writing/transcription.html | 50 +-- tf/writing/ugaritic.html | 2 +- tf/zip.html | 4 +- 150 files changed, 1344 insertions(+), 1300 deletions(-) diff --git a/index.js b/index.js index 7c7c0869f..3e8204954 100644 --- a/index.js +++ b/index.js @@ -3586,7 +3586,7 @@ INDEX=[ { "ref":"tf.about.releases", "url":72, -"doc":" Release notes ! hint \"Consult the tutorials after changes\" When we change the API, we make sure that the tutorials show off all possibilities. See the app-specific tutorials via tf.about.corpora . - The TEI converter is still in active development. If you need the latest version, clone the TF repo and in its top-level directory run the command: sh pip install -e . 12 12.4 12.4.3 2024-05-08 Fix in TF browser, spotted by Jorik Groen. When exporting query results, the values features used in the query were not written to the table at all. The expected behaviour was that features used in the query lead to extra columns in the exported table. It has been fixed. The cause was an earlier fix in the display of features in query results. This new fix only affects the export function from the browser, not the advanced.display.export function, which did not have this bug. 12.4.2 2024-04-24 Tiny fixes in the TEI and WATM conversions. 12.4.1 2024-04-24 Improvements in the TEI and WATM conversions. 12.4.0 2024-04-21 Support for [Marimo notebooks](https: docs.marimo.io/index.html). TF detects when its run in a notebook, and also in what kind of notebook: ipython (~ Jupyter) or marimo . When it needs to display material in the output of a cell, it will choose the methods that are suitable for the kind of notebook it is working in. 12.3 12.3.7 2024-04-19 Improvements in tf.convert.watm : the resulting data is much more compact, because: you can choose to export it as TSV instead of JSON; no annotations of type node are produced anymore, they only served to map annotations and text segments to TF nodes; now that mapping is exported as a simple TSV file; you can opt to exclude an arbitrary set of tags from being exported as WATM annotations. 12.3.6 2024-04-16 Minimal fixes in tf.convert.tei : it can handle a biography. Fixed prettyTuple() when passed _asString=True : it did not pass this on to pretty() which caused a Python error. 12.3.5 2024-03-26 extra functionality: When adding types with tf.dataset.modify you can link nodes of a newly added type to nodes that were added as the preiviously added type. This is a bit of a limited and ad hoc extension of the functionality of this function. I needed a quick fix to add nodes for entities and entity occurrences at the same time and link them with edges. This is for the corpus [ CLARIAH/wp6-missieven ](https: github.com/CLARIAH/wp6-missieven). fix: the express download of a dataset (complete.zip) was nit triggered in all cases where it should. 12.3.4 2024-02-26 The output of tf.convert.watm has been changed. It now generates token files per section, where you can configure the TF section level for that. The syntax for targets has been changed: more things are possible. Tests have been adapted and strengthened. 12.3.3 2024-02-20 Fix in tf.advanced.repo.publishRelease : it did not work if you are on a branch named main because master was hard-coded in the source code. Now it takes the branch name from the app context. Do not forget to specify branch: main under the provenanceSpecs in your /app/config.yaml . Many thanks to Tony Jorg for reporting this error. 12.3.1,2 2024-02-15 Minor improvements to the WATM converter, and an update of its docs. 12.3.0 2024-02-08 A new data export conversion, from TF to WATM. See tf.convert.watm . WATM is a not yet hardened data format that powers the publishing line for text and annotations built by Team Text at [KNAW/HuC Digital Infrastructure](https: di.huc.knaw.nl/text-analysis-en.html). Currently this export is used for the corpora [Mondriaan Proeftuin](https: github.com/annotation/mondriaan) [Suriano Letters](https: gitlab.huc.knaw.nl/suriano/letters) [TransLatin Corpus](https: gitlab.huc.knaw.nl/translatin/corpus) Small fixes in tf.convert.addnlp : when the NLP data is integrated in the TF dataset, the NLP-generated features will get some metadata 12.2 12.2.8,9,10 2024-01-24/25 TF can auto-download extra data with a TF dataset, e.g. a directory with named entities ( ner ) as in the [suriano corpus](https: gitlab.huc.knaw.nl/suriano/letters). However, this only worked when the repo was in the github backend and the extra data had been packed for express-download and attached to a release. Now it also works with the normal download methods using the GitHub and GitLab APIs. So, after the move of Suriano from GitHub to GitLab, this functionality is still available. There was a glitch in the layout of the NER tool which caused section labels to be chopped off at the margin, only in notebooks. Thats has been fixed by moving some CSS code from one file to an other. 12.2.7 2024-01-23 There were issues with starting up the Text-Fabric browser: If the system could not start the browser, the TF stopped the webserver. That is not helpful, because one can always open a browser and enter the url in the address bar. Now TF shows the url rather prominently when it does not open a browser. If debug mode is on, Flask reloads the whole process, and that might include opening the browser as well. Now Flask only opens the browser after the startup of the webserver, and not anymore after successive reloads. 12.2.6 2024-01-15 Somehow the express way of downloading data (via complete.zip attached to the latest release) did not get triggered in all cases where it should. It is now triggered in more cases than before. 12.2.5 2023-12-18 Small fix in NER browser: prevent submitting the form if the focus is in a textarea field or in an input field that does not have type=submit. 12.2.3,4 2023-12-09 Writing support for Ugaritic, thanks to Martijn Naaijer and Christian H\u00f8jgaard for converting a Ugaritic corpus to TF. Fix in display functions (continued): The logic of feature display, fixed in the previous version, was not effective when things are displayed in the TF browser. Because in the TF browser the features of the last query were passed as extraFeatures instead of tupleFeatures . This has been fixed by using tupleFeatures in the TF browser as well. 12.2.2 2023-12-02 Fix in display functions, thanks to Tony Jurg: if you do A.pretty(x, queryFeatures=False, extraFeatures=\"yy zz\") the extra features were not shown. So there was no obvious way to control exactly the features that you want to show in a display. That has been fixed. Further clarification: the node features that are used by a query are stored in the display option tupleFeatures . That is what causes them to be displayed in subsequent display statements. You can also explicitly set/pass the tupleFeatures parameter. However, the fact that queryFeatures=False prohibited the display of features mentioned in extraFeatures was against the intuitions. Improvements in the PageXML conversion. There are token features str , after that reflect the logical tokens There are token features rstr , rafter that reflect the physical tokens The distincition between logical and physical is that physical token triplets with the soft hyphen as the middle one, are joined to one logical token; this happens across line boundaries, but also region and page boundaries. 12.2.0,1 2023-11-28 New conversion tool: from PageXML. Still in its infancy. It uses the [PageXML tools](https: github.com/knaw-huc/pagexml) by Marijn Koolen. For an example see [translatin/logic](https: gitlab.huc.knaw.nl/translatin/logic/-/blob/main/tools/convertPlain.ipynb?ref_type=heads). Fix: TF did not fetch an earlier version of a corpus if the newest release contains a complete.zip (which only has the latest version). For some technical reason that still escapes me, the TF browser was slow to start. Fixed it by saying threaded=True to Flask, as suggested on [stackoverflow](https: stackoverflow.com/a/11150849/15236220) From now on: TF does not try to download complete.zip if you pass a version argument to the use() command. 12.1 12.1.6,7 2023-11-15 Various fixes: Some package data was not included for the NER annotation tool. In the NER tool, the highlighting of hits of the search pattern is now exact, it was sometimes off. Deleted tf.tools.docsright again, but developed it further in [docsright](https: github.com/annotation/docsright). 12.1.5 2023-11-02 Improvement in dependencies. Text-Fabric is no longer mandatory dependent on openpyxl , pandas , pyarrow , lxml . The optional dependencies on pygithub and python-gitlab remain, but most users will never need them, because TF can also fetch the complete.zip that is available as release asset for most corpora. Whenever TF invokes a module that is not in the mandatory dependencies, it will act gracefully, providing hints to install the modules in question. 12.1.3,4 2023-11-01 API change in the Annotator: Calling the annotator is now easier: A.makeNer() (No need to make an additional import statement.) This will give you access to all annotation methods, including using a spreadsheet to read annotation instructions from. Removal of deprecated commands (on the command line) in version 11: text-fabric (has become tf ) text-fabric-zip (has become tf-zip ) text-fabric-make (has become tf-make ) Bug fixes: [ 81](https: github.com/annotation/text-fabric/issues/81) and [ 82](https: github.com/annotation/text-fabric/issues/82) Spell-checked all bits of the TF docs here (33,000 lines). Wrote a script tf.tools.docsright to separate the code content from the markdown content, and to strip bits from the markdown content that lead to false positives for the spell checker. Then had the Vim spell checker run over those lines and corrected all mistakes by hand. Still, there might be grammar errors and content inaccuracies. 12.1.4 follows 12.1.3. quickly, because in corpora without a NER configuration file, TF did not start up properly. 12.1.1,2 2023-10-29 Bug fix: the mechanism to make individual exceptions when adding named entities in the tf.browser.ner.annotate tool was broken. Thanks to Daniel Swanson for spotting it. Additional fixes and enhancements. 12.1.0 2023-10-28 New stuff In the TF browser there will be a new tab in the vertical sidebar: Annotate , which will give access to manual annotation tools. I am developing the first one, a tool to annotate named entities efficiently, both in the TF browser and in a Jupyter Notebook. Reed more in tf.about.annotate . These tools will let you save your work as files on your own computer. In tf.convert.addnlp we can now extract more NLP information besides tokens and sentences: part-of-speech, morphological tagging, lemmatisation, named entity recognition Fixes in the TEI converter. 12.0 12.0.6,7 2023-09-13 Trivial fix in code that exports the data from a job in the TF browser. In the meanwhile there is unfinished business in the Annotate tab in the TF browser, that will come into production in the upcoming 12.1 release. The Chrome browser has an attractive feature that other browsers such as Safari lack: It supports the CSS property [content-visibility](https: developer.mozilla.org/en-US/docs/Web/CSS/content-visibility). With this property you can prevent the browser to do the expensive rendering of content that is not visible on the screen. That makes it possible to load a lot of content in a single page without tripping up the browser. You also need the [ IntersectionObserver API](https: developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API), but that is generally supported by browsers. With the help of that API you can restrict the binding of event listeners to elements that are visible on the screen. So, you can open the TF browser in Chrome by passing the option chrome . But if Chrome is not installed, it will open in the default browser anyway. Also, when the opening of the browser fails somehow, the web server is stopped. 12.0.5 2023-07-10 Fixed references to static files that still went to /server instead of /browser . This has to do with the new approach to the TF browser. 12.0.0-4 2023-07-05 Simplification The TF browser no longer works with a separate process that holds the TF corpus data. Instead, the web server (flask) loads the corpus itself. This will restrict the usage of the TF browser to local-single-user scenarios. TF no longer exposes the installation options [browser, pandas] pip install 'text-fabric[browser]' pip install 'text-fabric[pandas]' If you work with Pandas (like exporting to Pandas) you have to install it yourself: pip install pandas pyarrow The TF browser is always supported. The reason to have these distinct capabilities was that there are python libraries involved that do not install on the iPad. The simplification of the TF browser makes it possible to be no longer dependent on these modules. Hence, TF can be installed on the iPad, although the TF browser works is not working there yet. But the auto-downloading of data from GitHub / GitLab works. Minor things Header. After loading a dataset, a header is shown with shows all kinds of information about the corpus. But so far, it did not show the TF app settings. Now they are included in the header. There are two kinds: the explicitly given settings and the derived and computed settings. The latter ones will be suppressed when loading a dataset in a Jupyter notebook, because these settings can become quite big. You can still get them with A.showContext() . In the TF browser they will be always included, you find it in the Corpus tab. - Older releases See tf.about.releasesold ." +"doc":" Release notes ! hint \"Consult the tutorials after changes\" When we change the API, we make sure that the tutorials show off all possibilities. See the app-specific tutorials via tf.about.corpora . - The TEI converter is still in active development. If you need the latest version, clone the TF repo and in its top-level directory run the command: sh pip install -e . 12 12.4 12.4.3,4 2024-05-08 Fix in TF browser, spotted by Jorik Groen. When exporting query results, the values features used in the query were not written to the table at all. The expected behaviour was that features used in the query lead to extra columns in the exported table. It has been fixed. The cause was an earlier fix in the display of features in query results. This new fix only affects the export function from the browser, not the tf.advanced.display.export function, which did not have this bug. The pipeline from TEI or PageXML via TF to WATM is a complex thing to steer. There is now a new class tf.convert.makewatm that takes care of this: it provides a command line interface to perform the necessary convert steps. Moreover, you can use it as a base class and extend it with additional convert steps and options, with minimal code. 12.4.2 2024-04-24 Tiny fixes in the TEI and WATM conversions. 12.4.1 2024-04-24 Improvements in the TEI and WATM conversions. 12.4.0 2024-04-21 Support for [Marimo notebooks](https: docs.marimo.io/index.html). TF detects when its run in a notebook, and also in what kind of notebook: ipython (~ Jupyter) or marimo . When it needs to display material in the output of a cell, it will choose the methods that are suitable for the kind of notebook it is working in. 12.3 12.3.7 2024-04-19 Improvements in tf.convert.watm : the resulting data is much more compact, because: you can choose to export it as TSV instead of JSON; no annotations of type node are produced anymore, they only served to map annotations and text segments to TF nodes; now that mapping is exported as a simple TSV file; you can opt to exclude an arbitrary set of tags from being exported as WATM annotations. 12.3.6 2024-04-16 Minimal fixes in tf.convert.tei : it can handle a biography. Fixed prettyTuple() when passed _asString=True : it did not pass this on to pretty() which caused a Python error. 12.3.5 2024-03-26 extra functionality: When adding types with tf.dataset.modify you can link nodes of a newly added type to nodes that were added as the preiviously added type. This is a bit of a limited and ad hoc extension of the functionality of this function. I needed a quick fix to add nodes for entities and entity occurrences at the same time and link them with edges. This is for the corpus [ CLARIAH/wp6-missieven ](https: github.com/CLARIAH/wp6-missieven). fix: the express download of a dataset (complete.zip) was nit triggered in all cases where it should. 12.3.4 2024-02-26 The output of tf.convert.watm has been changed. It now generates token files per section, where you can configure the TF section level for that. The syntax for targets has been changed: more things are possible. Tests have been adapted and strengthened. 12.3.3 2024-02-20 Fix in tf.advanced.repo.publishRelease : it did not work if you are on a branch named main because master was hard-coded in the source code. Now it takes the branch name from the app context. Do not forget to specify branch: main under the provenanceSpecs in your /app/config.yaml . Many thanks to Tony Jorg for reporting this error. 12.3.1,2 2024-02-15 Minor improvements to the WATM converter, and an update of its docs. 12.3.0 2024-02-08 A new data export conversion, from TF to WATM. See tf.convert.watm . WATM is a not yet hardened data format that powers the publishing line for text and annotations built by Team Text at [KNAW/HuC Digital Infrastructure](https: di.huc.knaw.nl/text-analysis-en.html). Currently this export is used for the corpora [Mondriaan Proeftuin](https: github.com/annotation/mondriaan) [Suriano Letters](https: gitlab.huc.knaw.nl/suriano/letters) [TransLatin Corpus](https: gitlab.huc.knaw.nl/translatin/corpus) Small fixes in tf.convert.addnlp : when the NLP data is integrated in the TF dataset, the NLP-generated features will get some metadata 12.2 12.2.8,9,10 2024-01-24/25 TF can auto-download extra data with a TF dataset, e.g. a directory with named entities ( ner ) as in the [suriano corpus](https: gitlab.huc.knaw.nl/suriano/letters). However, this only worked when the repo was in the github backend and the extra data had been packed for express-download and attached to a release. Now it also works with the normal download methods using the GitHub and GitLab APIs. So, after the move of Suriano from GitHub to GitLab, this functionality is still available. There was a glitch in the layout of the NER tool which caused section labels to be chopped off at the margin, only in notebooks. Thats has been fixed by moving some CSS code from one file to an other. 12.2.7 2024-01-23 There were issues with starting up the Text-Fabric browser: If the system could not start the browser, the TF stopped the webserver. That is not helpful, because one can always open a browser and enter the url in the address bar. Now TF shows the url rather prominently when it does not open a browser. If debug mode is on, Flask reloads the whole process, and that might include opening the browser as well. Now Flask only opens the browser after the startup of the webserver, and not anymore after successive reloads. 12.2.6 2024-01-15 Somehow the express way of downloading data (via complete.zip attached to the latest release) did not get triggered in all cases where it should. It is now triggered in more cases than before. 12.2.5 2023-12-18 Small fix in NER browser: prevent submitting the form if the focus is in a textarea field or in an input field that does not have type=submit. 12.2.3,4 2023-12-09 Writing support for Ugaritic, thanks to Martijn Naaijer and Christian H\u00f8jgaard for converting a Ugaritic corpus to TF. Fix in display functions (continued): The logic of feature display, fixed in the previous version, was not effective when things are displayed in the TF browser. Because in the TF browser the features of the last query were passed as extraFeatures instead of tupleFeatures . This has been fixed by using tupleFeatures in the TF browser as well. 12.2.2 2023-12-02 Fix in display functions, thanks to Tony Jurg: if you do A.pretty(x, queryFeatures=False, extraFeatures=\"yy zz\") the extra features were not shown. So there was no obvious way to control exactly the features that you want to show in a display. That has been fixed. Further clarification: the node features that are used by a query are stored in the display option tupleFeatures . That is what causes them to be displayed in subsequent display statements. You can also explicitly set/pass the tupleFeatures parameter. However, the fact that queryFeatures=False prohibited the display of features mentioned in extraFeatures was against the intuitions. Improvements in the PageXML conversion. There are token features str , after that reflect the logical tokens There are token features rstr , rafter that reflect the physical tokens The distincition between logical and physical is that physical token triplets with the soft hyphen as the middle one, are joined to one logical token; this happens across line boundaries, but also region and page boundaries. 12.2.0,1 2023-11-28 New conversion tool: from PageXML. Still in its infancy. It uses the [PageXML tools](https: github.com/knaw-huc/pagexml) by Marijn Koolen. For an example see [translatin/logic](https: gitlab.huc.knaw.nl/translatin/logic/-/blob/main/tools/convertPlain.ipynb?ref_type=heads). Fix: TF did not fetch an earlier version of a corpus if the newest release contains a complete.zip (which only has the latest version). For some technical reason that still escapes me, the TF browser was slow to start. Fixed it by saying threaded=True to Flask, as suggested on [stackoverflow](https: stackoverflow.com/a/11150849/15236220) From now on: TF does not try to download complete.zip if you pass a version argument to the use() command. 12.1 12.1.6,7 2023-11-15 Various fixes: Some package data was not included for the NER annotation tool. In the NER tool, the highlighting of hits of the search pattern is now exact, it was sometimes off. Deleted tf.tools.docsright again, but developed it further in [docsright](https: github.com/annotation/docsright). 12.1.5 2023-11-02 Improvement in dependencies. Text-Fabric is no longer mandatory dependent on openpyxl , pandas , pyarrow , lxml . The optional dependencies on pygithub and python-gitlab remain, but most users will never need them, because TF can also fetch the complete.zip that is available as release asset for most corpora. Whenever TF invokes a module that is not in the mandatory dependencies, it will act gracefully, providing hints to install the modules in question. 12.1.3,4 2023-11-01 API change in the Annotator: Calling the annotator is now easier: A.makeNer() (No need to make an additional import statement.) This will give you access to all annotation methods, including using a spreadsheet to read annotation instructions from. Removal of deprecated commands (on the command line) in version 11: text-fabric (has become tf ) text-fabric-zip (has become tf-zip ) text-fabric-make (has become tf-make ) Bug fixes: [ 81](https: github.com/annotation/text-fabric/issues/81) and [ 82](https: github.com/annotation/text-fabric/issues/82) Spell-checked all bits of the TF docs here (33,000 lines). Wrote a script tf.tools.docsright to separate the code content from the markdown content, and to strip bits from the markdown content that lead to false positives for the spell checker. Then had the Vim spell checker run over those lines and corrected all mistakes by hand. Still, there might be grammar errors and content inaccuracies. 12.1.4 follows 12.1.3. quickly, because in corpora without a NER configuration file, TF did not start up properly. 12.1.1,2 2023-10-29 Bug fix: the mechanism to make individual exceptions when adding named entities in the tf.browser.ner.annotate tool was broken. Thanks to Daniel Swanson for spotting it. Additional fixes and enhancements. 12.1.0 2023-10-28 New stuff In the TF browser there will be a new tab in the vertical sidebar: Annotate , which will give access to manual annotation tools. I am developing the first one, a tool to annotate named entities efficiently, both in the TF browser and in a Jupyter Notebook. Reed more in tf.about.annotate . These tools will let you save your work as files on your own computer. In tf.convert.addnlp we can now extract more NLP information besides tokens and sentences: part-of-speech, morphological tagging, lemmatisation, named entity recognition Fixes in the TEI converter. 12.0 12.0.6,7 2023-09-13 Trivial fix in code that exports the data from a job in the TF browser. In the meanwhile there is unfinished business in the Annotate tab in the TF browser, that will come into production in the upcoming 12.1 release. The Chrome browser has an attractive feature that other browsers such as Safari lack: It supports the CSS property [content-visibility](https: developer.mozilla.org/en-US/docs/Web/CSS/content-visibility). With this property you can prevent the browser to do the expensive rendering of content that is not visible on the screen. That makes it possible to load a lot of content in a single page without tripping up the browser. You also need the [ IntersectionObserver API](https: developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API), but that is generally supported by browsers. With the help of that API you can restrict the binding of event listeners to elements that are visible on the screen. So, you can open the TF browser in Chrome by passing the option chrome . But if Chrome is not installed, it will open in the default browser anyway. Also, when the opening of the browser fails somehow, the web server is stopped. 12.0.5 2023-07-10 Fixed references to static files that still went to /server instead of /browser . This has to do with the new approach to the TF browser. 12.0.0-4 2023-07-05 Simplification The TF browser no longer works with a separate process that holds the TF corpus data. Instead, the web server (flask) loads the corpus itself. This will restrict the usage of the TF browser to local-single-user scenarios. TF no longer exposes the installation options [browser, pandas] pip install 'text-fabric[browser]' pip install 'text-fabric[pandas]' If you work with Pandas (like exporting to Pandas) you have to install it yourself: pip install pandas pyarrow The TF browser is always supported. The reason to have these distinct capabilities was that there are python libraries involved that do not install on the iPad. The simplification of the TF browser makes it possible to be no longer dependent on these modules. Hence, TF can be installed on the iPad, although the TF browser works is not working there yet. But the auto-downloading of data from GitHub / GitLab works. Minor things Header. After loading a dataset, a header is shown with shows all kinds of information about the corpus. But so far, it did not show the TF app settings. Now they are included in the header. There are two kinds: the explicitly given settings and the derived and computed settings. The latter ones will be suppressed when loading a dataset in a Jupyter notebook, because these settings can become quite big. You can still get them with A.showContext() . In the TF browser they will be always included, you find it in the Corpus tab. - Older releases See tf.about.releasesold ." }, { "ref":"tf.about.clientmanual", @@ -7144,43 +7144,49 @@ INDEX=[ "doc":"Base class for running conversions to WATM. This class has methods to convert corpora from TEI or PageXML to TF and then to WATM. But if the corpus needs additional preparation, you can make a sub class based on this with additional tasks defined an implemented. Any class M in m.py based on this class can be called from the command line as follows: python m.py flags tasks If you base a superclass on this, you can register the additional tasks as follows: For each extra task xxx, write an method doTask_xxx(self) Then provide for each task a simple doc line and register them all by: self.setOptions( taskSpecs=( (task1, docLine1), (task2, docLine2), . ), flagSpecs=( (flag1, docLine1), (flag2, docLine2), . ), ) Localize upon creation. When an object of this class is initialized, we assume that the script doing it is localized in the programs directory in a corpus repo. Parameters fileLoc: string The full path of the file that creates an instance of this class." }, { -"ref":"tf.convert.makewatm.MakeWATM.doTask_tei2tf", +"ref":"tf.convert.makewatm.MakeWATM.setOptions", "url":137, "doc":"", "func":1 }, { -"ref":"tf.convert.makewatm.MakeWATM.doTask_page2tf", +"ref":"tf.convert.makewatm.MakeWATM.main", "url":137, "doc":"", "func":1 }, { -"ref":"tf.convert.makewatm.MakeWATM.doTask_watm", +"ref":"tf.convert.makewatm.MakeWATM.prepareRun", "url":137, "doc":"", "func":1 }, { -"ref":"tf.convert.makewatm.MakeWATM.doTask_watms", +"ref":"tf.convert.makewatm.MakeWATM.run", "url":137, "doc":"", "func":1 }, { -"ref":"tf.convert.makewatm.MakeWATM.run", +"ref":"tf.convert.makewatm.MakeWATM.doTask_tei2tf", "url":137, "doc":"", "func":1 }, { -"ref":"tf.convert.makewatm.MakeWATM.setOptions", +"ref":"tf.convert.makewatm.MakeWATM.doTask_page2tf", "url":137, "doc":"", "func":1 }, { -"ref":"tf.convert.makewatm.MakeWATM.main", +"ref":"tf.convert.makewatm.MakeWATM.doTask_watm", +"url":137, +"doc":"", +"func":1 +}, +{ +"ref":"tf.convert.makewatm.MakeWATM.doTask_watms", "url":137, "doc":"", "func":1 diff --git a/tf/about/annotate.html b/tf/about/annotate.html index cb6909c03..2c2c0c732 100644 --- a/tf/about/annotate.html +++ b/tf/about/annotate.html @@ -298,7 +298,7 @@
Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/annotate.md
diff --git a/tf/about/annotateBrowser.html b/tf/about/annotateBrowser.html
index a631fb5cd..ec2b6ed24 100644
--- a/tf/about/annotateBrowser.html
+++ b/tf/about/annotateBrowser.html
@@ -267,7 +267,7 @@ 

Programming

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/annotateBrowser.md
diff --git a/tf/about/apps.html b/tf/about/apps.html
index be6ea86da..666d3b281 100644
--- a/tf/about/apps.html
+++ b/tf/about/apps.html
@@ -115,7 +115,7 @@ 

Two contexts

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/apps.md
diff --git a/tf/about/background.html b/tf/about/background.html
index e823387b2..0f6a56a7c 100644
--- a/tf/about/background.html
+++ b/tf/about/background.html
@@ -155,7 +155,7 @@ 

History

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/background.md
diff --git a/tf/about/browser.html b/tf/about/browser.html
index 4fefa69f6..c6ed25a09 100644
--- a/tf/about/browser.html
+++ b/tf/about/browser.html
@@ -174,7 +174,7 @@ 

UNICODE in Excel CSVs

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/browser.md
diff --git a/tf/about/clientmanual.html b/tf/about/clientmanual.html
index 8534cb313..b4f274f7e 100644
--- a/tf/about/clientmanual.html
+++ b/tf/about/clientmanual.html
@@ -565,7 +565,7 @@ 

Credits

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/clientmanual.md
diff --git a/tf/about/code.html b/tf/about/code.html
index a094df1f9..f48acb2fa 100644
--- a/tf/about/code.html
+++ b/tf/about/code.html
@@ -98,7 +98,7 @@ 

Writing

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/code.md
diff --git a/tf/about/corpora.html b/tf/about/corpora.html
index 04a051d1c..47ea3ea07 100644
--- a/tf/about/corpora.html
+++ b/tf/about/corpora.html
@@ -351,7 +351,7 @@ 

Extra data

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/corpora.md
diff --git a/tf/about/datamodel.html b/tf/about/datamodel.html
index 11804c8dd..ba76fca14 100644
--- a/tf/about/datamodel.html
+++ b/tf/about/datamodel.html
@@ -265,7 +265,7 @@ 

Serializing and pre-computing

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/datamodel.md
diff --git a/tf/about/datasharing.html b/tf/about/datasharing.html
index 193888099..b9d3e9184 100644
--- a/tf/about/datasharing.html
+++ b/tf/about/datasharing.html
@@ -362,7 +362,7 @@ 

More modules at the same time

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/datasharing.md
diff --git a/tf/about/displaydesign.html b/tf/about/displaydesign.html
index 5872bb433..921043658 100644
--- a/tf/about/displaydesign.html
+++ b/tf/about/displaydesign.html
@@ -151,7 +151,7 @@ 

Output

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/displaydesign.md
diff --git a/tf/about/faq.html b/tf/about/faq.html
index 4e7dc4f6c..b3aab93f1 100644
--- a/tf/about/faq.html
+++ b/tf/about/faq.html
@@ -161,7 +161,7 @@ 

GitHub Rate Limit Exceeded!

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/faq.md
diff --git a/tf/about/fileformats.html b/tf/about/fileformats.html
index ebe17b2ad..685108746 100644
--- a/tf/about/fileformats.html
+++ b/tf/about/fileformats.html
@@ -158,7 +158,7 @@ 

Single values

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/fileformats.md
diff --git a/tf/about/index.html b/tf/about/index.html
index d40bfd9b0..b869a3bed 100644
--- a/tf/about/index.html
+++ b/tf/about/index.html
@@ -33,7 +33,7 @@ 

Documents

Expand source code -Browse git +Browse git
"""
 # Documents
diff --git a/tf/about/install.html b/tf/about/install.html
index 4d7befe77..907834d51 100644
--- a/tf/about/install.html
+++ b/tf/about/install.html
@@ -108,7 +108,7 @@ 

Note for Linux users

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/install.md
diff --git a/tf/about/manual.html b/tf/about/manual.html
index 17845041e..a95881893 100644
--- a/tf/about/manual.html
+++ b/tf/about/manual.html
@@ -390,7 +390,7 @@ 

Keyboard shortcuts

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/manual.md
diff --git a/tf/about/optimizations.html b/tf/about/optimizations.html
index 51f7778f4..9c18d7eb2 100644
--- a/tf/about/optimizations.html
+++ b/tf/about/optimizations.html
@@ -187,7 +187,7 @@ 

Edge features

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/optimizations.md
diff --git a/tf/about/releases.html b/tf/about/releases.html
index 43189c8f0..6ca605d84 100644
--- a/tf/about/releases.html
+++ b/tf/about/releases.html
@@ -43,8 +43,10 @@ 

Release notes

12

12.4

-

12.4.3

+

12.4.3,4

2024-05-08

+
    +
  • Fix in TF browser, spotted by Jorik Groen. When exporting query results, the values features used in the query were not written to the table at all. @@ -53,7 +55,16 @@

    12.4.3

    It has been fixed. The cause was an earlier fix in the display of features in query results. This new fix only affects the export function from the browser, not the -advanced.display.export function, which did not have this bug.

    +export() function, which did not have this bug.

    +
  • +
  • +

    The pipeline from TEI or PageXML via TF to WATM is a complex thing to steer. +There is now a new class tf.convert.makewatm that takes care of this: it provides +a command line interface to perform the necessary convert steps.

    +

    Moreover, you can use it as a base class and extend it with additional +convert steps and options, with minimal code.

    +
  • +

12.4.2

2024-04-24

Tiny fixes in the TEI and WATM conversions.

@@ -385,7 +396,7 @@

Older releases

Expand source code -Browse git +Browse git
"""
 .. include:: ../docs/about/releases.md
@@ -459,7 +470,7 @@ 

Index

  • Release notes
    • 12
      • 12.4
          -
        • 12.4.3
        • +
        • 12.4.3,4
        • 12.4.2
        • 12.4.1
        • 12.4.0
        • diff --git a/tf/about/releasesold.html b/tf/about/releasesold.html index 96881a321..c21b4554d 100644 --- a/tf/about/releasesold.html +++ b/tf/about/releasesold.html @@ -3430,7 +3430,7 @@
          Changed
          Expand source code -Browse git +Browse git
          """
           .. include:: ../docs/about/releasesold.md
          diff --git a/tf/about/searchdesign.html b/tf/about/searchdesign.html
          index 9bd9fa7e8..9a962be12 100644
          --- a/tf/about/searchdesign.html
          +++ b/tf/about/searchdesign.html
          @@ -477,7 +477,7 @@ 

          Small-first strategy

          Expand source code -Browse git +Browse git
          """
           .. include:: ../docs/about/searchdesign.md
          diff --git a/tf/about/searchusage.html b/tf/about/searchusage.html
          index f94275379..bb5664f86 100644
          --- a/tf/about/searchusage.html
          +++ b/tf/about/searchusage.html
          @@ -776,7 +776,7 @@ 
          Implementation
          Expand source code -Browse git +Browse git
          """
           .. include:: ../docs/about/searchusage.md
          diff --git a/tf/about/tests.html b/tf/about/tests.html
          index 3b394fd70..e04b4c729 100644
          --- a/tf/about/tests.html
          +++ b/tf/about/tests.html
          @@ -71,7 +71,7 @@ 

          Relations

          Expand source code -Browse git +Browse git
          """
           .. include:: ../docs/about/tests.md
          diff --git a/tf/about/use.html b/tf/about/use.html
          index fe1eb1c0a..cf5bdbc61 100644
          --- a/tf/about/use.html
          +++ b/tf/about/use.html
          @@ -90,7 +90,7 @@ 

          TF API

          Expand source code -Browse git +Browse git
          """
           .. include:: ../docs/about/use.md
          diff --git a/tf/about/usefunc.html b/tf/about/usefunc.html
          index ca472ff29..25509c865 100644
          --- a/tf/about/usefunc.html
          +++ b/tf/about/usefunc.html
          @@ -419,7 +419,7 @@ 

          Prevent data loading

          Expand source code -Browse git +Browse git
          """
           .. include:: ../docs/about/usefunc.md
          diff --git a/tf/about/variants.html b/tf/about/variants.html
          index 1c8f2e5e5..3f2e24c2a 100644
          --- a/tf/about/variants.html
          +++ b/tf/about/variants.html
          @@ -438,7 +438,7 @@ 

          The stack

          Expand source code -Browse git +Browse git
          """
           .. include:: ../docs/about/variants.md
          diff --git a/tf/about/volumes.html b/tf/about/volumes.html
          index e0d4c587b..0e054bfb2 100644
          --- a/tf/about/volumes.html
          +++ b/tf/about/volumes.html
          @@ -323,7 +323,7 @@ 

          Reflection

          Expand source code -Browse git +Browse git
          """
           .. include:: ../docs/about/volumes.md
          diff --git a/tf/advanced/annotate.html b/tf/advanced/annotate.html
          index 6da258030..0c971ab39 100644
          --- a/tf/advanced/annotate.html
          +++ b/tf/advanced/annotate.html
          @@ -34,7 +34,7 @@ 

          Module tf.advanced.annotate

          Expand source code -Browse git +Browse git
          """
           Enable manual annotation APIs.
          @@ -84,7 +84,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def annotateApi(app):
               """Produce the interchange functions API.
          @@ -106,7 +106,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def makeNer(app):
               return NER(app)
          diff --git a/tf/advanced/app.html b/tf/advanced/app.html index a93df83cf..cee9fdf82 100644 --- a/tf/advanced/app.html +++ b/tf/advanced/app.html @@ -31,7 +31,7 @@

          Module tf.advanced.app

          Expand source code -Browse git +Browse git
          import types
           import traceback
          @@ -834,7 +834,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def findApp(
               appName,
          @@ -1129,7 +1129,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def loadApp(silent=DEEP):
               """Loads a given TF app or loads the TF app based on the working directory.
          @@ -1197,7 +1197,7 @@ 

          See Also

          Expand source code -Browse git +Browse git
          def useApp(appName, backend):
               """Make use of a corpus.
          @@ -1299,7 +1299,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          class App:
               def __init__(
          @@ -1665,7 +1665,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def hoist(self, hoist, silent=None):
               """Hoist the API handles of this TF app to the global scope.
          @@ -1733,7 +1733,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def load(self, features, silent=SILENT_D):
               """Loads extra features in addition to the main dataset.
          @@ -1771,7 +1771,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def reinit(self):
               """TF Apps may override this method.
          @@ -1806,7 +1806,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def reuse(self, hoist=False):
               """Re-initialize the app.
          diff --git a/tf/advanced/condense.html b/tf/advanced/condense.html
          index c6ec9f2bd..25d354c5f 100644
          --- a/tf/advanced/condense.html
          +++ b/tf/advanced/condense.html
          @@ -31,7 +31,7 @@ 

          Module tf.advanced.condense

          Expand source code -Browse git +Browse git
          def condense(api, tuples, condenseType, multiple=False):
               F = api.F
          @@ -135,7 +135,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def condense(api, tuples, condenseType, multiple=False):
               F = api.F
          @@ -192,7 +192,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def condenseSet(api, tup, condenseType):
               F = api.F
          diff --git a/tf/advanced/data.html b/tf/advanced/data.html
          index 88dccad02..23b98b757 100644
          --- a/tf/advanced/data.html
          +++ b/tf/advanced/data.html
          @@ -31,7 +31,7 @@ 

          Module tf.advanced.data

          Expand source code -Browse git +Browse git
          from ..core.helpers import itemize
           from ..core.files import backendRep, expandDir, prefixSlash, normpath
          @@ -496,7 +496,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def getModulesData(*args):
               """Retrieve all data for a corpus.
          @@ -556,7 +556,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          class AppData:
               def __init__(
          @@ -989,7 +989,7 @@ 

          See Also

          Expand source code -Browse git +Browse git
          def getExtra(self):
               """Get the extra data specified by the settings of the corpus.
          @@ -1051,7 +1051,7 @@ 

          See Also

          Expand source code -Browse git +Browse git
          def getMain(self):
               """Get the main data of the corpus.
          @@ -1126,7 +1126,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def getModule(
               self,
          @@ -1271,7 +1271,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def getModules(self):
               """Get data from additional local directories.
          @@ -1342,7 +1342,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def getRefs(self):
               """Get data from additional modules.
          @@ -1397,7 +1397,7 @@ 

          See Also

          Expand source code -Browse git +Browse git
          def getStandard(self):
               """Get the data of the standard modules specified by the settings of the corpus.
          diff --git a/tf/advanced/display.html b/tf/advanced/display.html
          index 81013f558..1633bc22f 100644
          --- a/tf/advanced/display.html
          +++ b/tf/advanced/display.html
          @@ -69,7 +69,7 @@ 

          See also

          Expand source code -Browse git +Browse git
          """
           # Display
          @@ -1126,7 +1126,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def displayApi(app, silent=SILENT_D):
               """Produce the display API.
          @@ -1193,7 +1193,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def displayReset(app, *options):
               """Restore display parameters to their defaults.
          @@ -1251,7 +1251,7 @@ 

          See Also

          Expand source code -Browse git +Browse git
          def displaySetup(app, *show, **options):
               """Set up all display parameters.
          @@ -1309,7 +1309,7 @@ 

          See Also

          Expand source code -Browse git +Browse git
          def displayShow(app, *options):
               """Show display parameters.
          @@ -1444,7 +1444,7 @@ 

          Results

          Expand source code -Browse git +Browse git
          def export(app, tuples, toDir=None, toFile="results.tsv", **options):
               """Exports an iterable of tuples of nodes to an Excel friendly TSV file.
          @@ -1589,7 +1589,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def getCss(app):
               """Export the CSS for this app.
          @@ -1639,7 +1639,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def getToolCss(app, tool):
               """Export the CSS for a tool of this app.
          @@ -1689,7 +1689,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def loadCss(app):
               """Load the CSS for this app.
          @@ -1768,7 +1768,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def loadToolCss(app, tool, extraCss):
               """Load the Tool CSS for this app.
          @@ -1840,7 +1840,7 @@ 

          Result

          Expand source code -Browse git +Browse git
          def plain(app, n, _inTuple=False, _asString=False, explain=False, **options):
               """Display the plain text of a node.
          @@ -1926,7 +1926,7 @@ 

          Result

          Expand source code -Browse git +Browse git
          def plainTuple(
               app,
          @@ -2169,7 +2169,7 @@ 

          Result

          Expand source code -Browse git +Browse git
          def pretty(app, n, explain=False, _asString=False, **options):
               """Displays the material that corresponds to a node in a graphical way.
          @@ -2248,7 +2248,7 @@ 

          Result

          Expand source code -Browse git +Browse git
          def prettyTuple(app, tup, seq=None, _asString=False, item=RESULT, **options):
               """Displays the material that corresponds to a tuple of nodes in a graphical way.
          @@ -2361,7 +2361,7 @@ 

          Result

          Expand source code -Browse git +Browse git
          def show(app, tuples, _asString=False, **options):
               """Displays an iterable of tuples of nodes.
          @@ -2464,7 +2464,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def table(app, tuples, _asString=False, **options):
               """Plain displays of an iterable of tuples of nodes in a table.
          diff --git a/tf/advanced/find.html b/tf/advanced/find.html
          index a40e80687..1d579bfff 100644
          --- a/tf/advanced/find.html
          +++ b/tf/advanced/find.html
          @@ -31,7 +31,7 @@ 

          Module tf.advanced.find

          Expand source code -Browse git +Browse git
          import sys
           from importlib import util
          @@ -270,7 +270,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def findAppClass(appName, appPath):
               """Find the class definition of an app.
          @@ -325,7 +325,7 @@ 

          See Also

          Expand source code -Browse git +Browse git
          def findAppConfig(
               appName,
          @@ -474,7 +474,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def loadModule(moduleName, *args):
               """Load a module dynamically, by name.
          diff --git a/tf/advanced/helpers.html b/tf/advanced/helpers.html
          index c173bf950..9ec3aecb6 100644
          --- a/tf/advanced/helpers.html
          +++ b/tf/advanced/helpers.html
          @@ -31,7 +31,7 @@ 

          Module tf.advanced.helpers

          Expand source code -Browse git +Browse git
          import collections
           from textwrap import dedent
          @@ -864,7 +864,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def backendRepl(match):
               thisBackend.append(match.group(1))
          @@ -894,7 +894,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def dh(html, inNb="ipython", unexpand=False):
               """Display HTML.
          @@ -952,7 +952,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def dm(md, inNb="ipython", unexpand=False):
               """Display markdown.
          @@ -995,7 +995,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def getHeaderTypes(app, tuples):
               api = app.api
          @@ -1034,7 +1034,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def getHeaders(app, tuples):
               headerTypes = getHeaderTypes(app, tuples)
          @@ -1058,7 +1058,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def getLocalDir(backend, cfg, local, version):
               provenanceSpec = cfg.get("provenanceSpec", {})
          @@ -1098,7 +1098,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def getResultsX(app, results, features, condenseType, fmt=None):
               """Transform a uniform iterable of nodes into a table with extra information.
          @@ -1194,7 +1194,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def getRowsX(app, tuples, features, condenseType, fmt=None):
               """Transform an iterable of nodes into a table with extra information.
          @@ -1218,7 +1218,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def getText(
               app, isPretty, n, nType, outer, first, last, level, passage, descend, options=None
          @@ -1311,7 +1311,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def getTuplesX(app, results, condenseType, fmt=None):
               """Transform a non-uniform iterable of nodes into a table with extra information.
          @@ -1379,7 +1379,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def getValue(app, n, nType, feat, suppress, math=False):
               F = app.api.F
          @@ -1408,7 +1408,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def hData(x):
               if not x:
          @@ -1439,7 +1439,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def hDict(x, outer=False):
               elem = f"{'o' if outer else 'u'}l"
          @@ -1469,7 +1469,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def hEmpty(x):
               return (
          @@ -1491,7 +1491,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def hList(x, outer=False):
               elem = f"{'o' if outer else 'u'}l"
          @@ -1519,7 +1519,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def hScalar(x):
               if type(x) is str:
          @@ -1539,7 +1539,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def hScalar0(x):
               tpv = type(x)
          @@ -1584,7 +1584,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def hasData(backend, local, org, repo, version, relative):
               versionRep = f"/{version}" if version else ""
          @@ -1609,7 +1609,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def htmlSafe(text, isHtml, math=False):
               return text.replace("\n", "<br>") if isHtml else htmlEsc(text, math=math)
          @@ -1627,7 +1627,7 @@

          Parameters

          Expand source code -Browse git +Browse git
          def isUniform(app, tuples):
               """Whether the members of tuples are uniform.
          @@ -1669,7 +1669,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def parseFeatures(features):
               if (
          @@ -1698,7 +1698,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def parseFeaturesLogical(feats):
               bare = []
          @@ -1725,7 +1725,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def runsInNotebook():
               """Determines whether the program runs in an interactive shell.
          @@ -1771,7 +1771,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def showDict(title, data, _browse, inNb, *keys):
               """Shows selected keys of a dictionary in a pretty way.
          @@ -1812,7 +1812,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def splitModRef(moduleRef):
               thisBackend.clear()
          @@ -1890,7 +1890,7 @@ 

          See Also

          Expand source code -Browse git +Browse git
          def transitiveClosure(relation, reflexiveExceptions):
               """Produce the reflexive transitive closure of a relation.
          @@ -1958,7 +1958,7 @@ 

          See Also

          Expand source code -Browse git +Browse git
          def tupleEnum(tuples, start, end, limit, item, inNb):
               if start is None:
          diff --git a/tf/advanced/highlight.html b/tf/advanced/highlight.html
          index 2be51b21a..ab7fd0af0 100644
          --- a/tf/advanced/highlight.html
          +++ b/tf/advanced/highlight.html
          @@ -31,7 +31,7 @@ 

          Module tf.advanced.highlight

          Expand source code -Browse git +Browse git
          from .search import runSearch
           
          @@ -290,7 +290,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def getEdgeHlAtt(e, pair, highlights):
               """Get the edge highlight attribute and style for an edge, only for pretty mode.
          @@ -370,7 +370,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def getHlAtt(app, n, highlights, isSlot):
               """Get the highlight attribute and style for a node for both pretty and plain modes.
          @@ -457,7 +457,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def getPassageHighlights(app, node, query, colorMap, cache):
               """Get the highlights for a whole passage.
          @@ -550,7 +550,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def getTupleHighlights(api, tup, highlights, colorMap, condenseType):
               """Get the highlights for a tuple of nodes.
          diff --git a/tf/advanced/index.html b/tf/advanced/index.html
          index ed6eb68e5..3fb5a2996 100644
          --- a/tf/advanced/index.html
          +++ b/tf/advanced/index.html
          @@ -66,7 +66,7 @@ 

          Advanced API

          Expand source code -Browse git +Browse git
          """
           # Advanced API
          diff --git a/tf/advanced/interchange.html b/tf/advanced/interchange.html
          index 2e17205fc..90c79bc0b 100644
          --- a/tf/advanced/interchange.html
          +++ b/tf/advanced/interchange.html
          @@ -35,7 +35,7 @@ 

          Module tf.advanced.interchange

          Expand source code -Browse git +Browse git
          """
           Produce exports of the whole dataset in different formats.
          @@ -86,7 +86,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def interchangeApi(app):
               """Produce the interchange functions API.
          diff --git a/tf/advanced/links.html b/tf/advanced/links.html
          index 21c1dde2b..cb4c445dc 100644
          --- a/tf/advanced/links.html
          +++ b/tf/advanced/links.html
          @@ -32,7 +32,7 @@ 

          Module tf.advanced.links

          Expand source code -Browse git +Browse git
          """
           Produce links to TF data and links from nodes to web resources.
          @@ -1100,7 +1100,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def flexLink(app, kind):
               """Produce documentation links that are heavily dependent on the back-end.
          @@ -1175,7 +1175,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def header(app, allMeta=False):
               """Generate a colophon of the app.
          @@ -1285,7 +1285,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def linksApi(app, silent=SILENT_D):
               """Produce the link API.
          @@ -1468,7 +1468,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def outLink(
               text, href, title=None, passage=None, clsName=None, target="_blank", asHtml=True
          @@ -1540,7 +1540,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def provenanceLink(
               backend, org, repo, version, branch, commit, local, release, relative
          @@ -1627,7 +1627,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def showProvenance(app, jobName="program code", author="program author"):
               """Shows the provenance that is normally displayed during data loading.
          @@ -1710,7 +1710,7 @@ 

          See Also

          Expand source code -Browse git +Browse git
          def webLink(
               app, n, text=None, clsName=None, urlOnly=False, _asString=False, _noUrl=False
          diff --git a/tf/advanced/options.html b/tf/advanced/options.html
          index d01866d16..eaba9469f 100644
          --- a/tf/advanced/options.html
          +++ b/tf/advanced/options.html
          @@ -392,7 +392,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          """
           # Display Settings.
          @@ -1144,7 +1144,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class Options:
               def __init__(self, app):
          @@ -1327,7 +1327,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def check(self, msg, options):
               app = self.app
          @@ -1389,7 +1389,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def consume(self, options, *remove):
               return {o: options[o] for o in options if o not in remove}
          @@ -1403,7 +1403,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def distill(self, options):
               defaults = self.defaults
          @@ -1428,7 +1428,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def normalize(self, option, value):
               app = self.app
          @@ -1493,7 +1493,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def reset(self, *options):
               app = self.app
          @@ -1521,7 +1521,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def setup(self, *options, **overrides):
               app = self.app
          @@ -1549,7 +1549,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          class OptionsCurrent:
               def __init__(self, options):
          @@ -1574,7 +1574,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def get(self, k, v=None):
               return getattr(self, k, v)
          @@ -1588,7 +1588,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def set(self, k, v):
               self.allKeys.add(k)
          diff --git a/tf/advanced/render.html b/tf/advanced/render.html
          index 7117dd684..77fb89dc5 100644
          --- a/tf/advanced/render.html
          +++ b/tf/advanced/render.html
          @@ -45,7 +45,7 @@ 

          Information shielding

          Expand source code -Browse git +Browse git
          """
           # Render
          @@ -798,7 +798,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def render(app, isPretty, n, _inTuple, _asString, explain, **options):
               """Renders a node, in plain or pretty mode.
          diff --git a/tf/advanced/repo.html b/tf/advanced/repo.html
          index 4da0b7b2a..c1fc8414d 100644
          --- a/tf/advanced/repo.html
          +++ b/tf/advanced/repo.html
          @@ -295,7 +295,7 @@ 

          Updating a corpus that you alre
          Expand source code -Browse git +Browse git
          """
           # Auto downloading from a back-end repository
          @@ -2529,7 +2529,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def GLPERS(backend):
               return f"GL_{SHELL_VAR_RE.sub('_', backend.upper())}_PERS"
          @@ -2543,7 +2543,7 @@

          Functions

          Expand source code -Browse git +Browse git
          def bumpRelease(latestR, increase):
               if latestR:
          @@ -2581,7 +2581,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def catchRemaining(e):
               eType = type(e)
          @@ -2701,7 +2701,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def checkoutRepo(
               backend,
          @@ -2884,7 +2884,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def getFinalUrl(url):
               finalUrl = None
          @@ -2941,7 +2941,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def publishRelease(app, increase, message=None, description=None):
               """Publishes a new data release for a TF dataset to GitHub.
          @@ -3120,7 +3120,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def releaseData(
               backend,
          @@ -3187,7 +3187,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class Checkout:
               """Auxiliary class for `checkoutRepo`"""
          @@ -4272,7 +4272,7 @@ 

          Static methods

          Expand source code -Browse git +Browse git
          @staticmethod
           def fromString(string):
          @@ -4309,7 +4309,7 @@ 

          Static methods

          Expand source code -Browse git +Browse git
          @staticmethod
           def retrieve(url):
          @@ -4340,7 +4340,7 @@ 

          Static methods

          Expand source code -Browse git +Browse git
          @staticmethod
           def toString(commit, release, local, backend, source=None, dest=None):
          @@ -4383,7 +4383,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def connect(self):
               conn = self.conn
          @@ -4457,7 +4457,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def display(self, msg, msgPlain):
               inNb = self.inNb
          @@ -4477,7 +4477,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def download(self):
               cChk = self.commitChk
          @@ -4502,7 +4502,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def downloadCommit(self, commit, showErrors=True):
               c = self.getCommitObj(commit)
          @@ -4526,7 +4526,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def downloadComplete(self):
               ssl._create_default_https_context = ssl._create_unverified_context
          @@ -4615,7 +4615,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def downloadDir(self, commit, exclude=None, showErrors=False):
               g = self.repoOnline
          @@ -4709,7 +4709,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def downloadRelease(self, release, showErrors=True):
               cChk = self.commitChk
          @@ -4763,7 +4763,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def downloadZip(self, where, shiftUp=False, commit=None, showErrors=True):
               # commit parameter only supported for GitLab
          @@ -4904,7 +4904,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def error(self, msg, newline=True):
               console(msg, error=True, newline=newline)
          @@ -4918,7 +4918,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def fetchInfo(self):
               if self.isOffline():
          @@ -4956,7 +4956,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def fixInfo(self):
               sDir = self.dirPathLocal
          @@ -4980,7 +4980,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getCommit(self, commit):
               c = self.getCommitObj(commit)
          @@ -4997,7 +4997,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getCommitFromObj(self, c):
               g = self.repoOnline
          @@ -5017,7 +5017,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getCommitObj(self, commit):
               g = self.repoOnline
          @@ -5070,7 +5070,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getRelease(self, release, showErrors=True):
               r = self.getReleaseObj(release, showErrors=showErrors)
          @@ -5087,7 +5087,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getReleaseFromObj(self, r):
               g = self.repoOnline
          @@ -5114,7 +5114,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getReleaseObj(self, release, showErrors=True):
               g = self.repoOnline
          @@ -5164,7 +5164,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def info(self, msg, newline=True):
               silent = self.silent
          @@ -5180,7 +5180,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def isClone(self):
               return self.local == "clone"
          @@ -5194,7 +5194,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def isExpress(self):
               return (
          @@ -5213,7 +5213,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def isOffline(self):
               return self.local in {"clone", "local"}
          @@ -5227,7 +5227,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def login(self):
               onGithub = self.onGithub
          @@ -5309,7 +5309,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def makeSureLocal(self, attempt=False):
               _browse = self._browse
          @@ -5517,7 +5517,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def possibleError(self, msg, showErrors, again=False, indent="\t", newline=False):
               if showErrors:
          @@ -5536,7 +5536,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def readInfo(self):
               if fileExists(self.filePathLocal):
          @@ -5558,7 +5558,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def warning(self, msg, newline=True):
               silent = self.silent
          @@ -5574,7 +5574,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def writeInfo(self, release=None, commit=None):
               releaseOff = self.releaseOff if release is None else release
          @@ -5598,7 +5598,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          class Repo:
               """Auxiliary class for `releaseData`"""
          @@ -5885,7 +5885,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def bumpRelease(self):
               increase = self.increase
          @@ -5903,7 +5903,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def connect(self):
               backend = self.backend
          @@ -5970,7 +5970,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def error(self, msg, newline=True):
               console(msg, error=True, newline=newline)
          @@ -5984,7 +5984,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def fetchInfo(self):
               g = self.repoOnline
          @@ -6010,7 +6010,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getCommit(self):
               c = self.getCommitObj()
          @@ -6027,7 +6027,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getCommitObj(self):
               g = self.repoOnline
          @@ -6056,7 +6056,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getRelease(self):
               r = self.getReleaseObj()
          @@ -6073,7 +6073,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getReleaseObj(self):
               g = self.repoOnline
          @@ -6101,7 +6101,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def info(self, msg, newline=True):
               silent = self.silent
          @@ -6117,7 +6117,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def makeRelease(self):
               g = self.repoOnline
          @@ -6156,7 +6156,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def makeZip(self):
               source = self.source
          @@ -6193,7 +6193,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def newRelease(self):
               if not self.makeZip():
          @@ -6229,7 +6229,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def uploadZip(self):
               newTag = self.newTag
          @@ -6268,7 +6268,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def warning(self, msg, newline=True):
               silent = self.silent
          diff --git a/tf/advanced/search.html b/tf/advanced/search.html
          index 497406287..3a155f747 100644
          --- a/tf/advanced/search.html
          +++ b/tf/advanced/search.html
          @@ -32,7 +32,7 @@ 

          Module tf.advanced.search

          Expand source code -Browse git +Browse git
          """
           Calls from the advanced API to the Search API.
          @@ -315,7 +315,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def getQueryFeatures(exe):
               qnodes = getattr(exe, "qnodes", [])
          @@ -355,7 +355,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def runSearch(app, query, cache):
               """A wrapper around the generic search interface of TF.
          @@ -424,7 +424,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def runSearchCondensed(app, query, cache, condenseType):
               """A wrapper around the generic search interface of TF.
          @@ -544,7 +544,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def search(
               app, query, silent=SILENT_D, sets=None, shallow=False, sort=True, limit=None
          @@ -708,7 +708,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def searchApi(app):
               app.search = types.MethodType(search, app)
          diff --git a/tf/advanced/sections.html b/tf/advanced/sections.html index 625fbb7f2..fd9d16568 100644 --- a/tf/advanced/sections.html +++ b/tf/advanced/sections.html @@ -49,7 +49,7 @@

          Structure

          Expand source code -Browse git +Browse git
          """Section
           
          @@ -312,7 +312,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def nodeFromSectionStr(app, sectionStr, lang="en"):
               """Find the node of a section string.
          @@ -430,7 +430,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def sectionStrFromNode(app, n, lang="en", lastSlot=False, fillup=False):
               """The heading of a section to which a node belongs.
          @@ -483,7 +483,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def sectionsApi(app):
               app.nodeFromSectionStr = types.MethodType(nodeFromSectionStr, app)
          @@ -509,7 +509,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def structureStrFromNode(app, n):
               """The heading of a structure to which a node belongs.
          diff --git a/tf/advanced/settings.html b/tf/advanced/settings.html
          index 427e3ffc1..9dec634dd 100644
          --- a/tf/advanced/settings.html
          +++ b/tf/advanced/settings.html
          @@ -844,7 +844,7 @@ 

          writing

          Expand source code -Browse git +Browse git
          """
           # App settings
          @@ -2862,7 +2862,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def DOC_DEFAULTS(backend):
               return (
          @@ -2886,7 +2886,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def compileFormatCls(app, specs, givenStyles):
               api = app.api
          @@ -2930,7 +2930,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def getDataDefaults(app, cfg, dKey, withApi):
               checker = Check(app, withApi)
          @@ -2993,7 +2993,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def getLevel(defaultLevel, givenInfo, isVerse):
               level = givenInfo.get("level", defaultLevel)
          @@ -3013,7 +3013,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def getTypeDefaults(app, cfg, dKey, withApi):
               if not withApi:
          @@ -3336,7 +3336,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def setAppSpecs(app, cfg, reset=False):
               backend = app.backend
          @@ -3440,7 +3440,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def setAppSpecsApi(app, cfg):
               api = app.api
          @@ -3519,7 +3519,7 @@ 

          See Also

          Expand source code -Browse git +Browse git
          def showContext(app, *keys, withComputed=True, asHtml=False):
               """Shows the *context* of the app `tf.advanced.app.App.context` in a pretty way.
          @@ -3585,7 +3585,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class AppCurrent:
               def __init__(self, specs):
          @@ -3615,7 +3615,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def get(self, k, v):
               return getattr(self, k, v)
          @@ -3629,7 +3629,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def set(self, k, v):
               self.allKeys.add(k)
          @@ -3644,7 +3644,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def update(self, specs):
               allKeys = self.allKeys
          @@ -3664,7 +3664,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          class Check:
               def __init__(self, app, withApi):
          @@ -3867,7 +3867,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def checkGroup(self, cfg, defaults, dKey, postpone=set(), extra=None):
               self.cfg = cfg
          @@ -3895,7 +3895,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def checkItem(self, cfg, dKey):
               self.cfg = cfg
          @@ -3915,7 +3915,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def checkSetting(self, k, v, extra=None):
               app = self.app
          @@ -4074,7 +4074,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def report(self):
               errors = self.errors
          diff --git a/tf/advanced/tables.html b/tf/advanced/tables.html
          index e2b67227d..4b61528e0 100644
          --- a/tf/advanced/tables.html
          +++ b/tf/advanced/tables.html
          @@ -31,7 +31,7 @@ 

          Module tf.advanced.tables

          Expand source code -Browse git +Browse git
          from ..core.text import DEFAULT_FORMAT
           from .helpers import getHeaders, RESULT
          @@ -416,7 +416,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def compose(
               app,
          @@ -542,7 +542,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def composeP(
               app,
          @@ -651,7 +651,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def composeT(
               app,
          diff --git a/tf/advanced/text.html b/tf/advanced/text.html
          index e450ecf94..2c2284736 100644
          --- a/tf/advanced/text.html
          +++ b/tf/advanced/text.html
          @@ -31,7 +31,7 @@ 

          Module tf.advanced.text

          Expand source code -Browse git +Browse git
          import types
           from textwrap import dedent
          @@ -199,7 +199,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def showFormats(app):
               inNb = app.inNb
          @@ -253,7 +253,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def specialCharacters(app, fmt=None, _browse=False):
               """Generate a widget for hard to type characters.
          @@ -349,7 +349,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def textApi(app):
               api = app.api
          diff --git a/tf/advanced/unravel.html b/tf/advanced/unravel.html
          index bec97a13e..a5b23db0c 100644
          --- a/tf/advanced/unravel.html
          +++ b/tf/advanced/unravel.html
          @@ -35,7 +35,7 @@ 

          Unravel

          Expand source code -Browse git +Browse git
          """
           # Unravel
          @@ -746,7 +746,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def unravel(app, n, isPlain=True, _inTuple=False, explain=False, **options):
               """Unravels a node and its graph-neighbourhood into a tree of fragments.
          @@ -801,7 +801,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class NodeProps:
               """Node properties during plain() or pretty().
          @@ -894,7 +894,7 @@ 

          Instance variables

          Expand source code -Browse git +Browse git
          class OuterSettings:
               """Common properties during plain() and pretty().
          @@ -976,7 +976,7 @@ 

          Instance variables

          Expand source code -Browse git +Browse git
          class TreeInfo:
               """Tree properties during plain() or pretty().
          @@ -1004,7 +1004,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def get(self, k, v):
               return getattr(self, k, v)
          @@ -1018,7 +1018,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def update(self, **specs):
               for (k, v) in specs.items():
          diff --git a/tf/advanced/volumes.html b/tf/advanced/volumes.html
          index 0a4fadcb3..fb7813de1 100644
          --- a/tf/advanced/volumes.html
          +++ b/tf/advanced/volumes.html
          @@ -32,7 +32,7 @@ 

          Module tf.advanced.volumes

          Expand source code -Browse git +Browse git
          """
           Produce links to TF data and links from nodes to web resources.
          @@ -141,7 +141,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def collect(app, *args, **kwargs):
               """Calls `tf.fabric.Fabric.collect` from an app object."""
          @@ -161,7 +161,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def extract(app, *args, **kwargs):
               """Calls `tf.fabric.Fabric.extract` from an app object."""
          @@ -189,7 +189,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def getVolumes(app, *args, **kwargs):
               """Calls `tf.fabric.Fabric.getVolumes` from an app object.
          @@ -229,7 +229,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def volumesApi(app):
               """Produce the volume support functions API.
          diff --git a/tf/advanced/zipdata.html b/tf/advanced/zipdata.html
          index df81612d2..67b37be6d 100644
          --- a/tf/advanced/zipdata.html
          +++ b/tf/advanced/zipdata.html
          @@ -31,7 +31,7 @@ 

          Module tf.advanced.zipdata

          Expand source code -Browse git +Browse git
          import sys
           import types
          @@ -473,7 +473,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def addCheckout(path):
               release = None
          @@ -512,7 +512,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def collectFiles(base, path, results, zipBase=None):
               if zipBase is None:
          @@ -560,7 +560,7 @@ 

          EFFECT

          Expand source code -Browse git +Browse git
          def main(cargs=sys.argv):
               if len(cargs) < 2 or any(
          @@ -640,7 +640,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def zipAll(app):
               """Gathers all data for a TF resource and zips it into one file.
          @@ -781,7 +781,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def zipApi(app):
               """Produce the zip creation API.
          @@ -827,7 +827,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def zipData(
               backend,
          @@ -956,7 +956,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def zipDataPart(source, results):
               if not dirExists(source):
          diff --git a/tf/app.html b/tf/app.html
          index 87fb14220..1884d9ea2 100644
          --- a/tf/app.html
          +++ b/tf/app.html
          @@ -39,7 +39,7 @@ 

          Module tf.app

          Expand source code -Browse git +Browse git
          """
           Make use of a corpus.
          @@ -137,7 +137,7 @@ 

          See Also

          Expand source code -Browse git +Browse git
          def use(appName, *args, backend=None, **kwargs):
               """Make use of a corpus.
          diff --git a/tf/browser/command.html b/tf/browser/command.html
          index d5bd6404a..eaa862edb 100644
          --- a/tf/browser/command.html
          +++ b/tf/browser/command.html
          @@ -32,7 +32,7 @@ 

          Module tf.browser.command

          Expand source code -Browse git +Browse git
          """
           Command-line argument processing
          @@ -156,7 +156,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def argApp(cargs, simple):
               (appName, checkoutApp, dataLoc) = argParam(cargs)
          @@ -212,7 +212,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def argNoweb(cargs):
               for arg in cargs:
          @@ -229,7 +229,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def argParam(cargs):
               appName = None
          @@ -269,7 +269,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def getPort(slug):
               portOffset = crc32(slug.encode("utf8")) % 10000
          diff --git a/tf/browser/html.html b/tf/browser/html.html
          index 3ddabf4e3..d9fae99af 100644
          --- a/tf/browser/html.html
          +++ b/tf/browser/html.html
          @@ -34,7 +34,7 @@ 

          Module tf.browser.html

          Expand source code -Browse git +Browse git
          """HTML generation done in the Pythonic way.
           
          @@ -223,7 +223,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def dig(*content, sep=""):
               """A method to join nested iterables of strings into a string.
          @@ -274,7 +274,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def elemFunc(close, elem):
               """Generates a function to serialize a specific HTML element.
          @@ -330,7 +330,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def generate(close, tag, *content, **atts):
               """Transform the logical information for an HTML element into an HTML string.
          @@ -384,7 +384,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class H:
               """Provider of HTML serializing functions per element type.
          @@ -413,7 +413,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def result(*content, **atts):
               return generate(close, elem, *content, **atts)
          @@ -427,7 +427,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def result(**atts):
               return generate(close, elem, **atts)
          @@ -441,7 +441,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def result(*content, **atts):
               return generate(close, elem, *content, **atts)
          @@ -455,7 +455,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def result(*content, **atts):
               return generate(close, elem, *content, **atts)
          @@ -469,7 +469,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def result(*content, **atts):
               return generate(close, elem, *content, **atts)
          @@ -483,7 +483,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def result(*content, **atts):
               return generate(close, elem, *content, **atts)
          @@ -497,7 +497,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def result(*content, **atts):
               return generate(close, elem, *content, **atts)
          @@ -511,7 +511,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def result(**atts):
               return generate(close, elem, **atts)
          @@ -537,7 +537,7 @@

          Returns

          Expand source code -Browse git +Browse git
          def dig(*content, sep=""):
               """A method to join nested iterables of strings into a string.
          @@ -575,7 +575,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def result(*content, **atts):
               return generate(close, elem, *content, **atts)
          @@ -589,7 +589,7 @@

          Returns

          Expand source code -Browse git +Browse git
          def result(*content, **atts):
               return generate(close, elem, *content, **atts)
          @@ -603,7 +603,7 @@

          Returns

          Expand source code -Browse git +Browse git
          def result(*content, **atts):
               return generate(close, elem, *content, **atts)
          @@ -617,7 +617,7 @@

          Returns

          Expand source code -Browse git +Browse git
          def result(*content, **atts):
               return generate(close, elem, *content, **atts)
          @@ -631,7 +631,7 @@

          Returns

          Expand source code -Browse git +Browse git
          def result(*content, **atts):
               return generate(close, elem, *content, **atts)
          @@ -645,7 +645,7 @@

          Returns

          Expand source code -Browse git +Browse git
          def result(*content, **atts):
               return generate(close, elem, *content, **atts)
          diff --git a/tf/browser/index.html b/tf/browser/index.html index 96d483daa..c04f7b5a6 100644 --- a/tf/browser/index.html +++ b/tf/browser/index.html @@ -32,7 +32,7 @@

          Local TF data and web server

          Expand source code -Browse git +Browse git
          """
           # Local TF data and web server
          diff --git a/tf/browser/kernel.html b/tf/browser/kernel.html
          index 4107ce18f..374ceb874 100644
          --- a/tf/browser/kernel.html
          +++ b/tf/browser/kernel.html
          @@ -38,7 +38,7 @@ 

          Kernel API

          Expand source code -Browse git +Browse git
          """
           # TF kernel
          @@ -550,7 +550,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def makeTfKernel(app, appName):
               if not app.api:
          diff --git a/tf/browser/ner/annotate.html b/tf/browser/ner/annotate.html
          index 3b6f64215..20d106635 100644
          --- a/tf/browser/ner/annotate.html
          +++ b/tf/browser/ner/annotate.html
          @@ -100,7 +100,7 @@ 

          Module tf.browser.ner.annotate

          Expand source code -Browse git +Browse git
          """Central Annotation object.
           
          @@ -555,7 +555,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          class Annotate(Sets, Show):
               def __init__(self, app, data=None, browse=False):
          @@ -985,7 +985,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def filterContent(
               self,
          @@ -1252,7 +1252,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def findOccs(self, qTokenSet=set()):
               """Finds the occurrences of multiple sequences of tokens.
          diff --git a/tf/browser/ner/corpus.html b/tf/browser/ner/corpus.html
          index 579d677b0..c4059e168 100644
          --- a/tf/browser/ner/corpus.html
          +++ b/tf/browser/ner/corpus.html
          @@ -39,7 +39,7 @@ 

          Module tf.browser.ner.corpus

          Expand source code -Browse git +Browse git
          """Access to the corpus.
           
          @@ -431,7 +431,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class Corpus(Settings):
               def __init__(self):
          diff --git a/tf/browser/ner/data.html b/tf/browser/ner/data.html
          index f95af406e..b28fdd2ce 100644
          --- a/tf/browser/ner/data.html
          +++ b/tf/browser/ner/data.html
          @@ -43,7 +43,7 @@ 

          Module tf.browser.ner.data

          Expand source code -Browse git +Browse git
          """Annotation data module.
           
          @@ -1022,7 +1022,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          class Data(Corpus):
               def __init__(self, data=None):
          @@ -1973,7 +1973,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def addEntities(self, newEntities, silent=True):
               """Add multiple entities efficiently to the current set.
          @@ -2081,7 +2081,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def addEntity(self, vals, allMatches, silent=True):
               """Add entity occurrences to the current set.
          @@ -2198,7 +2198,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def addEntityRich(self, additions, buckets, excludedTokens=set()):
               """Add specified entity occurrences to the current set.
          @@ -2355,7 +2355,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def delEntity(self, vals, allMatches=None, silent=True):
               """Delete entity occurrences from the current set.
          @@ -2474,7 +2474,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def delEntityRich(self, deletions, buckets, excludedTokens=set()):
               """Delete specified entity occurrences from the current set.
          @@ -2625,7 +2625,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def fromSource(self):
               """Loads annotation data from source.
          @@ -2733,7 +2733,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def loadData(self):
               """Loads data of the current annotation set into memory.
          @@ -2779,7 +2779,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def mergeEntities(self, newEntities):
               """Performs additions to the current annotation set.
          @@ -2871,7 +2871,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def process(self, changed):
               """Generated derived data structures out of the source data.
          @@ -3055,7 +3055,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def saveEntitiesAs(self, dataFile):
               """Export the data of an annotation set to a file.
          @@ -3095,7 +3095,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def weedEntities(self, delEntities):
               """Performs deletions to the current annotation set.
          diff --git a/tf/browser/ner/form.html b/tf/browser/ner/form.html
          index 29437a4e4..21e537f91 100644
          --- a/tf/browser/ner/form.html
          +++ b/tf/browser/ner/form.html
          @@ -37,7 +37,7 @@ 

          Module tf.browser.ner.form

          Expand source code -Browse git +Browse git
          """Machinery for request reading.
           
          @@ -228,7 +228,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          class Form:
               def __init__(
          @@ -383,7 +383,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def fget2(self, k):
               """Makes form value under key `k` or its default into an boolean."""
          @@ -399,7 +399,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def fget3(self, k):
               """Makes form value under key `k` or its default into a 3-way boolean."""
          @@ -415,7 +415,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def fgeti(self, k):
               """Makes form value under key `k` or its default into an integer."""
          @@ -433,7 +433,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def fgetj(self, k):
               """Makes form value under key `k` or its default into a data structure.
          @@ -457,7 +457,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def fgets(self, k):
               """Makes form value under key `k` or its default into an string."""
          @@ -476,7 +476,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def fgetsi(self, k):
               """Makes form value under key `k` or its default into a set.
          @@ -503,7 +503,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def fgettu(self, k):
               """Makes form value under key `k` or its default into a tuple.
          @@ -530,7 +530,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def fill(self):
               """Fill a dictionary with interpreted form values.
          diff --git a/tf/browser/ner/fragments.html b/tf/browser/ner/fragments.html
          index 1aa02ddb3..dcaaf613b 100644
          --- a/tf/browser/ner/fragments.html
          +++ b/tf/browser/ner/fragments.html
          @@ -35,7 +35,7 @@ 

          Module tf.browser.ner.fragments

          Expand source code -Browse git +Browse git
          """Wraps various pieces into HTML.
           
          @@ -947,7 +947,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class Fragments:
               def wrapMessages(self):
          @@ -1842,7 +1842,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapActive(self):
               """HTML for the active entity."""
          @@ -1877,7 +1877,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapAnnoSets(self):
               """HTML for the annotation set chooser.
          @@ -1991,7 +1991,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapAppearance(self):
               """HTML for the appearance widget.
          @@ -2064,7 +2064,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapEntity(self):
               """Basic data for the selected entity widget.
          @@ -2132,7 +2132,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapEntityFeats(self):
               """HTML for the entity feature value selection.
          @@ -2233,7 +2233,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapEntityHeaders(self):
               """HTML for the header of the entity table, dependent on the state of sorting."""
          @@ -2280,7 +2280,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapEntityModReport(self):
               """HTML for the combined report of add / del actions."""
          @@ -2305,7 +2305,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapEntityModify(self):
               """HTML for the add / del widget.
          @@ -2563,7 +2563,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapEntityStat(self, val, feat):
               """HTML for statistics of feature values.
          @@ -2596,7 +2596,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapEntityText(self):
               """HTML for the selected entity widget."""
          @@ -2653,7 +2653,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapExceptions(self):
               """HTML for the select / deselect buttons.
          @@ -2709,7 +2709,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapFilter(self):
               """HTML for the filter widget.
          @@ -2796,7 +2796,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapFindStat(self):
               """HTML for statistics.
          @@ -2821,7 +2821,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapMessages(self):
               """HTML for messages."""
          @@ -2839,7 +2839,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapQuery(self):
               """HTML for all control widgets on the page."""
          @@ -2861,7 +2861,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapReport(self, report, kind):
               """HTML for the report of add / del actions."""
          @@ -2896,7 +2896,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def wrapScope(self):
               """HTML for the scope widget.
          diff --git a/tf/browser/ner/helpers.html b/tf/browser/ner/helpers.html
          index 26b465bd4..451bea3ce 100644
          --- a/tf/browser/ner/helpers.html
          +++ b/tf/browser/ner/helpers.html
          @@ -35,7 +35,7 @@ 

          Module tf.browser.ner.helpers

          Expand source code -Browse git +Browse git
          """Auxiliary functions.
           
          @@ -321,7 +321,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def findCompile(bFind, bFindC):
               """Compiles a regular expression out of a search pattern.
          @@ -371,7 +371,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def makeCss(features, keywordFeatures):
               """Generates CSS for the tool.
          @@ -440,7 +440,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def normalize(text):
               """Normalize white-space in a text."""
          @@ -463,7 +463,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def repIdent(features, vals, active=""):
               """Represents an identifier in HTML.
          @@ -498,7 +498,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def repSummary(keywordFeatures, vals, active=""):
               """Represents an keyword value in HTML.
          @@ -532,7 +532,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def toAscii(text):
               """Transforms a text with diacritical marks into a plain ASCII text.
          @@ -558,7 +558,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def toId(text):
               """Transforms text to an identifier string.
          @@ -581,7 +581,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def toSmallId(text, transform={}):
               """Transforms text to a smaller identifier string.
          @@ -628,7 +628,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def toTokens(text, spaceEscaped=False):
               """Split a text into tokens.
          @@ -654,7 +654,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def valRep(features, fVals):
               """HTML representation of an entity as a sequence of `feat=val` strings."""
          diff --git a/tf/browser/ner/match.html b/tf/browser/ner/match.html
          index 96afef070..23a1e1060 100644
          --- a/tf/browser/ner/match.html
          +++ b/tf/browser/ner/match.html
          @@ -34,7 +34,7 @@ 

          Module tf.browser.ner.match

          Expand source code -Browse git +Browse git
          """Match functions.
           
          @@ -331,7 +331,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def entityMatch(
               entityIndex,
          @@ -545,7 +545,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def occMatch(getTokens, b, qTokenSet, results):
               """Finds the occurrences of multiple sequences of tokens in a single bucket.
          diff --git a/tf/browser/ner/ner.html b/tf/browser/ner/ner.html
          index 53079316c..3c7b38107 100644
          --- a/tf/browser/ner/ner.html
          +++ b/tf/browser/ner/ner.html
          @@ -196,7 +196,7 @@ 

          Inspection

          Expand source code -Browse git +Browse git
          """API for rule-based entity marking.
           
          @@ -749,7 +749,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          class NER(Annotate):
               def __init__(self, app):
          @@ -1077,7 +1077,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def makeInventory(self):
               """Explores the corpus for the surface forms mentioned in the instructions.
          @@ -1118,7 +1118,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def markEntities(self):
               """Marks up the members of the inventory as entities.
          @@ -1195,7 +1195,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def readInstructions(self, sheetName, force=False):
               """Reads an Excel or YAML file with entity recognition instructions.
          @@ -1369,7 +1369,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def showInventory(self):
               """Shows the inventory.
          diff --git a/tf/browser/ner/request.html b/tf/browser/ner/request.html
          index d6b709351..3617ca3a6 100644
          --- a/tf/browser/ner/request.html
          +++ b/tf/browser/ner/request.html
          @@ -34,7 +34,7 @@ 

          Module tf.browser.ner.request

          Expand source code -Browse git +Browse git
          """Auxiliary functions for managing request data.
           
          @@ -375,7 +375,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class Request(Form):
               def __init__(self):
          @@ -693,7 +693,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def adaptValSelect(self):
               """Adapts the values contained in `valSelect` after a modification action.
          @@ -754,7 +754,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def findSetup(self):
               """Compiles the filter pattern into a regular expression.
          @@ -803,7 +803,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def getFormData(self):
               """Get form data.
          @@ -885,7 +885,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def initVars(self):
               """Initializes the computation of the new page.
          diff --git a/tf/browser/ner/serve.html b/tf/browser/ner/serve.html
          index 316fe66d6..5f71deb92 100644
          --- a/tf/browser/ner/serve.html
          +++ b/tf/browser/ner/serve.html
          @@ -36,7 +36,7 @@ 

          Module tf.browser.ner.serve

          Expand source code -Browse git +Browse git
          """Main controller for Flask
           
          @@ -403,7 +403,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def serveNer(web):
               """Main controller to render a full page.
          @@ -435,7 +435,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def serveNerContext(web, node):
               """Controller to render a portion of a page.
          @@ -477,7 +477,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          class Serve(Request, Fragments):
               def __init__(self, web):
          @@ -796,7 +796,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def actionsFull(self):
               """Carries out requested actions before building the full page.
          @@ -822,7 +822,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def actionsLean(self, node):
               """Carries out requested actions before building a portion of the page.
          @@ -864,7 +864,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def getBuckets(self, noFind=False, node=None):
               """Fetch a selection of buckets from the corpus.
          @@ -951,7 +951,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def setHandling(self):
               """Carries out the set-related actions before composing the page.
          @@ -1014,7 +1014,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def setupFull(self):
               """Prepares to serve a complete page.
          @@ -1043,7 +1043,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def setupLean(self):
               """Prepares to update a portion of the page.
          @@ -1068,7 +1068,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def updateHandling(self):
               """Carries out modification actions in the current annotation set.
          @@ -1141,7 +1141,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def wrapFull(self):
               """Builds the full page.
          @@ -1187,7 +1187,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def wrapLean(self):
               """Builds a portion of the page.
          diff --git a/tf/browser/ner/sets.html b/tf/browser/ner/sets.html
          index 55f76887a..b15ccc573 100644
          --- a/tf/browser/ner/sets.html
          +++ b/tf/browser/ner/sets.html
          @@ -36,7 +36,7 @@ 

          Module tf.browser.ner.sets

          Expand source code -Browse git +Browse git
          """Annotation set management.
           
          @@ -372,7 +372,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          class Sets(Data):
               def __init__(self, data=None):
          @@ -685,7 +685,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getSetData(self):
               """Deliver the data of the current set.
          @@ -706,7 +706,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def resetSet(self):
               """Clear the current annotation set.
          @@ -760,7 +760,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def setDel(self, delSet):
               """Remove a named set.
          @@ -823,7 +823,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def setDup(self, dupSet):
               """Duplicates the current set to a set with a new name.
          @@ -900,7 +900,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def setMove(self, moveSet):
               """Renames a named set.
          @@ -970,7 +970,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def setSet(self, newAnnoSet):
               """Switch to a named annotation set.
          diff --git a/tf/browser/ner/settings.html b/tf/browser/ner/settings.html
          index 02edef16c..85d81b812 100644
          --- a/tf/browser/ner/settings.html
          +++ b/tf/browser/ner/settings.html
          @@ -34,7 +34,7 @@ 

          Module tf.browser.ner.settings

          Expand source code -Browse git +Browse git
          """Corpus dependent setup of the annotation tool.
           
          @@ -393,7 +393,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class Settings:
               def __init__(self):
          @@ -455,7 +455,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def console(self, msg, **kwargs):
               """Print something to the output.
          diff --git a/tf/browser/ner/show.html b/tf/browser/ner/show.html
          index 9a1f9aa8f..11e6e8bfa 100644
          --- a/tf/browser/ner/show.html
          +++ b/tf/browser/ner/show.html
          @@ -34,7 +34,7 @@ 

          Module tf.browser.ner.show

          Expand source code -Browse git +Browse git
          """Rendering of corpus extracts with annotations.
           
          @@ -449,7 +449,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class Show:
               def showEntityOverview(self):
          @@ -888,7 +888,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def showContent(
               self,
          @@ -1159,7 +1159,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def showEntities(
               self, activeEntity=None, sortKey=None, sortDir=None, cutOffFreq=None
          @@ -1297,7 +1297,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def showEntityOverview(self):
               """Generates HTML for an overview of the entities.
          diff --git a/tf/browser/ner/web.html b/tf/browser/ner/web.html
          index 71783846e..d1ccfbd86 100644
          --- a/tf/browser/ner/web.html
          +++ b/tf/browser/ner/web.html
          @@ -34,7 +34,7 @@ 

          Module tf.browser.ner.web

          Expand source code -Browse git +Browse git
          """Flask sub web app in the TF browser.
           
          @@ -169,7 +169,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def factory(web):
               """A sub web app, to be inserted into the TF browser web app.
          diff --git a/tf/browser/serve.html b/tf/browser/serve.html
          index ac1d1a0eb..78fe0ecbc 100644
          --- a/tf/browser/serve.html
          +++ b/tf/browser/serve.html
          @@ -37,7 +37,7 @@ 

          Dress TF nodes up for serving
          Expand source code -Browse git +Browse git
          """
           # Dress TF nodes up for serving on the web
          @@ -531,7 +531,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def serveAll(web, anything):
               aContext = web.context
          @@ -662,7 +662,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def serveDownload(web, jobOnly):
               aContext = web.context
          @@ -761,7 +761,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def serveExport(web):
               aContext = web.context
          @@ -835,7 +835,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def servePassage(web, getx=None):
               kernelApi = web.kernelApi
          @@ -885,7 +885,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def serveQuery(web, getx=None, asDict=False):
               kernelApi = web.kernelApi
          @@ -978,7 +978,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def serveTable(web, kind, getx=None, asDict=False):
               kernelApi = web.kernelApi
          diff --git a/tf/browser/servelib.html b/tf/browser/servelib.html
          index 8cd33e425..0995ae843 100644
          --- a/tf/browser/servelib.html
          +++ b/tf/browser/servelib.html
          @@ -39,7 +39,7 @@ 

          About

          Expand source code -Browse git +Browse git
          """
           # Common Server Related Functions
          @@ -320,7 +320,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def batchAround(nResults, position, batch):
               halfBatch = int((batch + 1) / 2)
          @@ -342,7 +342,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def getAbout(colophon, header, provenance, form):
               return f"""
          @@ -396,7 +396,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def getFormData(interfaceDefaults):
               """Get form data.
          @@ -557,7 +557,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def getInt(x, default=1):
               if len(x) > 15:
          @@ -575,7 +575,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def zipTables(csvs, tupleResultsX, queryResultsX, about, form):
               appName = form["appName"]
          diff --git a/tf/browser/start.html b/tf/browser/start.html
          index 1e4c6f970..3d4cf5cef 100644
          --- a/tf/browser/start.html
          +++ b/tf/browser/start.html
          @@ -89,7 +89,7 @@ 

          Implementation notes

          Expand source code -Browse git +Browse git
          """
           # Start the TF browser
          @@ -368,7 +368,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def bMsg(url):
               return f"\n\tOpen a webbrowser and navigate to url {url}\n"
          @@ -382,7 +382,7 @@

          Functions

          Expand source code -Browse git +Browse git
          def main(cargs=sys.argv[1:]):
               console(BANNER)
          @@ -441,7 +441,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def startBrowser(url, forceChrome, debug):
               opened = False
          diff --git a/tf/browser/web.html b/tf/browser/web.html
          index 387f907f6..bcd55c066 100644
          --- a/tf/browser/web.html
          +++ b/tf/browser/web.html
          @@ -114,7 +114,7 @@ 

          JavaScript

          Expand source code -Browse git +Browse git
          """
           # Web interface
          @@ -407,7 +407,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def factory(web):
               app = Flask(__name__)
          @@ -495,7 +495,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def runWeb(webapp, debug, portWeb):
               run_simple(
          @@ -519,7 +519,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def setup(debug, *args):
               appSpecs = argApp(args, False)
          @@ -595,7 +595,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class Web:
               def __init__(self, kernelApi):
          @@ -619,7 +619,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def console(self, msg):
               if self.debug:
          diff --git a/tf/browser/wrap.html b/tf/browser/wrap.html
          index 1f69f4020..23f8ce4f1 100644
          --- a/tf/browser/wrap.html
          +++ b/tf/browser/wrap.html
          @@ -33,7 +33,7 @@ 

          Wrap material into HTML

          Expand source code -Browse git +Browse git
          """
           # Wrap material into HTML
          @@ -592,7 +592,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def pageLinks(nResults, position, spread=10):
               """Provide navigation links for results sets, big or small.
          @@ -675,7 +675,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def passageLinks(passages, sec0Type, sec0, sec1, tillLevel):
               """Provide navigation links for passages,
          @@ -728,7 +728,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def wrapColorMap(form):
               """Wraps the color map for query result highlighting into HTML.
          @@ -813,7 +813,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def wrapEColorMap(form):
               """Wraps the edge color map for edge highlighting into HTML.
          @@ -922,7 +922,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def wrapOptions(context, form):
               """Wraps the boolean options, including the app-specific ones, into HTML."""
          @@ -962,7 +962,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def wrapProvenance(form, provenance, setNames):
               utc_offset_sec = time.altzone if time.localtime().tm_isdst else time.timezone
          @@ -1138,7 +1138,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def wrapSelect(option, allowedValues, value, group, item, multiple):
               """Provides a buttoned chooser for the node types.
          diff --git a/tf/capable.html b/tf/capable.html
          index de0f2e3a6..797e828bc 100644
          --- a/tf/capable.html
          +++ b/tf/capable.html
          @@ -86,7 +86,7 @@ 

          Optional dependencies

          Expand source code -Browse git +Browse git
          """Dependency management.
           
          @@ -493,7 +493,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class Capable:
               """Import modules for back-end communication if possible.
          @@ -608,7 +608,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def can(self, extra):
               if extra in {"github", "gitlab"}:
          @@ -639,7 +639,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def load(self, module):
               modules = self.modules
          @@ -664,7 +664,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def loadFrom(self, module, *members):
               loaded = self.load(module)
          @@ -685,7 +685,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def tryImport(self, *extras):
               backendProviders = self.backendProviders
          @@ -761,7 +761,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          class CheckImport:
               def __init__(self, *modules):
          @@ -952,7 +952,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def importGet(self):
               """Delivers the imported modules.
          @@ -991,7 +991,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def importOK(self, hint=False):
               """Reports the result of the import attempts.
          diff --git a/tf/cheatsheet.html b/tf/cheatsheet.html
          index 2a964076e..f358dd0b8 100644
          --- a/tf/cheatsheet.html
          +++ b/tf/cheatsheet.html
          @@ -1661,7 +1661,7 @@ 

          Command-line tools

          Expand source code -Browse git +Browse git
          """
           .. include:: docs/main/cheatsheet.md
          diff --git a/tf/clean.html b/tf/clean.html
          index 3b3509931..2e6a1a11b 100644
          --- a/tf/clean.html
          +++ b/tf/clean.html
          @@ -40,7 +40,7 @@ 

          Clean

          Expand source code -Browse git +Browse git
          """
           # Clean
          @@ -207,7 +207,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def clean(tfd=True, backend=None, dry=True, specific=None, current=False):
               """Clean up older compressed `.tfx` files.
          @@ -293,7 +293,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def err(msg):
               """Write to standard error output immediately."""
          @@ -309,7 +309,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def out(msg):
               """Write to standard normal output immediately."""
          diff --git a/tf/client/index.html b/tf/client/index.html
          index e12c285e1..783128eff 100644
          --- a/tf/client/index.html
          +++ b/tf/client/index.html
          @@ -57,7 +57,7 @@ 

          Acknowledgments

          Expand source code -Browse git +Browse git
          """
           # Layered Search
          diff --git a/tf/client/make/build.html b/tf/client/make/build.html
          index 5be205648..a2b36b520 100644
          --- a/tf/client/make/build.html
          +++ b/tf/client/make/build.html
          @@ -81,7 +81,7 @@ 

          Commands

          Expand source code -Browse git +Browse git
          """
           # Usage
          @@ -1497,7 +1497,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def console(*args, error=False):
               device = sys.stderr if error else sys.stdout
          @@ -1513,7 +1513,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def invertMap(legend):
               return (
          @@ -1533,7 +1533,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def main():
               Args = readArgsLegacy()
          @@ -1594,7 +1594,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def makeSearchClients(dataset, folder, appFolder, backend=None, dataDir=None):
               DEBUG_STATE = "off"
          @@ -1640,7 +1640,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def readArgsLegacy():
               class Args:
          @@ -1753,7 +1753,7 @@ 

          Classes

          Expand source code -Browse git +Browse git
          class Make:
               def __init__(
          @@ -2862,7 +2862,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def adjustDebug(self):
               C = self.C
          @@ -2894,7 +2894,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def adjustVersion(self):
               C = self.C
          @@ -2917,7 +2917,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def compress(self, data):
               sets = {}
          @@ -2944,7 +2944,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def config(self):
               C = self.C
          @@ -3220,7 +3220,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def doCommand(self, command):
               if command == "serve":
          @@ -3257,7 +3257,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def dumpConfig(self):
               C = self.C
          @@ -3283,7 +3283,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def dumpCorpus(self):
               C = self.C
          @@ -3412,7 +3412,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getAllClients(self):
               C = self.C
          @@ -3437,7 +3437,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def getDebugs(self):
               C = self.C
          @@ -3470,7 +3470,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def importMake(self, c=None):
               client = self.client
          @@ -3510,7 +3510,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def incVersion(self):
               C = self.C
          @@ -3530,7 +3530,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def loadTf(self):
               C = self.C
          @@ -3552,7 +3552,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def make(self):
               self.makeConfig()
          @@ -3586,7 +3586,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def makeClient(self):
               """
          @@ -3670,7 +3670,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def makeClientSettings(self):
               C = self.C
          @@ -3814,7 +3814,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def makeCombined(self):
               C = self.C
          @@ -3884,7 +3884,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def makeConfig(self):
               if not getattr(self, "A", None):
          @@ -3902,7 +3902,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def makeCorpus(self):
               if not getattr(self, "A", None):
          @@ -3929,7 +3929,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def makeHtml(self):
               C = self.C
          @@ -4010,7 +4010,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def makeLinks(self):
               C = self.C
          @@ -4041,7 +4041,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def publish(self, allClients=True):
               C = self.C
          @@ -4074,7 +4074,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def replaceDebug(self, mask, value):
               def subVersion(match):
          @@ -4091,7 +4091,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def serve(self):
               dataset = self.dataset
          @@ -4134,7 +4134,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def ship(self, publish=True):
               self.adjustVersion()
          @@ -4155,7 +4155,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def showDebug(self):
               debugInfo = self.getDebugs()
          @@ -4175,7 +4175,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def showVersion(self):
               C = self.C
          @@ -4192,7 +4192,7 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def zipApp(self):
               C = self.C
          diff --git a/tf/client/make/gh.html b/tf/client/make/gh.html
          index 827c773dd..f526eba6f 100644
          --- a/tf/client/make/gh.html
          +++ b/tf/client/make/gh.html
          @@ -31,7 +31,7 @@ 

          Module tf.client.make.gh

          Expand source code -Browse git +Browse git
          import sys
           import os
          @@ -210,7 +210,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def console(*args):
               sys.stdout.write(" ".join(args) + "\n")
          @@ -225,7 +225,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def deploy(org, repo):
               (result, error) = _ghp_import()
          diff --git a/tf/client/make/help.html b/tf/client/make/help.html
          index 83005d106..b5b52a7cd 100644
          --- a/tf/client/make/help.html
          +++ b/tf/client/make/help.html
          @@ -31,7 +31,7 @@ 

          Module tf.client.make.help

          Expand source code -Browse git +Browse git
          HELP = """
           tf-make [--backend={backend} {org}/{repo} serve {folder}
          diff --git a/tf/client/make/index.html b/tf/client/make/index.html
          index d3cb8c967..e1cae473c 100644
          --- a/tf/client/make/index.html
          +++ b/tf/client/make/index.html
          @@ -32,7 +32,7 @@ 

          Module tf.client.make

          Expand source code -Browse git +Browse git
          """
           The search app make program
          diff --git a/tf/convert/addnlp.html b/tf/convert/addnlp.html
          index e25cc4b2f..16266e11c 100644
          --- a/tf/convert/addnlp.html
          +++ b/tf/convert/addnlp.html
          @@ -114,7 +114,7 @@ 

          Examples

          Expand source code -Browse git +Browse git
          """Add data from an NLP pipeline.
           
          @@ -1760,7 +1760,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def main():
               (good, tasks, params, flags) = readArgs("tf-addnlp", HELP, TASKS, PARAMS, FLAGS)
          @@ -1859,7 +1859,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          class NLPipeline(CheckImport):
               def __init__(
          @@ -3296,7 +3296,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def generatePlain(self):
               """Generates a plain text out of a data source.
          @@ -3529,7 +3529,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def getElementInfo(self, verbose=None):
               """Analyse the schema.
          @@ -3653,7 +3653,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def ingest(
               self,
          @@ -4176,7 +4176,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def ingestNlpOutput(self, positions, tkStream, sentenceStream, entityStream):
               """Ingests NLP output such as tokens in a dataset. Tokens become the new slots.
          @@ -4511,7 +4511,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def lingo(self, *args, **kwargs):
               if not self.importOK():
          @@ -4541,7 +4541,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def loadApp(self, app=None, verbose=None):
               """Loads a given TF app or loads the TF app based on the working directory.
          @@ -4650,7 +4650,7 @@ 

          Returns

          Expand source code -Browse git +Browse git
          def task(
               self,
          diff --git a/tf/convert/app/app.html b/tf/convert/app/app.html
          index be2be7469..8f7f03ca4 100644
          --- a/tf/convert/app/app.html
          +++ b/tf/convert/app/app.html
          @@ -31,7 +31,7 @@ 

          Module tf.convert.app.app

          Expand source code -Browse git +Browse git
          import types
           from tf.advanced.app import App
          @@ -91,7 +91,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def fmt_layout(app, n, **kwargs):
               return app._wrapHtml(n)
          @@ -146,7 +146,7 @@

          Parameters

          Expand source code -Browse git +Browse git
          class TfApp(App):
               def __init__(app, *args, **kwargs):
          diff --git a/tf/convert/helpers.html b/tf/convert/helpers.html
          index b723ac445..0e54163c8 100644
          --- a/tf/convert/helpers.html
          +++ b/tf/convert/helpers.html
          @@ -31,7 +31,7 @@ 

          Module tf.convert.helpers

          Expand source code -Browse git +Browse git
          import re
           from textwrap import dedent
          @@ -835,7 +835,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def checkModel(kind, thisModel, verbose):
               modelDefault = (
          @@ -925,7 +925,7 @@ 

          Functions

          Expand source code -Browse git +Browse git
          def getWhites(text):
               match = W_BEFORE.match(text)
          @@ -997,7 +997,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def lookupSource(cv, cur, tokenAsSlot, specs):
               """Looks up information from the current XML stack.
          @@ -1116,7 +1116,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def matchModel(properties, tag, atts):
               if tag == properties["element"]:
          @@ -1144,7 +1144,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def repTokens(tokens):
               text = []
          @@ -1161,7 +1161,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def setUp(kind):
               helpText = f"""
          @@ -1214,7 +1214,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def tokenize(line):
               tokens = []
          @@ -1242,7 +1242,7 @@ 

          Parameters

          Expand source code -Browse git +Browse git
          def tweakTrans(
               template,
          diff --git a/tf/convert/index.html b/tf/convert/index.html
          index 40fa41870..7a7caeabb 100644
          --- a/tf/convert/index.html
          +++ b/tf/convert/index.html
          @@ -39,7 +39,7 @@ 

          Various forms of data interchange

          Expand source code -Browse git +Browse git
          """
           # Various forms of data interchange
          diff --git a/tf/convert/makewatm.html b/tf/convert/makewatm.html
          index 8d27f5c94..ccc671198 100644
          --- a/tf/convert/makewatm.html
          +++ b/tf/convert/makewatm.html
          @@ -31,7 +31,7 @@ 

          Module tf.convert.makewatm

          Expand source code -Browse git +Browse git
          import sys
           from textwrap import dedent
          @@ -114,10 +114,6 @@ 

          Module tf.convert.makewatm

          Any arg that contains a . is considered to be the tf version number. If no version is passed, we resort to the hard coded default. - FLAGS - - TASKS - all run all (enabled) tasks @@ -130,10 +126,9 @@

          Module tf.convert.makewatm

          watms="Produce text/anno repo data for a sequence of corpora", ) self.BASE_FLAGS = dict( - help="Print this help text", silent="To run a bit more silent", relaxed="Accept XML validation errors", - useNLP="Will run an NLP pipeline to mark tokens, sentences and entities", + usenlp="Will run an NLP pipeline to mark tokens, sentences and entities", ) self.BASE_TASKS = ("tei2tf", "page2tf", "watm", "watms") self.TF_VERSION = "0.0.0test" @@ -141,7 +136,6 @@

          Module tf.convert.makewatm

          self.fileLoc = fileLoc self.good = True - self.silent = False repoBase = dirNm(dirNm(abspath(fileLoc))) (self.backend, self.org, self.repo, self.relative) = getLocation( @@ -150,11 +144,150 @@

          Module tf.convert.makewatm

          self.repoBase = repoBase self.setOptions() + def setOptions( + self, + taskSpecs=( + ("tei2tf", None), + ("watm", None), + ), + flagSpecs=( + ("silent", None), + ("relaxed", None), + ("usenlp", None), + ), + intro=None, + ): + self.TASKS = [] + self.DOCS = {} + self.FLAGS = {} + + good = True + + for name, doc in taskSpecs: + if name not in self.BASE_TASKS: + if doc is None: + console(f"task {name}: no help text given", error=True) + good = False + + method = f"doTask_{name}" + + if not hasattr(self, method): + console( + f"task {name}: no method {method} defined in subclass", + error=True, + ) + good = False + + if not good: + continue + + self.TASKS.append(name) + self.DOCS[name] = doc + + for name, doc in flagSpecs: + if name not in self.BASE_FLAGS: + if doc is None: + console(f"flag --{name}: no help text given", error=True) + good = False + + if not good: + continue + + self.FLAGS[name] = doc + + self.good = good + + self.HELP = ( + (f"{intro}\n\n" if intro else "") + + self.BASE_HELP + + "\nFLAGS\n\n" + + "".join(f"{name}\n\t{doc}" for (name, doc) in self.FLAGS.items()) + + "\nTASKS\n\n" + + "".join(f"{name}\n\t{doc}" for (name, doc) in self.DOCS.items()) + + "\n\nall\n\trun all (enabled) tasks\n\n" + ) + + def main(self, cmdLine=None, cargs=sys.argv[1:]): + FLAGS = self.FLAGS + TASKS = self.TASKS + + if cmdLine is not None: + cargs = cmdLine.split() + + if "--help" in cargs: + console(self.HELP) + return 0 + + unrecognized = set() + tasks = set() + self.version = None + + for flag in FLAGS: + setattr(self, f"flag_{flag}", False) + + for carg in cargs: + if carg.startswith("--"): + flag = carg[2:] + + if flag not in FLAGS: + unrecognized.add(carg) + else: + setattr(self, f"flag_{flag}", True) + elif carg == "all": + for task in TASKS: + tasks.add(task) + elif carg in TASKS: + tasks.add(carg) + elif "." in carg: + version = carg + else: + unrecognized.add(carg) + + if not self.flag_silent: + console(f"Enabled tasks: {' '.join(self.TASKS)}") + if version is None: + console( + f"No version for the TF data given. Using default: {self.TF_VERSION}" + ) + version = self.TF_VERSION + else: + console(f"Using TF version: {version}") + + self.version = version + + if len(unrecognized): + console(self.HELP) + console(f"Unrecognized arguments: {', '.join(sorted(unrecognized))}") + return -1 + + if len(tasks) == 0: + console("Nothing to do") + return 0 + + self.prepareRun(tasks) + + return self.run(tasks) + + def prepareRun(self, tasks): + return + + def run(self, tasks): + TASKS = self.TASKS + + for task in TASKS: + if task not in tasks: + continue + + method = getattr(self, f"doTask_{task}") + method() + + return 0 if self.good else 1 + def doTask_tei2tf(self): good = self.good - silent = self.silent - relaxed = self.relaxed - useNLP = self.useNLP + silent = self.flag_silent + relaxed = self.flag_relaxed + usenlp = self.flag_usenlp if not good: if not silent: @@ -165,7 +298,7 @@

          Module tf.convert.makewatm

          verbose = -1 if silent else 0 loadVerbose = DEEP if silent else TERSE - Tei = TEI(verbose=verbose, tei=0, tf=f"{tfVersion}pre" if useNLP else tfVersion) + Tei = TEI(verbose=verbose, tei=0, tf=f"{tfVersion}pre" if usenlp else tfVersion) console("Checking TEI ...") @@ -195,7 +328,7 @@

          Module tf.convert.makewatm

          self.good = False return - if useNLP: + if usenlp: console("Add tokens and sentences ...") org = self.org @@ -231,7 +364,7 @@

          Module tf.convert.makewatm

          def doTask_page2tf(self): good = self.good - silent = self.silent + silent = self.flag_silent if not good: if not silent: @@ -277,7 +410,7 @@

          Module tf.convert.makewatm

          def doTask_watm(self): good = self.good - silent = self.silent + silent = self.flag_silent if not good: if not silent: @@ -307,7 +440,7 @@

          Module tf.convert.makewatm

          def doTask_watms(self): good = self.good - silent = self.silent + silent = self.flag_silent if not good: if not silent: @@ -321,137 +454,7 @@

          Module tf.convert.makewatm

          console("Producing WATMs") W = WATMS(org, repo, backend, "pagexml", silent=silent) - W.produce() - - def run(self, tasks): - TASKS = self.TASKS - - for task in TASKS: - if task not in tasks: - continue - - method = getattr(self, f"doTask_{task}") - method() - - return 0 if self.good else 1 - - def setOptions( - self, - taskSpecs=( - ("tei2tf", None), - ("watm", None), - ), - flagSpecs=( - ("help", None), - ("silent", None), - ("relaxed", None), - ("usenlp", None), - ), - ): - self.TASKS = [] - self.DOCS = {} - self.FLAGS = {} - - good = True - - for name, doc in taskSpecs: - if name not in self.BASE_TASKS: - if doc is None: - console(f"task {name}: no help text given", error=True) - good = False - - method = f"doTask_{name}" - - if not hasattr(self, method): - console( - f"task {name}: no method {method} defined in subclass", - error=True, - ) - good = False - - if not good: - continue - - self.TASKS.append(name) - self.DOCS[name] = doc - - for name, doc in taskSpecs: - if name not in self.BASE_FLAGS: - if doc is None: - console(f"flag --{name}: no help text given", error=True) - good = False - - if not good: - continue - - self.FLAGS[name] = doc - - self.good = good - - self.HELP = ( - self.BASE_HELP - + "\nFLAGS\n\n" - + "".join(f"{name}\n\t{doc}" for (name, doc) in self.FLAGS.items()) - + "\nTASKS\n\n" - + "".join(f"{name}\n\t{doc}" for (name, doc) in self.DOCS.items()) - ) - - def main(self, cmdLine=None, cargs=sys.argv[1:]): - TASKS = self.TASKS - - if cmdLine is not None: - cargs = cmdLine.split() - - if "--help" in cargs: - console(self.HELP) - return 0 - - unrecognized = set() - tasks = set() - self.silent = False - self.version = None - self.relaxed = False - self.useNLP = False - - for carg in cargs: - if carg == "--silent": - self.silent = True - elif carg == "--relaxed": - self.relaxed = True - elif carg == "--usenlp": - self.useNLP = True - elif carg == "all": - for task in TASKS: - tasks.add(task) - elif carg in TASKS: - tasks.add(carg) - elif "." in carg: - version = carg - else: - unrecognized.add(carg) - - if not self.silent: - console(f"Enabled tasks: {' '.join(self.TASKS)}") - if version is None: - console( - f"No version for the TF data given. Using default: {self.TF_VERSION}" - ) - version = self.TF_VERSION - else: - console(f"Using TF version: {version}") - - self.version = version - - if len(unrecognized): - console(self.HELP) - console(f"Unrecognized arguments: {', '.join(sorted(unrecognized))}") - return -1 - - if len(tasks) == 0: - console("Nothing to do") - return 0 - - return self.run(tasks)
          + W.produce()
          @@ -506,7 +509,7 @@

          Parameters

          Expand source code -Browse git +Browse git
          class MakeWATM:
               """Base class for running conversions to WATM.
          @@ -572,10 +575,6 @@ 

          Parameters

          Any arg that contains a . is considered to be the tf version number. If no version is passed, we resort to the hard coded default. - FLAGS - - TASKS - all run all (enabled) tasks @@ -588,10 +587,9 @@

          Parameters

          watms="Produce text/anno repo data for a sequence of corpora", ) self.BASE_FLAGS = dict( - help="Print this help text", silent="To run a bit more silent", relaxed="Accept XML validation errors", - useNLP="Will run an NLP pipeline to mark tokens, sentences and entities", + usenlp="Will run an NLP pipeline to mark tokens, sentences and entities", ) self.BASE_TASKS = ("tei2tf", "page2tf", "watm", "watms") self.TF_VERSION = "0.0.0test" @@ -599,7 +597,6 @@

          Parameters

          self.fileLoc = fileLoc self.good = True - self.silent = False repoBase = dirNm(dirNm(abspath(fileLoc))) (self.backend, self.org, self.repo, self.relative) = getLocation( @@ -608,11 +605,150 @@

          Parameters

          self.repoBase = repoBase self.setOptions() + def setOptions( + self, + taskSpecs=( + ("tei2tf", None), + ("watm", None), + ), + flagSpecs=( + ("silent", None), + ("relaxed", None), + ("usenlp", None), + ), + intro=None, + ): + self.TASKS = [] + self.DOCS = {} + self.FLAGS = {} + + good = True + + for name, doc in taskSpecs: + if name not in self.BASE_TASKS: + if doc is None: + console(f"task {name}: no help text given", error=True) + good = False + + method = f"doTask_{name}" + + if not hasattr(self, method): + console( + f"task {name}: no method {method} defined in subclass", + error=True, + ) + good = False + + if not good: + continue + + self.TASKS.append(name) + self.DOCS[name] = doc + + for name, doc in flagSpecs: + if name not in self.BASE_FLAGS: + if doc is None: + console(f"flag --{name}: no help text given", error=True) + good = False + + if not good: + continue + + self.FLAGS[name] = doc + + self.good = good + + self.HELP = ( + (f"{intro}\n\n" if intro else "") + + self.BASE_HELP + + "\nFLAGS\n\n" + + "".join(f"{name}\n\t{doc}" for (name, doc) in self.FLAGS.items()) + + "\nTASKS\n\n" + + "".join(f"{name}\n\t{doc}" for (name, doc) in self.DOCS.items()) + + "\n\nall\n\trun all (enabled) tasks\n\n" + ) + + def main(self, cmdLine=None, cargs=sys.argv[1:]): + FLAGS = self.FLAGS + TASKS = self.TASKS + + if cmdLine is not None: + cargs = cmdLine.split() + + if "--help" in cargs: + console(self.HELP) + return 0 + + unrecognized = set() + tasks = set() + self.version = None + + for flag in FLAGS: + setattr(self, f"flag_{flag}", False) + + for carg in cargs: + if carg.startswith("--"): + flag = carg[2:] + + if flag not in FLAGS: + unrecognized.add(carg) + else: + setattr(self, f"flag_{flag}", True) + elif carg == "all": + for task in TASKS: + tasks.add(task) + elif carg in TASKS: + tasks.add(carg) + elif "." in carg: + version = carg + else: + unrecognized.add(carg) + + if not self.flag_silent: + console(f"Enabled tasks: {' '.join(self.TASKS)}") + if version is None: + console( + f"No version for the TF data given. Using default: {self.TF_VERSION}" + ) + version = self.TF_VERSION + else: + console(f"Using TF version: {version}") + + self.version = version + + if len(unrecognized): + console(self.HELP) + console(f"Unrecognized arguments: {', '.join(sorted(unrecognized))}") + return -1 + + if len(tasks) == 0: + console("Nothing to do") + return 0 + + self.prepareRun(tasks) + + return self.run(tasks) + + def prepareRun(self, tasks): + return + + def run(self, tasks): + TASKS = self.TASKS + + for task in TASKS: + if task not in tasks: + continue + + method = getattr(self, f"doTask_{task}") + method() + + return 0 if self.good else 1 + def doTask_tei2tf(self): good = self.good - silent = self.silent - relaxed = self.relaxed - useNLP = self.useNLP + silent = self.flag_silent + relaxed = self.flag_relaxed + usenlp = self.flag_usenlp if not good: if not silent: @@ -623,7 +759,7 @@

          Parameters

          verbose = -1 if silent else 0 loadVerbose = DEEP if silent else TERSE - Tei = TEI(verbose=verbose, tei=0, tf=f"{tfVersion}pre" if useNLP else tfVersion) + Tei = TEI(verbose=verbose, tei=0, tf=f"{tfVersion}pre" if usenlp else tfVersion) console("Checking TEI ...") @@ -653,7 +789,7 @@

          Parameters

          self.good = False return - if useNLP: + if usenlp: console("Add tokens and sentences ...") org = self.org @@ -689,7 +825,7 @@

          Parameters

          def doTask_page2tf(self): good = self.good - silent = self.silent + silent = self.flag_silent if not good: if not silent: @@ -735,7 +871,7 @@

          Parameters

          def doTask_watm(self): good = self.good - silent = self.silent + silent = self.flag_silent if not good: if not silent: @@ -765,7 +901,7 @@

          Parameters

          def doTask_watms(self): good = self.good - silent = self.silent + silent = self.flag_silent if not good: if not silent: @@ -779,137 +915,7 @@

          Parameters

          console("Producing WATMs") W = WATMS(org, repo, backend, "pagexml", silent=silent) - W.produce() - - def run(self, tasks): - TASKS = self.TASKS - - for task in TASKS: - if task not in tasks: - continue - - method = getattr(self, f"doTask_{task}") - method() - - return 0 if self.good else 1 - - def setOptions( - self, - taskSpecs=( - ("tei2tf", None), - ("watm", None), - ), - flagSpecs=( - ("help", None), - ("silent", None), - ("relaxed", None), - ("usenlp", None), - ), - ): - self.TASKS = [] - self.DOCS = {} - self.FLAGS = {} - - good = True - - for name, doc in taskSpecs: - if name not in self.BASE_TASKS: - if doc is None: - console(f"task {name}: no help text given", error=True) - good = False - - method = f"doTask_{name}" - - if not hasattr(self, method): - console( - f"task {name}: no method {method} defined in subclass", - error=True, - ) - good = False - - if not good: - continue - - self.TASKS.append(name) - self.DOCS[name] = doc - - for name, doc in taskSpecs: - if name not in self.BASE_FLAGS: - if doc is None: - console(f"flag --{name}: no help text given", error=True) - good = False - - if not good: - continue - - self.FLAGS[name] = doc - - self.good = good - - self.HELP = ( - self.BASE_HELP - + "\nFLAGS\n\n" - + "".join(f"{name}\n\t{doc}" for (name, doc) in self.FLAGS.items()) - + "\nTASKS\n\n" - + "".join(f"{name}\n\t{doc}" for (name, doc) in self.DOCS.items()) - ) - - def main(self, cmdLine=None, cargs=sys.argv[1:]): - TASKS = self.TASKS - - if cmdLine is not None: - cargs = cmdLine.split() - - if "--help" in cargs: - console(self.HELP) - return 0 - - unrecognized = set() - tasks = set() - self.silent = False - self.version = None - self.relaxed = False - self.useNLP = False - - for carg in cargs: - if carg == "--silent": - self.silent = True - elif carg == "--relaxed": - self.relaxed = True - elif carg == "--usenlp": - self.useNLP = True - elif carg == "all": - for task in TASKS: - tasks.add(task) - elif carg in TASKS: - tasks.add(carg) - elif "." in carg: - version = carg - else: - unrecognized.add(carg) - - if not self.silent: - console(f"Enabled tasks: {' '.join(self.TASKS)}") - if version is None: - console( - f"No version for the TF data given. Using default: {self.TF_VERSION}" - ) - version = self.TF_VERSION - else: - console(f"Using TF version: {version}") - - self.version = version - - if len(unrecognized): - console(self.HELP) - console(f"Unrecognized arguments: {', '.join(sorted(unrecognized))}") - return -1 - - if len(tasks) == 0: - console("Nothing to do") - return 0 - - return self.run(tasks)
          + W.produce()

          Methods

          @@ -921,11 +927,11 @@

          Methods

          Expand source code -Browse git +Browse git
          def doTask_page2tf(self):
               good = self.good
          -    silent = self.silent
          +    silent = self.flag_silent
           
               if not good:
                   if not silent:
          @@ -978,13 +984,13 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def doTask_tei2tf(self):
               good = self.good
          -    silent = self.silent
          -    relaxed = self.relaxed
          -    useNLP = self.useNLP
          +    silent = self.flag_silent
          +    relaxed = self.flag_relaxed
          +    usenlp = self.flag_usenlp
           
               if not good:
                   if not silent:
          @@ -995,7 +1001,7 @@ 

          Methods

          verbose = -1 if silent else 0 loadVerbose = DEEP if silent else TERSE - Tei = TEI(verbose=verbose, tei=0, tf=f"{tfVersion}pre" if useNLP else tfVersion) + Tei = TEI(verbose=verbose, tei=0, tf=f"{tfVersion}pre" if usenlp else tfVersion) console("Checking TEI ...") @@ -1025,7 +1031,7 @@

          Methods

          self.good = False return - if useNLP: + if usenlp: console("Add tokens and sentences ...") org = self.org @@ -1068,11 +1074,11 @@

          Methods

          Expand source code -Browse git +Browse git
          def doTask_watm(self):
               good = self.good
          -    silent = self.silent
          +    silent = self.flag_silent
           
               if not good:
                   if not silent:
          @@ -1109,11 +1115,11 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def doTask_watms(self):
               good = self.good
          -    silent = self.silent
          +    silent = self.flag_silent
           
               if not good:
                   if not silent:
          @@ -1138,9 +1144,10 @@ 

          Methods

          Expand source code -Browse git +Browse git
          def main(self, cmdLine=None, cargs=sys.argv[1:]):
          +    FLAGS = self.FLAGS
               TASKS = self.TASKS
           
               if cmdLine is not None:
          @@ -1152,18 +1159,19 @@ 

          Methods

          unrecognized = set() tasks = set() - self.silent = False self.version = None - self.relaxed = False - self.useNLP = False + + for flag in FLAGS: + setattr(self, f"flag_{flag}", False) for carg in cargs: - if carg == "--silent": - self.silent = True - elif carg == "--relaxed": - self.relaxed = True - elif carg == "--usenlp": - self.useNLP = True + if carg.startswith("--"): + flag = carg[2:] + + if flag not in FLAGS: + unrecognized.add(carg) + else: + setattr(self, f"flag_{flag}", True) elif carg == "all": for task in TASKS: tasks.add(task) @@ -1174,7 +1182,7 @@

          Methods

          else: unrecognized.add(carg) - if not self.silent: + if not self.flag_silent: console(f"Enabled tasks: {' '.join(self.TASKS)}") if version is None: console( @@ -1195,9 +1203,25 @@

          Methods

          console("Nothing to do") return 0 + self.prepareRun(tasks) + return self.run(tasks)
          +
          +def prepareRun(self, tasks) +
          +
          +
          +
          + +Expand source code +Browse git + +
          def prepareRun(self, tasks):
          +    return
          +
          +
          def run(self, tasks)
          @@ -1206,7 +1230,7 @@

          Methods

          Expand source code -Browse git +Browse git
          def run(self, tasks):
               TASKS = self.TASKS
          @@ -1222,14 +1246,14 @@ 

          Methods

          -def setOptions(self, taskSpecs=(('tei2tf', None), ('watm', None)), flagSpecs=(('help', None), ('silent', None), ('relaxed', None), ('usenlp', None))) +def setOptions(self, taskSpecs=(('tei2tf', None), ('watm', None)), flagSpecs=(('silent', None), ('relaxed', None), ('usenlp', None)), intro=None)
          Expand source code -Browse git +Browse git
          def setOptions(
               self,
          @@ -1238,11 +1262,11 @@ 

          Methods

          ("watm", None), ), flagSpecs=( - ("help", None), ("silent", None), ("relaxed", None), ("usenlp", None), ), + intro=None, ): self.TASKS = [] self.DOCS = {} @@ -1271,7 +1295,7 @@

          Methods

          self.TASKS.append(name) self.DOCS[name] = doc - for name, doc in taskSpecs: + for name, doc in flagSpecs: if name not in self.BASE_FLAGS: if doc is None: console(f"flag --{name}: no help text given", error=True) @@ -1285,11 +1309,13 @@

          Methods

          self.good = good self.HELP = ( - self.BASE_HELP + (f"{intro}\n\n" if intro else "") + + self.BASE_HELP + "\nFLAGS\n\n" + "".join(f"{name}\n\t{doc}" for (name, doc) in self.FLAGS.items()) + "\nTASKS\n\n" + "".join(f"{name}\n\t{doc}" for (name, doc) in self.DOCS.items()) + + "\n\nall\n\trun all (enabled) tasks\n\n" )
          @@ -1370,6 +1396,7 @@

          doTask_watm
        • doTask_watms
        • main
        • +
        • prepareRun
        • run
        • setOptions
        diff --git a/tf/convert/mql.html b/tf/convert/mql.html index d5453aa74..cd5d78e00 100644 --- a/tf/convert/mql.html +++ b/tf/convert/mql.html @@ -128,7 +128,7 @@

        Enumeration types

        Expand source code -Browse git +Browse git
        """
         # MQL
        @@ -1190,7 +1190,7 @@ 

        See Also

        Expand source code -Browse git +Browse git
        def exportMQL(app, mqlDb, exportDir=None):
             """Exports the complete TF dataset into single MQL database.
        @@ -1307,7 +1307,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def importMQL(mqlFile, saveDir, silent=None, slotType=None, otext=None, meta=None):
             """Converts an MQL database dump to a TF dataset.
        @@ -1393,7 +1393,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def makeuni(match):
             """Make proper UNICODE of a text that contains byte escape codes
        @@ -1411,7 +1411,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def parseMql(mqlFile, tmObj):
             info = tmObj.info
        @@ -1625,7 +1625,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def tfFromData(tmObj, objectTypes, tables, nodeF, edgeF, slotType, otext, meta):
             info = tmObj.info
        @@ -1754,7 +1754,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def tfFromMql(mqlFile, tmObj, slotType=None, otext=None, meta=None):
             """Generate TF from MQL
        @@ -1786,7 +1786,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def uni(line):
             return uniscan.sub(makeuni, line)
        @@ -1806,7 +1806,7 @@

        Classes

        Expand source code -Browse git +Browse git
        class MQL:
             def __init__(self, app, mqlDb, exportDir, silent=SILENT_D):
        @@ -2207,7 +2207,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def write(self):
             silent = self.silent
        diff --git a/tf/convert/pagexml.html b/tf/convert/pagexml.html
        index 6310a34af..ed5a8f83d 100644
        --- a/tf/convert/pagexml.html
        +++ b/tf/convert/pagexml.html
        @@ -31,7 +31,7 @@ 

        Module tf.convert.pagexml

        Expand source code -Browse git +Browse git
        import sys
         from subprocess import run
        @@ -1112,7 +1112,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def diverge(cv, s, rtx, rsp, ltx, lsp):
             if ltx != rtx:
        @@ -1129,7 +1129,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def emptySlot(cv):
             s = cv.slot()
        @@ -1144,7 +1144,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def linebreakSlot(cv):
             s = cv.slot()
        @@ -1159,7 +1159,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def main():
             (good, tasks, params, flags) = readArgs(
        @@ -1182,7 +1182,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def setUp():
             helpText = """
        @@ -1233,7 +1233,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def tokenLogic(cv, s, token, hangover, isFirst, isSecondLast, isLast):
             (rtx, rsp) = token
        @@ -1298,7 +1298,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def walkObject(cv, cur, xObj):
             """Internal function to deal with a single element.
        @@ -1487,7 +1487,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class PageXML(CheckImport):
             def __init__(
        @@ -2366,7 +2366,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def appTask(self):
             """Implementation of the "app" task.
        @@ -2550,7 +2550,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def browseTask(self):
             """Implementation of the "browse" task.
        @@ -2614,7 +2614,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def convertTask(self):
             """Implementation of the "convert" task.
        @@ -2697,7 +2697,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getConverter(self, doc):
             """Initializes a converter.
        @@ -2736,7 +2736,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getDirector(self, doc, docMeta, pageSource, pageFiles):
             """Factory for the director function.
        @@ -2822,7 +2822,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def loadTask(self):
             """Implementation of the "load" task.
        @@ -2913,7 +2913,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def task(
             self,
        diff --git a/tf/convert/pandas.html b/tf/convert/pandas.html
        index a44b0a099..c36feff45 100644
        --- a/tf/convert/pandas.html
        +++ b/tf/convert/pandas.html
        @@ -61,7 +61,7 @@ 

        Examples

        Expand source code -Browse git +Browse git
        """
         # Export a TF dataset to a `pandas` data frame.
        @@ -440,7 +440,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def exportPandas(app, inTypes=None, exportDir=None):
             """Export a currently loaded TF dataset to `pandas`.
        diff --git a/tf/convert/recorder.html b/tf/convert/recorder.html
        index 5c94dfc6c..68f308721 100644
        --- a/tf/convert/recorder.html
        +++ b/tf/convert/recorder.html
        @@ -185,7 +185,7 @@ 

        Usage

        Expand source code -Browse git +Browse git
        """
         # Recorder
        @@ -964,7 +964,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class Recorder:
             def __init__(self, api=None):
        @@ -1633,7 +1633,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def add(self, string, empty=ZWJ):
             """Add text to the accumulator.
        @@ -1671,7 +1671,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def end(self, n):
             """End a node.
        @@ -1722,7 +1722,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def iPositions(self, byType=False, logical=True, asEntries=False):
             """Get the character positions as mapping from nodes.
        @@ -1830,7 +1830,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def makeFeatures(self, featurePath, headers=True):
             """Read a tab-separated file of annotation data and convert it to features.
        @@ -1935,7 +1935,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def positions(self, byType=False, simple=False):
             """Get the node positions as mapping from character positions.
        @@ -2098,7 +2098,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def rPositions(self, acceptMaterialOutsideNodes=False):
             """Get the first textual position for each node
        @@ -2267,7 +2267,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def read(self, textPath, posPath=None):
             """Read recorder information from disk.
        @@ -2317,7 +2317,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def start(self, n):
             """Start a node.
        @@ -2345,7 +2345,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def text(self):
             """Get the accumulated text.
        @@ -2404,7 +2404,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def write(
             self, textPath, inverted=False, posPath=None, byType=False, optimize=True
        diff --git a/tf/convert/tei.html b/tf/convert/tei.html
        index dc770bb8a..e92cefb55 100644
        --- a/tf/convert/tei.html
        +++ b/tf/convert/tei.html
        @@ -452,7 +452,7 @@ 

        Examples

        Expand source code -Browse git +Browse git
        """
         # TEI import
        @@ -5117,7 +5117,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def getRefs(tag, atts, xmlFile):
             refAtt = REFERENCING.get(tag, None)
        @@ -5147,7 +5147,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def main():
             (good, tasks, params, flags) = readArgs(
        @@ -5170,7 +5170,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def makeCssInfo():
             """Make the CSS info for the style sheet."""
        @@ -5318,7 +5318,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class TEI(CheckImport):
             def __init__(
        @@ -9140,7 +9140,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def appTask(self, tokenBased=False):
             """Implementation of the "app" task.
        @@ -9529,7 +9529,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def browseTask(self):
             """Implementation of the "browse" task.
        @@ -9597,7 +9597,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def checkTask(self):
             """Implementation of the "check" task.
        @@ -10317,7 +10317,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def convertTask(self):
             """Implementation of the "convert" task.
        @@ -10404,7 +10404,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getConverter(self):
             """Initializes a converter.
        @@ -10445,7 +10445,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getDirector(self):
             """Factory for the director function.
        @@ -12077,7 +12077,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getParser(self):
             """Configure the LXML parser.
        @@ -12112,7 +12112,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getSwitches(self, xmlPath):
             verbose = self.verbose
        @@ -12178,7 +12178,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getXML(self):
             """Make an inventory of the TEI source files.
        @@ -12276,7 +12276,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def loadTask(self):
             """Implementation of the "load" task.
        @@ -12334,7 +12334,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def readSchemas(self):
             schemaDir = self.schemaDir
        @@ -12418,7 +12418,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def task(
             self,
        diff --git a/tf/convert/tf.html b/tf/convert/tf.html
        index dba18cc8c..8517f6464 100644
        --- a/tf/convert/tf.html
        +++ b/tf/convert/tf.html
        @@ -32,7 +32,7 @@ 

        Raw, unoptimised data from TF files<
        Expand source code -Browse git +Browse git
        """
         # Raw, unoptimised data from TF files
        @@ -419,7 +419,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def explode(inPath, outPath):
             """Explodes `.tf` files into non-optimised `.tf` files without metadata.
        diff --git a/tf/convert/variants.html b/tf/convert/variants.html
        index 03078479a..1280eb487 100644
        --- a/tf/convert/variants.html
        +++ b/tf/convert/variants.html
        @@ -38,7 +38,7 @@ 

        Variants

        Expand source code -Browse git +Browse git
        """
         # Variants
        @@ -676,7 +676,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class Variants:
             def __init__(self, cv, cur, baseWitness, sentType, checkPunc, addWarning, addError):
        @@ -1215,7 +1215,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def checkSent(self, trans, punc):
             """Checks whether there is a "sentence" boundary at this point.
        @@ -1263,7 +1263,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def collectWitnesses(self, node):
             """Collect all witnesses.
        @@ -1333,7 +1333,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def endApp(self, tag):
             """Actions at the end of `app`- `lem`- and `rdg`-elements.
        @@ -1393,7 +1393,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def endSent(self):
             """Ends a "sentence" if there is a current sentence.
        @@ -1432,7 +1432,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def initApps(self):
             """Initialize app- processing and witness collection.
        @@ -1461,7 +1461,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def resetApps(self):
             """Initialize app- and "sentence" processing.
        @@ -1504,7 +1504,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def startApp(self, tag, atts):
             """Actions at the start of `app`- `lem`- and `rdg`-elements.
        @@ -1585,7 +1585,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def startSent(self):
             """Starts a "sentence" if there is no current sentence.
        diff --git a/tf/convert/walker.html b/tf/convert/walker.html
        index 76a38185c..29266cee7 100644
        --- a/tf/convert/walker.html
        +++ b/tf/convert/walker.html
        @@ -157,7 +157,7 @@ 

        Action methods

        Expand source code -Browse git +Browse git
        """
         # Walker
        @@ -1971,7 +1971,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class CV:
             S = "slot"
        @@ -3653,7 +3653,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def active(self, node):
             """Returns whether a node is currently active.
        @@ -3707,7 +3707,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def activeNodes(self, nTypes=None):
             """The currently active nodes, i.e. the embedders.
        @@ -3755,7 +3755,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def activeTypes(self):
             """The node types of the currently active nodes, i.e. the embedders.
        @@ -3799,7 +3799,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def delete(self, node):
             """**deletes** a node.
        @@ -3867,7 +3867,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def edge(self, nodeFrom, nodeTo, **features):
             """Adds **edge features**.
        @@ -3932,7 +3932,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def feature(self, node, **features):
             """Adds **node features**.
        @@ -3982,7 +3982,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def features(self):
             """Gets the list of all features.
        @@ -4030,7 +4030,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def get(self, feature, *args):
             """Retrieves feature values.
        @@ -4102,7 +4102,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def link(self, node, slots):
             """Links the given, existing slots to a node.
        @@ -4166,7 +4166,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def linked(self, node):
             """Returns the slots `ss` to which a node is currently linked.
        @@ -4227,7 +4227,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def meta(self, feat, **metadata):
             """Adds, modifies, deletes metadata fields of features.
        @@ -4330,7 +4330,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def node(self, nType, slots=None):
             """Makes a non-slot node and return the handle to it in `n`.
        @@ -4448,7 +4448,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def occurs(self, feat):
             """Whether the feature `featureName` occurs in the resulting data so far.
        @@ -4512,7 +4512,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def resume(self, node):
             """**resumes** a node.
        @@ -4588,7 +4588,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def slot(self, key=None):
             """Makes a slot node and return the handle to it in `n`.
        @@ -4680,7 +4680,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def stop(self, msg):
             """Stops the director. No further input will be read.
        @@ -4735,7 +4735,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def terminate(self, node):
             """**terminates** a node.
        @@ -4850,7 +4850,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def walk(
             self,
        diff --git a/tf/convert/watm.html b/tf/convert/watm.html
        index 26c304de2..1f052af09 100644
        --- a/tf/convert/watm.html
        +++ b/tf/convert/watm.html
        @@ -490,7 +490,7 @@ 

        Caveat

        Expand source code -Browse git +Browse git
        """Export to Web Annotation Text Model
         
        @@ -2690,7 +2690,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def rep(status):
             """Represent a boolean status for a message to the console.
        @@ -2746,7 +2746,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class WATM:
             """The export machinery is exposed as a class, wrapped around a TF dataset."""
        @@ -4316,7 +4316,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        @staticmethod
         def numEqual(nTF, nWA, silent):
        @@ -4365,7 +4365,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        @staticmethod
         def strEqual(tf, wa, silent):
        @@ -4437,7 +4437,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def makeAnno(self):
             """Make all annotations.
        @@ -4648,7 +4648,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def makeText(self):
             """Creates the text data.
        @@ -4738,7 +4738,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def mkAnno(self, kind, ns, body, target):
             """Make a single annotation and return its id.
        @@ -4784,7 +4784,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def testAll(self, condensed=False):
             """Test all aspects of the WATM conversion.
        @@ -4868,7 +4868,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def testAttributes(self):
             """Test the attributes.
        @@ -5097,7 +5097,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def testEdges(self):
             """Test the edges.
        @@ -5295,7 +5295,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def testElements(self):
             """Test the elements.
        @@ -5487,7 +5487,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def testExtra(self):
             """Test the extra data for on-the-fly annotations.
        @@ -5589,7 +5589,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def testSetup(self):
             """Prepare the tests.
        @@ -5762,7 +5762,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def testText(self):
             """Test the text.
        @@ -5817,7 +5817,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def writeAll(self):
             """Write text and annotation data to disk.
        @@ -6021,7 +6021,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class WATMS:
             """Export corpora that are divided over multiple TF datasets.
        @@ -6141,7 +6141,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def produce(self, doc=None):
             """Convert all relevant TF datasets.
        diff --git a/tf/convert/xml.html b/tf/convert/xml.html
        index 27402c99c..769891b0a 100644
        --- a/tf/convert/xml.html
        +++ b/tf/convert/xml.html
        @@ -135,7 +135,7 @@ 

        Examples

        Expand source code -Browse git +Browse git
        """
         # XML import
        @@ -1398,7 +1398,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def main():
             (good, tasks, params, flags) = readArgs(
        @@ -1538,7 +1538,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class XML(CheckImport):
             def __init__(
        @@ -2612,7 +2612,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def appTask(self, tokenBased=False):
             """Implementation of the "app" task.
        @@ -2861,7 +2861,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def browseTask(self):
             """Implementation of the "browse" task.
        @@ -2927,7 +2927,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def checkTask(self):
             """Implementation of the "check" task.
        @@ -3174,7 +3174,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def convertTask(self):
             """Implementation of the "convert" task.
        @@ -3212,7 +3212,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getConverter(self):
             """Initializes a converter.
        @@ -3244,7 +3244,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getParser(self):
             """Configure the LXML parser.
        @@ -3287,7 +3287,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getXML(self):
             """Make an inventory of the XML source files.
        @@ -3347,7 +3347,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def loadTask(self):
             """Implementation of the "load" task.
        @@ -3431,7 +3431,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def task(
             self,
        diff --git a/tf/convert/xmlCustom.html b/tf/convert/xmlCustom.html
        index 2abf418a9..c2cfdcde8 100644
        --- a/tf/convert/xmlCustom.html
        +++ b/tf/convert/xmlCustom.html
        @@ -31,7 +31,7 @@ 

        Module tf.convert.xmlCustom

        Expand source code -Browse git +Browse git
        import re
         from io import BytesIO
        @@ -384,7 +384,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def convertTaskDefault(etree):
             if etree is None:
        @@ -482,7 +482,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getDirector(self, etree):
             """Factory for the director function.
        diff --git a/tf/core/api.html b/tf/core/api.html
        index c6daf5138..548bc5b06 100644
        --- a/tf/core/api.html
        +++ b/tf/core/api.html
        @@ -33,7 +33,7 @@ 

        The core API of TF.

        Expand source code -Browse git +Browse git
        """
         # The core API of TF.
        @@ -639,7 +639,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def addLocality(api):
             api.L = Locality(api)
        @@ -654,7 +654,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def addNodes(api):
             api.N = Nodes(api)
        @@ -669,7 +669,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def addOtype(api):
             setattr(api.F.otype, "all", tuple(o[0] for o in api.C.levels.data))
        @@ -686,7 +686,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def addSearch(api, silent=SILENT_D):
             silent = silentConvert(silent)
        @@ -702,7 +702,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def addText(api):
             api.T = Text(api)
        @@ -723,7 +723,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class Api:
             def __init__(self, TF):
        @@ -1250,7 +1250,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def Call(self):
             """Returns a sorted list of all usable, loaded computed data names."""
        @@ -1279,7 +1279,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def Cs(self, fName, warn=True):
             """Get the computed data sub API.
        @@ -1321,7 +1321,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def Eall(self, warp=True):
             """Returns a sorted list of all usable, loaded edge feature names.
        @@ -1356,7 +1356,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def Es(self, fName, warn=True):
             """Get the edge feature sub API.
        @@ -1398,7 +1398,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def Fall(self, warp=True):
             """Returns a sorted list of all usable, loaded node feature names.
        @@ -1433,7 +1433,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def Fs(self, fName, warn=True):
             """Get the node feature sub API.
        @@ -1484,7 +1484,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def ensureLoaded(self, features):
             """Checks if features are loaded and if not loads them.
        @@ -1552,7 +1552,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def footprint(self, recompute=False, bySize=True):
             """Computes the memory footprint in RAM of the loaded TF data.
        @@ -1673,7 +1673,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def isLoaded(
             self, features=None, pretty=True, valueType=True, path=False, meta="description"
        @@ -1951,7 +1951,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def makeAvailableIn(self, scope):
             """Exports members of the API to the global namespace.
        diff --git a/tf/core/command.html b/tf/core/command.html
        index c527b209a..3464986e9 100644
        --- a/tf/core/command.html
        +++ b/tf/core/command.html
        @@ -31,7 +31,7 @@ 

        Module tf.core.command

        Expand source code -Browse git +Browse git
        import sys
         from textwrap import dedent
        @@ -250,7 +250,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def readArgs(
             command, descr, possibleTasks, possibleParams, possibleFlags, notInAll=set()
        diff --git a/tf/core/computed.html b/tf/core/computed.html
        index 75f6cc701..7356d7ebc 100644
        --- a/tf/core/computed.html
        +++ b/tf/core/computed.html
        @@ -52,7 +52,7 @@ 

        Pre-computed data components

        Expand source code -Browse git +Browse git
        """
         # Pre-computed data components
        @@ -117,7 +117,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class Computed:
             """Provides access to pre-computed data.
        @@ -138,7 +138,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class Computeds:
             pass
        diff --git a/tf/core/data.html b/tf/core/data.html index b79b9b454..bc1601e73 100644 --- a/tf/core/data.html +++ b/tf/core/data.html @@ -31,7 +31,7 @@

        Module tf.core.data

        Expand source code -Browse git +Browse git
        import array
         import gc
        @@ -775,7 +775,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class Data:
             def __init__(
        @@ -1466,7 +1466,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def cleanDataBin(self):
             fileRemove(self.binPath)
        @@ -1483,7 +1483,7 @@

        Methods

        Expand source code -Browse git +Browse git
        def load(self, metaOnly=False, silent=SILENT_D, _withGc=True):
             """Load a feature.
        @@ -1604,7 +1604,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def save(self, overwrite=False, nodeRanges=False, silent=SILENT_D):
             silent = silentConvert(silent)
        @@ -1627,7 +1627,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def unload(self):
             self.data = None
        diff --git a/tf/core/edgefeature.html b/tf/core/edgefeature.html
        index 3ec851f6d..92e90ea92 100644
        --- a/tf/core/edgefeature.html
        +++ b/tf/core/edgefeature.html
        @@ -46,7 +46,7 @@ 

        Module tf.core.edgefeature

        Expand source code -Browse git +Browse git
        """
         Mappings from edges to values.
        @@ -347,7 +347,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class EdgeFeature:
             """Provides access to (edge) feature data.
        @@ -672,7 +672,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def b(self, n):
             """Query *both* incoming edges to, and outgoing edges from a node.
        @@ -783,7 +783,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def f(self, n):
             """Get outgoing edges *from* a node.
        @@ -848,7 +848,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def freqList(self, nodeTypesFrom=None, nodeTypesTo=None):
             """Frequency list of the values of this feature.
        @@ -925,7 +925,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def items(self):
             """A generator that yields the items of the feature, seen as a mapping.
        @@ -971,7 +971,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def t(self, n):
             """Get incoming edges *to* a node.
        @@ -1018,7 +1018,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        class EdgeFeatures:
             pass
        diff --git a/tf/core/fabric.html b/tf/core/fabric.html index 5fc267ade..a54a99b92 100644 --- a/tf/core/fabric.html +++ b/tf/core/fabric.html @@ -41,7 +41,7 @@

        Expand source code -Browse git +Browse git
        """
         # `FabricCore`
        @@ -1205,7 +1205,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        class FabricCore:
             """Initialize the core API for a corpus.
        @@ -2189,7 +2189,7 @@ 

        See Also

        Expand source code -Browse git +Browse git
        def clearCache(self):
             """Clears the cache of compiled TF data.
        @@ -2254,7 +2254,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def explore(self, silent=SILENT_D, show=True):
             """Makes categorization of all features in the dataset.
        @@ -2363,7 +2363,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def load(self, features, add=False, silent=SILENT_D):
             """Loads features from disk into RAM memory.
        @@ -2541,7 +2541,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def loadAll(self, silent=SILENT_D):
             """Load all loadable features.
        @@ -2642,7 +2642,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def save(
             self,
        diff --git a/tf/core/files.html b/tf/core/files.html
        index 630b44a76..31222a980 100644
        --- a/tf/core/files.html
        +++ b/tf/core/files.html
        @@ -31,7 +31,7 @@ 

        Module tf.core.files

        Expand source code -Browse git +Browse git
        import os
         import yaml
        @@ -881,7 +881,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def abspath(path):
             return normpath(os.path.abspath(path))
        @@ -912,7 +912,7 @@

        Returns

        Expand source code -Browse git +Browse git
        def annotateDir(app, tool):
             """Return the input and output directories for a specific annotation tool.
        @@ -994,7 +994,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def backendRep(be, kind, default=None):
             """Various back-end dependent values.
        @@ -1118,7 +1118,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def chDir(directory):
             """Change to other directory.
        @@ -1146,7 +1146,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def clearTree(path):
             """Remove all files from a directory, recursively, but leave subdirectories.
        @@ -1203,7 +1203,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def dirAllFiles(path, ignore=None):
             """Gets all the files found by `path`.
        @@ -1272,7 +1272,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def dirContents(path):
             """Gets the contents of a directory.
        @@ -1317,7 +1317,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def dirCopy(pathSrc, pathDst, noclobber=False):
             """Copies a directory if it exists as directory.
        @@ -1343,7 +1343,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def dirEmpty(target):
             target = normpath(target)
        @@ -1358,7 +1358,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def dirExists(path):
             """Whether a path exists as directory on the file system."""
        @@ -1381,7 +1381,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def dirMake(path):
             """Creates a directory if it does not already exist as directory."""
        @@ -1398,7 +1398,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def dirMove(pathSrc, pathDst):
             """Moves a directory if it exists as directory.
        @@ -1419,7 +1419,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def dirNm(path):
             """Get the directory part of a file name."""
        @@ -1434,7 +1434,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def dirRemove(path):
             """Removes a directory if it exists as directory."""
        @@ -1450,7 +1450,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def expandDir(obj, dirName):
             if dirName.startswith("~"):
        @@ -1470,7 +1470,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def expanduser(path):
             nPath = normpath(path)
        @@ -1490,7 +1490,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def extNm(path):
             """Get the extension part of a file name.
        @@ -1511,7 +1511,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def fileCopy(pathSrc, pathDst):
             """Copies a file if it exists as file.
        @@ -1531,7 +1531,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def fileExists(path):
             """Whether a path exists as file on the file system."""
        @@ -1547,7 +1547,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def fileMove(pathSrc, pathDst):
             """Moves a file if it exists as file.
        @@ -1567,7 +1567,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def fileNm(path):
             """Get the file part of a file name."""
        @@ -1585,7 +1585,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def fileOpen(*args, **kwargs):
             """Wrapper around `open()`, making sure `encoding="utf8" is passed.
        @@ -1608,7 +1608,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def fileRemove(path):
             """Removes a file if it exists as file."""
        @@ -1629,7 +1629,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getCwd():
             """Get current directory.
        @@ -1671,7 +1671,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getLocation(targetDir=None):
             """Get back-end, org, repo, relative of directory.
        @@ -1752,7 +1752,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def initTree(path, fresh=False, gentle=False):
             """Make sure a directory exists, optionally clean it.
        @@ -1794,7 +1794,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def isDir(path):
             """Whether path exists and is a directory."""
        @@ -1809,7 +1809,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def isFile(path):
             """Whether path exists and is a file."""
        @@ -1824,7 +1824,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def normpath(path):
             if path is None:
        @@ -1841,7 +1841,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def prefixSlash(path):
             """Prefix a / before a path if it is non-empty and not already starts with it."""
        @@ -1856,7 +1856,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def readYaml(text=None, plain=False, asFile=None, preferTuples=True):
             kwargs = dict(Loader=yaml.FullLoader)
        @@ -1881,7 +1881,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def replaceExt(path, newExt):
             """Replace the extension of a path by another one. Specify it without dot."""
        @@ -1897,7 +1897,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def setDir(obj):
             obj.homeDir = expanduser("~")
        @@ -1913,7 +1913,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def splitPath(path):
             """Split a file name in a directory part and a file part."""
        @@ -1929,7 +1929,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def str_presenter(dumper, data):
             """configures yaml for dumping multiline strings
        @@ -1949,7 +1949,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def stripExt(path):
             """Strip the extension of a file name, if there is one."""
        @@ -1966,7 +1966,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def unexpanduser(path):
             nPath = normpath(path)
        @@ -1984,7 +1984,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def writeYaml(data, asFile=None, sorted=False):
             kwargs = dict(allow_unicode=True, sort_keys=sorted)
        diff --git a/tf/core/generic.html b/tf/core/generic.html
        index 5ec075e00..a65d45585 100644
        --- a/tf/core/generic.html
        +++ b/tf/core/generic.html
        @@ -31,7 +31,7 @@ 

        Module tf.core.generic

        Expand source code -Browse git +Browse git
        class AttrDict(dict):
             """Turn a dict into an object with attributes.
        @@ -190,7 +190,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def deepAttrDict(info, preferTuples=False):
             """Turn a `dict` into an `AttrDict`, recursively.
        @@ -254,7 +254,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def deepdict(info):
             """Turns an `AttrDict` into a `dict`, recursively.
        @@ -304,7 +304,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def isIterable(value):
             """Whether a value is a non-string iterable.
        @@ -346,7 +346,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class AttrDict(dict):
             """Turn a dict into an object with attributes.
        @@ -401,7 +401,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def deepdict(self):
             return deepdict(self)
        diff --git a/tf/core/helpers.html b/tf/core/helpers.html index 799805ab5..2e5d8103a 100644 --- a/tf/core/helpers.html +++ b/tf/core/helpers.html @@ -31,7 +31,7 @@

        Module tf.core.helpers

        Expand source code -Browse git +Browse git
        import os
         import sys
        @@ -732,7 +732,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def camel(name):
             if not name:
        @@ -749,7 +749,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def check32():
             warn = ""
        @@ -770,7 +770,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def cleanName(name):
             clean = "".join(c if c in VALID else "_" for c in name)
        @@ -787,7 +787,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def collectFormats(config):
             featureSet = set()
        @@ -824,7 +824,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def console(*msg, error=False, newline=True):
             msg = " ".join(m if type(m) is str else repr(m) for m in msg)
        @@ -852,7 +852,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def deepSize(o, handlers={}, verbose=False, seen=None):
             """Returns the approximate memory footprint an object and all of its contents.
        @@ -911,7 +911,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def fitemize(value):
             if not value:
        @@ -931,7 +931,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def flattenToSet(features):
             theseFeatures = set()
        @@ -968,7 +968,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def formatMeta(featureMeta):
             """Reorder meta data.
        @@ -1017,7 +1017,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getAllRealFeatures(api):
             """Get all configuration features and all loaded node and edge features.
        @@ -1062,7 +1062,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def htmlEsc(val, math=False):
             """Escape certain HTML characters by HTML entities.
        @@ -1102,7 +1102,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def isClean(name):
             if name is None or len(name) == 0 or name[0] not in LETTER:
        @@ -1118,7 +1118,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def isInt(val):
             try:
        @@ -1136,7 +1136,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def itemize(string, sep=None):
             if not string:
        @@ -1154,7 +1154,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def makeExamples(nodeList):
             lN = len(nodeList)
        @@ -1177,7 +1177,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def makeIndex(data):
             inv = {}
        @@ -1194,7 +1194,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def makeInverse(data):
             inverse = {}
        @@ -1212,7 +1212,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def makeInverseVal(data):
             inverse = {}
        @@ -1232,7 +1232,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def mathEsc(val):
             """Escape dollar signs to `<span>$</span>`.
        @@ -1260,7 +1260,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def mdEsc(val, math=False):
             """Escape certain markdown characters.
        @@ -1300,7 +1300,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def mdhtmlEsc(val, math=False):
             """Escape certain Markdown characters by HTML entities or span elements.
        @@ -1354,7 +1354,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def mergeDict(source, overrides):
             """Merge overrides into a source dictionary recursively.
        @@ -1382,7 +1382,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def mergeDictOfSets(d1, d2):
             for n, ms in d2.items():
        @@ -1400,7 +1400,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def nbytes(by):
             units = ["B", "KB", "MB", "GB", "TB"]
        @@ -1421,7 +1421,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def pandasEsc(x):
             """Escapes the character that will be used as the `pandas` quote char.
        @@ -1446,7 +1446,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def project(iterableOfTuples, maxDimension):
             if maxDimension == 1:
        @@ -1462,7 +1462,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def rangesFromList(nodeList):  # the list must be sorted
             curstart = None
        @@ -1489,7 +1489,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def rangesFromSet(nodeSet):
             # ranges = []
        @@ -1531,7 +1531,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def run(cmdline, workDir=None):
             """Runs a shell command and returns all relevant info.
        @@ -1575,7 +1575,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def setFromSpec(spec):
             covered = set()
        @@ -1601,7 +1601,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def setFromStr(x):
             if x is None:
        @@ -1618,7 +1618,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def setFromValue(x, asInt=False):
             if x is None:
        @@ -1643,7 +1643,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def specFromRanges(ranges):  # ranges must be normalized
             return ",".join(
        @@ -1659,7 +1659,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def specFromRangesLogical(ranges):  # ranges must be normalized
             return [r[0] if r[0] == r[1] else [r[0], r[1]] for r in ranges]
        @@ -1673,7 +1673,7 @@

        Parameters

        Expand source code -Browse git +Browse git
        def tfFromValue(val):
             valTp = type(val)
        @@ -1699,7 +1699,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def tsvEsc(x):
             """Escapes a double quote for strings to be included in TSV data.
        @@ -1719,7 +1719,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def valueFromTf(tf):
             return "\\".join(
        @@ -1745,7 +1745,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def var(envVar):
             """Retrieves the value of an environment variable.
        @@ -1771,7 +1771,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def versionSort(x):
             parts = []
        @@ -1792,7 +1792,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def wrapMessages(messages):
             if type(messages) is str:
        @@ -1827,7 +1827,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def xmlEsc(val):
             """Escape certain HTML characters by XML entities.
        diff --git a/tf/core/index.html b/tf/core/index.html
        index 9d344e2ec..3cf8d555b 100644
        --- a/tf/core/index.html
        +++ b/tf/core/index.html
        @@ -44,7 +44,7 @@ 

        Core API of TF

        Expand source code -Browse git +Browse git
        """
         # Core API of TF
        diff --git a/tf/core/locality.html b/tf/core/locality.html
        index 05a3ab180..feef61eef 100644
        --- a/tf/core/locality.html
        +++ b/tf/core/locality.html
        @@ -32,7 +32,7 @@ 

        Local navigation between nodes.

        Expand source code -Browse git +Browse git
        """
         # Local navigation between nodes.
        @@ -404,7 +404,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class Locality:
             """Methods by which you can navigate from a node to its neighbourhood.
        @@ -742,7 +742,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def d(self, n, otype=None):
             """Produces an ordered tuple of *downward* nodes.
        @@ -836,7 +836,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def i(self, n, otype=None):
             """Produces an ordered tuple of *intersecting* nodes
        @@ -918,7 +918,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def n(self, n, otype=None):
             """Produces an ordered tuple of *next* nodes.
        @@ -994,7 +994,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def p(self, n, otype=None):
             """Produces an ordered tuple of *previous* nodes.
        @@ -1075,7 +1075,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def u(self, n, otype=None):
             """Produces an ordered tuple of *upward* nodes.
        diff --git a/tf/core/nodefeature.html b/tf/core/nodefeature.html
        index ae212ceb9..b9bbd7b02 100644
        --- a/tf/core/nodefeature.html
        +++ b/tf/core/nodefeature.html
        @@ -41,7 +41,7 @@ 

        Mappings from nodes to values.

        Expand source code -Browse git +Browse git
        """
         # Mappings from nodes to values.
        @@ -197,7 +197,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class NodeFeature:
             """Provides access to (node) feature data.
        @@ -339,7 +339,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def freqList(self, nodeTypes=None):
             """Frequency list of the values of this feature.
        @@ -386,7 +386,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def items(self):
             """A generator that yields the items of the feature, seen as a mapping.
        @@ -427,7 +427,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def s(self, val):
             """Query all nodes having a specified feature value.
        @@ -475,7 +475,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def v(self, n):
             """Get the value of a feature for a node.
        @@ -506,7 +506,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        class NodeFeatures:
             pass
        diff --git a/tf/core/nodes.html b/tf/core/nodes.html index c45217830..23ca9f3d8 100644 --- a/tf/core/nodes.html +++ b/tf/core/nodes.html @@ -81,7 +81,7 @@

        Canonical Order

        Expand source code -Browse git +Browse git
        """
         # Node organization
        @@ -399,7 +399,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class Nodes:
             def __init__(self, api):
        @@ -710,7 +710,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def makeSortKeyChunk(self):
             api = self.api
        @@ -802,7 +802,7 @@ 

        See Also

        Expand source code -Browse git +Browse git
        def sortNodes(self, nodeSet):
             """Delivers a tuple of nodes sorted by the *canonical ordering*.
        @@ -871,7 +871,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def walk(self, nodes=None, events=False):
             """Generates all nodes in the *canonical order*.
        diff --git a/tf/core/oslotsfeature.html b/tf/core/oslotsfeature.html
        index 01e7c57e6..1de203ff9 100644
        --- a/tf/core/oslotsfeature.html
        +++ b/tf/core/oslotsfeature.html
        @@ -35,7 +35,7 @@ 

        Access to oslots feature dat
        Expand source code -Browse git +Browse git
        """
         # Access to `oslots` feature data.
        @@ -120,7 +120,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class OslotsFeature:
             def __init__(self, api, metaData, data):
        @@ -196,7 +196,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def items(self):
             """A generator that yields the non-slot nodes with their slots.
        @@ -235,7 +235,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def s(self, n):
             """Get the slots of a (non-slot) node.
        diff --git a/tf/core/otypefeature.html b/tf/core/otypefeature.html
        index 78dcaeb79..9b026e1e3 100644
        --- a/tf/core/otypefeature.html
        +++ b/tf/core/otypefeature.html
        @@ -35,7 +35,7 @@ 

        Access to otype feature data.
        Expand source code -Browse git +Browse git
        """
         # Access to `otype` feature data.
        @@ -190,7 +190,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class OtypeFeature:
             def __init__(self, api, metaData, data):
        @@ -351,7 +351,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def items(self):
             """As in `tf.core.nodefeature.NodeFeature.items`."""
        @@ -392,7 +392,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def s(self, val):
             """Query all nodes having a specified node type.
        @@ -452,7 +452,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def sInterval(self, val):
             """The interval of nodes having a specified node type.
        @@ -498,7 +498,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def v(self, n):
             """Get the node type of a node.
        diff --git a/tf/core/prepare.html b/tf/core/prepare.html
        index 549e9bb5f..f92fff626 100644
        --- a/tf/core/prepare.html
        +++ b/tf/core/prepare.html
        @@ -39,7 +39,7 @@ 

        Pre-compute data.

        Expand source code -Browse git +Browse git
        """
         # Pre-compute data.
        @@ -872,7 +872,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def boundary(info, error, otype, oslots, rank):
             """Computes boundary data.
        @@ -971,7 +971,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def characters(info, error, otext, tFormats, *tFeats):
             """Computes character data.
        @@ -1071,7 +1071,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def levDown(info, error, otype, levUp, rank):
             """Computes level-down data.
        @@ -1170,7 +1170,7 @@ 

        Warnings

        Expand source code -Browse git +Browse git
        def levUp(info, error, otype, oslots, rank):
             """Computes level-up data.
        @@ -1320,7 +1320,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def levels(info, error, otype, oslots, otext):
             """Computes level data.
        @@ -1472,7 +1472,7 @@ 

        See Also

        Expand source code -Browse git +Browse git
        def order(info, error, otype, oslots, levels):
             """Computes order data for the canonical ordering.
        @@ -1577,7 +1577,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def rank(info, error, otype, order):
             """Computes rank data.
        @@ -1664,7 +1664,7 @@ 

        Warnings

        Expand source code -Browse git +Browse git
        def sections(info, error, otype, oslots, otext, levUp, levels, *sFeats):
             """Computes section data.
        @@ -1852,7 +1852,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def structure(info, error, otype, oslots, otext, rank, levUp, *sFeats):
             """Computes structure data.
        diff --git a/tf/core/text.html b/tf/core/text.html
        index 224b2f9d2..91211301c 100644
        --- a/tf/core/text.html
        +++ b/tf/core/text.html
        @@ -374,7 +374,7 @@ 

        The T.text() function

        Expand source code -Browse git +Browse git
        """
         # Text API
        @@ -1683,7 +1683,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class Text:
             """Low level text representation, including section headings.
        @@ -2632,7 +2632,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def down(self, n):
             """Gives the children of a structural node.
        @@ -2704,7 +2704,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def headingFromNode(self, n):
             """Gives the full heading of a structural node.
        @@ -2776,7 +2776,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def nodeFromHeading(self, head):
             """Gives the node corresponding to a heading, provided it exists.
        @@ -2841,7 +2841,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def nodeFromSection(self, section, lang="en"):
             """Given a section tuple, return the node of it.
        @@ -2925,7 +2925,7 @@ 

        Warnings

        Expand source code -Browse git +Browse git
        def sectionFromNode(self, n, lastSlot=False, lang="en", fillup=False):
             """Gives the full heading of a section node.
        @@ -3024,7 +3024,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def sectionTuple(self, n, lastSlot=False, fillup=False):
             """Gives a tuple of nodes that correspond to a section.
        @@ -3129,7 +3129,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def splitDefaultFormat(self, tpl):
             api = self.api
        @@ -3152,7 +3152,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def splitFormat(self, tpl):
             api = self.api
        @@ -3186,7 +3186,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def structure(self, node=None):
             """Gives the structure of node and everything below it as a tuple.
        @@ -3239,7 +3239,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
            def structureInfo(self):
                 """Gives a summary of how structure has been configured in the dataset.
        @@ -3334,7 +3334,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def structurePretty(self, node=None, fullHeading=False):
             """Gives the structure of node and everything below it as a string.
        @@ -3435,7 +3435,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
            def text(self, nodes, fmt=None, descend=None, func=None, explain=False, **kwargs):
                 """Gives the text that corresponds to a bunch of nodes.
        @@ -3660,7 +3660,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def top(self):
             """Gives all top-level structural nodes in the dataset.
        @@ -3704,7 +3704,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def up(self, n):
             """Gives the parent of a structural node.
        diff --git a/tf/core/timestamp.html b/tf/core/timestamp.html
        index 73697edfe..196c76b2c 100644
        --- a/tf/core/timestamp.html
        +++ b/tf/core/timestamp.html
        @@ -34,7 +34,7 @@ 

        Timed messages

        Expand source code -Browse git +Browse git
        """
         # Timed messages
        @@ -414,7 +414,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def silentConvert(arg):
             if arg is None:
        @@ -476,7 +476,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class Timestamp:
             def __init__(self, silent=SILENT_D, level=None):
        @@ -778,7 +778,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def cache(self, _asString=False):
             if _asString:
        @@ -824,7 +824,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def debug(self, msg, tm=True, nl=True, cache=0, force=False):
             """Sends a debug message to the standard output.
        @@ -879,7 +879,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def error(self, msg, tm=True, nl=True, cache=0, force=True):
             """Sends an warning message to the standard error.
        @@ -928,7 +928,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def indent(self, level=None, reset=False, _verbose=None):
             """Changes the indentation and timing of forthcoming messages.
        @@ -996,7 +996,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def info(self, msg, tm=True, nl=True, cache=0, force=False):
             """Sends an informational message to the standard output.
        @@ -1038,7 +1038,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def isSilent(self):
             """The current verbosity.
        @@ -1059,7 +1059,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def raw_msg(self, msg, tm=True, nl=True, cache=0, error=False):
             # cache is a list: append to cache, do not output anything
        @@ -1096,7 +1096,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def reset(self):
             self.log = []
        @@ -1115,7 +1115,7 @@

        Parameters

        Expand source code -Browse git +Browse git
        def setSilent(self, silent):
             """Set the verbosity.
        @@ -1138,7 +1138,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def silentOff(self):
             """Enable informational messages."""
        @@ -1160,7 +1160,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def silentOn(self, deep=False):
             """Suppress informational messages.
        @@ -1203,7 +1203,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def warning(self, msg, tm=True, nl=True, cache=0, force=False):
             """Sends an warning message to the standard output.
        diff --git a/tf/dataset/index.html b/tf/dataset/index.html
        index a81146fd9..eecfeaa25 100644
        --- a/tf/dataset/index.html
        +++ b/tf/dataset/index.html
        @@ -43,7 +43,7 @@ 

        Dataset operations

        Expand source code -Browse git +Browse git
        """
         # Dataset operations
        diff --git a/tf/dataset/modify.html b/tf/dataset/modify.html
        index ff6b15bd1..8ed9ab835 100644
        --- a/tf/dataset/modify.html
        +++ b/tf/dataset/modify.html
        @@ -48,7 +48,7 @@ 

        Usage

        Expand source code -Browse git +Browse git
        """
         # Modify
        @@ -1881,7 +1881,7 @@ 

        Example

        Expand source code -Browse git +Browse git
        def modify(
             location,
        diff --git a/tf/dataset/nodemaps.html b/tf/dataset/nodemaps.html
        index 339eb6047..acb8c9d9b 100644
        --- a/tf/dataset/nodemaps.html
        +++ b/tf/dataset/nodemaps.html
        @@ -138,7 +138,7 @@ 

        Usage

        Expand source code -Browse git +Browse git
        """
         # Node maps
        @@ -893,7 +893,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class Versions:
             def __init__(self, api, va, vb, silent=SILENT_D, slotMap=None):
        @@ -1459,7 +1459,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
            def caption(self, level, heading, good=None, newLine=True, continuation=False):
                 silent = self.silent
        @@ -1535,7 +1535,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def exploreNodeMapping(self, nodeType):
             va = self.va
        @@ -1604,7 +1604,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def getDiagnosis(self, node=None, label=None):
             """Show the diagnosis of a mapping.
        @@ -1684,7 +1684,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def legend(self):
             """Show the labels and descriptions of the diagnosis classes.
        @@ -1708,7 +1708,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def makeNodeMapping(self, nodeType):
             edge = self.edge
        @@ -1799,7 +1799,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def makeVersionMapping(self):
             Fa = self.Fa
        @@ -1855,7 +1855,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def migrateFeatures(self, featureNames, silent=None, location=None):
             """Migrate features from one version to another based on a node map.
        @@ -2050,7 +2050,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def omapName(self):
             va = self.va
        @@ -2066,7 +2066,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def writeMap(self):
             TFb = self.TFb
        diff --git a/tf/fabric.html b/tf/fabric.html
        index 97c99d5ae..1dcfdd93b 100644
        --- a/tf/fabric.html
        +++ b/tf/fabric.html
        @@ -52,7 +52,7 @@ 

        Fabri
        Expand source code -Browse git +Browse git
        """
         # `Fabric`
        @@ -346,7 +346,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class Fabric(FabricCore):
             """Initialize the core API for a corpus.
        @@ -572,7 +572,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def collect(
             self,
        @@ -628,7 +628,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def extract(
             self, volumes=True, byTitle=True, silent=SILENT_D, overwrite=None, show=False
        @@ -675,7 +675,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def getVolumes(self):
             """Lists available volumes within the dataset.
        diff --git a/tf/index.html b/tf/index.html
        index 6b2860135..01a110fa0 100644
        --- a/tf/index.html
        +++ b/tf/index.html
        @@ -154,7 +154,7 @@ 

        More resources

        Expand source code -Browse git +Browse git
        """
         .. include:: docs/main/top.md
        diff --git a/tf/lib.html b/tf/lib.html
        index a721a8174..02dfabb5a 100644
        --- a/tf/lib.html
        +++ b/tf/lib.html
        @@ -33,7 +33,7 @@ 

        Utility functions

        Expand source code -Browse git +Browse git
        """
         # Utility functions
        @@ -237,7 +237,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def readList(source):
             """Reads list of tuples from a TSV file.
        @@ -300,7 +300,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def readSets(source):
             """Reads a dictionary of named sets from file.
        @@ -370,7 +370,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def writeList(data, dest, intCols=None):
             """Writes a list of tuples sets to a TSV file.
        @@ -457,7 +457,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def writeSets(sets, dest):
             """Writes a dictionary of named sets to file.
        diff --git a/tf/parameters.html b/tf/parameters.html
        index dd3afa61d..e9892b1ae 100644
        --- a/tf/parameters.html
        +++ b/tf/parameters.html
        @@ -33,7 +33,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        """
         # Parameters
        @@ -46,7 +46,7 @@ 

        Parameters

        from zipfile import ZIP_DEFLATED -VERSION = '12.4.3' +VERSION = '12.4.4' """Program version. This value is under control of the update process, as run by diff --git a/tf/search/graph.html b/tf/search/graph.html index 06d92fb61..b50350fa0 100644 --- a/tf/search/graph.html +++ b/tf/search/graph.html @@ -32,7 +32,7 @@

        Graph oriented functions nee
        Expand source code -Browse git +Browse git
        """
         # Graph oriented functions needed for search
        @@ -290,7 +290,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def connectedness(searchExe):
             error = searchExe.api.TF.error
        @@ -342,7 +342,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def displayEdge(searchExe, e, dir, nodesSeen):
             info = searchExe.api.TF.info
        @@ -396,7 +396,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def displayNode(searchExe, q, pos2=False):
             info = searchExe.api.TF.info
        @@ -424,7 +424,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def displayPlan(searchExe, details=False):
             if not searchExe.good:
        @@ -497,7 +497,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def multiEdges(searchExe):
             relations = searchExe.relations
        diff --git a/tf/search/index.html b/tf/search/index.html
        index b4362fa2d..d2225c63b 100644
        --- a/tf/search/index.html
        +++ b/tf/search/index.html
        @@ -37,7 +37,7 @@ 

        Guidance for searching

        Expand source code -Browse git +Browse git
        """
         # Guidance for searching
        diff --git a/tf/search/relations.html b/tf/search/relations.html
        index d8cd1a378..4f524defa 100644
        --- a/tf/search/relations.html
        +++ b/tf/search/relations.html
        @@ -32,7 +32,7 @@ 

        Search by relational patter
        Expand source code -Browse git +Browse git
        """
         # Search by relational patterns between nodes
        @@ -1865,7 +1865,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def add_F_Relations(searchExe, varRels):
             relations = searchExe.relations
        @@ -1946,7 +1946,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def add_K_Relations(searchExe, varRels):
             relations = searchExe.relations
        @@ -1999,7 +1999,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def add_V_Relations(searchExe, varRels):
             relations = searchExe.relations
        @@ -2064,7 +2064,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def basicRelations(searchExe, api):
             C = api.C
        diff --git a/tf/search/search.html b/tf/search/search.html
        index 47b6c70b6..e8a146b5b 100644
        --- a/tf/search/search.html
        +++ b/tf/search/search.html
        @@ -32,7 +32,7 @@ 

        Search (top-level)

        Expand source code -Browse git +Browse git
        """
         # Search (top-level)
        @@ -596,7 +596,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class Search:
             """ """
        @@ -1176,7 +1176,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def count(self, progress=None, limit=None):
             """Counts the results, with progress messages, optionally up to a limit.
        @@ -1278,7 +1278,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def fetch(self, limit=None, _msgCache=False):
             """Retrieves query results, up to a limit.
        @@ -1390,7 +1390,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def glean(self, tup):
             """Renders a single result into something human readable.
        @@ -1476,7 +1476,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def relationsLegend(self):
             """Dynamic info about the basic relations that can be used in templates.
        @@ -1547,7 +1547,7 @@ 

        Notes

        Expand source code -Browse git +Browse git
        def search(
             self,
        @@ -1657,7 +1657,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def showPlan(self, details=False):
             """Show the result of the latest study of a template.
        @@ -1734,7 +1734,7 @@ 

        See Also

        Expand source code -Browse git +Browse git
        def study(
             self,
        @@ -1917,7 +1917,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def tweakPerformance(self, silent=SILENT_D, **kwargs):
             """Tweak parameters that influence the search process.
        diff --git a/tf/search/searchexe.html b/tf/search/searchexe.html
        index 2d435ada7..4a638ec06 100644
        --- a/tf/search/searchexe.html
        +++ b/tf/search/searchexe.html
        @@ -32,7 +32,7 @@ 

        Search execution management

        Expand source code -Browse git +Browse git
        """
         # Search execution management
        @@ -300,7 +300,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class SearchExe:
             perfDefaults = dict(
        @@ -553,7 +553,7 @@ 

        Static methods

        Expand source code -Browse git +Browse git
        @classmethod
         def setPerfParams(cls, params):
        @@ -571,7 +571,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def count(self, progress=None, limit=None):
             TF = self.api.TF
        @@ -637,7 +637,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def fetch(self, limit=None):
             api = self.api
        @@ -683,7 +683,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def search(self, limit=None):
             api = self.api
        @@ -703,7 +703,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def showOuterTemplate(self, _msgCache):
             error = self.api.TF.error
        @@ -724,7 +724,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def showPlan(self, details=False):
             displayPlan(self, details=details)
        @@ -738,7 +738,7 @@

        Methods

        Expand source code -Browse git +Browse git
        def study(self, strategy=None):
             api = self.api
        diff --git a/tf/search/semantics.html b/tf/search/semantics.html
        index 92a28df10..afa271741 100644
        --- a/tf/search/semantics.html
        +++ b/tf/search/semantics.html
        @@ -32,7 +32,7 @@ 

        Semantics of search templates

        Expand source code -Browse git +Browse git
        """
         # Semantics of search templates
        @@ -566,7 +566,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def semantics(searchExe):
             if not searchExe.good:
        diff --git a/tf/search/spin.html b/tf/search/spin.html
        index fbc057eac..d7a13d396 100644
        --- a/tf/search/spin.html
        +++ b/tf/search/spin.html
        @@ -32,7 +32,7 @@ 

        Search pre-processing

        Expand source code -Browse git +Browse git
        """
         # Search pre-processing
        @@ -484,7 +484,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def estimateSpreads(searchExe, both=False):
             TRY_LIMIT_F = searchExe.perfParams["tryLimitFrom"]
        @@ -562,7 +562,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def spinAtoms(searchExe):
             qnodes = searchExe.qnodes
        @@ -578,7 +578,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def spinEdges(searchExe):
             qnodes = searchExe.qnodes
        diff --git a/tf/search/stitch.html b/tf/search/stitch.html
        index f90c9ebfd..d192be0cf 100644
        --- a/tf/search/stitch.html
        +++ b/tf/search/stitch.html
        @@ -32,7 +32,7 @@ 

        Search result finding

        Expand source code -Browse git +Browse git
        """
         # Search result finding
        @@ -937,7 +937,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def setStrategy(searchExe, strategy, keep=False):
             error = searchExe.api.TF.error
        @@ -971,7 +971,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def stitch(searchExe):
             estimateSpreads(searchExe, both=True)
        diff --git a/tf/search/syntax.html b/tf/search/syntax.html
        index 5fd56afa3..24c248624 100644
        --- a/tf/search/syntax.html
        +++ b/tf/search/syntax.html
        @@ -32,7 +32,7 @@ 

        Syntax of search templates

        Expand source code -Browse git +Browse git
        """
         # Syntax of search templates
        @@ -730,7 +730,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def cleanParent(atom, parentName):
             (kind, data) = parseLine(atom)
        @@ -748,7 +748,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def deContext(quantifier, parentName):
             (quKind, quTemplates, ln) = quantifier
        @@ -804,7 +804,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def parseFeatureVals(searchExe, featStr, features, i, asEdge=False):
             if asEdge:
        @@ -879,7 +879,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def parseLine(line):
             for x in [True]:
        @@ -936,7 +936,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def syntax(searchExe):
             error = searchExe.api.TF.error
        diff --git a/tf/tools/checkdiffs.html b/tf/tools/checkdiffs.html
        index 86b4eef30..5befe7022 100644
        --- a/tf/tools/checkdiffs.html
        +++ b/tf/tools/checkdiffs.html
        @@ -31,7 +31,7 @@ 

        Module tf.tools.checkdiffs

        Expand source code -Browse git +Browse git
        import sys
         from itertools import zip_longest
        @@ -130,7 +130,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def checkDiffs(path1, path2):
             """Check differences between runs of TF generations.
        diff --git a/tf/tools/index.html b/tf/tools/index.html
        index b554b325f..e5cddad8c 100644
        --- a/tf/tools/index.html
        +++ b/tf/tools/index.html
        @@ -32,7 +32,7 @@ 

        Module tf.tools

        Expand source code -Browse git +Browse git
        """Various tools for workflows around TF."""
        diff --git a/tf/tools/myspacy.html b/tf/tools/myspacy.html index 57f9d7deb..de46ad251 100644 --- a/tf/tools/myspacy.html +++ b/tf/tools/myspacy.html @@ -41,7 +41,7 @@

        Module tf.tools.myspacy

        Expand source code -Browse git +Browse git
        """Get words and tokens from a plain text with the help of Spacy.
         
        @@ -484,7 +484,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def nlpOutput(text, lang="en", ner=False, parser=False):
             """Runs the Spacy NLP pipeline and delivers the results.
        @@ -554,7 +554,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class Spacy(CheckImport):
             def __init__(self, lang=None, parser=False):
        @@ -885,7 +885,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getEntities(self):
             """Get the resulting named entities.
        @@ -949,7 +949,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getSentences(self):
             """Get the resulting sentences.
        @@ -1032,7 +1032,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getTokens(self):
             """Get the resulting tokens.
        @@ -1099,7 +1099,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def read(self, text):
             """Process a plain text.
        diff --git a/tf/tools/nbconvert.html b/tf/tools/nbconvert.html
        index 4fa051335..1ef55a7a9 100644
        --- a/tf/tools/nbconvert.html
        +++ b/tf/tools/nbconvert.html
        @@ -31,7 +31,7 @@ 

        Module tf.tools.nbconvert

        Expand source code -Browse git +Browse git
        import sys
         import re
        @@ -310,7 +310,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def convertDir(inputDir, outputDir):
             inPlace = outputDir == "-"
        @@ -409,7 +409,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def main():
             args = sys.argv[1:]
        @@ -428,7 +428,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def makeIndex(inputDir):
             htmlStart = dedent(
        @@ -536,7 +536,7 @@ 

        Index Mode

        Expand source code -Browse git +Browse git
        def task(*args):
             inputDir = args[0]
        diff --git a/tf/tools/pdocs.html b/tf/tools/pdocs.html
        index 7af4bcddc..9f75b2a65 100644
        --- a/tf/tools/pdocs.html
        +++ b/tf/tools/pdocs.html
        @@ -31,7 +31,7 @@ 

        Module tf.tools.pdocs

        Expand source code -Browse git +Browse git
        import sys
         import os
        @@ -277,7 +277,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def console(*args):
             sys.stderr.write(" ".join(args) + "\n")
        @@ -292,7 +292,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def getCommand(pkg, asString=False):
             templateLoc = TEMPLATE_LOC.format(pkg)
        @@ -317,7 +317,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def pdoc3(pkg):
             """Build the docs into site."""
        @@ -346,7 +346,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def pdoc3serve(pkg):
             """Build the docs into site and serve them."""
        @@ -369,7 +369,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def servePdocs(pkg):
             run("python -m http.server 9000", cwd=SITE, shell=True)
        @@ -383,7 +383,7 @@

        Functions

        Expand source code -Browse git +Browse git
        def shipDocs(org, repo, pkg, pdoc=True):
             """Build the docs into site and ship them."""
        diff --git a/tf/tools/release.html b/tf/tools/release.html
        index 818852d33..a077d3182 100644
        --- a/tf/tools/release.html
        +++ b/tf/tools/release.html
        @@ -31,7 +31,7 @@ 

        Module tf.tools.release

        Expand source code -Browse git +Browse git
        import sys
         
        @@ -110,7 +110,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def makeRelease(org, repo, tag, name, msg, silent=True):
             ghPerson = var("GHPERS")
        diff --git a/tf/tools/xmlschema.html b/tf/tools/xmlschema.html
        index bc3acf878..36a9a1222 100644
        --- a/tf/tools/xmlschema.html
        +++ b/tf/tools/xmlschema.html
        @@ -107,7 +107,7 @@ 

        As library

        Expand source code -Browse git +Browse git
        """
         ## Meaningful information from XML schemas.
        @@ -1180,7 +1180,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def main():
             A = Analysis()
        @@ -1209,7 +1209,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class Analysis(CheckImport):
             @staticmethod
        @@ -1655,7 +1655,7 @@ 

        Static methods

        Expand source code -Browse git +Browse git
        @staticmethod
         def help():
        @@ -1696,7 +1696,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def analyser(self, baseSchema, override):
             """Initializes an analyser for a schema.
        @@ -1755,7 +1755,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def elements(self, baseSchema, override):
             """Makes a list of elements and their properties.
        @@ -1821,7 +1821,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def fromrelax(self, baseSchema, schemaOut):
             """Converts a RelaxNG schema to an XSD schema.
        @@ -1868,7 +1868,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getBaseSchema(self):
             """Get the base schema.
        @@ -1910,7 +1910,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getElementInfo(self, baseSchema, overrides, verbose=None):
             """Analyse the schema and its overrides.
        @@ -1970,7 +1970,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getModel(self, xmlContent):
             modelRe = self.modelRe
        @@ -2007,7 +2007,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def run(self):
             """Run a task specified by arguments on the command-line.
        @@ -2084,7 +2084,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def setModes(self, debug=False, verbose=-1):
             """Sets debug and verbose modes.
        @@ -2117,7 +2117,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def task(self, task, *args, verbose=None):
             """Implements a higher level task.
        @@ -2207,7 +2207,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def validate(self, schema, instances):
             """Validates an instance against a schema.
        @@ -2295,7 +2295,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        class Elements(CheckImport):
             types = set(
        @@ -2832,7 +2832,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        @staticmethod
         def eKey(x):
        @@ -2869,7 +2869,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        @staticmethod
         def repKind(k):
        @@ -2884,7 +2884,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        @staticmethod
         def repMixed(m):
        @@ -2914,7 +2914,7 @@ 

        Parameters

        Expand source code -Browse git +Browse git
        def configure(self, baseSchema, override=None, roots=None):
             """Configure for an XML schema and overrides
        @@ -3059,7 +3059,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getDefs(self, asTsv=False):
             """Delivers the analysis results.
        @@ -3118,7 +3118,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def interpret(self):
             """Reads the XSD and interprets the element definitions.
        @@ -3290,7 +3290,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def resolve(self, definitions):
             """Resolve indirections in the definitions.
        @@ -3359,7 +3359,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def showElems(self):
             """Shows the current state of definitions.
        @@ -3396,7 +3396,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def showOverrides(self):
             """Shows the overriding definitions."""
        @@ -3429,7 +3429,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def writeDefs(self, outputDir):
             """Writes the definitions of the elements to a file.
        diff --git a/tf/volumes/collect.html b/tf/volumes/collect.html
        index d3a16a476..2ea50fbf5 100644
        --- a/tf/volumes/collect.html
        +++ b/tf/volumes/collect.html
        @@ -54,7 +54,7 @@ 

        Usage

        Expand source code -Browse git +Browse git
        """
         # Collect
        @@ -1187,7 +1187,7 @@ 

        Example

        Expand source code -Browse git +Browse git
        def collect(
             volumes,
        diff --git a/tf/volumes/extract.html b/tf/volumes/extract.html
        index 2a70905ac..0aaab1c9f 100644
        --- a/tf/volumes/extract.html
        +++ b/tf/volumes/extract.html
        @@ -40,7 +40,7 @@ 

        Usage

        Expand source code -Browse git +Browse git
        """
         # Extract
        @@ -949,7 +949,7 @@ 

        Example

        Expand source code -Browse git +Browse git
        def extract(
             workLocation,
        @@ -1625,7 +1625,7 @@ 

        Returns

        Expand source code -Browse git +Browse git
        def getVolumes(volumesLocation):
             """Lists volumes of a work that exist in a given directory.
        diff --git a/tf/volumes/index.html b/tf/volumes/index.html
        index 527400ca2..3259ee43c 100644
        --- a/tf/volumes/index.html
        +++ b/tf/volumes/index.html
        @@ -38,7 +38,7 @@ 

        Volume operations

        Expand source code -Browse git +Browse git
        """
         # Volume operations
        diff --git a/tf/writing/arabic.html b/tf/writing/arabic.html
        index c9c62ffb5..b4b3b7869 100644
        --- a/tf/writing/arabic.html
        +++ b/tf/writing/arabic.html
        @@ -1019,7 +1019,7 @@ 

        See also

        Expand source code -Browse git +Browse git
        """
         .. include:: ../docs/writing/arabic.md
        diff --git a/tf/writing/greek.html b/tf/writing/greek.html
        index 0c748c6e6..f69bd01ba 100644
        --- a/tf/writing/greek.html
        +++ b/tf/writing/greek.html
        @@ -33,7 +33,7 @@ 

        Greek characters

        Expand source code -Browse git +Browse git
        """
         .. include:: ../docs/writing/greek.md
        diff --git a/tf/writing/hebrew.html b/tf/writing/hebrew.html
        index cc1e80c1c..5f764d5cc 100644
        --- a/tf/writing/hebrew.html
        +++ b/tf/writing/hebrew.html
        @@ -1243,7 +1243,7 @@ 

        Text-critical

        Expand source code -Browse git +Browse git
        """
         .. include:: ../docs/writing/hebrew.md
        diff --git a/tf/writing/index.html b/tf/writing/index.html
        index e8a1d7269..9b345ab13 100644
        --- a/tf/writing/index.html
        +++ b/tf/writing/index.html
        @@ -79,7 +79,7 @@ 

        Writing systems support

        Expand source code -Browse git +Browse git
        """
         # Writing systems support
        diff --git a/tf/writing/neoaramaic.html b/tf/writing/neoaramaic.html
        index 059b050c3..499bb00f8 100644
        --- a/tf/writing/neoaramaic.html
        +++ b/tf/writing/neoaramaic.html
        @@ -148,7 +148,7 @@ 

        Consonant phonem
        Expand source code -Browse git +Browse git
        """
         .. include:: ../docs/writing/neoaramaic.md
        diff --git a/tf/writing/syriac.html b/tf/writing/syriac.html
        index ea2127052..9b76cb4ab 100644
        --- a/tf/writing/syriac.html
        +++ b/tf/writing/syriac.html
        @@ -609,7 +609,7 @@ 

        Pericope markers

        Expand source code -Browse git +Browse git
        """
         .. include:: ../docs/writing/syriac.md
        diff --git a/tf/writing/transcription.html b/tf/writing/transcription.html
        index d1f7af81a..c3f83f32e 100644
        --- a/tf/writing/transcription.html
        +++ b/tf/writing/transcription.html
        @@ -56,7 +56,7 @@ 

        cld Neo Aramaic

        Expand source code -Browse git +Browse git
        """
         # Transcription
        @@ -1264,7 +1264,7 @@ 

        Classes

        Expand source code -Browse git +Browse git
        class Transcription:
             """Conversion between UNICODE and various transcriptions.
        @@ -2572,7 +2572,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def asciiFromArabic(word):
             return "".join(Transcription.arabicTransAscii.get(x, x) for x in word)
        @@ -2586,7 +2586,7 @@

        Methods

        Expand source code -Browse git +Browse git
        def can_from_syriac(self, word):
             return all(c in self.syriac_mappingi for c in word if c != " ")
        @@ -2600,7 +2600,7 @@

        Methods

        Expand source code -Browse git +Browse git
        def can_to_syriac(self, word):
             return all(
        @@ -2625,7 +2625,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def from_arabic(word):
             """
        @@ -2663,7 +2663,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def from_hebrew(self, word):
             """
        @@ -2703,7 +2703,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def from_syriac(self, word):
             """
        @@ -2741,7 +2741,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def from_ugaritic(word):
             """
        @@ -2772,7 +2772,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def latinFromArabic(word):
             return "".join(Transcription.arabicTransLatin.get(x, x) for x in word)
        @@ -2799,7 +2799,7 @@

        Methods

        Expand source code -Browse git +Browse git
        def ph_simplify(pword):
             """
        @@ -2837,7 +2837,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def quranFromArabic(word):
             return "".join(Transcription.arabicTransQuran.get(x, x) for x in word)
        @@ -2851,7 +2851,7 @@

        Methods

        Expand source code -Browse git +Browse git
        def standardFromArabic(word):
             return "".join(Transcription.arabicTransStandard.get(x, x) for x in word)
        @@ -2884,7 +2884,7 @@

        Methods

        Expand source code -Browse git +Browse git
        def suffix_and_finales(word):
             """
        @@ -2970,7 +2970,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def suppress_space(word):
             """
        @@ -3006,7 +3006,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def sycSplitPunc(self):
             pass
        @@ -3027,7 +3027,7 @@

        Methods

        Expand source code -Browse git +Browse git
        def to_arabic(word):
             """
        @@ -3067,7 +3067,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def to_etcbc_c(word):
             """
        @@ -3116,7 +3116,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def to_etcbc_v(word):
             """
        @@ -3156,7 +3156,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def to_hebrew(word):
             """
        @@ -3198,7 +3198,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def to_hebrew_c(word):
             """
        @@ -3240,7 +3240,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def to_hebrew_v(word):
             """
        @@ -3282,7 +3282,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def to_hebrew_x(word):
             """
        @@ -3322,7 +3322,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def to_syriac(self, word):
             """
        @@ -3362,7 +3362,7 @@ 

        Methods

        Expand source code -Browse git +Browse git
        def to_ugaritic(word):
             """
        diff --git a/tf/writing/ugaritic.html b/tf/writing/ugaritic.html
        index da5f177fb..758a5d617 100644
        --- a/tf/writing/ugaritic.html
        +++ b/tf/writing/ugaritic.html
        @@ -352,7 +352,7 @@ 

        Letters and word separator

        Expand source code -Browse git +Browse git
        """
         .. include:: ../docs/writing/ugaritic.md
        diff --git a/tf/zip.html b/tf/zip.html
        index 382d0b7a3..41673f551 100644
        --- a/tf/zip.html
        +++ b/tf/zip.html
        @@ -31,7 +31,7 @@ 

        Module tf.zip

        Expand source code -Browse git +Browse git
        from .advanced.app import loadApp
         from .core.timestamp import DEEP
        @@ -85,7 +85,7 @@ 

        Functions

        Expand source code -Browse git +Browse git
        def main():
             """Makes a complete zip file.