-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Update to bussilab/py-bussilab@191f1c7
- Loading branch information
0 parents
commit a4b6e7d
Showing
24 changed files
with
37,086 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
Precompiled manual for py-bussilab | ||
------------------------------- | ||
|
||
This repository hosts a precompiled manual for py-bussilab | ||
git revision [191f1c7](https://github.com/bussilab/py-bussilab/commit/191f1c7). | ||
|
||
To browse the manual you should go [here](http://bussilab.github.io/doc-py-bussilab). | ||
|
||
You can also download a full copy of the manual for offline access | ||
at [this link](http://github.com/bussilab/doc-py-bussilab/archive/master.zip). | ||
|
||
This manual has been compiled on [GitHub Actions](https://github.com/bussilab/py-bussilab/actions) on Thu Oct 17 15:40:29 UTC 2024. | ||
|
Binary file not shown.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,200 @@ | ||
<!doctype html> | ||
<html lang="en"> | ||
<head> | ||
<meta charset="utf-8"> | ||
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1"> | ||
<meta name="generator" content="pdoc3 0.11.1"> | ||
<title>bussilab.cli API documentation</title> | ||
<meta name="description" content="Tools to implement the command line interface | ||
…"> | ||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/13.0.0/sanitize.min.css" integrity="sha512-y1dtMcuvtTMJc1yPgEqF0ZjQbhnc/bFhyvIyVNb9Zk5mIGtqVaAB1Ttl28su8AvFMOY0EwRbAe+HCLqj6W7/KA==" crossorigin> | ||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/13.0.0/typography.min.css" integrity="sha512-Y1DYSb995BAfxobCkKepB1BqJJTPrOp3zPL74AWFugHHmmdcvO+C48WLrUOlhGMc0QG7AE3f7gmvvcrmX2fDoA==" crossorigin> | ||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/default.min.css" crossorigin> | ||
<style>:root{--highlight-color:#fe9}.flex{display:flex !important}body{line-height:1.5em}#content{padding:20px}#sidebar{padding:1.5em;overflow:hidden}#sidebar > *:last-child{margin-bottom:2cm}.http-server-breadcrumbs{font-size:130%;margin:0 0 15px 0}#footer{font-size:.75em;padding:5px 30px;border-top:1px solid #ddd;text-align:right}#footer p{margin:0 0 0 1em;display:inline-block}#footer p:last-child{margin-right:30px}h1,h2,h3,h4,h5{font-weight:300}h1{font-size:2.5em;line-height:1.1em}h2{font-size:1.75em;margin:2em 0 .50em 0}h3{font-size:1.4em;margin:1.6em 0 .7em 0}h4{margin:0;font-size:105%}h1:target,h2:target,h3:target,h4:target,h5:target,h6:target{background:var(--highlight-color);padding:.2em 0}a{color:#058;text-decoration:none;transition:color .2s ease-in-out}a:visited{color:#503}a:hover{color:#b62}.title code{font-weight:bold}h2[id^="header-"]{margin-top:2em}.ident{color:#900;font-weight:bold}pre code{font-size:.8em;line-height:1.4em;padding:1em;display:block}code{background:#f3f3f3;font-family:"DejaVu Sans Mono",monospace;padding:1px 4px;overflow-wrap:break-word}h1 code{background:transparent}pre{border-top:1px solid #ccc;border-bottom:1px solid #ccc;margin:1em 0}#http-server-module-list{display:flex;flex-flow:column}#http-server-module-list div{display:flex}#http-server-module-list dt{min-width:10%}#http-server-module-list p{margin-top:0}.toc ul,#index{list-style-type:none;margin:0;padding:0}#index code{background:transparent}#index h3{border-bottom:1px solid #ddd}#index ul{padding:0}#index h4{margin-top:.6em;font-weight:bold}@media (min-width:200ex){#index .two-column{column-count:2}}@media (min-width:300ex){#index .two-column{column-count:3}}dl{margin-bottom:2em}dl dl:last-child{margin-bottom:4em}dd{margin:0 0 1em 3em}#header-classes + dl > dd{margin-bottom:3em}dd dd{margin-left:2em}dd p{margin:10px 0}.name{background:#eee;font-size:.85em;padding:5px 10px;display:inline-block;min-width:40%}.name:hover{background:#e0e0e0}dt:target .name{background:var(--highlight-color)}.name > span:first-child{white-space:nowrap}.name.class > span:nth-child(2){margin-left:.4em}.inherited{color:#999;border-left:5px solid #eee;padding-left:1em}.inheritance em{font-style:normal;font-weight:bold}.desc h2{font-weight:400;font-size:1.25em}.desc h3{font-size:1em}.desc dt code{background:inherit}.source summary,.git-link-div{color:#666;text-align:right;font-weight:400;font-size:.8em;text-transform:uppercase}.source summary > *{white-space:nowrap;cursor:pointer}.git-link{color:inherit;margin-left:1em}.source pre{max-height:500px;overflow:auto;margin:0}.source pre code{font-size:12px;overflow:visible}.hlist{list-style:none}.hlist li{display:inline}.hlist li:after{content:',\2002'}.hlist li:last-child:after{content:none}.hlist .hlist{display:inline;padding-left:1em}img{max-width:100%}td{padding:0 .5em}.admonition{padding:.1em 1em;margin-bottom:1em}.admonition-title{font-weight:bold}.admonition.note,.admonition.info,.admonition.important{background:#aef}.admonition.todo,.admonition.versionadded,.admonition.tip,.admonition.hint{background:#dfd}.admonition.warning,.admonition.versionchanged,.admonition.deprecated{background:#fd4}.admonition.error,.admonition.danger,.admonition.caution{background:lightpink}</style> | ||
<style media="screen and (min-width: 700px)">@media screen and (min-width:700px){#sidebar{width:30%;height:100vh;overflow:auto;position:sticky;top:0}#content{width:70%;max-width:100ch;padding:3em 4em;border-left:1px solid #ddd}pre code{font-size:1em}.name{font-size:1em}main{display:flex;flex-direction:row-reverse;justify-content:flex-end}.toc ul ul,#index ul ul{padding-left:1em}.toc > ul > li{margin-top:.5em}}</style> | ||
<style media="print">@media print{#sidebar h1{page-break-before:always}.source{display:none}}@media print{*{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a[href]:after{content:" (" attr(href) ")";font-size:90%}a[href][title]:after{content:none}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:0.5cm}p,h2,h3{orphans:3;widows:3}h1,h2,h3,h4,h5,h6{page-break-after:avoid}}</style> | ||
<script defer src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js" integrity="sha512-D9gUyxqja7hBtkWpPWGt9wfbfaMGVt9gnyCvYa+jojwwPHLCzUm5i8rpk7vD7wNee9bA35eYIjobYPaQuKS1MQ==" crossorigin></script> | ||
<script>window.addEventListener('DOMContentLoaded', () => { | ||
hljs.configure({languages: ['bash', 'css', 'diff', 'graphql', 'ini', 'javascript', 'json', 'plaintext', 'python', 'python-repl', 'rust', 'shell', 'sql', 'typescript', 'xml', 'yaml']}); | ||
hljs.highlightAll(); | ||
})</script> | ||
</head> | ||
<body> | ||
<main> | ||
<article id="content"> | ||
<header> | ||
<h1 class="title">Module <code>bussilab.cli</code></h1> | ||
</header> | ||
<section id="section-intro"> | ||
<h1 id="tools-to-implement-the-command-line-interface">Tools to implement the command line interface</h1> | ||
<p>This module is used internally to implement the command line interface. | ||
In addition, it can be used to run the commands that are available | ||
in the command line interface without the need to leave python:</p> | ||
<pre><code class="language-python">from bussilab.cli import cli | ||
cli("-h") | ||
cli("wham -b bias") # provide the command line as a string | ||
cli(["wham", "-b", "bias"]) # alternatively use a list | ||
</code></pre> | ||
<p>The documentation of all the commands can be found in the | ||
<a href="cli_documentation.html">cli_documentation</a> submodule.</p> | ||
<p>Notice however that these commands typically have alternative python | ||
implementations that allow you to work directly on data structures | ||
and are thus more flexible. | ||
For instance, <code><a title="bussilab.wham.wham" href="wham.html#bussilab.wham.wham">wham()</a>(bias)</code>, where <code>bias</code> is a numpy array, | ||
is often more convenient than <code>bussilab.cli.cli("wham -b bias")</code>, | ||
where <code>bias</code> is a file.</p> | ||
</section> | ||
<section> | ||
</section> | ||
<section> | ||
</section> | ||
<section> | ||
<h2 class="section-title" id="header-functions">Functions</h2> | ||
<dl> | ||
<dt id="bussilab.cli.arg"><code class="name flex"> | ||
<span>def <span class="ident">arg</span></span>(<span>*name, **kwargs)</span> | ||
</code></dt> | ||
<dd> | ||
<div class="desc"><p>Decorator that adds an argument to a command line tool.</p> | ||
<p>Parameters are passed to the <code>parser.add_argument()</code> function. | ||
It should be written <strong>after</strong> the <code><a title="bussilab.cli.command" href="#bussilab.cli.command">command()</a></code> decorator.</p></div> | ||
</dd> | ||
<dt id="bussilab.cli.cli"><code class="name flex"> | ||
<span>def <span class="ident">cli</span></span>(<span>arguments: Union[str, List[str]] = '', *, prog: Optional[str] = '', use_argcomplete: bool = False, throws_on_parser_errors: bool = True) ‑> Optional[int]</span> | ||
</code></dt> | ||
<dd> | ||
<div class="desc"><p>Executes a command line tool from python.</p> | ||
<p>This is the main function of this module and allows to launch all the subcommands available | ||
in the command line interface directly from python.</p> | ||
<h2 id="parameters">Parameters</h2> | ||
<dl> | ||
<dt><strong><code>arguments</code></strong> : <code>str</code> or <code>list</code></dt> | ||
<dd>Command line arguments. If a string is passed, it is first split using | ||
shlex.split()</dd> | ||
<dt><strong><code>prog</code></strong> : <code>str</code></dt> | ||
<dd>Name of the calling program. It is used to build help texts. <strong>Mostly for internal use</strong>.</dd> | ||
<dt><strong><code>use_argcomplete</code></strong> : <code>bool</code></dt> | ||
<dd>If True, the <code>autocomplete</code> function of <code>argcomplete</code> module is called on the parser, | ||
so as to allow autocompletion in the command line tool. | ||
If <code>argcomplete</code> module is not installed, nothing is done and no failure is reported. | ||
<strong>Mostly for internal use</strong>.</dd> | ||
<dt><strong><code>throws_on_parser_errors</code></strong> : <code>bool</code></dt> | ||
<dd>If True, in case of command line error it throws a TypeError | ||
exception. <strong>Mostly for internal use</strong>.</dd> | ||
</dl> | ||
<h2 id="returns">Returns</h2> | ||
<dl> | ||
<dt><code>None</code> or <code>int</code></dt> | ||
<dd>If an error happens while parsing, it throws a TypeError exception, | ||
unless throws_on_parser_errors is set to false, in which ase it | ||
returns the corresponding error code. | ||
If an error happens while executing the requested command, an exception is thrown. | ||
If everything goes well, it returns None.</dd> | ||
</dl></div> | ||
</dd> | ||
<dt id="bussilab.cli.command"><code class="name flex"> | ||
<span>def <span class="ident">command</span></span>(<span>name: str, help: Optional[str] = None, description: Optional[str] = None, **kwargs)</span> | ||
</code></dt> | ||
<dd> | ||
<div class="desc"><p>Decorator that registers a function as a subcommand.</p> | ||
<p>This decorator should be written <strong>before</strong> the other decorators | ||
<code><a title="bussilab.cli.arg" href="#bussilab.cli.arg">arg()</a></code>, <code><a title="bussilab.cli.group" href="#bussilab.cli.group">group()</a></code>, and <code><a title="bussilab.cli.endgroup" href="#bussilab.cli.endgroup">endgroup()</a></code>.</p> | ||
<h2 id="parameters">Parameters</h2> | ||
<dl> | ||
<dt><strong><code>name</code></strong> : <code>str</code></dt> | ||
<dd>Name of the subcommand (will be used on the command line)</dd> | ||
<dt><strong><code>help</code></strong> : <code>str</code></dt> | ||
<dd>Short help message for the subcommand (one line).</dd> | ||
<dt><strong><code>description</code></strong> : <code>str</code>, optional</dt> | ||
<dd>Longer description. If not provided, it is set to a copy of <code>help</code>.</dd> | ||
<dt><strong><code>kwargs</code></strong></dt> | ||
<dd>Other parameters are passed as is to the <code>add_parser</code> function of <code>argparse</code>.</dd> | ||
</dl> | ||
<h2 id="examples">Examples</h2> | ||
<p>Simple command line tool that accepts a single <code>--out</code> argument followed by a string | ||
and call the function <code>do_something</code> with that string as an argument.</p> | ||
<pre><code class="language-python">from bussilab.cli import command, arg | ||
|
||
@command("subcommand") | ||
@arg("--out") | ||
def myfunc(out): | ||
do_something(out) | ||
</code></pre></div> | ||
</dd> | ||
<dt id="bussilab.cli.endgroup"><code class="name flex"> | ||
<span>def <span class="ident">endgroup</span></span>(<span>f: Optional[Callable] = None)</span> | ||
</code></dt> | ||
<dd> | ||
<div class="desc"><p>Decorator that ends a group of arguments for a command line tool.</p> | ||
<p>See <code><a title="bussilab.cli.group" href="#bussilab.cli.group">group()</a></code>.</p></div> | ||
</dd> | ||
<dt id="bussilab.cli.group"><code class="name flex"> | ||
<span>def <span class="ident">group</span></span>(<span>title: Union[str, Callable, ForwardRef(None)] = None, description: Optional[str] = None, exclusive: Optional[bool] = None, required: Optional[bool] = None)</span> | ||
</code></dt> | ||
<dd> | ||
<div class="desc"><p>Decorator that adds a group of arguments for a command line tool.</p> | ||
<p>It should be written <strong>after</strong> the <code><a title="bussilab.cli.command" href="#bussilab.cli.command">command()</a></code> decorator. | ||
It should be followed by a number of <code><a title="bussilab.cli.arg" href="#bussilab.cli.arg">arg()</a></code> decorators and by a closing | ||
<code><a title="bussilab.cli.endgroup" href="#bussilab.cli.endgroup">endgroup()</a></code> decorator.</p> | ||
<h2 id="parameters">Parameters</h2> | ||
<dl> | ||
<dt><strong><code>title</code></strong> : <code>str</code></dt> | ||
<dd>The name of the group. Can only be used for non exclusive groups.</dd> | ||
<dt><strong><code>description</code></strong> : <code>str</code></dt> | ||
<dd>A description of the group. Can only be used for non exclusive groups.</dd> | ||
<dt><strong><code>exclusive</code></strong> : <code>bool</code></dt> | ||
<dd>If True, the arguments belonging to this group are mutually exclusive</dd> | ||
<dt><strong><code>required</code></strong> : <code>bool</code></dt> | ||
<dd>If True, one of the arguments at least should be passed. | ||
Can only be used for exclusive groups.</dd> | ||
</dl> | ||
<h2 id="examples">Examples</h2> | ||
<p>This is a simple command line tool that accepts three arguments (<code>-a</code>, <code>-b</code>, or <code>-c</code>), | ||
mutually exclusive. When ran, it will just print booleans showing if these arguments | ||
were passed.</p> | ||
<pre><code class="language-python">from bussilab.cli import command, group, arg, endgroup | ||
|
||
@command("doit") | ||
@group(exclusive=True) | ||
@arg("-a", action='store_true') | ||
@arg("-b", action='store_true') | ||
@arg("-c", action='store_true') | ||
@endgroup | ||
def check(a, b, c): | ||
print(a, b, c) | ||
</code></pre></div> | ||
</dd> | ||
</dl> | ||
</section> | ||
<section> | ||
</section> | ||
</article> | ||
<nav id="sidebar"> | ||
<div class="toc"> | ||
<ul> | ||
<li><a href="#tools-to-implement-the-command-line-interface">Tools to implement the command line interface</a></li> | ||
</ul> | ||
</div> | ||
<ul id="index"> | ||
<li><h3>Super-module</h3> | ||
<ul> | ||
<li><code><a title="bussilab" href="index.html">bussilab</a></code></li> | ||
</ul> | ||
</li> | ||
<li><h3><a href="#header-functions">Functions</a></h3> | ||
<ul class=""> | ||
<li><code><a title="bussilab.cli.arg" href="#bussilab.cli.arg">arg</a></code></li> | ||
<li><code><a title="bussilab.cli.cli" href="#bussilab.cli.cli">cli</a></code></li> | ||
<li><code><a title="bussilab.cli.command" href="#bussilab.cli.command">command</a></code></li> | ||
<li><code><a title="bussilab.cli.endgroup" href="#bussilab.cli.endgroup">endgroup</a></code></li> | ||
<li><code><a title="bussilab.cli.group" href="#bussilab.cli.group">group</a></code></li> | ||
</ul> | ||
</li> | ||
</ul> | ||
</nav> | ||
</main> | ||
<footer id="footer"> | ||
<p>Generated by <a href="https://pdoc3.github.io/pdoc" title="pdoc: Python API documentation generator"><cite>pdoc</cite> 0.11.1</a>.</p> | ||
</footer> | ||
</body> | ||
</html> |
Oops, something went wrong.