wxyz.dvcs

DVCS widgets

class wxyz.dvcs.Brancher(**kwargs)[source]

Bases: ipywidgets.widgets.widget_box.HBox

Create a new branch from the current commit

create(*args, **kwargs)[source]

actually create the new branch

class wxyz.dvcs.Committer(**kwargs)[source]

Bases: ipywidgets.widgets.widget_box.VBox

Create commits with a message

change_btn_desc(changes)[source]

update button description

commit(*args)[source]

actually commit

class wxyz.dvcs.Git(**kwargs)[source]

Bases: wxyz.dvcs.repos.repo_base.Repo

A git repository widget

add_remote(name, url, **kwargs)

add a new reference to a remote repository

branch(name, ref='HEAD')[source]

create and checkout a new branch

checkout(name)[source]

checkout a named reference

commit(message)[source]

create a commit

merge(ref)[source]

create a merge commit on the active branch with the given ref

revert(ref)[source]

restore to a committish

stage(path)[source]

stage a single path to the index

track(**kwargs)

create a tracker for the given widget

unstage(path)[source]

remove a path from the index

class wxyz.dvcs.HeadPicker(**kwargs)[source]

Bases: ipywidgets.widgets.widget_box.HBox

a simple dropdown-based picker of current DVCS heads

checkout(*args, **kwargs)[source]

check out a ref

refresh(*args, **kwargs)[source]

refresh the heads

class wxyz.dvcs.HeadStatus(**kwargs)[source]

Bases: ipywidgets.widgets.widget_box.HBox

a status bar

class wxyz.dvcs.JSONDictTracker(**kwargs)[source]

Bases: wxyz.dvcs.trackers.tracker_base.DictTracker, wxyz.dvcs.trackers.tracker_base.ExecutorTracker

sync a widget’s traits to single JSON file on disk

classmethod detect_tracker(path, base_cls=None)

naive tracker finder… needs something cleverer

dict_from_widget()

generate a JSON-ready dict from a widget

property loop

get the current event loop, if available

async on_file_change()

react to a file change

on_file_change_sync()[source]

perform JSON reading in thread

async on_user_change()

react to a user change

on_user_change_sync()[source]

perform JSON writing on thread

widget_from_dict(content)

update a widget from a dict

class wxyz.dvcs.Remoter(**kwargs)[source]

Bases: ipywidgets.widgets.widget_box.VBox

Adds remotes

class wxyz.dvcs.Repo(**kwargs)[source]

Bases: ipywidgets.widgets.widget.Widget

base class for a DVCS repo

add_remote(name, url, **kwargs)[source]

add a new reference to a remote repository

track(**kwargs)[source]

create a tracker for the given widget

class wxyz.dvcs.TimeTraveler(**kwargs)[source]

Bases: ipywidgets.widgets.widget_box.HBox

Show a selection widget

class wxyz.dvcs.Tracker(**kwargs)[source]

Bases: ipywidgets.widgets.widget.Widget

base class for trackers

classmethod detect_tracker(path, base_cls=None)[source]

naive tracker finder… needs something cleverer

property loop

get the current event loop, if available

async on_file_change()[source]

react to a file changing on disk

async on_user_change()[source]

react to a user changing a widget

class wxyz.dvcs.Watcher(**kwargs)[source]

Bases: ipywidgets.widgets.widget.Widget

A lightweight watcher

TODO: expose more bits

class wxyz.dvcs.YAMLDictTracker(**kwargs)[source]

Bases: wxyz.dvcs.trackers.tracker_json.JSONDictTracker

sync a widget’s traits to single YAML file on disk

classmethod detect_tracker(path, base_cls=None)

naive tracker finder… needs something cleverer

dict_from_widget()

generate a JSON-ready dict from a widget

property loop

get the current event loop, if available

async on_file_change()

react to a file change

on_file_change_sync()

perform JSON reading in thread

async on_user_change()

react to a user change

on_user_change_sync()

perform JSON writing on thread

widget_from_dict(content)

update a widget from a dict

Classes

digraph "classes_dvcs" { graph [fontname = "sans-serif"]; node [fontname = "sans-serif"]; edge [fontname = "sans-serif"]; charset="utf-8" rankdir=BT "0" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/base.py.DVCSBase|_model_module : Unicode\l_model_module_version : Unicode\l_view_module : Unicode\l_view_module_version : Unicode\l|}", shape="record"]; "1" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/repos/repo_base.py.Remote|auto_fetch : Bool\lexecutor : ThreadPoolExecutor\lheads\lheads : Dict\lname : Unicode\lurl : Unicode\l|__init__()\l_on_auto_fetch(_change)\lfetch()\lpush(ref)\l}", shape="record"]; "2" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/repos/repo_base.py.Repo|_change_link : NoneType\l_change_link : NoneType, directional_link\l_remote_cls\l_trackers\l_trackers\l_watcher : Instance\l_watcher : NoneType\lchanges : Tuple\ldirty : Bool\lexecutor : ThreadPoolExecutor\lhead : Unicode\lhead_hash : Unicode\lhead_history : Tuple\lheads : Dict\lremotes : Dict\lremotes : dict\lurl : Unicode\lwatching : Bool\lworking_dir : Instance\l|__init__(working_dir)\l_default_changes()\l_on_watch_changes(changes)\l_on_watching(change)\ladd_remote(name, url)\ltrack()\l}", shape="record"]; "3" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/repos/repo_git.py.Git|_git : Instance\l_git : Repo\l_ref_watcher : Instance\l_remote_cls\l_watcher\ldirty : bool\lhead\lhead_hash\lhead_history : list\lheads\lremotes : dict\l|_default_head()\l_initialize_watcher()\l_on_head_changed(change)\l_on_path(change)\l_on_ref_change(_change)\l_on_watch_changes()\l_update_head_history()\l_update_heads()\l_update_remotes()\lbranch(name, ref)\lcheckout(name)\lcommit(message)\lmerge(ref)\lrevert(ref)\lstage(path)\lunstage(path)\l}", shape="record"]; "4" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/repos/repo_git.py.GitRemote|_remote\l_remote : Instance\llocal : Instance\l|__init__()\l_fetch()\l_update_heads()\lpush(ref)\l}", shape="record"]; "5" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/repos/repo_git.py._GitRefWatcher|\l|should_watch_dir(entry)\l}", shape="record"]; "6" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/tools/tool_commits.py.Committer|_dom_classes\lchildren : list\lcommit_btn : Instance\lmessage : Instance\lrepo : Instance\lwatch : Instance\l|__init__()\l_default_commit_btn()\l_default_message()\l_default_watch()\lchange_btn_desc(changes)\lcommit()\l}", shape="record"]; "7" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/tools/tool_heads.py.Brancher|_repo_link : NoneType\lbranch_name : Instance\lchildren : list\lcreate_btn : Instance\lrepo : Instance\l|__init__()\l_default_branch_name()\l_default_create_btn()\lcreate()\l}", shape="record"]; "8" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/tools/tool_heads.py.HeadPicker|_repo_link : NoneType\l_repo_link : NoneType, directional_link\lcheckout_btn : Instance\lchildren : list\lpicker : Instance\lrefresh_btn : Instance\lrepo : Instance\l|__init__()\l_default_checkout_btn()\l_default_picker()\l_default_refresh_btn()\l_format_head_options(heads)\l_on_repo_changed(change)\l_update_picker_value()\lcheckout()\lrefresh()\l}", shape="record"]; "9" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/tools/tool_heads.py.HeadStatus|children : list\lhtml : Instance\lrepo : Instance\ltemplate : Instance\l|__init__()\l_default_template()\l_on_repo_update(_change)\l}", shape="record"]; "10" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/tools/tool_remotes.py.Remoter|_remotes_link : NoneType\l_remotes_link : directional_link\lchildren : list\lfetch_btn : Instance\lhead : Unicode\lheads : Instance\lmerge_btn : Instance\lpush_btn : Instance\lremote : Unicode\lremotes : Instance\lrepo : Instance\l|__init__()\l_default_fetch_btn()\l_default_heads()\l_default_merge_btn()\l_default_push_btn()\l_default_remotes()\l_on_fetch_click()\l_on_merge_click()\l_on_push_click()\l_on_remote(change)\l_on_repo(change)\l_update_head_options(change)\l_update_remote_options(remotes)\l}", shape="record"]; "11" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/tools/tool_timetravel.py.TimeTraveler|_commits_cls : SelectionSlider\l_dom_classes\l_option_tmpl : Template\lchildren : list\lcommits : Instance\lenable_chk : Instance\lenabled : Bool\lrepo : Instance\l|__init__()\l_default_enable_chk()\l_make_default_commits()\l_on_change_commit(change)\l_on_head_hash_change(_change)\l_update_history_options(history)\l}", shape="record"]; "12" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/trackers/tracker_base.py.DictTracker|\l|dict_from_widget()\lwidget_from_dict(content)\l}", shape="record"]; "13" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/trackers/tracker_base.py.ExecutorTracker|executor : ThreadPoolExecutor\l|on_file_change()\lon_file_change_sync()\lon_user_change()\lon_user_change_sync()\l}", shape="record"]; "14" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/trackers/tracker_base.py.Tracker|__extension__ : NoneType\l_idle_after\l_idle_after : NoneType\lencoding : Unicode\lloop\lpath : Instance\ltracked_traits\ltracked_widget : Instance\luser_idle_interval : Float\l|_changed_tracked_traits(change)\l_changed_tracked_widget(change)\l_on_file_change(change)\l_on_user_change(change)\ldetect_tracker(cls, path, base_cls)\lon_file_change()\lon_user_change()\l}", shape="record"]; "15" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/trackers/tracker_json.py.JSONDictTracker|__extension__ : str\l|_read(text)\l_write(widget_dict)\lon_file_change_sync()\lon_user_change_sync()\l}", shape="record"]; "16" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/trackers/tracker_yaml.py.YAMLDictTracker|__extension__ : str\l|_read(text)\l_write(widget_dict)\l}", shape="record"]; "17" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/widget_watch.py.Watcher|_stop : Event, NoneType\l_stop : Instance\l_watcher_cls : Any\lchanges : NoneType\lchanges : Tuple\lpath : Instance\lwatching : Bool\l|__init__(path)\l_changes(changes)\l_default_changes()\l_on_watching(change)\l_watch()\l}", shape="record"]; "18" [label="{/home/runner/work/wxyz/wxyz/envs/_base/lib/python3.8/site-packages/wxyz/dvcs/widget_watch.py._JupyterWatcher|\l|should_watch_dir(entry)\l}", shape="record"]; "19" [label="{ipywidgets.widgets.domwidget.DOMWidget|_dom_classes\l_dom_classes\l_model_name : Unicode\llayout\l|_repr_keys()\ladd_class(className)\lremove_class(className)\l}", shape="record"]; "20" [label="{ipywidgets.widgets.widget.LoggingHasTraits|log : Instance\l|_log_default()\l}", shape="record"]; "21" [label="{ipywidgets.widgets.widget.Widget|_display_callbacks : Instance\l_holding_sync : bool\l_holding_sync : bool\l_ipython_display_ : NoneType\l_model_id\l_model_module : Unicode\l_model_module_version : Unicode\l_model_name : Unicode\l_msg_callbacks : Instance\l_property_lock : Dict\l_property_lock : dict\l_states_to_send : Set\l_view_count : Int\l_view_module : Unicode\l_view_module_version : Unicode\l_view_name : Unicode\l_widget_construction_callback : NoneType\lcomm : Instance\lcomm : NoneType, Comm\lkeys : List\lmodel_id\lwidget_types : WidgetRegistry\lwidgets : dict\l|__del__()\l__init__()\l__repr__()\l_call_widget_constructed(widget)\l_comm_changed(change)\l_compare(a, b)\l_default_keys()\l_gen_repr_from_keys(keys)\l_get_embed_state(drop_defaults)\l_handle_custom_msg(content, buffers)\l_handle_displayed()\l_handle_msg(msg)\l_ipython_display_()\l_is_numpy(x)\l_lock_property()\l_repr_keys()\l_send(msg, buffers)\l_should_send_property(key, value)\l_trait_from_json(x)\l_trait_to_json(x)\ladd_traits()\lclose()\lclose_all(cls)\lget_manager_state(drop_defaults, widgets)\lget_state(key, drop_defaults)\lget_view_spec()\lhandle_comm_opened(comm, msg)\lhold_sync()\lnotify_change(change)\lon_displayed(callback, remove)\lon_msg(callback, remove)\lon_widget_constructed(callback)\lopen()\lsend(content, buffers)\lsend_state(key)\lset_state(sync_data)\l}", shape="record"]; "22" [label="{ipywidgets.widgets.widget_box.Box|_model_name : Unicode\l_view_name : Unicode\lbox_style : CaselessStrEnum\lchildren\l|__init__(children)\l_fire_children_displayed()\l}", shape="record"]; "23" [label="{ipywidgets.widgets.widget_box.HBox|_model_name : Unicode\l_view_name : Unicode\l|}", shape="record"]; "24" [label="{ipywidgets.widgets.widget_box.VBox|_model_name : Unicode\l_view_name : Unicode\l|}", shape="record"]; "25" [label="{ipywidgets.widgets.widget_core.CoreWidget|_model_module : Unicode\l_model_module_version : Unicode\l_view_module : Unicode\l_view_module_version : Unicode\l|}", shape="record"]; "26" [label="{traitlets.traitlets.HasDescriptors|\l|__new__()\lsetup_instance()\l}", shape="record"]; "27" [label="{traitlets.traitlets.HasTraits|__class__\l__dict__\l_cross_validation_lock : bool\l_trait_notifiers : dict\lcross_validation_lock\lnotify_change\l|__getstate__()\l__init__()\l__setstate__(state)\l_add_notifiers(handler, name, type)\l_get_trait_default_generator(name)\l_notify_observers(event)\l_notify_trait(name, old_value, new_value)\l_register_validator(handler, names)\l_remove_notifiers(handler, name, type)\ladd_traits()\lclass_own_trait_events(cls, name)\lclass_own_traits(cls)\lclass_trait_names(cls)\lclass_traits(cls)\lhas_trait(name)\lhold_trait_notifications()\lnotify_change(change)\lobserve(handler, names, type)\lon_trait_change(handler, name, remove)\lset_trait(name, value)\lsetup_instance()\ltrait_defaults()\ltrait_events(cls, name)\ltrait_has_value(name)\ltrait_metadata(traitname, key, default)\ltrait_names()\ltrait_values()\ltraits()\lunobserve(handler, names, type)\lunobserve_all(name)\l}", shape="record"]; "28" [label="{watchgod.watcher.AllWatcher|files : dict\lroot_path\l|__init__(root_path)\l_walk(path, changes, new_files)\l_walk_dir(dir_path, changes, new_files)\l_watch_file(path, changes, new_files)\lcheck()\lshould_watch_dir(entry)\lshould_watch_file(entry)\l}", shape="record"]; "29" [label="{watchgod.watcher.DefaultDirWatcher|ignored_dirs : set\l|should_watch_dir(entry)\l}", shape="record"]; "30" [label="{wxyz.core.base.Base|_model_module : Unicode\l_model_module_version : Unicode\l_view_module : Unicode\l_view_module_version : Unicode\lclosable : Bool\ldescription : Unicode\lerror : CUnicode\licon_class : Unicode\l|}", shape="record"]; "31" [label="{wxyz.core.base.WXYZBase|_model_module : Unicode\l_model_module_version : Unicode\l_view_module : Unicode\l_view_module_version : Unicode\l|}", shape="record"]; "0" -> "30" [arrowhead="empty", arrowtail="none"]; "1" -> "21" [arrowhead="empty", arrowtail="none"]; "2" -> "21" [arrowhead="empty", arrowtail="none"]; "5" -> "29" [arrowhead="empty", arrowtail="none"]; "6" -> "24" [arrowhead="empty", arrowtail="none"]; "7" -> "23" [arrowhead="empty", arrowtail="none"]; "8" -> "23" [arrowhead="empty", arrowtail="none"]; "9" -> "23" [arrowhead="empty", arrowtail="none"]; "10" -> "24" [arrowhead="empty", arrowtail="none"]; "11" -> "23" [arrowhead="empty", arrowtail="none"]; "12" -> "14" [arrowhead="empty", arrowtail="none"]; "13" -> "14" [arrowhead="empty", arrowtail="none"]; "14" -> "21" [arrowhead="empty", arrowtail="none"]; "17" -> "21" [arrowhead="empty", arrowtail="none"]; "18" -> "29" [arrowhead="empty", arrowtail="none"]; "19" -> "21" [arrowhead="empty", arrowtail="none"]; "20" -> "27" [arrowhead="empty", arrowtail="none"]; "21" -> "20" [arrowhead="empty", arrowtail="none"]; "22" -> "19" [arrowhead="empty", arrowtail="none"]; "22" -> "25" [arrowhead="empty", arrowtail="none"]; "23" -> "22" [arrowhead="empty", arrowtail="none"]; "24" -> "22" [arrowhead="empty", arrowtail="none"]; "25" -> "21" [arrowhead="empty", arrowtail="none"]; "27" -> "26" [arrowhead="empty", arrowtail="none"]; "29" -> "28" [arrowhead="empty", arrowtail="none"]; "30" -> "31" [arrowhead="empty", arrowtail="none"]; "31" -> "21" [arrowhead="empty", arrowtail="none"]; "1" -> "2" [arrowhead="diamond", arrowtail="none", fontcolor="green", label="_remote_cls", style="solid"]; }