0},e}(),Jn=typeof WeakMap!="undefined"?new WeakMap:new Yn,Xn=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ga.getInstance(),n=new La(t,r,this);Jn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Xn.prototype[e]=function(){var t;return(t=Jn.get(this))[e].apply(t,arguments)}});var Aa=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:Xn}(),Zn=Aa;var eo=new x,Ca=$(()=>k(new Zn(e=>{for(let t of e)eo.next(t)}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return Ca.pipe(S(t=>t.observe(e)),g(t=>eo.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var to=new x,Ra=$(()=>k(new IntersectionObserver(e=>{for(let t of e)to.next(t)},{threshold:0}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function sr(e){return Ra.pipe(S(t=>t.observe(e)),g(t=>to.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function ro(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),J())}var cr={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function no(e){return cr[e].checked}function Ke(e,t){cr[e].checked!==t&&cr[e].click()}function Ue(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),V(t.checked))}function ka(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ha(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function oo(){let e=b(window,"keydown").pipe(A(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:no("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),A(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!ka(n,r)}return!0}),pe());return Ha().pipe(g(t=>t?M:e))}function le(){return new URL(location.href)}function ot(e){location.href=e.href}function io(){return new x}function ao(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)ao(e,r)}function _(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)ao(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function so(){return location.hash.substring(1)}function Dr(e){let t=_("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Pa(e){return L(b(window,"hashchange"),e).pipe(l(so),V(so()),A(t=>t.length>0),X(1))}function co(e){return Pa(e).pipe(l(t=>ce(`[id="${t}"]`)),A(t=>typeof t!="undefined"))}function Vr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function fo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function zr(e,t){return e.pipe(g(r=>r?t():M))}function ur(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(fe(()=>M),g(r=>r.status!==200?Ot(()=>new Error(r.statusText)):k(r)))}function We(e,t){return ur(e,t).pipe(g(r=>r.json()),X(1))}function uo(e,t){let r=new DOMParser;return ur(e,t).pipe(g(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),X(1))}function pr(e){let t=_("script",{src:e});return $(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(g(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),R(()=>document.head.removeChild(t)),ge(1))))}function po(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function lo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(po),V(po()))}function mo(){return{width:innerWidth,height:innerHeight}}function ho(){return b(window,"resize",{passive:!0}).pipe(l(mo),V(mo()))}function bo(){return G([lo(),ho()]).pipe(l(([e,t])=>({offset:e,size:t})),X(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(ee("size")),o=G([n,r]).pipe(l(()=>Xe(e)));return G([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(`
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Changelog
+
+Note : Numbers like (#123) point to closed Pull Requests on the fractal repository.
+Unreleased
+
+Package:
+Remove exclude
field, and move packages
field to tool.poetry
section, in pyproject.toml (#771).
+
+
+Testing:
+Improve configuration for coverage GitHub Action step (#772).
+Add persist-credentials: false
to all actions/checkout@v4
GitHub Action steps (#773).
+
+
+
+2.6.1
+
+Package:
+Move to poetry
v2 (#770).
+Require Python<3.13
(#770).
+
+
+Testing:
+Use default Postgres service in GitHub CI (#761).
+
+
+
+2.6.0
+
+Align with new task-collection endpoint in fractal-server
2.10.0 (#760).
+Update versions of pre-commit hooks and add precommit GitHub Action (#757).
+
+2.5.1
+
+2.5.0
+
+Update task-collection commands, to align with fractal-server 2.9.0 (#738).
+Remove (internal) obsolete do_not_separate_logs
argument (#738).
+Add group {add|remove}-user
commands, and deprecate --new-user-ids
argument from group update
(#748).
+Update user whoami --viewer-paths
to call the new dedicated server endpoint (#748).
+Add user set-groups
commands (#753).
+Testing:
+Align with fractal-server 2.9.0 removal of DB_ENGINE
variable (#743).
+
+
+
+2.4.0
+
+WARNING: This release has a breaking change in the project add-dataset
command.
+
+
+Move to from positional zarr_dir
argument to optional --zarr-dir
argument, for project add-dataset
(#736).
+Add support for user-settings project_dir
, introduced in fractal-server 2.8.0 (#736).
+Internal:
+Update effect of include_logs
for task-collection check command (#730).
+
+
+
+2.3.0
+
+WARNING: Starting from this release, Python3.9 is not supported any more.
+
+
+Align with fractal-server
2.7.0 (#712).
+Align with `fractal-server 2.7.1 and drop use of pip extras (#727).
+Remove --new-name
and --new-version
options from task edit
command (#712).
+Rename source
into label
, for task collect-custom
command (#712).
+Do not refer to obsolete task attributes source
or owner
(#712, #717).
+Add --new-ssh-settings-json
option to fractal user edit
(#715).
+Add --ssh-settings-json
option to fractal user register
(#722).
+Add --private
option to task-creating commands (#717).
+Drop task delete
command (#717).
+Handle missing server in fractal version
(#724).
+Testing:
+Run all tests against a single fractal-server
instance (#717).
+Run tests in random module order, based on pytest-randomly
(#717).
+Include Python3.12 in GitHub CI (#717).
+
+
+
+2.2.1
+
+Support new viewer-paths
commands in fractal group
commands (#709).
+Make --new-user-ids
optional fractal group
command (#709).
+Add --viewer-paths
argument in fractal user whoami
(#709).
+
+2.2.0
+
+2.1.0
+
+Align with fractal-server
2.4.0 (#695).
+Add fractal group
command (#695).
+Testing
+Update GitHub actions for upload/download/coverage (#690, #691).
+Switch from SQLite to Postgres in CI (#702).
+
+
+
+2.0.3
+
+Improve workflow import
command (#686).
+
+2.0.2
+
+Improve error handling in task collect-custom
command (#680).
+Documentation
+Bump mkdocstrings[python]
to 0.25.2 (#682).
+
+
+
+2.0.1
+
+Add new command task collect-custom
(#667).
+Update poetry
version for development to 1.8.2.
+Testing:
+Update CI for fractal-server 2.1.0 compatibility (#655).
+Remove obsolete folders from tests/data
(#656).
+
+
+
+2.0.0
+Major version to align with fractal-server
API v2.
+1.4.4
+
+Require user's verification to be specified when editing user's email (#620).
+
+1.4.3
+
+Make fractal-client
a fully synchronous client, by removing all async
/await
(#592).
+Improve handling of AuthenticationError
and ConnectionError
, and handle uncaught Exception
(#587).
+Deprecate environment variable FRACTAL_LOGGING_LEVEL
, remove flag --verbose
and replace it with --debug
, improve debugging of http requests (#597).
+Testing:
+Adapt job_factory
and tests to the presence of new timestamp_created
attributes in fractal-server
(#589).
+Align with fractal-server
1.4.3a2 (#598).
+
+
+Documentation:
+Add info about server/client version compatibility (#591).
+
+
+Dependencies:
+Update python-dotenv to ^0.21.0
(#589).
+Introduce automatic updates of poetry.lock
(#609 and commits to main
).
+
+
+
+1.4.2
+
+Always make new users verified, within user register
command (#580).
+Expose verification-related features in user edit
command (#580).
+Update expected status code of stop-job to 202 (#585).
+Testing:
+Adapt job_factory
to new strict response-validation models in fractal-server
(#580).
+Adapt job_factory
by including the timestamp_created
attribute (#582).
+
+
+
+1.4.1
+We are skipping this patch release, to remain aligned with fractal-server
version.
+1.4.0
+
+Align with fractal-server
1.4.0 (#573).
+Testing:
+Use ubuntu-22 for GitHub CI (commit e1c8bd3da670c24a0ac48b1163cd1c7833746aaf).
+
+
+Development:
+Do not include sqlmodel
dependency explicitly (#577).
+Use poetry 1.7.1 (#577).
+
+
+
+1.3.7
+This release is up-to-date with fractal-server
1.3.12.
+
+Remove project new --dataset
argument (#566).
+Add project new --make-read-only
argument (#566).
+Do not use deprecated fractal-server deployment_type
variable (#566).
+Align tests with fractal-server
1.3.12, which deprecates the legacy history version (#569).
+Automate procedure for publishing package to PyPI (#561).
+
+1.3.6
+
+Main features:
+Remove client-side validation of API request/response bodies (#551).
+Make error messages more readable for request-body validation errors (#551).
+Include --batch
option for workflow apply command (commit 06c7ff0e92602f08a98097d3597a8ce39c6ae1a8).
+Revamp config.py
, making Settings
a standard Python class (#559).
+
+
+Package and repository:
+Rename repository from fractal
to fractal-client
.
+Change package name from fractal
to fractal-client
(#555).
+Remove fractal-common
submodule (#551).
+Remove pydantic
dependency (#559).
+
+
+Tests:
+Review tests: make them stateless, improve handling of cache, remove obsolete fixtures (#559).
+
+
+
+1.3.5
+
+Implement more robust sorting of versions (e.g. in the presence of pre-releases), via packaging.version
(#550).
+
+1.3.4
+
+Add new commands dataset status
and dataset history
(#544).
+Align with fractal-server/fractal-common new TaskUpdate
model, that accepts version=None
(#540).
+Align with fractal-server/fractal-common new attributes in the Task model (#534).
+Align with fractal-common new ApplyWorkflowRead
model, with optional workflow_dump
(#547).
+Move documentation from sphinx to mkdocs (#532).
+
+1.3.3
+
+Support workflow apply --start/--end
arguments for submitting a workflow subset (#527).
+Exclude common/tests
and other files from build (#523).
+Remove obsolete folders from tests/data
(#526).
+
+1.3.2
+
+Fix wrong build in 1.3.1 (include missing fractal.common
submodule).
+
+1.3.1
+WARNING: wrong build, do not use
+
+Pin Pydantic to V1 (#520).
+
+1.3.0
+
+Align with fractal-server 1.3.0 , by updating all relevant endpoint path/query/body parameters (#479).
+Add fractal job stop
command (#485).
+Add fractal task delete
command (#510).
+Add task ID/name/version disambiguation to task edit
and workflow add-task
(#499).
+Specific changes to existing commands:
+Make project_id
a required positional argument of fractal {workflow,dataset,job}
commands (#479).
+For edit
commands, always prepend the new arguments with new
, e.g. as in task edit ... --new-version
(#498).
+Add --type
optional argument to fractal dataset new
command (#479).
+For fractal workflow apply
:
+Transform project_id
from option to positional argument (#479).
+Make output_dataset_id
a required positional argument (#483).
+
+
+Add --username/--new-username
to fractal user
subcommands (#493).
+Remove --private
option for fractal task collect
(#493).
+Add --version
to fractal task {new,edit}
subcommands (#493).
+Split task-id-or-name
argument of task edit
and workflow add-task
into two arguments (#504).
+Add --pinned-dependency
argument to task collect
(#508).
+Add --args-schema
and --args-schema-version
arguments to task new
command (#511).
+Add --new-args-schema
and --new-args-schema-version
arguments to task edit
command (#511).
+Raise warning when importing/exporting workflows with custom tasks (#513).
+
+
+Package and repository:
+Fix a bug in tests, by starting the fractal-server FastAPI app in a more standard way (#481).
+Require pydantic version to be >=1.10.8
(#486, #490).
+Make sqlmodel
a development depedency (#493).
+Improve handling of a ConnectError
in the CI (#502).
+Remove arbitrary kwargs
from internal functions (#503).
+Align with latest fractal-server version and update tests (#517).
+
+
+
+1.2.0
+
+1.1.0
+
+Align with fractal-server 1.1.0 (#446).
+Improve validation of API request payloads (#447).
+Drop support for python 3.8 (#438).
+Update _TaskBase
schema from fractal-common
(#431).
+Update DatasetUpdate
schema (#461).
+Update fractal task edit
command (#439 and #461).
+Add fractal project edit
command (#465).
+Improve task-collection log formatting (#443).
+Disable argparse
abbreviation for CLI commands (#441).
+
+1.0.5
+
+Minor updates to fractal workflow export
(#429).
+
+1.0.4
+
+Add fractal workflow {import,export}
commands (#426).
+Remove --project-id
argument from fractal workflow edit
commands (#426).
+
+1.0.3
+
+Add fractal task new
command (#421).
+Remove obsolete -j/--json
argument from fractal
command (#421).
+
+1.0.2
+
+Remove obsolete references to SLURM user, either as a CLI argument or an environment variable (#419).
+
+1.0.1
+
+Make FRACTAL_USER/FRACTAL_PASSWORD
env variables optional (#416).
+
+1.0.0
+
+First version in this CHANGELOG.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/development/index.html b/development/index.html
new file mode 100644
index 000000000..a668b080a
--- /dev/null
+++ b/development/index.html
@@ -0,0 +1,761 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Development - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Contribute to Fractal Client development
+The development of Fractal Client takes place on the fractal-client Github
+repository . To
+ask questions or to inform us of a bug or unexpected behavior, please feel free
+to open an issue .
+Set up the development environment
+Clone repository
+First, you should clone the repository
+
git clone https://github.com/fractal-analytics-platform/fractal-client.git
+cd fractal-client
+
+Install package
+We use poetry to manage the development environment and the dependencies. A simple way to install it is pipx install poetry==2.0.0
, or you can look at the installation section here .
+Running
+
poetry install [--with dev] [--with docs]
+
+will take care of installing all the dependencies in a separate environment, optionally installing also the dependencies for developement and to build the documentation.
+Build and release
+We also use poetry
to build the package and publish it to PyPI.
+Preliminary check-list:
+
+The main
branch is checked out.
+You reviewed dependencies, and the lock file is up to date with pyproject.toml
.
+The current HEAD of the main
branch passes all the tests (note: make sure
+ that you are using poetry run pytest
, and not simply pytest
).
+You updated the CHANGELOG.md
file.
+You updated docs/versions.md
with the constraints for the new version.
+
+Actual release instructions :
+
+
+Use one of the following
+
poetry run bumpver update --tag-num --tag-commit --commit --dry
+poetry run bumpver update --patch --tag-commit --commit --dry
+poetry run bumpver update --minor --tag-commit --commit --dry
+poetry run bumpver update --set-version X.Y.Z --tag-commit --commit --dry
+
+to test updating the version bump.
+
+
+If the previous step looks good, remove --dry
and re-run to actually bump the
+version. This will trigger a dedicated GitHub action to build the new package
+and publish it to PyPI.
+
+
+Run tests
+Unit and integration testing of Fractal Server uses the
+pytest testing framework.
+If you installed the development dependencies, you may run
+the test suite by invoking
+
+from the main directory of the fractal-client
repository. It is sometimes
+useful to specify additional arguments, e.g.
+poetry run pytest -s -vvv --log-cli-level info --full-trace
+
+Tests are also run as part of GitHub Actions Continuous
+Integration
+for the fractal-client
repository.
+Documentation
+The documentations is built with mkdocs, and we bundle a module from
+sphinx-argparse plugin , customized to
+our needs.
+To build the documentation locally, setup a development python environment (e.g. with poetry install --with docs
) and then run one of these commands:
+
poetry run mkdocs serve --config-file mkdocs.yml # serves the docs at http://127.0.0.1:8000
+poetry run mkdocs build --config-file mkdocs.yml # creates a build in the `site` folder
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/doc-requirements.txt b/doc-requirements.txt
new file mode 100644
index 000000000..85a0f775b
--- /dev/null
+++ b/doc-requirements.txt
@@ -0,0 +1,8 @@
+mkdocs==1.5.2
+mkdocs-material==9.1.21
+mkdocs-literate-nav==0.5.0
+mkdocs-autorefs==0.5.0
+mkdocs-gen-files==0.4.0
+mkdocs-section-index==0.3.5
+mkdocstrings[python]==0.25.2
+mkdocs-include-markdown-plugin==4.0.4
diff --git a/extra.css b/extra.css
new file mode 100644
index 000000000..8a94704c0
--- /dev/null
+++ b/extra.css
@@ -0,0 +1,17 @@
+/* Custom style for blockquotes */
+blockquote {
+ background-color: #e7e3e3d8; /* Light gray background */
+ border: 1px solid #000000; /* Black border */
+ padding: 10px;
+ margin: 20px 0;
+ border-radius: 4px;
+ font-size: 16px;
+ line-height: 1.6;
+ box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.1); /* Optional: Add a subtle shadow */
+}
+
+/* Style the text inside blockquotes */
+blockquote p {
+ margin: 0;
+ color: #333; /* Dark text color */
+}
diff --git a/gen_ref_pages.py b/gen_ref_pages.py
new file mode 100644
index 000000000..067edb714
--- /dev/null
+++ b/gen_ref_pages.py
@@ -0,0 +1,126 @@
+import sys
+from pathlib import Path
+from textwrap import fill
+from typing import Any
+
+import mkdocs_gen_files # type: ignore[import]
+from mkdocs_gen_files import Nav
+
+sys.path.append(Path(__file__).parent.as_posix()) # noqa: E402
+from parser import parse_parser # noqa: E402
+
+sys.path.append(Path(__file__).parents[1].as_posix()) # noqa: E402
+from fractal_client.parser import parser_main # noqa
+
+
+def to_markdown(
+ data: dict[str, Any],
+ level: int,
+ parent_cmd: str | None = None,
+) -> str:
+ """
+ Given a `data` object with keys `name`, `description` and `usage`, produce
+ a markdown string.
+ """
+
+ # Create MarkDown string for title
+ name = data["name"]
+ if parent_cmd:
+ title_str = "#" * (level + 2) + f" {parent_cmd} {name}\n"
+ else:
+ title_str = "#" * (level + 1) + f" {name}\n"
+
+ # Create MarkDown string for description
+ description = data["description"]
+ description_str = f"{description}\n"
+
+ # Create MarkDown string for usage code block
+ usage = data["bare_usage"].replace(Path(__file__).name, "fractal")
+ while " " in usage:
+ usage = usage.replace(" ", " ")
+ usage = fill(
+ usage,
+ width=80,
+ initial_indent="",
+ subsequent_indent=(" " * 8),
+ break_on_hyphens=False,
+ )
+ usage_str = f"```\n{usage}\n```\n"
+
+ # Create MarkDown string for action groups
+ action_groups_strings = []
+ if "action_groups" in data.keys():
+ for group in data["action_groups"]:
+ title = group["title"]
+
+ if title == "Commands":
+ continue
+ elif title == "Valid sub-commands":
+ action_groups_strings.append(
+ "#" * (level + 2) + " Sub-commands"
+ )
+ elif title in [
+ "Named Arguments",
+ "Positional Arguments",
+ ]:
+ options = group["options"]
+ action_groups_strings.append("#" * (level + 3) + f" {title}\n")
+ for opt in options:
+ opt_name = ",".join(opt["name"])
+ opt_help = opt["help"]
+ default = str(opt["default"])
+ if (default == "None") or ("==SUPPRESS==" in default):
+ default = ""
+ else:
+ default = f" *Default*: `{default}`."
+ action_groups_strings.append(
+ f"- **`{opt_name}`**: {opt_help}{default}\n"
+ )
+ else:
+ raise NotImplementedError(title)
+
+ action_groups_str = "\n".join(action_groups_strings)
+
+ # Combine strings together
+ md_string = (
+ "\n".join(
+ (
+ title_str,
+ description_str,
+ usage_str,
+ action_groups_str,
+ )
+ )
+ + "\n"
+ )
+
+ return md_string
+
+
+nav = Nav()
+
+# Parse main parser
+main = parse_parser(parser_main)
+
+# Parser level 0
+nav[["fractal"]] = "fractal/index.md"
+main["name"] = "fractal"
+with mkdocs_gen_files.open("reference/fractal/index.md", "w") as f:
+ f.write(to_markdown(main, level=0))
+
+# Parser levels 1 and 2 (commands and subcommands)
+for child in main["children"]:
+ # Level 1
+ name = child["name"]
+
+ nav[["fractal", name]] = f"fractal/{name}/index.md"
+ with mkdocs_gen_files.open(f"reference/fractal/{name}/index.md", "w") as f:
+ f.write(to_markdown(child, level=0))
+ if "children" not in child.keys():
+ continue
+ # Level 2
+ for grandchild in child["children"]:
+ f.write(to_markdown(grandchild, level=1, parent_cmd=name))
+
+with mkdocs_gen_files.open("reference/SUMMARY.md", "w") as nav_file:
+ nav_file.writelines(nav.build_literate_nav())
diff --git a/index.html b/index.html
new file mode 100644
index 000000000..1514bbd3c
--- /dev/null
+++ b/index.html
@@ -0,0 +1,629 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Welcome to Fractal Command-line Client's documentation!
+
+
+
+
+Fractal is a framework developed at the BioVisionCenter to process bioimaging data at scale in the OME-Zarr format and prepare the images for interactive visualization.
+
+This project is under active development 🔨. If you need help or found a bug, open an issue here .
+
+This documentation concerns the Fractal Command-line Client . Find more information about Fractal in general and the other repositories at the Fractal home page .
+Licence and Copyright
+Fractal was conceived in the Liberali Lab at the Friedrich Miescher Institute for Biomedical Research and in the Pelkmans Lab at the University of Zurich by @jluethi and @gusqgm . The Fractal project is now developed at the BioVisionCenter at the University of Zurich and the project lead is with @jluethi . The core development is done under contract by eXact lab S.r.l. .
+Unless otherwise specified, Fractal components are released under the BSD 3-Clause License, and copyright is with the BioVisionCenter at the University of Zurich.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/install/index.html b/install/index.html
new file mode 100644
index 000000000..5dbe1b594
--- /dev/null
+++ b/install/index.html
@@ -0,0 +1,714 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Install - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Installation and usage
+Installation
+Fractal Client is hosted on the PyPI
+index , and it can be installed with
+pip
via
+
pip install fractal-client
+
+Usage
+You may invoke the Fractal Client via the custom command fractal
, from the
+command line (see its documentation here ).
+You must set the FRACTAL_SERVER
variable, which is a fully qualified URL to
+the Fractal server installation (e.g. http://localhost:8000 ). This can be an
+environment variable or it can be stored in a an environment file
+.fractal.env
as in
+
FRACTAL_SERVER=http://localhost:8010
+
+Credentials
+Most fractal
commands are restricted to authenticated users, and user
+credentials can be specified in multiple ways:
+* Set FRACTAL_USER
and FRACTAL_PASSWORD
variables as environment variables;
+* Add FRACTAL_USER
and FRACTAL_PASSWORD
variables in .fractal.env
;
+* Explicitly provide --user
and --password
arguments for fractal
commands, see here .
+Cache
+By default, fractal
caches some information (namely a valid token for the
+current session on fractal-server
and a list of tasks) in ~/.cache/fractal
.
+This destination can be customized by setting the FRACTAL_CACHE_PATH
+variables.
+Full example
+Here is an example of a valid .fractal.env
file:
+
FRACTAL_USER=user@something.com
+FRACTAL_PASSWORD=myuser
+FRACTAL_SERVER=http://localhost:8010
+FRACTAL_CACHE_PATH=/some/path/fractal-cache
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/overrides/404.html b/overrides/404.html
new file mode 100644
index 000000000..03caa9b52
--- /dev/null
+++ b/overrides/404.html
@@ -0,0 +1,8 @@
+
+{% block content %}
+ 404 - Not found
+{% endblock %}
diff --git a/parser.py b/parser.py
new file mode 100644
index 000000000..ba14527af
--- /dev/null
+++ b/parser.py
@@ -0,0 +1,214 @@
+"""
+The current `parser.py` module belongs to the sphinx-argparse
+(https://github.com/ashb/sphinx-argparse, v0.4.0).
+Original Copyright 2023 Ash Berlin-Taylor
+License: MIT
+
+The first version of the same module is from sphinx-argparse
+(https://github.com/alex-rudakov/sphinx-argparse).
+Original Copyright 2013 Aleksandr Rudakov
+License: MIT
+"""
+import re
+from argparse import _HelpAction
+from argparse import _StoreConstAction
+from argparse import _SubParsersAction
+
+
+class NavigationException(Exception): # noqa: N818
+ pass
+
+
+def parser_navigate(parser_result, path, current_path=None):
+ if isinstance(path, str):
+ if path == "":
+ return parser_result
+ path = re.split(r"\s+", path)
+ current_path = current_path or []
+ if len(path) == 0:
+ return parser_result
+ if "children" not in parser_result:
+ raise NavigationException(
+ "Current parser has no child elements. "
+ f"(path: {' '.join(current_path)})"
+ )
+ next_hop = path.pop(0)
+ for child in parser_result["children"]:
+ # identifer is only used for aliased subcommands
+ identifier = (
+ child["identifier"] if "identifier" in child else child["name"]
+ )
+ if identifier == next_hop:
+ current_path.append(next_hop)
+ return parser_navigate(child, path, current_path)
+ raise NavigationException(
+ f"Current parser has no child element with name: {next_hop} "
+ f"(path: {' '.join(current_path)})"
+ )
+
+
+def _try_add_parser_attribute(data, parser, attribname):
+ attribval = getattr(parser, attribname, None)
+ if attribval is None:
+ return
+ if not isinstance(attribval, str):
+ return
+ if len(attribval) > 0:
+ data[attribname] = attribval
+
+
+def _format_usage_without_prefix(parser):
+ """
+ Use private argparse APIs to get the usage string without
+ the 'usage: ' prefix.
+ """
+ fmt = parser._get_formatter()
+ fmt.add_usage(
+ parser.usage,
+ parser._actions,
+ parser._mutually_exclusive_groups,
+ prefix="",
+ )
+ return fmt.format_help().strip()
+
+
+def parse_parser(parser, data=None, **kwargs):
+ if data is None:
+ data = {
+ "name": "",
+ "usage": parser.format_usage().strip(),
+ "bare_usage": _format_usage_without_prefix(parser),
+ "prog": parser.prog,
+ }
+ _try_add_parser_attribute(data, parser, "description")
+ _try_add_parser_attribute(data, parser, "epilog")
+ for action in parser._get_positional_actions():
+ if not isinstance(action, _SubParsersAction):
+ continue
+ helps = {}
+ for item in action._choices_actions:
+ helps[item.dest] = item.help
+
+ # commands which share an existing parser are an alias,
+ # don't duplicate docs
+ subsection_alias = {}
+ subsection_alias_names = set()
+ for name, subaction in action._name_parser_map.items():
+ if subaction not in subsection_alias:
+ subsection_alias[subaction] = []
+ else:
+ subsection_alias[subaction].append(name)
+ subsection_alias_names.add(name)
+
+ for name, subaction in action._name_parser_map.items():
+ if name in subsection_alias_names:
+ continue
+ subalias = subsection_alias[subaction]
+ subaction.prog = f"{parser.prog} {name}"
+ subdata = {
+ "name": name
+ if not subalias
+ else f"{name} ({', '.join(subalias)})",
+ "help": helps.get(name, ""),
+ "usage": subaction.format_usage().strip(),
+ "bare_usage": _format_usage_without_prefix(subaction),
+ }
+ if subalias:
+ subdata["identifier"] = name
+ parse_parser(subaction, subdata, **kwargs)
+ data.setdefault("children", []).append(subdata)
+
+ show_defaults = True
+ if kwargs.get("skip_default_values", False) is True:
+ show_defaults = False
+ show_defaults_const = show_defaults
+ if kwargs.get("skip_default_const_values", False) is True:
+ show_defaults_const = False
+
+ # argparse stores the different groups as a list in parser._action_groups
+ # the first element of the list holds the positional arguments, the
+ # second the option arguments not in groups, and subsequent elements
+ # argument groups with positional and optional parameters
+ action_groups = []
+ for action_group in parser._action_groups:
+ options_list = []
+ for action in action_group._group_actions:
+ if isinstance(action, _HelpAction):
+ continue
+
+ # Quote default values for string/None types
+ default = action.default
+ if (
+ action.default not in ["", None, True, False]
+ and action.type in [None, str]
+ and isinstance(action.default, str)
+ ):
+ default = f'"{default}"'
+
+ # fill in any formatters, like %(default)s
+ format_dict = dict(
+ vars(action), prog=data.get("prog", ""), default=default
+ )
+ format_dict["default"] = default
+ help_str = action.help or "" # Ensure we don't print None
+ try:
+ help_str = help_str % format_dict
+ except Exception: # nosec
+ pass
+
+ # Options have the option_strings set, positional arguments don't
+ name = action.option_strings
+ if name == []:
+ if action.metavar is None:
+ name = [action.dest]
+ else:
+ name = [action.metavar]
+ # Skip lines for subcommands
+ if name == ["==SUPPRESS=="]:
+ continue
+
+ if isinstance(action, _StoreConstAction):
+ option = {
+ "name": name,
+ "default": default
+ if show_defaults_const
+ else "==SUPPRESS==",
+ "help": help_str,
+ }
+ else:
+ option = {
+ "name": name,
+ "default": default if show_defaults else "==SUPPRESS==",
+ "help": help_str,
+ }
+ if action.choices:
+ option["choices"] = action.choices
+ if "==SUPPRESS==" not in option["help"]:
+ options_list.append(option)
+
+ if len(options_list) == 0:
+ continue
+
+ # Upper case "Positional Arguments" and "Optional Arguments" titles
+ # Since python-3.10 'optional arguments' changed to 'options'
+ # more info: https://github.com/python/cpython/pull/23858
+ if (
+ action_group.title == "optional arguments"
+ or action_group.title == "options"
+ ):
+ action_group.title = "Named Arguments"
+ if action_group.title == "positional arguments":
+ action_group.title = "Positional Arguments"
+
+ group = {
+ "title": action_group.title,
+ "description": action_group.description,
+ "options": options_list,
+ }
+
+ action_groups.append(group)
+
+ if len(action_groups) > 0:
+ data["action_groups"] = action_groups
+
+ return data
diff --git a/reference/SUMMARY/index.html b/reference/SUMMARY/index.html
new file mode 100644
index 000000000..113d08720
--- /dev/null
+++ b/reference/SUMMARY/index.html
@@ -0,0 +1,557 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SUMMARY - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SUMMARY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reference/fractal/dataset/index.html b/reference/fractal/dataset/index.html
new file mode 100644
index 000000000..84aadc16a
--- /dev/null
+++ b/reference/fractal/dataset/index.html
@@ -0,0 +1,719 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Dataset - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+dataset
+Dataset commands.
+fractal dataset [-h] {edit,show,delete} ...
+
+Sub-commands
+dataset edit
+Edit dataset.
+fractal dataset edit [-h] [--new-name NEW_NAME] [--filters FILTERS] project_id
+ dataset_id
+
+Positional Arguments
+
+
+project_id
: Project ID.
+
+
+dataset_id
: Dataset ID.
+
+
+Named Arguments
+
+dataset show
+Show dataset.
+fractal dataset show [-h] project_id dataset_id
+
+Positional Arguments
+
+
+project_id
: Project ID.
+
+
+dataset_id
: Dataset ID.
+
+
+dataset delete
+Delete dataset.
+fractal dataset delete [-h] project_id dataset_id
+
+Positional Arguments
+
+
+project_id
: Project ID.
+
+
+dataset_id
: Dataset ID.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reference/fractal/group/index.html b/reference/fractal/group/index.html
new file mode 100644
index 000000000..747b9659d
--- /dev/null
+++ b/reference/fractal/group/index.html
@@ -0,0 +1,779 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Group - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+group
+UserGroup commands.
+fractal group [-h] {list,get,new,update,add-user,remove-user} ...
+
+Sub-commands
+group list
+Get all groups.
+fractal group list [-h] [--user-ids]
+
+Named Arguments
+
+--user-ids
: Also return the user_ids
lists together with the groups Default : False
.
+
+group get
+Get single group.
+fractal group get [-h] group_id
+
+Positional Arguments
+
+group_id
: ID of the group to get.
+
+group new
+Create new group.
+fractal group new [-h] [--viewer-paths VIEWER_PATHS [VIEWER_PATHS ...]] name
+
+Positional Arguments
+
+name
: Name of the new group.
+
+Named Arguments
+
+--viewer-paths
: ("List of group's viewer_paths
(e.g --viewer-paths /something /else
)",)
+
+group update
+Update single group.
+fractal group update [-h] --new-viewer-paths NEW_VIEWER_PATHS [NEW_VIEWER_PATHS
+ ...] group_id
+
+Positional Arguments
+
+group_id
: ID of the group to update.
+
+Named Arguments
+
+--new-viewer-paths
: New list of group viewer_paths
(e.g --new-viewer-paths /something /else
); note that this replaces the existing one.
+
+group add-user
+Add a single user to group.
+fractal group add-user [-h] group_id user_id
+
+Positional Arguments
+
+group remove-user
+Remove a single user from group.
+fractal group remove-user [-h] group_id user_id
+
+Positional Arguments
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reference/fractal/index.html b/reference/fractal/index.html
new file mode 100644
index 000000000..91decf2ce
--- /dev/null
+++ b/reference/fractal/index.html
@@ -0,0 +1,590 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CLI reference - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+fractal
+Command-line interface for Fractal Client.
+fractal [-h] [-u USER] [-p PASSWORD] [--debug] [--batch]
+ {project,dataset,task,workflow,job,version,user,group} ...
+
+Named Arguments
+
+
+-u,--user
: User email address for login (overrides configuration file).
+
+
+-p,--password
: User password (overrides configuration file).
+
+
+--debug
: Change minimal logging level from INFO to DEBUG. Default : False
.
+
+
+--batch
: Return output suitable for scripting, e.g., only the ID of items created instead of the full object. Default : False
.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reference/fractal/job/index.html b/reference/fractal/job/index.html
new file mode 100644
index 000000000..d96b0c8a9
--- /dev/null
+++ b/reference/fractal/job/index.html
@@ -0,0 +1,778 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Job - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+job
+Job commands.
+fractal job [-h] {list,show,download-logs,stop,submit} ...
+
+Sub-commands
+job list
+List jobs for given project.
+fractal job list [-h] project_id
+
+Positional Arguments
+
+project_id
: Project ID.
+
+job show
+Query status of workflow-execution job.
+fractal job show [-h] project_id job_id
+
+Positional Arguments
+
+
+project_id
: Project ID.
+
+
+job_id
: Job ID.
+
+
+job download-logs
+Download full folder of workflow-execution job.
+fractal job download-logs [-h] --output OUTPUT_FOLDER project_id job_id
+
+Positional Arguments
+
+
+project_id
: Project ID.
+
+
+job_id
: Job ID.
+
+
+Named Arguments
+
+--output
: Path of the output folder.
+
+job stop
+Stop workflow-execution job.
+fractal job stop [-h] project_id job_id
+
+Positional Arguments
+
+
+project_id
: Project ID.
+
+
+job_id
: Job ID.
+
+
+job submit
+Submit a job.
+fractal job submit [-h] [--start FIRST_TASK_INDEX] [--end LAST_TASK_INDEX] [-w
+ WORKER_INIT] project_id workflow_id dataset_id
+
+Positional Arguments
+
+
+project_id
:
+
+
+workflow_id
:
+
+
+dataset_id
:
+
+
+Named Arguments
+
+
+--start
: Positional index of the first task to be executed (starting from 0).
+
+
+--end
: Positional index of the last task to be executed (starting from 0).
+
+
+-w,--worker-init
: Command to be run before starting a worker.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reference/fractal/project/index.html b/reference/fractal/project/index.html
new file mode 100644
index 000000000..24db82816
--- /dev/null
+++ b/reference/fractal/project/index.html
@@ -0,0 +1,775 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Project - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+project
+Project commands.
+fractal project [-h] {new,list,show,delete,add-dataset,edit} ...
+
+Sub-commands
+project new
+Create new project.
+fractal project new [-h] name
+
+Positional Arguments
+
+name
: Name of new project.
+
+project list
+List projects.
+fractal project list [-h]
+
+project show
+Show details of single project.
+fractal project show [-h] project_id
+
+Positional Arguments
+
+project_id
: ID of project to show.
+
+project delete
+Delete project.
+fractal project delete [-h] project_id
+
+Positional Arguments
+
+project_id
: ID of project to delete.
+
+project add-dataset
+Add dataset to project.
+fractal project add-dataset [-h] [--zarr-dir ZARR_DIR] [--filters FILTERS]
+ project_id dataset_name
+
+Positional Arguments
+
+Named Arguments
+
+project edit
+Edit details of a single project.
+fractal project edit [-h] [--new-name NEW_NAME] project_id
+
+Positional Arguments
+
+project_id
: ID of the project to edit.
+
+Named Arguments
+
+--new-name
: New project name.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reference/fractal/task/index.html b/reference/fractal/task/index.html
new file mode 100644
index 000000000..4ba5653e6
--- /dev/null
+++ b/reference/fractal/task/index.html
@@ -0,0 +1,866 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Task - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+task
+Task commands.
+fractal task [-h] {list,collect,collect-custom,check-collection,new,edit} ...
+
+Sub-commands
+task list
+List tasks.
+
+task collect
+Install and collect all tasks from a pip-installable package.
+fractal task collect [-h] [--python-version PYTHON_VERSION] [--package-version
+ PACKAGE_VERSION] [--package-extras PACKAGE_EXTRAS]
+ [--pinned-dependency PINNED_DEPENDENCY] [--private] package
+
+Positional Arguments
+
+package
: Package name or absolute path to local package.
+
+Named Arguments
+
+
+--python-version
: Select the python version to use for this package.
+
+
+--package-version
: Select the package version.
+
+
+--package-extras
: Comma separated list of extra components for the package to be installed, e.g., collect fractal-tasks-core --package-extras=torch,tensorflow
will trigger the installation of fractal-tasks-core[torch,tensorflow]
.
+
+
+--pinned-dependency
: Package/version pair representing a pinned-version dependency, in the form collect fractal-tasks-core --pinned-dependency pydantic=1.10.0
. Include --pinned-dependency
multiple times to pin several packages to specific versions.
+
+
+--private
: Make task group private. Default : False
.
+
+
+task collect-custom
+Collect all tasks from a custom Python interpreter.
+fractal task collect-custom [-h] [--version VERSION] (--package-name
+ PACKAGE_NAME | --package-root PACKAGE_ROOT) [--private] label
+ python_interpreter manifest
+
+Positional Arguments
+
+
+label
: A common label identifying this package.
+
+
+python_interpreter
: Absolute path to the Python interpreter to be used for running tasks.
+
+
+manifest
: Local path of the Manifest of the Fractal task package.
+
+
+Named Arguments
+
+
+--version
: Version of tasks to be collected.
+
+
+--package-name
: Name of the package, as used in 'import '; this is then used to extract the package directory (package_root) via 'importlib.util.find_spec '.
+
+
+--package-root
: The folder where the package is installed. If not provided, it will be automatically inferred based on 'package_name'.
+
+
+--private
: Make task group private. Default : False
.
+
+
+task check-collection
+Check status of background task collection processes.
+fractal task check-collection [-h] [--include-logs] task_group_activity_id
+
+Positional Arguments
+
+task_group_activity_id
: Activity ID of the collection (see output of task collect
).
+
+Named Arguments
+
+--include-logs
: Also include task-collection logs. Default : False
.
+
+task new
+Create new task.
+fractal task new [-h] [--command-non-parallel COMMAND_NON_PARALLEL]
+ [--command-parallel COMMAND_PARALLEL] [--version VERSION]
+ [--meta-non-parallel META_NON_PARALLEL] [--meta-parallel META_PARALLEL]
+ [--args-schema-non-parallel ARGS_SCHEMA_NON_PARALLEL]
+ [--args-schema-parallel ARGS_SCHEMA_PARALLEL] [--args-schema-version
+ ARGS_SCHEMA_VERSION] [--private] name
+
+Positional Arguments
+
+name
: A human readable name for the task.
+
+Named Arguments
+
+
+--command-non-parallel
: The non parallel command that executes the task.
+
+
+--command-parallel
: The parallel command that executes the task.
+
+
+--version
: Task version.
+
+
+--meta-non-parallel
: Path to JSON file with meta non parallel arguments.
+
+
+--meta-parallel
: Path to JSON file with meta parallel arguments.
+
+
+--args-schema-non-parallel
: Path to JSON file with args non parallel arguments.
+
+
+--args-schema-parallel
: Path to JSON file with arg parallel arguments.
+
+
+--args-schema-version
: Label encoding how the task-arguments JSON Schema was generated (e.g. pydantic_v1
).
+
+
+--private
: Make task group private. Default : False
.
+
+
+task edit
+Edit task.
+fractal task edit [-h] (--id ID | --name NAME) [--version VERSION]
+ [--new-version NEW_VERSION] [--command-non-parallel
+ COMMAND_NON_PARALLEL] [--command-parallel COMMAND_PARALLEL]
+ [--input-types INPUT_TYPES] [--output-types OUTPUT_TYPES]
+
+Named Arguments
+
+
+--id
: ID of the task to edit.
+
+
+--name
: Name of the task to edit.
+
+
+--version
: Version of the task to edit (only accepted in combination with --name
).
+
+
+--new-version
: New task version.
+
+
+--command-non-parallel
: New task non parallel command.
+
+
+--command-parallel
: New task parallel command.
+
+
+--input-types
: Path to JSON file with new input types.
+
+
+--output-types
: Path to JSON file with new output types.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reference/fractal/user/index.html b/reference/fractal/user/index.html
new file mode 100644
index 000000000..458ec5daa
--- /dev/null
+++ b/reference/fractal/user/index.html
@@ -0,0 +1,823 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ User - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+user
+User commands.
+fractal user [-h] {whoami,register,list,show,edit,set-groups} ...
+
+Sub-commands
+user whoami
+Get info on current user (fails if user is not registered).
+fractal user whoami [-h] [--viewer-paths]
+
+Named Arguments
+
+--viewer-paths
: Include user's viewer_paths
attribute. Default : False
.
+
+user register
+Register a new user with the Fractal server and edit their settings (note: user creation and settings editing are two independent steps).
+fractal user register [-h] [--project-dir PROJECT_DIR] [--slurm-user
+ SLURM_USER] [--username USERNAME] [--ssh-settings-json
+ SSH_SETTINGS_JSON] [--superuser] new_email new_password
+
+Positional Arguments
+
+Named Arguments
+
+
+--project-dir
: User-writeable base folder, used e.g. for default zarr_dir
paths.
+
+
+--slurm-user
: Username to login into SLURM cluster.
+
+
+--username
: Username associated to the user.
+
+
+--ssh-settings-json
: Path to JSON file with (a subset of) following settings: ssh_host, ssh_username, ssh_private_key_path, ssh_tasks_dir, ssh_jobs_dir.
+
+
+--superuser
: Give superuser privileges to the new user. Default : False
.
+
+
+user list
+List all users.
+
+user show
+Show details of single user.
+fractal user show [-h] user_id
+
+Positional Arguments
+
+user_id
: ID of the user.
+
+user edit
+Edit an existin user and/or their settings (note: user and settings editing are two independent steps).
+fractal user edit [-h] [--new-email NEW_EMAIL] [--new-password NEW_PASSWORD]
+ [--new-username NEW_USERNAME] [--new-project-dir NEW_PROJECT_DIR]
+ [--new-slurm-user NEW_SLURM_USER] [--new-ssh-settings-json
+ NEW_SSH_SETTINGS_JSON] [--make-superuser | --remove-superuser]
+ [--make-verified | --remove-verified] user_id
+
+Positional Arguments
+
+user_id
: ID of the user.
+
+Named Arguments
+
+
+--new-email
: New email address.
+
+
+--new-password
: New password.
+
+
+--new-username
: New user username.
+
+
+--new-project-dir
: New value of project_dir
.
+
+
+--new-slurm-user
: New SLURM username.
+
+
+--new-ssh-settings-json
: Path to JSON file with (a subset of) following settings: ssh_host, ssh_username, ssh_private_key_path, ssh_tasks_dir, ssh_jobs_dir.
+
+
+--make-superuser
: Give superuser privileges to user. Default : False
.
+
+
+--remove-superuser
: Remove superuser privileges from user. Default : False
.
+
+
+--make-verified
: Make user verified. Default : False
.
+
+
+--remove-verified
: Make user unverified. Default : False
.
+
+
+user set-groups
+Reset user-group membership for an existing user.
+fractal user set-groups [-h] user_id group_ids [group_ids ...]
+
+Positional Arguments
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reference/fractal/version/index.html b/reference/fractal/version/index.html
new file mode 100644
index 000000000..4d34e8da7
--- /dev/null
+++ b/reference/fractal/version/index.html
@@ -0,0 +1,569 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Version - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+version
+Print version and exit.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reference/fractal/workflow/index.html b/reference/fractal/workflow/index.html
new file mode 100644
index 000000000..d757d3b6f
--- /dev/null
+++ b/reference/fractal/workflow/index.html
@@ -0,0 +1,968 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Workflow - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+workflow
+Workflow commands.
+fractal workflow [-h]
+ {list,new,show,edit,delete,add-task,edit-task,rm-task,import,export}
+ ...
+
+Sub-commands
+workflow list
+List workflows for given project.
+fractal workflow list [-h] project_id
+
+Positional Arguments
+
+project_id
: Project ID.
+
+workflow new
+Create new workflow.
+fractal workflow new [-h] name project_id
+
+Positional Arguments
+
+workflow show
+Show workflow.
+fractal workflow show [-h] project_id workflow_id
+
+Positional Arguments
+
+workflow edit
+Edit workflow.
+fractal workflow edit [-h] --new-name NEW_NAME project_id workflow_id
+
+Positional Arguments
+
+Named Arguments
+
+--new-name
: New workflow name.
+
+workflow delete
+Delete workflow.
+fractal workflow delete [-h] project_id workflow_id
+
+Positional Arguments
+
+workflow add-task
+Add new task to specific workflow.
+fractal workflow add-task [-h] (--task-id TASK_ID | --task-name TASK_NAME)
+ [--task-version TASK_VERSION] [--order ORDER] [--args-non-parallel
+ ARGS_NON_PARALLEL] [--args-parallel ARGS_PARALLEL]
+ [--meta-non-parallel META_NON_PARALLEL] [--meta-parallel META_PARALLEL]
+ [--input-filters INPUT_FILTERS] project_id workflow_id
+
+Positional Arguments
+
+Named Arguments
+
+
+--task-id
: ID of the task to add.
+
+
+--task-name
: Name of the task to add.
+
+
+--task-version
: Version of task to add (only accepted in combination with --task-name).
+
+
+--order
: Order of this task within the workflow's task list.
+
+
+--args-non-parallel
: Args for non parallel tasks
+
+
+--args-parallel
: Args for parallel tasks
+
+
+--meta-non-parallel
: Metadata file fornon parallel tasks
+
+
+--meta-parallel
: Metadata file for parallel tasks
+
+
+--input-filters
: Path to json file with filters.
+
+
+workflow edit-task
+Edit task within specific workflow.
+fractal workflow edit-task [-h] [--input-filters INPUT_FILTERS]
+ [--args-non-parallel ARGS_NON_PARALLEL] [--args-parallel ARGS_PARALLEL]
+ [--meta-non-parallel META_NON_PARALLEL] [--meta-parallel META_PARALLEL]
+ project_id workflow_id workflow_task_id
+
+Positional Arguments
+
+
+project_id
: Project ID.
+
+
+workflow_id
: Workflow ID.
+
+
+workflow_task_id
: Workflow task ID, the ID of a task inside the list of tasks.
+
+
+Named Arguments
+
+
+--input-filters
: Path to json serialised file containing the arguments overrides of the task.
+
+
+--args-non-parallel
: Args for non parallel tasks
+
+
+--args-parallel
: Args for parallel tasks
+
+
+--meta-non-parallel
: Metadata file fornon parallel tasks
+
+
+--meta-parallel
: Metadata file for parallel tasks
+
+
+workflow rm-task
+Remove task from a specific workflow.
+fractal workflow rm-task [-h] project_id workflow_id workflow_task_id
+
+Positional Arguments
+
+workflow import
+Import workflow to project from file.
+fractal workflow import [-h] --project-id PROJECT_ID --json-file JSON_FILE
+ [--workflow-name WORKFLOW_NAME]
+
+Named Arguments
+
+
+--project-id
: ID of the project where the workflow will be imported.
+
+
+--json-file
: Path to a JSON file with the workflow to be imported.
+
+
+--workflow-name
: Name of the new workflow (if set, overrides the one in JSON file)
+
+
+workflow export
+Export workflow to file.
+fractal workflow export [-h] --json-file JSON_FILE project_id workflow_id
+
+Positional Arguments
+
+Named Arguments
+
+--json-file
: Path to the JSON file where the workflow will be exported.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/search/search_index.json b/search/search_index.json
new file mode 100644
index 000000000..104d69f45
--- /dev/null
+++ b/search/search_index.json
@@ -0,0 +1 @@
+{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Welcome to Fractal Command-line Client's documentation!","text":"Fractal is a framework developed at the BioVisionCenter to process bioimaging data at scale in the OME-Zarr format and prepare the images for interactive visualization.
This project is under active development \ud83d\udd28. If you need help or found a bug, open an issue here.
This documentation concerns the Fractal Command-line Client. Find more information about Fractal in general and the other repositories at the Fractal home page.
"},{"location":"#licence-and-copyright","title":"Licence and Copyright","text":"Fractal was conceived in the Liberali Lab at the Friedrich Miescher Institute for Biomedical Research and in the Pelkmans Lab at the University of Zurich by @jluethi and @gusqgm. The Fractal project is now developed at the BioVisionCenter at the University of Zurich and the project lead is with @jluethi. The core development is done under contract by eXact lab S.r.l..
Unless otherwise specified, Fractal components are released under the BSD 3-Clause License, and copyright is with the BioVisionCenter at the University of Zurich.
"},{"location":"changelog/","title":"Changelog","text":"Note: Numbers like (#123) point to closed Pull Requests on the fractal repository.
"},{"location":"changelog/#unreleased","title":"Unreleased","text":" Package: Remove exclude
field, and move packages
field to tool.poetry
section, in pyproject.toml (#771). Testing: Improve configuration for coverage GitHub Action step (#772). Add persist-credentials: false
to all actions/checkout@v4
GitHub Action steps (#773). "},{"location":"changelog/#261","title":"2.6.1","text":" Package: Move to poetry
v2 (#770). Require Python<3.13
(#770). Testing: Use default Postgres service in GitHub CI (#761). "},{"location":"changelog/#260","title":"2.6.0","text":" Align with new task-collection endpoint in fractal-server
2.10.0 (#760). Update versions of pre-commit hooks and add precommit GitHub Action (#757). "},{"location":"changelog/#251","title":"2.5.1","text":" Deprecate user cache_dir
, to align with fractal-server 2.9.2 (#758). "},{"location":"changelog/#250","title":"2.5.0","text":" Update task-collection commands, to align with fractal-server 2.9.0 (#738). Remove (internal) obsolete do_not_separate_logs
argument (#738). Add group {add|remove}-user
commands, and deprecate --new-user-ids
argument from group update
(#748). Update user whoami --viewer-paths
to call the new dedicated server endpoint (#748). Add user set-groups
commands (#753). Testing: Align with fractal-server 2.9.0 removal of DB_ENGINE
variable (#743). "},{"location":"changelog/#240","title":"2.4.0","text":"WARNING: This release has a breaking change in the project add-dataset
command.
Move to from positional zarr_dir
argument to optional --zarr-dir
argument, for project add-dataset
(#736). Add support for user-settings project_dir
, introduced in fractal-server 2.8.0 (#736). Internal: Update effect of include_logs
for task-collection check command (#730). "},{"location":"changelog/#230","title":"2.3.0","text":"WARNING: Starting from this release, Python3.9 is not supported any more.
Align with fractal-server
2.7.0 (#712). Align with `fractal-server 2.7.1 and drop use of pip extras (#727). Remove --new-name
and --new-version
options from task edit
command (#712). Rename source
into label
, for task collect-custom
command (#712). Do not refer to obsolete task attributes source
or owner
(#712, #717). Add --new-ssh-settings-json
option to fractal user edit
(#715). Add --ssh-settings-json
option to fractal user register
(#722). Add --private
option to task-creating commands (#717). Drop task delete
command (#717). Handle missing server in fractal version
(#724). Testing: Run all tests against a single fractal-server
instance (#717). Run tests in random module order, based on pytest-randomly
(#717). Include Python3.12 in GitHub CI (#717). "},{"location":"changelog/#221","title":"2.2.1","text":" Support new viewer-paths
commands in fractal group
commands (#709). Make --new-user-ids
optional fractal group
command (#709). Add --viewer-paths
argument in fractal user whoami
(#709). "},{"location":"changelog/#220","title":"2.2.0","text":" Align with fractal-server
2.6.0 (#705). "},{"location":"changelog/#210","title":"2.1.0","text":" Align with fractal-server
2.4.0 (#695). Add fractal group
command (#695). Testing Update GitHub actions for upload/download/coverage (#690, #691). Switch from SQLite to Postgres in CI (#702). "},{"location":"changelog/#203","title":"2.0.3","text":" Improve workflow import
command (#686). "},{"location":"changelog/#202","title":"2.0.2","text":" Improve error handling in task collect-custom
command (#680). Documentation Bump mkdocstrings[python]
to 0.25.2 (#682). "},{"location":"changelog/#201","title":"2.0.1","text":" Add new command task collect-custom
(#667). Update poetry
version for development to 1.8.2. Testing: Update CI for fractal-server 2.1.0 compatibility (#655). Remove obsolete folders from tests/data
(#656). "},{"location":"changelog/#200","title":"2.0.0","text":"Major version to align with fractal-server
API v2.
"},{"location":"changelog/#144","title":"1.4.4","text":" Require user's verification to be specified when editing user's email (#620). "},{"location":"changelog/#143","title":"1.4.3","text":" Make fractal-client
a fully synchronous client, by removing all async
/await
(#592). Improve handling of AuthenticationError
and ConnectionError
, and handle uncaught Exception
(#587). Deprecate environment variable FRACTAL_LOGGING_LEVEL
, remove flag --verbose
and replace it with --debug
, improve debugging of http requests (#597). Testing: Adapt job_factory
and tests to the presence of new timestamp_created
attributes in fractal-server
(#589). Align with fractal-server
1.4.3a2 (#598). Documentation: Add info about server/client version compatibility (#591). Dependencies: Update python-dotenv to ^0.21.0
(#589). Introduce automatic updates of poetry.lock
(#609 and commits to main
). "},{"location":"changelog/#142","title":"1.4.2","text":" Always make new users verified, within user register
command (#580). Expose verification-related features in user edit
command (#580). Update expected status code of stop-job to 202 (#585). Testing: Adapt job_factory
to new strict response-validation models in fractal-server
(#580). Adapt job_factory
by including the timestamp_created
attribute (#582). "},{"location":"changelog/#141","title":"1.4.1","text":"We are skipping this patch release, to remain aligned with fractal-server
version.
"},{"location":"changelog/#140","title":"1.4.0","text":" Align with fractal-server
1.4.0 (#573). Testing: Use ubuntu-22 for GitHub CI (commit e1c8bd3da670c24a0ac48b1163cd1c7833746aaf). Development: Do not include sqlmodel
dependency explicitly (#577). Use poetry 1.7.1 (#577). "},{"location":"changelog/#137","title":"1.3.7","text":"This release is up-to-date with fractal-server
1.3.12.
Remove project new --dataset
argument (#566). Add project new --make-read-only
argument (#566). Do not use deprecated fractal-server deployment_type
variable (#566). Align tests with fractal-server
1.3.12, which deprecates the legacy history version (#569). Automate procedure for publishing package to PyPI (#561). "},{"location":"changelog/#136","title":"1.3.6","text":" Main features: Remove client-side validation of API request/response bodies (#551). Make error messages more readable for request-body validation errors (#551). Include --batch
option for workflow apply command (commit 06c7ff0e92602f08a98097d3597a8ce39c6ae1a8). Revamp config.py
, making Settings
a standard Python class (#559). Package and repository: Rename repository from fractal
to fractal-client
. Change package name from fractal
to fractal-client
(#555). Remove fractal-common
submodule (#551). Remove pydantic
dependency (#559). Tests: Review tests: make them stateless, improve handling of cache, remove obsolete fixtures (#559). "},{"location":"changelog/#135","title":"1.3.5","text":" Implement more robust sorting of versions (e.g. in the presence of pre-releases), via packaging.version
(#550). "},{"location":"changelog/#134","title":"1.3.4","text":" Add new commands dataset status
and dataset history
(#544). Align with fractal-server/fractal-common new TaskUpdate
model, that accepts version=None
(#540). Align with fractal-server/fractal-common new attributes in the Task model (#534). Align with fractal-common new ApplyWorkflowRead
model, with optional workflow_dump
(#547). Move documentation from sphinx to mkdocs (#532). "},{"location":"changelog/#133","title":"1.3.3","text":" Support workflow apply --start/--end
arguments for submitting a workflow subset (#527). Exclude common/tests
and other files from build (#523). Remove obsolete folders from tests/data
(#526). "},{"location":"changelog/#132","title":"1.3.2","text":" Fix wrong build in 1.3.1 (include missing fractal.common
submodule). "},{"location":"changelog/#131","title":"1.3.1","text":"WARNING: wrong build, do not use
Pin Pydantic to V1 (#520). "},{"location":"changelog/#130","title":"1.3.0","text":" Align with fractal-server 1.3.0, by updating all relevant endpoint path/query/body parameters (#479). Add fractal job stop
command (#485). Add fractal task delete
command (#510). Add task ID/name/version disambiguation to task edit
and workflow add-task
(#499). Specific changes to existing commands: Make project_id
a required positional argument of fractal {workflow,dataset,job}
commands (#479). For edit
commands, always prepend the new arguments with new
, e.g. as in task edit ... --new-version
(#498). Add --type
optional argument to fractal dataset new
command (#479). For fractal workflow apply
: Transform project_id
from option to positional argument (#479). Make output_dataset_id
a required positional argument (#483). Add --username/--new-username
to fractal user
subcommands (#493). Remove --private
option for fractal task collect
(#493). Add --version
to fractal task {new,edit}
subcommands (#493). Split task-id-or-name
argument of task edit
and workflow add-task
into two arguments (#504). Add --pinned-dependency
argument to task collect
(#508). Add --args-schema
and --args-schema-version
arguments to task new
command (#511). Add --new-args-schema
and --new-args-schema-version
arguments to task edit
command (#511). Raise warning when importing/exporting workflows with custom tasks (#513). Package and repository: Fix a bug in tests, by starting the fractal-server FastAPI app in a more standard way (#481). Require pydantic version to be >=1.10.8
(#486, #490). Make sqlmodel
a development depedency (#493). Improve handling of a ConnectError
in the CI (#502). Remove arbitrary kwargs
from internal functions (#503). Align with latest fractal-server version and update tests (#517). "},{"location":"changelog/#120","title":"1.2.0","text":" Align with fractal-server 1.2.0 (#472). "},{"location":"changelog/#110","title":"1.1.0","text":" Align with fractal-server 1.1.0 (#446). Improve validation of API request payloads (#447). Drop support for python 3.8 (#438). Update _TaskBase
schema from fractal-common
(#431). Update DatasetUpdate
schema (#461). Update fractal task edit
command (#439 and #461). Add fractal project edit
command (#465). Improve task-collection log formatting (#443). Disable argparse
abbreviation for CLI commands (#441). "},{"location":"changelog/#105","title":"1.0.5","text":" Minor updates to fractal workflow export
(#429). "},{"location":"changelog/#104","title":"1.0.4","text":" Add fractal workflow {import,export}
commands (#426). Remove --project-id
argument from fractal workflow edit
commands (#426). "},{"location":"changelog/#103","title":"1.0.3","text":" Add fractal task new
command (#421). Remove obsolete -j/--json
argument from fractal
command (#421). "},{"location":"changelog/#102","title":"1.0.2","text":" Remove obsolete references to SLURM user, either as a CLI argument or an environment variable (#419). "},{"location":"changelog/#101","title":"1.0.1","text":" Make FRACTAL_USER/FRACTAL_PASSWORD
env variables optional (#416). "},{"location":"changelog/#100","title":"1.0.0","text":" First version in this CHANGELOG. "},{"location":"development/","title":"Contribute to Fractal Client development","text":"The development of Fractal Client takes place on the fractal-client Github repository. To ask questions or to inform us of a bug or unexpected behavior, please feel free to open an issue.
"},{"location":"development/#set-up-the-development-environment","title":"Set up the development environment","text":""},{"location":"development/#clone-repository","title":"Clone repository","text":"First, you should clone the repository
git clone https://github.com/fractal-analytics-platform/fractal-client.git\ncd fractal-client\n
"},{"location":"development/#install-package","title":"Install package","text":"We use poetry to manage the development environment and the dependencies. A simple way to install it is pipx install poetry==2.0.0
, or you can look at the installation section here. Running
poetry install [--with dev] [--with docs]\n
will take care of installing all the dependencies in a separate environment, optionally installing also the dependencies for developement and to build the documentation."},{"location":"development/#build-and-release","title":"Build and release","text":"We also use poetry
to build the package and publish it to PyPI.
Preliminary check-list:
The main
branch is checked out. You reviewed dependencies, and the lock file is up to date with pyproject.toml
. The current HEAD of the main
branch passes all the tests (note: make sure that you are using poetry run pytest
, and not simply pytest
). You updated the CHANGELOG.md
file. You updated docs/versions.md
with the constraints for the new version. Actual release instructions:
Use one of the following
poetry run bumpver update --tag-num --tag-commit --commit --dry\npoetry run bumpver update --patch --tag-commit --commit --dry\npoetry run bumpver update --minor --tag-commit --commit --dry\npoetry run bumpver update --set-version X.Y.Z --tag-commit --commit --dry\n
to test updating the version bump. If the previous step looks good, remove --dry
and re-run to actually bump the version. This will trigger a dedicated GitHub action to build the new package and publish it to PyPI.
"},{"location":"development/#run-tests","title":"Run tests","text":"Unit and integration testing of Fractal Server uses the pytest testing framework.
If you installed the development dependencies, you may run the test suite by invoking
poetry run pytest\n
from the main directory of the fractal-client
repository. It is sometimes useful to specify additional arguments, e.g. poetry run pytest -s -vvv --log-cli-level info --full-trace\n
Tests are also run as part of GitHub Actions Continuous Integration for the fractal-client
repository.
"},{"location":"development/#documentation","title":"Documentation","text":"The documentations is built with mkdocs, and we bundle a module from sphinx-argparse plugin, customized to our needs.
To build the documentation locally, setup a development python environment (e.g. with poetry install --with docs
) and then run one of these commands:
poetry run mkdocs serve --config-file mkdocs.yml # serves the docs at http://127.0.0.1:8000\npoetry run mkdocs build --config-file mkdocs.yml # creates a build in the `site` folder\n
"},{"location":"install/","title":"Installation and usage","text":""},{"location":"install/#installation","title":"Installation","text":"Fractal Client is hosted on the PyPI index, and it can be installed with pip
via
pip install fractal-client\n
"},{"location":"install/#usage","title":"Usage","text":"You may invoke the Fractal Client via the custom command fractal
, from the command line (see its documentation here).
You must set the FRACTAL_SERVER
variable, which is a fully qualified URL to the Fractal server installation (e.g. http://localhost:8000). This can be an environment variable or it can be stored in a an environment file .fractal.env
as in
FRACTAL_SERVER=http://localhost:8010\n
"},{"location":"install/#credentials","title":"Credentials","text":"Most fractal
commands are restricted to authenticated users, and user credentials can be specified in multiple ways: * Set FRACTAL_USER
and FRACTAL_PASSWORD
variables as environment variables; * Add FRACTAL_USER
and FRACTAL_PASSWORD
variables in .fractal.env
; * Explicitly provide --user
and --password
arguments for fractal
commands, see here.
"},{"location":"install/#cache","title":"Cache","text":"By default, fractal
caches some information (namely a valid token for the current session on fractal-server
and a list of tasks) in ~/.cache/fractal
. This destination can be customized by setting the FRACTAL_CACHE_PATH
variables.
"},{"location":"install/#full-example","title":"Full example","text":"Here is an example of a valid .fractal.env
file:
FRACTAL_USER=user@something.com\nFRACTAL_PASSWORD=myuser\nFRACTAL_SERVER=http://localhost:8010\nFRACTAL_CACHE_PATH=/some/path/fractal-cache\n
"},{"location":"versions/","title":"Version Compatibility","text":"During the current development phase, the latest stable releases of fractal-server
and fractal-client
are always considered as compatible.
The following table shows some additional compatibility constraints for each fractal-client
version, which may be useful for working with a fractal-server
instance which is not fully up-to-date.
WARNING: This table only shows the fractal-server
-version lower bounds for each fractal-client
version, but not the corresponding upper bounds.
fractal-client fractal-server 2.0.0 >=2.0.0 1.4.3 >=1.4.2 1.4.2 >=1.4.2 1.4.1 >=1.4.0 1.4.0 >=1.4.0"},{"location":"reference/SUMMARY/","title":"SUMMARY","text":" fractal project dataset task workflow job version user group "},{"location":"reference/fractal/","title":"fractal","text":"Command-line interface for Fractal Client.
fractal [-h] [-u USER] [-p PASSWORD] [--debug] [--batch]\n {project,dataset,task,workflow,job,version,user,group} ...\n
"},{"location":"reference/fractal/#named-arguments","title":"Named Arguments","text":" -u,--user
: User email address for login (overrides configuration file).
-p,--password
: User password (overrides configuration file).
--debug
: Change minimal logging level from INFO to DEBUG. Default: False
.
--batch
: Return output suitable for scripting, e.g., only the ID of items created instead of the full object. Default: False
.
"},{"location":"reference/fractal/dataset/","title":"dataset","text":"Dataset commands.
fractal dataset [-h] {edit,show,delete} ...\n
"},{"location":"reference/fractal/dataset/#sub-commands","title":"Sub-commands","text":""},{"location":"reference/fractal/dataset/#dataset-edit","title":"dataset edit","text":"Edit dataset.
fractal dataset edit [-h] [--new-name NEW_NAME] [--filters FILTERS] project_id\n dataset_id\n
"},{"location":"reference/fractal/dataset/#positional-arguments","title":"Positional Arguments","text":" project_id
: Project ID.
dataset_id
: Dataset ID.
"},{"location":"reference/fractal/dataset/#named-arguments","title":"Named Arguments","text":""},{"location":"reference/fractal/dataset/#dataset-show","title":"dataset show","text":"Show dataset.
fractal dataset show [-h] project_id dataset_id\n
"},{"location":"reference/fractal/dataset/#positional-arguments_1","title":"Positional Arguments","text":" project_id
: Project ID.
dataset_id
: Dataset ID.
"},{"location":"reference/fractal/dataset/#dataset-delete","title":"dataset delete","text":"Delete dataset.
fractal dataset delete [-h] project_id dataset_id\n
"},{"location":"reference/fractal/dataset/#positional-arguments_2","title":"Positional Arguments","text":" project_id
: Project ID.
dataset_id
: Dataset ID.
"},{"location":"reference/fractal/group/","title":"group","text":"UserGroup commands.
fractal group [-h] {list,get,new,update,add-user,remove-user} ...\n
"},{"location":"reference/fractal/group/#sub-commands","title":"Sub-commands","text":""},{"location":"reference/fractal/group/#group-list","title":"group list","text":"Get all groups.
fractal group list [-h] [--user-ids]\n
"},{"location":"reference/fractal/group/#named-arguments","title":"Named Arguments","text":" --user-ids
: Also return the user_ids
lists together with the groups Default: False
. "},{"location":"reference/fractal/group/#group-get","title":"group get","text":"Get single group.
fractal group get [-h] group_id\n
"},{"location":"reference/fractal/group/#positional-arguments","title":"Positional Arguments","text":" group_id
: ID of the group to get. "},{"location":"reference/fractal/group/#group-new","title":"group new","text":"Create new group.
fractal group new [-h] [--viewer-paths VIEWER_PATHS [VIEWER_PATHS ...]] name\n
"},{"location":"reference/fractal/group/#positional-arguments_1","title":"Positional Arguments","text":" name
: Name of the new group. "},{"location":"reference/fractal/group/#named-arguments_1","title":"Named Arguments","text":" --viewer-paths
: (\"List of group's viewer_paths
(e.g --viewer-paths /something /else
)\",) "},{"location":"reference/fractal/group/#group-update","title":"group update","text":"Update single group.
fractal group update [-h] --new-viewer-paths NEW_VIEWER_PATHS [NEW_VIEWER_PATHS\n ...] group_id\n
"},{"location":"reference/fractal/group/#positional-arguments_2","title":"Positional Arguments","text":" group_id
: ID of the group to update. "},{"location":"reference/fractal/group/#named-arguments_2","title":"Named Arguments","text":" --new-viewer-paths
: New list of group viewer_paths
(e.g --new-viewer-paths /something /else
); note that this replaces the existing one. "},{"location":"reference/fractal/group/#group-add-user","title":"group add-user","text":"Add a single user to group.
fractal group add-user [-h] group_id user_id\n
"},{"location":"reference/fractal/group/#positional-arguments_3","title":"Positional Arguments","text":""},{"location":"reference/fractal/group/#group-remove-user","title":"group remove-user","text":"Remove a single user from group.
fractal group remove-user [-h] group_id user_id\n
"},{"location":"reference/fractal/group/#positional-arguments_4","title":"Positional Arguments","text":""},{"location":"reference/fractal/job/","title":"job","text":"Job commands.
fractal job [-h] {list,show,download-logs,stop,submit} ...\n
"},{"location":"reference/fractal/job/#sub-commands","title":"Sub-commands","text":""},{"location":"reference/fractal/job/#job-list","title":"job list","text":"List jobs for given project.
fractal job list [-h] project_id\n
"},{"location":"reference/fractal/job/#positional-arguments","title":"Positional Arguments","text":""},{"location":"reference/fractal/job/#job-show","title":"job show","text":"Query status of workflow-execution job.
fractal job show [-h] project_id job_id\n
"},{"location":"reference/fractal/job/#positional-arguments_1","title":"Positional Arguments","text":" project_id
: Project ID.
job_id
: Job ID.
"},{"location":"reference/fractal/job/#job-download-logs","title":"job download-logs","text":"Download full folder of workflow-execution job.
fractal job download-logs [-h] --output OUTPUT_FOLDER project_id job_id\n
"},{"location":"reference/fractal/job/#positional-arguments_2","title":"Positional Arguments","text":" project_id
: Project ID.
job_id
: Job ID.
"},{"location":"reference/fractal/job/#named-arguments","title":"Named Arguments","text":" --output
: Path of the output folder. "},{"location":"reference/fractal/job/#job-stop","title":"job stop","text":"Stop workflow-execution job.
fractal job stop [-h] project_id job_id\n
"},{"location":"reference/fractal/job/#positional-arguments_3","title":"Positional Arguments","text":" project_id
: Project ID.
job_id
: Job ID.
"},{"location":"reference/fractal/job/#job-submit","title":"job submit","text":"Submit a job.
fractal job submit [-h] [--start FIRST_TASK_INDEX] [--end LAST_TASK_INDEX] [-w\n WORKER_INIT] project_id workflow_id dataset_id\n
"},{"location":"reference/fractal/job/#positional-arguments_4","title":"Positional Arguments","text":" project_id
:
workflow_id
:
dataset_id
:
"},{"location":"reference/fractal/job/#named-arguments_1","title":"Named Arguments","text":" --start
: Positional index of the first task to be executed (starting from 0).
--end
: Positional index of the last task to be executed (starting from 0).
-w,--worker-init
: Command to be run before starting a worker.
"},{"location":"reference/fractal/project/","title":"project","text":"Project commands.
fractal project [-h] {new,list,show,delete,add-dataset,edit} ...\n
"},{"location":"reference/fractal/project/#sub-commands","title":"Sub-commands","text":""},{"location":"reference/fractal/project/#project-new","title":"project new","text":"Create new project.
fractal project new [-h] name\n
"},{"location":"reference/fractal/project/#positional-arguments","title":"Positional Arguments","text":" name
: Name of new project. "},{"location":"reference/fractal/project/#project-list","title":"project list","text":"List projects.
fractal project list [-h]\n
"},{"location":"reference/fractal/project/#project-show","title":"project show","text":"Show details of single project.
fractal project show [-h] project_id\n
"},{"location":"reference/fractal/project/#positional-arguments_1","title":"Positional Arguments","text":" project_id
: ID of project to show. "},{"location":"reference/fractal/project/#project-delete","title":"project delete","text":"Delete project.
fractal project delete [-h] project_id\n
"},{"location":"reference/fractal/project/#positional-arguments_2","title":"Positional Arguments","text":" project_id
: ID of project to delete. "},{"location":"reference/fractal/project/#project-add-dataset","title":"project add-dataset","text":"Add dataset to project.
fractal project add-dataset [-h] [--zarr-dir ZARR_DIR] [--filters FILTERS]\n project_id dataset_name\n
"},{"location":"reference/fractal/project/#positional-arguments_3","title":"Positional Arguments","text":""},{"location":"reference/fractal/project/#named-arguments","title":"Named Arguments","text":""},{"location":"reference/fractal/project/#project-edit","title":"project edit","text":"Edit details of a single project.
fractal project edit [-h] [--new-name NEW_NAME] project_id\n
"},{"location":"reference/fractal/project/#positional-arguments_4","title":"Positional Arguments","text":" project_id
: ID of the project to edit. "},{"location":"reference/fractal/project/#named-arguments_1","title":"Named Arguments","text":" --new-name
: New project name. "},{"location":"reference/fractal/task/","title":"task","text":"Task commands.
fractal task [-h] {list,collect,collect-custom,check-collection,new,edit} ...\n
"},{"location":"reference/fractal/task/#sub-commands","title":"Sub-commands","text":""},{"location":"reference/fractal/task/#task-list","title":"task list","text":"List tasks.
fractal task list [-h]\n
"},{"location":"reference/fractal/task/#task-collect","title":"task collect","text":"Install and collect all tasks from a pip-installable package.
fractal task collect [-h] [--python-version PYTHON_VERSION] [--package-version\n PACKAGE_VERSION] [--package-extras PACKAGE_EXTRAS]\n [--pinned-dependency PINNED_DEPENDENCY] [--private] package\n
"},{"location":"reference/fractal/task/#positional-arguments","title":"Positional Arguments","text":" package
: Package name or absolute path to local package. "},{"location":"reference/fractal/task/#named-arguments","title":"Named Arguments","text":" --python-version
: Select the python version to use for this package.
--package-version
: Select the package version.
--package-extras
: Comma separated list of extra components for the package to be installed, e.g., collect fractal-tasks-core --package-extras=torch,tensorflow
will trigger the installation of fractal-tasks-core[torch,tensorflow]
.
--pinned-dependency
: Package/version pair representing a pinned-version dependency, in the form collect fractal-tasks-core --pinned-dependency pydantic=1.10.0
. Include --pinned-dependency
multiple times to pin several packages to specific versions.
--private
: Make task group private. Default: False
.
"},{"location":"reference/fractal/task/#task-collect-custom","title":"task collect-custom","text":"Collect all tasks from a custom Python interpreter.
fractal task collect-custom [-h] [--version VERSION] (--package-name\n PACKAGE_NAME | --package-root PACKAGE_ROOT) [--private] label\n python_interpreter manifest\n
"},{"location":"reference/fractal/task/#positional-arguments_1","title":"Positional Arguments","text":" label
: A common label identifying this package.
python_interpreter
: Absolute path to the Python interpreter to be used for running tasks.
manifest
: Local path of the Manifest of the Fractal task package.
"},{"location":"reference/fractal/task/#named-arguments_1","title":"Named Arguments","text":" --version
: Version of tasks to be collected.
--package-name
: Name of the package, as used in 'import '; this is then used to extract the package directory (package_root) via 'importlib.util.find_spec '.
--package-root
: The folder where the package is installed. If not provided, it will be automatically inferred based on 'package_name'.
--private
: Make task group private. Default: False
.
"},{"location":"reference/fractal/task/#task-check-collection","title":"task check-collection","text":"Check status of background task collection processes.
fractal task check-collection [-h] [--include-logs] task_group_activity_id\n
"},{"location":"reference/fractal/task/#positional-arguments_2","title":"Positional Arguments","text":" task_group_activity_id
: Activity ID of the collection (see output of task collect
). "},{"location":"reference/fractal/task/#named-arguments_2","title":"Named Arguments","text":" --include-logs
: Also include task-collection logs. Default: False
. "},{"location":"reference/fractal/task/#task-new","title":"task new","text":"Create new task.
fractal task new [-h] [--command-non-parallel COMMAND_NON_PARALLEL]\n [--command-parallel COMMAND_PARALLEL] [--version VERSION]\n [--meta-non-parallel META_NON_PARALLEL] [--meta-parallel META_PARALLEL]\n [--args-schema-non-parallel ARGS_SCHEMA_NON_PARALLEL]\n [--args-schema-parallel ARGS_SCHEMA_PARALLEL] [--args-schema-version\n ARGS_SCHEMA_VERSION] [--private] name\n
"},{"location":"reference/fractal/task/#positional-arguments_3","title":"Positional Arguments","text":" name
: A human readable name for the task. "},{"location":"reference/fractal/task/#named-arguments_3","title":"Named Arguments","text":" --command-non-parallel
: The non parallel command that executes the task.
--command-parallel
: The parallel command that executes the task.
--version
: Task version.
--meta-non-parallel
: Path to JSON file with meta non parallel arguments.
--meta-parallel
: Path to JSON file with meta parallel arguments.
--args-schema-non-parallel
: Path to JSON file with args non parallel arguments.
--args-schema-parallel
: Path to JSON file with arg parallel arguments.
--args-schema-version
: Label encoding how the task-arguments JSON Schema was generated (e.g. pydantic_v1
).
--private
: Make task group private. Default: False
.
"},{"location":"reference/fractal/task/#task-edit","title":"task edit","text":"Edit task.
fractal task edit [-h] (--id ID | --name NAME) [--version VERSION]\n [--new-version NEW_VERSION] [--command-non-parallel\n COMMAND_NON_PARALLEL] [--command-parallel COMMAND_PARALLEL]\n [--input-types INPUT_TYPES] [--output-types OUTPUT_TYPES]\n
"},{"location":"reference/fractal/task/#named-arguments_4","title":"Named Arguments","text":" --id
: ID of the task to edit.
--name
: Name of the task to edit.
--version
: Version of the task to edit (only accepted in combination with --name
).
--new-version
: New task version.
--command-non-parallel
: New task non parallel command.
--command-parallel
: New task parallel command.
--input-types
: Path to JSON file with new input types.
--output-types
: Path to JSON file with new output types.
"},{"location":"reference/fractal/user/","title":"user","text":"User commands.
fractal user [-h] {whoami,register,list,show,edit,set-groups} ...\n
"},{"location":"reference/fractal/user/#sub-commands","title":"Sub-commands","text":""},{"location":"reference/fractal/user/#user-whoami","title":"user whoami","text":"Get info on current user (fails if user is not registered).
fractal user whoami [-h] [--viewer-paths]\n
"},{"location":"reference/fractal/user/#named-arguments","title":"Named Arguments","text":" --viewer-paths
: Include user's viewer_paths
attribute. Default: False
. "},{"location":"reference/fractal/user/#user-register","title":"user register","text":"Register a new user with the Fractal server and edit their settings (note: user creation and settings editing are two independent steps).
fractal user register [-h] [--project-dir PROJECT_DIR] [--slurm-user\n SLURM_USER] [--username USERNAME] [--ssh-settings-json\n SSH_SETTINGS_JSON] [--superuser] new_email new_password\n
"},{"location":"reference/fractal/user/#positional-arguments","title":"Positional Arguments","text":""},{"location":"reference/fractal/user/#named-arguments_1","title":"Named Arguments","text":" --project-dir
: User-writeable base folder, used e.g. for default zarr_dir
paths.
--slurm-user
: Username to login into SLURM cluster.
--username
: Username associated to the user.
--ssh-settings-json
: Path to JSON file with (a subset of) following settings: ssh_host, ssh_username, ssh_private_key_path, ssh_tasks_dir, ssh_jobs_dir.
--superuser
: Give superuser privileges to the new user. Default: False
.
"},{"location":"reference/fractal/user/#user-list","title":"user list","text":"List all users.
fractal user list [-h]\n
"},{"location":"reference/fractal/user/#user-show","title":"user show","text":"Show details of single user.
fractal user show [-h] user_id\n
"},{"location":"reference/fractal/user/#positional-arguments_1","title":"Positional Arguments","text":""},{"location":"reference/fractal/user/#user-edit","title":"user edit","text":"Edit an existin user and/or their settings (note: user and settings editing are two independent steps).
fractal user edit [-h] [--new-email NEW_EMAIL] [--new-password NEW_PASSWORD]\n [--new-username NEW_USERNAME] [--new-project-dir NEW_PROJECT_DIR]\n [--new-slurm-user NEW_SLURM_USER] [--new-ssh-settings-json\n NEW_SSH_SETTINGS_JSON] [--make-superuser | --remove-superuser]\n [--make-verified | --remove-verified] user_id\n
"},{"location":"reference/fractal/user/#positional-arguments_2","title":"Positional Arguments","text":""},{"location":"reference/fractal/user/#named-arguments_2","title":"Named Arguments","text":" --new-email
: New email address.
--new-password
: New password.
--new-username
: New user username.
--new-project-dir
: New value of project_dir
.
--new-slurm-user
: New SLURM username.
--new-ssh-settings-json
: Path to JSON file with (a subset of) following settings: ssh_host, ssh_username, ssh_private_key_path, ssh_tasks_dir, ssh_jobs_dir.
--make-superuser
: Give superuser privileges to user. Default: False
.
--remove-superuser
: Remove superuser privileges from user. Default: False
.
--make-verified
: Make user verified. Default: False
.
--remove-verified
: Make user unverified. Default: False
.
"},{"location":"reference/fractal/user/#user-set-groups","title":"user set-groups","text":"Reset user-group membership for an existing user.
fractal user set-groups [-h] user_id group_ids [group_ids ...]\n
"},{"location":"reference/fractal/user/#positional-arguments_3","title":"Positional Arguments","text":""},{"location":"reference/fractal/version/","title":"version","text":"Print version and exit.
fractal version [-h]\n
"},{"location":"reference/fractal/workflow/","title":"workflow","text":"Workflow commands.
fractal workflow [-h]\n {list,new,show,edit,delete,add-task,edit-task,rm-task,import,export}\n ...\n
"},{"location":"reference/fractal/workflow/#sub-commands","title":"Sub-commands","text":""},{"location":"reference/fractal/workflow/#workflow-list","title":"workflow list","text":"List workflows for given project.
fractal workflow list [-h] project_id\n
"},{"location":"reference/fractal/workflow/#positional-arguments","title":"Positional Arguments","text":""},{"location":"reference/fractal/workflow/#workflow-new","title":"workflow new","text":"Create new workflow.
fractal workflow new [-h] name project_id\n
"},{"location":"reference/fractal/workflow/#positional-arguments_1","title":"Positional Arguments","text":""},{"location":"reference/fractal/workflow/#workflow-show","title":"workflow show","text":"Show workflow.
fractal workflow show [-h] project_id workflow_id\n
"},{"location":"reference/fractal/workflow/#positional-arguments_2","title":"Positional Arguments","text":""},{"location":"reference/fractal/workflow/#workflow-edit","title":"workflow edit","text":"Edit workflow.
fractal workflow edit [-h] --new-name NEW_NAME project_id workflow_id\n
"},{"location":"reference/fractal/workflow/#positional-arguments_3","title":"Positional Arguments","text":""},{"location":"reference/fractal/workflow/#named-arguments","title":"Named Arguments","text":" --new-name
: New workflow name. "},{"location":"reference/fractal/workflow/#workflow-delete","title":"workflow delete","text":"Delete workflow.
fractal workflow delete [-h] project_id workflow_id\n
"},{"location":"reference/fractal/workflow/#positional-arguments_4","title":"Positional Arguments","text":""},{"location":"reference/fractal/workflow/#workflow-add-task","title":"workflow add-task","text":"Add new task to specific workflow.
fractal workflow add-task [-h] (--task-id TASK_ID | --task-name TASK_NAME)\n [--task-version TASK_VERSION] [--order ORDER] [--args-non-parallel\n ARGS_NON_PARALLEL] [--args-parallel ARGS_PARALLEL]\n [--meta-non-parallel META_NON_PARALLEL] [--meta-parallel META_PARALLEL]\n [--input-filters INPUT_FILTERS] project_id workflow_id\n
"},{"location":"reference/fractal/workflow/#positional-arguments_5","title":"Positional Arguments","text":""},{"location":"reference/fractal/workflow/#named-arguments_1","title":"Named Arguments","text":" --task-id
: ID of the task to add.
--task-name
: Name of the task to add.
--task-version
: Version of task to add (only accepted in combination with --task-name).
--order
: Order of this task within the workflow's task list.
--args-non-parallel
: Args for non parallel tasks
--args-parallel
: Args for parallel tasks
--meta-non-parallel
: Metadata file fornon parallel tasks
--meta-parallel
: Metadata file for parallel tasks
--input-filters
: Path to json file with filters.
"},{"location":"reference/fractal/workflow/#workflow-edit-task","title":"workflow edit-task","text":"Edit task within specific workflow.
fractal workflow edit-task [-h] [--input-filters INPUT_FILTERS]\n [--args-non-parallel ARGS_NON_PARALLEL] [--args-parallel ARGS_PARALLEL]\n [--meta-non-parallel META_NON_PARALLEL] [--meta-parallel META_PARALLEL]\n project_id workflow_id workflow_task_id\n
"},{"location":"reference/fractal/workflow/#positional-arguments_6","title":"Positional Arguments","text":" project_id
: Project ID.
workflow_id
: Workflow ID.
workflow_task_id
: Workflow task ID, the ID of a task inside the list of tasks.
"},{"location":"reference/fractal/workflow/#named-arguments_2","title":"Named Arguments","text":" --input-filters
: Path to json serialised file containing the arguments overrides of the task.
--args-non-parallel
: Args for non parallel tasks
--args-parallel
: Args for parallel tasks
--meta-non-parallel
: Metadata file fornon parallel tasks
--meta-parallel
: Metadata file for parallel tasks
"},{"location":"reference/fractal/workflow/#workflow-rm-task","title":"workflow rm-task","text":"Remove task from a specific workflow.
fractal workflow rm-task [-h] project_id workflow_id workflow_task_id\n
"},{"location":"reference/fractal/workflow/#positional-arguments_7","title":"Positional Arguments","text":""},{"location":"reference/fractal/workflow/#workflow-import","title":"workflow import","text":"Import workflow to project from file.
fractal workflow import [-h] --project-id PROJECT_ID --json-file JSON_FILE\n [--workflow-name WORKFLOW_NAME]\n
"},{"location":"reference/fractal/workflow/#named-arguments_3","title":"Named Arguments","text":" --project-id
: ID of the project where the workflow will be imported.
--json-file
: Path to a JSON file with the workflow to be imported.
--workflow-name
: Name of the new workflow (if set, overrides the one in JSON file)
"},{"location":"reference/fractal/workflow/#workflow-export","title":"workflow export","text":"Export workflow to file.
fractal workflow export [-h] --json-file JSON_FILE project_id workflow_id\n
"},{"location":"reference/fractal/workflow/#positional-arguments_8","title":"Positional Arguments","text":""},{"location":"reference/fractal/workflow/#named-arguments_4","title":"Named Arguments","text":" --json-file
: Path to the JSON file where the workflow will be exported. "}]}
\ No newline at end of file
diff --git a/sitemap.xml b/sitemap.xml
new file mode 100644
index 000000000..0f8724efd
--- /dev/null
+++ b/sitemap.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/sitemap.xml.gz b/sitemap.xml.gz
new file mode 100644
index 000000000..4dd65023d
Binary files /dev/null and b/sitemap.xml.gz differ
diff --git a/versions/index.html b/versions/index.html
new file mode 100644
index 000000000..1415fcea0
--- /dev/null
+++ b/versions/index.html
@@ -0,0 +1,606 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Version compatibility - Fractal Client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Version Compatibility
+During the current development phase, the latest stable releases of
+fractal-server
and fractal-client
are always considered as compatible.
+The following table shows some additional compatibility constraints for each
+fractal-client
version, which may be useful for working with a
+fractal-server
instance which is not fully up-to-date.
+
+WARNING : This table only shows the fractal-server
-version lower bounds
+for each fractal-client
version, but not the corresponding upper bounds.
+
+
+
+
+fractal-client
+fractal-server
+
+
+
+
+2.0.0
+>=2.0.0
+
+
+1.4.3
+>=1.4.2
+
+
+1.4.2
+>=1.4.2
+
+
+1.4.1
+>=1.4.0
+
+
+1.4.0
+>=1.4.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file