",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width
i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t(""),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth
t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element
+},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/**
+ * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler
+ * Licensed under MIT
+ * @author Ariel Flesler
+ * @version 2.1.2
+ */
+;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference ",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
+ * http://www.smartmenus.org/
+ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$(" ").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$(' ')[0],$(' ')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$});
\ No newline at end of file
diff --git a/docs/html/llm__client_8py.html b/docs/html/llm__client_8py.html
new file mode 100644
index 0000000..7ef3507
--- /dev/null
+++ b/docs/html/llm__client_8py.html
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/llm_client.py File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/llm__client_8py.js b/docs/html/llm__client_8py.js
new file mode 100644
index 0000000..afd0616
--- /dev/null
+++ b/docs/html/llm__client_8py.js
@@ -0,0 +1,4 @@
+var llm__client_8py =
+[
+ [ "penify_hook.llm_client.LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", "classpenify__hook_1_1llm__client_1_1LLMClient" ]
+];
\ No newline at end of file
diff --git a/docs/html/login__command_8py.html b/docs/html/login__command_8py.html
new file mode 100644
index 0000000..babef7a
--- /dev/null
+++ b/docs/html/login__command_8py.html
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/login_command.py File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/login__command_8py.js b/docs/html/login__command_8py.js
new file mode 100644
index 0000000..7ce13bc
--- /dev/null
+++ b/docs/html/login__command_8py.js
@@ -0,0 +1,5 @@
+var login__command_8py =
+[
+ [ "handle_login", "login__command_8py.html#ae4bf932fbafeff834b0a0c5a37f74ccd", null ],
+ [ "setup_login_parser", "login__command_8py.html#aae63db4c484797bead34b7d874020c6a", null ]
+];
\ No newline at end of file
diff --git a/docs/html/main_8py.html b/docs/html/main_8py.html
new file mode 100644
index 0000000..7134e99
--- /dev/null
+++ b/docs/html/main_8py.html
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/main.py File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/main_8py.js b/docs/html/main_8py.js
new file mode 100644
index 0000000..6150b32
--- /dev/null
+++ b/docs/html/main_8py.js
@@ -0,0 +1,4 @@
+var main_8py =
+[
+ [ "main", "main_8py.html#a16838b20df4bd14ee4b5e1dd2906738f", null ]
+];
\ No newline at end of file
diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html
new file mode 100644
index 0000000..6569a28
--- /dev/null
+++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: Penify CLI Tool
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
A CLI tool to generate smart commit messages, code documentation, and more.
+
+Features
+
+Automatically generate documentation for your code
+Support for multiple programming languages
+Git hook integration for automatic documentation on commits
+Folder and file analysis
+
+
+Installation
+
Install from PyPI:
+
+Usage
+
Penify CLI provides several subcommands for different functionalities, organized into basic commands (no login required) and advanced commands (login required).
+
+Basic Commands (No login required)
+
+Commit
+
Generate smart commit messages using local LLM:
+
penify commit [-m "Optional message"] [-e] [-d]
+
Options:
+-m, --message: Optional custom commit message
+-e, --terminal: Open editor to modify commit message before committing
+-d, --description: Generate commit message with both title and description (without this flag, only title is generated)
+
+
+Config
+
Configure local LLM and JIRA settings:
+
# Configure LLM settings
+
penify config llm --model MODEL_NAME [--api-base API_URL] [--api-key API_KEY]
+
+
# Configure LLM settings through web interface
+
penify config llm-web
+
+
# Configure JIRA settings
+
penify config jira --url JIRA_URL --username USERNAME --api-token TOKEN [--verify]
+
+
# Configure JIRA settings through web interface
+
penify config jira-web
+
+Advanced Commands (Login required)
+
+Login
+
To log in and obtain an API token:
+
This command will open a browser window for authentication. After successful login, the API key will be saved locally for future use.
+
+Documentation Generation
+
Generate documentation for Git diff, files or folders:
+
# Generate documentation for latest Git commit diff
+
penify docgen
+
+
# Generate documentation for specific file or folder
+
penify docgen -l /path/to/file/or/folder
+
Options:
+-l, --location: Path to specific file or folder for documentation generation (defaults to current directory)
+
+
+Git Hook Management
+
Install or uninstall Git post-commit hooks:
+
# Install Git hook
+
penify docgen install-hook [-l /path/to/repo]
+
+
# Uninstall Git hook
+
penify docgen uninstall-hook [-l /path/to/repo]
+
Options:
+-l, --location: Path to the Git repository (defaults to current directory)
+
+
+Authentication
+
Penify CLI uses an API token for authentication with advanced features.
+
If no token is available and you try to access an advanced feature, you'll be prompted to log in.
+
+Local LLM Configuration
+
For commit message generation, Penify can use a local LLM. Configure it using:
+
penify config llm --model MODEL_NAME --api-base API_URL --api-key API_KEY
+
Common configurations:
+
+JIRA Integration
+
Configure JIRA integration to enhance commit messages with issue details:
+
penify config jira --url https://your-domain.atlassian.net --username your-email@example.com --api-token YOUR_API_TOKEN
+
+Development
+
To set up the development environment:
+
+Clone the repository: git clone https://github.com/SingularityX-ai/penify-cli.git
+
+Install the package in editable mode:
+
+
+Running Tests
+
+License
+
This project is licensed under the MIT License.
+
+Author
+
Suman Saurabh (ss.su.nosp@m. mans.nosp@m. aurab.nosp@m. h92@.nosp@m. gmail.nosp@m. .com )
+
+Contributing
+
Contributions are welcome! Please feel free to submit a Pull Request.
+
+Issues
+
If you encounter any problems or have suggestions, please file an issue on the GitHub repository .
+
+Support
+
For automated API Documentation, Architecture Documentation, Code Documentation, Pull Request Documentation, or if you need a demo, please join our Discord support channel .
+
+
+
+
+
+
+
+
diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html
new file mode 100644
index 0000000..d2fa24b
--- /dev/null
+++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html
@@ -0,0 +1,254 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: Penify CLI - Commit Commands
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The commit command allows you to generate smart, AI-powered commit messages for your Git changes. This document explains all available options and combinations.
+
+Basic Usage
+
By default, this command:
+Analyzes your staged Git changes
+Generates a concise commit title only
+Uses local LLM if configured, or falls back to Penify API
+
+
+Command Options
+
+<tt>-m, --message</tt>
+
Provide context for the commit message generation:
+
penify commit -m "Fix login flow"
+
This hint helps the AI understand your intention and improves the quality of the generated message.
+
+<tt>-e, --terminal</tt>
+
Open an editor to review and edit the generated commit message before committing:
+
This opens your default Git editor with the generated message for review.
+
+<tt>-d, --description</tt>
+
Generate a detailed commit message with both title and description:
+
Without this flag, only the commit title is generated.
+
+Option Combinations
+
You can combine these options for different workflows:
+
+Generate Title Only with Context
+
penify commit -m "Update login UI"
+
+Generate Title and Description with Context
+
penify commit -m "Update login UI" -d
+
+Generate and Edit Full Commit Message
+
+Generate, Edit, and Provide Context
+
penify commit -m "Refactor authentication" -d -e
+
+LLM and JIRA Integration
+
+Using Local LLM
+
If you've configured a local LLM using penify config llm, the commit command will automatically use it for message generation.
+
Benefits:
+Privacy: your code changes don't leave your machine
+Speed: no network latency
+Works offline
+
+
+JIRA Enhancement
+
If you've configured JIRA integration using penify config jira, the commit command will:
+
+Detect JIRA issue references in your changes
+Fetch issue details from your JIRA instance
+Include issue information in the commit message
+Format the commit message according to JIRA's smart commit format
+
+
Example output:
PROJ-123: Fix authentication bug in login flow
+
+
- Updated OAuth token validation
+
- Fixed session timeout handling
+
- Added unit tests for edge cases
+
+
[PROJ-123]
+
+Configuration Requirements
+
For the commit command to work:
+
+You must have configured either:
+Local LLM via penify config llm, OR
+Logged in via penify login
+
+
+For JIRA enhancement (optional):
+Configure JIRA via penify config jira
+
+
+
+
+Examples
+
+Basic Commit with Default Settings
+
# Stage your changes
+
git add .
+
+
# Generate commit message
+
penify commit
+
+
# Commit with the generated message
+
git commit -m "Generated message here"
+
+Full Workflow with All Features
+
# Stage your changes
+
git add .
+
+
# Generate detailed commit message with JIRA integration,
+
# provide context, and open editor for review
+
penify commit -m "Fix login issue" -d -e
+
+
# The commit is automatically completed after you save and exit the editor
+
+Troubleshooting
+
+Common Issues
+
+**"No LLM model or API token provided"**
+Run penify config llm to configure a local LLM, or
+Run penify login to authenticate with Penify
+
+
+**"Failed to connect to JIRA"**
+Check your JIRA configuration with cat ~/.penify
+Verify your network connection
+Ensure your JIRA credentials are valid
+
+
+**"Error initializing LLM client"**
+Verify your LLM configuration settings
+Ensure the LLM API is accessible
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html
new file mode 100644
index 0000000..efe2f92
--- /dev/null
+++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html
@@ -0,0 +1,285 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: Penify CLI - Configuration Commands
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The config command allows you to set up and manage configuration settings for Penify CLI. This document explains all available configuration options and how to use them.
+
+Configuration Overview
+
Penify CLI stores configuration in a JSON file at ~/.penify/config.json. The configuration includes:
+
+LLM (Large Language Model) settings for local commit message generation
+JIRA integration settings for enhanced commit messages
+API tokens and other credentials
+
+
+Basic Usage
+
# Configure LLM settings
+
penify config llm
+
+
# Configure JIRA integration
+
penify config jira
+
+LLM Configuration
+
+Web Interface
+
Running penify config llm opens a web interface in your browser where you can configure:
+
+Model : The LLM model to use (e.g., gpt-3.5-turbo)
+API Base URL : The endpoint URL for your LLM API (e.g., https://api.openai.com/v1 )
+API Key : Your authentication key for the LLM API
+
+
+Supported LLMs
+
Penify CLI supports various LLM providers:
+
+OpenAI
+
+
+Anthropic
+
+
+Ollama (Local)
+
+
+Azure OpenAI
+
+Model: Your deployed model name
+API Base: Your Azure endpoint
+API Key: Your Azure API key
+
+
+Configuration File Structure
+
After configuration, your ~/.penify/config.json will contain:
+
{
+
"llm": {
+
"model": "gpt-3.5-turbo",
+
"api_base": "https://api.openai.com/v1",
+
"api_key": "sk-..."
+
}
+
}
+
+JIRA Configuration
+
+Web Interface
+
Running penify config jira opens a web interface where you can configure:
+
+JIRA URL : Your JIRA instance URL (e.g., https://yourcompany.atlassian.net )
+Username : Your JIRA username (typically your email)
+API Token : Your JIRA API token
+
+
+Creating a JIRA API Token
+
+Log in to https://id.atlassian.com/manage-profile/security/api-tokens
+Click "Create API token"
+Give it a name (e.g., "Penify CLI")
+Copy the generated token and paste it into the configuration
+
+
+Configuration File Structure
+
After configuration, your ~/.penify/config.json will contain:
+
{
+
"jira": {
+
"url": "https://yourcompany.atlassian.net",
+
"username": "your.email@example.com",
+
"api_token": "your-jira-api-token"
+
}
+
}
+
+Configuration Locations
+
Penify CLI looks for configuration in multiple locations:
+
+Project-specific: .penify/config.json in the Git repository root
+User-specific: ~/.penify/config.json in your home directory
+
+
The project-specific configuration takes precedence if both exist.
+
+Environment Variables
+
You can override configuration settings using environment variables:
+
+PENIFY_API_TOKEN: Override the stored API token
+PENIFY_LLM_MODEL: Override the configured LLM model
+PENIFY_LLM_API_BASE: Override the configured LLM API base URL
+PENIFY_LLM_API_KEY: Override the configured LLM API key
+PENIFY_JIRA_URL: Override the configured JIRA URL
+PENIFY_JIRA_USER: Override the configured JIRA username
+PENIFY_JIRA_TOKEN: Override the configured JIRA API token
+
+
Example:
export PENIFY_LLM_MODEL="gpt-4"
+
penify commit
+
+Command-Line Configuration
+
For advanced users or scripting, you can directly edit the configuration file:
+
# View current configuration
+
cat ~/.penify/config.json
+
+
# Edit configuration with your preferred editor
+
nano ~/.penify/config.json
+
+Sharing Configuration
+
You can share configuration between machines by copying the .penify/config.json file. However, be cautious with API keys and credentials.
+
For team settings, consider:
+Using a project-specific .penify/config.json with shared settings
+Excluding API keys from shared configuration
+Using environment variables for sensitive credentials
+
+
+Troubleshooting
+
+Common Issues
+
+**"Error reading configuration file"**
+Check if the file exists: ls -la ~/.penify
+Ensure it contains valid JSON: cat ~/.penify/config.json
+
+
+**"Failed to connect to LLM API"**
+Verify API base URL and API key
+Check network connectivity to the API endpoint
+Ensure your account has access to the specified model
+
+
+**"Failed to connect to JIRA"**
+Check JIRA URL format (should include https:// )
+Verify username and API token
+Ensure your JIRA account has API access permissions
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html
new file mode 100644
index 0000000..26f4c45
--- /dev/null
+++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html
@@ -0,0 +1,279 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: Penify CLI - Detailed Usage Guide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This document provides in-depth information about all features and capabilities of the Penify CLI tool.
+
+Table of Contents
+
+Penify CLI - Detailed Usage Guide
+Table of Contents
+Authentication
+Login Process
+API Token Storage
+Token Precedence
+
+
+Command Overview
+Commit Message Generation
+Code Documentation Generation
+Use Cases
+Authentication Requirement
+
+
+Configuration Settings
+Git Hooks
+Post-Commit Hook
+Custom Hook Location
+
+
+Advanced Use Cases
+CI/CD Integration
+Remote Repository Documentation
+
+
+Troubleshooting
+Common Issues
+Logs
+Support
+
+
+
+
+
+
+Authentication
+
+Login Process
+
When you run penify login, the tool:
+
+Opens your default web browser
+Redirects you to Penify's login page
+Captures the authentication token after successful login
+Saves the token in ~/.penify file
+
+
+API Token Storage
+
API tokens are stored in your home directory in the .penify file. This JSON file contains:
+
{
+
"api_keys": "your-api-token",
+
"llm": { "model": "...", "api_base": "...", "api_key": "..." },
+
"jira": { "url": "...", "username": "...", "api_token": "..." }
+
}
+
+Token Precedence
+
+Environment variable PENIFY_API_TOKEN (highest priority)
+Token in ~/.penify file
+
+
+Command Overview
+
penify
+
├── commit Generate smart commit messages
+
├── config Configure local LLM and JIRA
+
│ ├── llm Configure local LLM settings
+
│ └── jira Configure JIRA integration
+
├── login Log in to Penify account
+
└── docgen Generate code documentation
+
├── install-hook Install Git post-commit hook
+
└── uninstall-hook Remove Git post-commit hook
+
+Commit Message Generation
+
The commit command analyzes your staged changes and generates meaningful commit messages. It can:
+
+Use a local LLM if configured
+Enhance messages with JIRA issue details
+Provide both title and description
+
+
For specific options and examples, see docs/commit-commands.md .
+
+Code Documentation Generation
+
The docgen command generates documentation for your code:
+
+Use Cases
+
+Current Git Diff : Default behavior, documents only changed files
+Specific File : Pass a file path with -l path/to/file.py
+Entire Folder : Pass a folder path with -l path/to/folder
+
+
+Authentication Requirement
+
This feature requires authentication with a Penify account. Run penify login before using documentation features.
+
+Configuration Settings
+
Configure local settings using the config command:
+
+LLM Settings : Configure a local LLM for commit message generation
+JIRA Settings : Set up JIRA integration for enhanced commit messages
+
+
For detailed configuration options, see docs/config-commands.md .
+
+Git Hooks
+
Penify can install Git hooks to automate documentation generation:
+
+Post-Commit Hook
+
+Install : penify docgen install-hook
+What it does : Automatically generates documentation for changed files after each commit
+Uninstall : penify docgen uninstall-hook
+
+
+Custom Hook Location
+
You can specify a custom location for Git hooks:
+
penify docgen install-hook -l /path/to/git/repo
+
+Advanced Use Cases
+
+CI/CD Integration
+
For CI/CD pipelines:
+
+Set PENIFY_API_TOKEN as an environment variable
+Run commands without requiring interactive login
+
+
+Remote Repository Documentation
+
Generate documentation for an entire repository:
+
git clone https://github.com/user/repo
+
cd repo
+
penify docgen -l .
+
+Troubleshooting
+
+Common Issues
+
+API Key Errors : Ensure you've run penify login or set PENIFY_API_TOKEN
+LLM Configuration : Check your LLM settings with cat ~/.penify
+JIRA Integration : Verify JIRA credentials in your configuration
+
+
+Logs
+
For more detailed logs, you can set the environment variable:
+
+Support
+
For additional help, visit https://docs.penify.dev/ or contact suppo.nosp@m. rt@p.nosp@m. enify.nosp@m. .dev
+
+
+
+
+
+
+
+
diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html
new file mode 100644
index 0000000..084f411
--- /dev/null
+++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html
@@ -0,0 +1,362 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: Penify CLI - Documentation Generation Commands
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This document provides a detailed guide to all permutations and combinations of the docgen command, including extensive information about Git hook commands for automating documentation generation.
+
+Table of Contents
+
+Basic Usage
+Command Options
+Option Combinations
+Git Hook Commands
+Hook Installation
+Hook Customization
+Hook Uninstallation
+
+
+Advanced Use Cases
+Troubleshooting
+
+
+Basic Usage
+
By default, this command:
+Analyzes the current Git diff (changes since last commit)
+Generates documentation for changed files only
+Requires authentication via penify login
+
+
+Command Options
+
+<tt>-l, --location</tt>
+
Specify a target for documentation generation:
+
# Generate documentation for a specific file
+
penify docgen -l path/to/file.py
+
+
# Generate documentation for a specific folder
+
penify docgen -l path/to/folder
+
Without this flag, Penify analyzes only Git-tracked modified files.
+
+Subcommands
+
+<tt>install-hook</tt>
+
Install a Git post-commit hook to automatically generate documentation:
+
penify docgen install-hook
+
+<tt>uninstall-hook</tt>
+
Remove the Git post-commit hook:
+
penify docgen uninstall-hook
+
+Option Combinations
+
+Generate Documentation for Current Git Diff
+
# Basic usage - current Git diff
+
penify docgen
+
+Generate Documentation for a Specific File
+
# Single file documentation
+
penify docgen -l src/main.py
+
+Generate Documentation for a Folder
+
# Folder documentation
+
penify docgen -l src/models/
+
+Install Hook in Current Repository
+
# Install hook in current Git repository
+
penify docgen install-hook
+
+Install Hook in Specific Repository
+
# Install hook in a specific Git repository
+
penify docgen install-hook -l /path/to/repo
+
+Uninstall Hook from Current Repository
+
# Uninstall hook from current Git repository
+
penify docgen uninstall-hook
+
+Uninstall Hook from Specific Repository
+
# Uninstall hook from a specific Git repository
+
penify docgen uninstall-hook -l /path/to/repo
+
+Git Hook Commands
+
Penify provides Git hook commands to automate documentation generation as part of your Git workflow.
+
+Hook Installation
+
+How Hooks Work
+
When you install a Git hook with penify docgen install-hook, Penify:
+
+Creates a post-commit hook script in the .git/hooks directory
+Makes the script executable
+Configures the hook to run penify docgen after each commit
+
+
+Hook Script Content
+
The generated post-commit hook contains:
+
#!/bin/sh
+
# This is a post-commit hook generated by penify.
+
# Automatically generates documentation for changed files after each commit.
+
+
penify docgen -gf /path/to/git/repository -t your_api_token
+
+Installation Location
+
By default, hooks are installed in the current Git repository. You can specify a different location:
+
penify docgen install-hook -l /path/to/repo
+
+Installation Requirements
+
To install hooks, you need:
+A valid Penify API token (login first with penify login)
+Write permissions to the .git/hooks directory
+
+
+Verifying Installation
+
After installation, you can verify that the hook is installed:
+
cat .git/hooks/post-commit
+
+Hook Customization
+
You can customize the post-commit hook after installation:
+
+Modifying Hook Behavior
+
+Edit the .git/hooks/post-commit file
+Add additional options to the penify docgen command
+Add other commands to run after commit
+
+
Example of a customized hook:
+
#!/bin/sh
+
# This is a post-commit hook generated by penify.
+
# Automatically generates documentation for changed files after each commit.
+
+
# Generate documentation
+
penify docgen -gf /path/to/git/repository -t your_api_token
+
+
# Additional custom commands
+
echo "Documentation generation complete!"
+
+Advanced Hook Scenarios
+
Conditional Documentation Generation :
+
#!/bin/sh
+
# Only generate documentation for commits to the main branch
+
BRANCH=$(git rev-parse --abbrev-ref HEAD)
+
if [ "$BRANCH" = "main" ]; then
+
penify docgen -gf /path/to/git/repository -t your_api_token
+
fi
+
Documenting Specific Files/Folders :
+
#!/bin/sh
+
# Only document Python files in the src directory
+
penify docgen -l src/ -gf /path/to/git/repository -t your_api_token
+
+Hook Uninstallation
+
+Standard Uninstallation
+
To remove a hook from the current repository:
+
penify docgen uninstall-hook
+
+Specific Repository Uninstallation
+
To remove a hook from a specific repository:
+
penify docgen uninstall-hook -l /path/to/repo
+
+Manual Hook Removal
+
If needed, you can manually remove the hook:
+
rm .git/hooks/post-commit
+
+Verifying Uninstallation
+
Check that the hook was successfully removed:
+
ls -la .git/hooks/post-commit # Should return "No such file or directory"
+
+Advanced Use Cases
+
+Continuous Integration
+
Run documentation generation in CI pipelines:
+
# In your CI script
+
export PENIFY_API_TOKEN=your_api_token
+
penify docgen -l src/
+
+Batch Documentation
+
Generate documentation for multiple repositories:
+
# Bash script for batch documentation
+
for repo in repo1 repo2 repo3; do
+
cd /path/to/$repo
+
penify docgen -l .
+
done
+
+Custom Git Hook Integration
+
Integrate with other Git hooks:
+
# In .git/hooks/pre-push
+
penify docgen -l src/
+
+Documenting Release Tags
+
Generate documentation when creating a release tag:
+
# Document everything when creating a tag
+
git tag -a v1.0.0
+
penify docgen -l . # Document entire codebase
+
git commit --amend -m "Release v1.0.0 with updated documentation"
+
+Troubleshooting
+
+Common Issues
+
+**"Authentication required"**
+Run penify login before using documentation features
+Check your API token with cat ~/.penify
+
+
+**"Permission denied when installing hook"**
+Check Git repository permissions
+Try running with sudo (if appropriate for your environment)
+Ensure the .git/hooks directory exists
+
+
+**"Hook installed but not running"**
+Check if the hook is executable: ls -la .git/hooks/post-commit
+Make it executable if needed: chmod +x .git/hooks/post-commit
+Check for syntax errors in the hook script
+
+
+**"File or directory not found"**
+Verify the path provided to the -l option
+Ensure you're running the command from the correct directory
+
+
+**"Hook uninstallation failed"**
+Check permissions on the .git/hooks directory
+Try manual removal: rm .git/hooks/post-commit
+
+
+
+
+Debugging
+
For detailed output when running documentation commands:
+
export PENIFY_DEBUG=1
+
penify docgen -l src/
+
+Getting Help
+
For command-specific help:
+
penify docgen --help
+
penify docgen install-hook --help
+
penify docgen uninstall-hook --help
+
+
+
+
+
+
+
+
diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html
new file mode 100644
index 0000000..6213355
--- /dev/null
+++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html
@@ -0,0 +1,238 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: Penify CLI Example Workflows
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This document demonstrates how to use Penify CLI in real-world development workflows to improve your productivity.
+
+Workflow 1: Efficient Git Commits with AI
+
+Setup
+
First, configure your local LLM for offline operation:
+
Configure your JIRA integration for enhanced commit messages:
+
+Daily Workflow
+
+Make your code changes as usual
+When ready to commit, use Penify to generate a smart commit message:
+
+
+Review and confirm the generated commit message
+Git commit and push as usual
+
+
+Benefits
+
+Consistent and descriptive commit messages
+Automatic inclusion of relevant JIRA ticket information
+Time saved from writing detailed commit messages
+
+
+Workflow 2: Documentation Generation Pipeline
+
+Setup
+
Login to Penify to access advanced documentation features:
+
Install the Git hook for automatic documentation generation:
+
penify docgen install-hook
+
+Daily Workflow
+
+Make your code changes as usual
+Commit your changes
+Documentation is automatically generated for changed files
+Review the generated documentation
+
+
+Manual Documentation
+
For specific files or folders:
+
penify docgen -l src/components/authentication
+
+Benefits
+
+Always up-to-date documentation
+Consistent documentation style
+Time saved from writing detailed documentation
+
+
+Workflow 3: Code Review Enhancement
+
+Setup
+
Ensure you're logged into Penify:
+
+Workflow
+
+Before submitting a PR, generate documentation for changed files:
+
+
+Include the generated documentation in your PR
+Reviewers can better understand your changes with the AI-generated explanations
+
+
+Benefits
+
+Improved PR quality
+Faster code reviews
+Better team understanding of code changes
+
+
+Workflow 4: Onboarding New Team Members
+
+For Team Leads
+
Generate comprehensive documentation for the entire codebase:
+
+For New Team Members
+
Generate focused documentation for components you're working on:
+
penify docgen -l src/components/my-feature
+
+Benefits
+
+Faster onboarding
+Better understanding of code structure
+Reduced questions to senior team members
+
+
+Workflow 5: Legacy Code Understanding
+
When working with unfamiliar legacy code:
+
# Document a specific complex file
+
penify docgen -l src/legacy/complex_module.py
+
+
# Document an entire legacy component
+
penify docgen -l src/legacy/old_component
+
+Benefits
+
+Quickly understand complex legacy systems
+Reduce time spent deciphering undocumented code
+Make safer changes to legacy systems
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/menu.js b/docs/html/menu.js
new file mode 100644
index 0000000..818b859
--- /dev/null
+++ b/docs/html/menu.js
@@ -0,0 +1,135 @@
+/*
+ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
+ function makeTree(data,relPath) {
+ var result='';
+ if ('children' in data) {
+ result+='';
+ for (var i in data.children) {
+ var url;
+ var link;
+ link = data.children[i].url;
+ if (link.substring(0,1)=='^') {
+ url = link.substring(1);
+ } else {
+ url = relPath+link;
+ }
+ result+=''+
+ data.children[i].text+' '+
+ makeTree(data.children[i],relPath)+' ';
+ }
+ result+=' ';
+ }
+ return result;
+ }
+ var searchBox;
+ if (searchEnabled) {
+ if (serverSide) {
+ searchBox='';
+ } else {
+ searchBox=''+
+ '
'+
+ ' '+
+ ' '+
+ ' '+
+ '
'+
+ ' '
+ ''
+ '
';
+ }
+ }
+
+ $('#main-nav').before(' '+
+ ''+
+ ' '+
+ 'Toggle main menu visibility '+
+ ' '+
+ '
');
+ $('#main-nav').append(makeTree(menudata,relPath));
+ $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
+ if (searchBox) {
+ $('#main-menu').append(' ');
+ }
+ var $mainMenuState = $('#main-menu-state');
+ var prevWidth = 0;
+ if ($mainMenuState.length) {
+ function initResizableIfExists() {
+ if (typeof initResizable==='function') initResizable();
+ }
+ // animate mobile menu
+ $mainMenuState.change(function(e) {
+ var $menu = $('#main-menu');
+ var options = { duration: 250, step: initResizableIfExists };
+ if (this.checked) {
+ options['complete'] = function() { $menu.css('display', 'block') };
+ $menu.hide().slideDown(options);
+ } else {
+ options['complete'] = function() { $menu.css('display', 'none') };
+ $menu.show().slideUp(options);
+ }
+ });
+ // set default menu visibility
+ function resetState() {
+ var $menu = $('#main-menu');
+ var $mainMenuState = $('#main-menu-state');
+ var newWidth = $(window).outerWidth();
+ if (newWidth!=prevWidth) {
+ if ($(window).outerWidth()<768) {
+ $mainMenuState.prop('checked',false); $menu.hide();
+ $('#searchBoxPos1').html(searchBox);
+ $('#searchBoxPos2').hide();
+ } else {
+ $menu.show();
+ $('#searchBoxPos1').empty();
+ $('#searchBoxPos2').html(searchBox);
+ $('#searchBoxPos2').show();
+ }
+ prevWidth = newWidth;
+ }
+ }
+ $(window).ready(function() { resetState(); initResizableIfExists(); });
+ $(window).resize(resetState);
+ }
+ $('#main-menu').smartmenus();
+}
+/* @license-end */
diff --git a/docs/html/menudata.js b/docs/html/menudata.js
new file mode 100644
index 0000000..314c51a
--- /dev/null
+++ b/docs/html/menudata.js
@@ -0,0 +1,117 @@
+/*
+ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend The above is the entire license notice for the JavaScript code in this file
+*/
+var menudata={children:[
+{text:"Main Page",url:"index.html"},
+{text:"Related Pages",url:"pages.html"},
+{text:"Namespaces",url:"namespaces.html",children:[
+{text:"Namespace List",url:"namespaces.html"},
+{text:"Namespace Members",url:"namespacemembers.html",children:[
+{text:"All",url:"namespacemembers.html",children:[
+{text:"a",url:"namespacemembers.html#index_a"},
+{text:"c",url:"namespacemembers.html#index_c"},
+{text:"d",url:"namespacemembers.html#index_d"},
+{text:"e",url:"namespacemembers.html#index_e"},
+{text:"f",url:"namespacemembers.html#index_f"},
+{text:"g",url:"namespacemembers.html#index_g"},
+{text:"h",url:"namespacemembers.html#index_h"},
+{text:"i",url:"namespacemembers.html#index_i"},
+{text:"j",url:"namespacemembers.html#index_j"},
+{text:"l",url:"namespacemembers.html#index_l"},
+{text:"m",url:"namespacemembers.html#index_m"},
+{text:"n",url:"namespacemembers.html#index_n"},
+{text:"p",url:"namespacemembers.html#index_p"},
+{text:"r",url:"namespacemembers.html#index_r"},
+{text:"s",url:"namespacemembers.html#index_s"},
+{text:"t",url:"namespacemembers.html#index_t"},
+{text:"u",url:"namespacemembers.html#index_u"},
+{text:"v",url:"namespacemembers.html#index_v"},
+{text:"w",url:"namespacemembers.html#index_w"}]},
+{text:"Functions",url:"namespacemembers_func.html",children:[
+{text:"c",url:"namespacemembers_func.html#index_c"},
+{text:"f",url:"namespacemembers_func.html#index_f"},
+{text:"g",url:"namespacemembers_func.html#index_g"},
+{text:"h",url:"namespacemembers_func.html#index_h"},
+{text:"i",url:"namespacemembers_func.html#index_i"},
+{text:"l",url:"namespacemembers_func.html#index_l"},
+{text:"m",url:"namespacemembers_func.html#index_m"},
+{text:"p",url:"namespacemembers_func.html#index_p"},
+{text:"r",url:"namespacemembers_func.html#index_r"},
+{text:"s",url:"namespacemembers_func.html#index_s"},
+{text:"t",url:"namespacemembers_func.html#index_t"},
+{text:"u",url:"namespacemembers_func.html#index_u"}]},
+{text:"Variables",url:"namespacemembers_vars.html",children:[
+{text:"a",url:"namespacemembers_vars.html#index_a"},
+{text:"c",url:"namespacemembers_vars.html#index_c"},
+{text:"d",url:"namespacemembers_vars.html#index_d"},
+{text:"e",url:"namespacemembers_vars.html#index_e"},
+{text:"h",url:"namespacemembers_vars.html#index_h"},
+{text:"i",url:"namespacemembers_vars.html#index_i"},
+{text:"j",url:"namespacemembers_vars.html#index_j"},
+{text:"l",url:"namespacemembers_vars.html#index_l"},
+{text:"n",url:"namespacemembers_vars.html#index_n"},
+{text:"p",url:"namespacemembers_vars.html#index_p"},
+{text:"s",url:"namespacemembers_vars.html#index_s"},
+{text:"u",url:"namespacemembers_vars.html#index_u"},
+{text:"v",url:"namespacemembers_vars.html#index_v"},
+{text:"w",url:"namespacemembers_vars.html#index_w"}]}]}]},
+{text:"Classes",url:"annotated.html",children:[
+{text:"Class List",url:"annotated.html"},
+{text:"Class Index",url:"classes.html"},
+{text:"Class Hierarchy",url:"inherits.html"},
+{text:"Class Members",url:"functions.html",children:[
+{text:"All",url:"functions.html",children:[
+{text:"_",url:"functions.html#index__5F"},
+{text:"a",url:"functions.html#index_a"},
+{text:"b",url:"functions.html#index_b"},
+{text:"d",url:"functions.html#index_d"},
+{text:"e",url:"functions.html#index_e"},
+{text:"f",url:"functions.html#index_f"},
+{text:"g",url:"functions.html#index_g"},
+{text:"i",url:"functions.html#index_i"},
+{text:"j",url:"functions.html#index_j"},
+{text:"l",url:"functions.html#index_l"},
+{text:"m",url:"functions.html#index_m"},
+{text:"p",url:"functions.html#index_p"},
+{text:"r",url:"functions.html#index_r"},
+{text:"s",url:"functions.html#index_s"},
+{text:"t",url:"functions.html#index_t"},
+{text:"u",url:"functions.html#index_u"}]},
+{text:"Functions",url:"functions_func.html",children:[
+{text:"_",url:"functions_func.html#index__5F"},
+{text:"a",url:"functions_func.html#index_a"},
+{text:"e",url:"functions_func.html#index_e"},
+{text:"f",url:"functions_func.html#index_f"},
+{text:"g",url:"functions_func.html#index_g"},
+{text:"i",url:"functions_func.html#index_i"},
+{text:"l",url:"functions_func.html#index_l"},
+{text:"m",url:"functions_func.html#index_m"},
+{text:"p",url:"functions_func.html#index_p"},
+{text:"r",url:"functions_func.html#index_r"},
+{text:"s",url:"functions_func.html#index_s"},
+{text:"t",url:"functions_func.html#index_t"},
+{text:"u",url:"functions_func.html#index_u"}]},
+{text:"Variables",url:"functions_vars.html"}]}]},
+{text:"Files",url:"files.html",children:[
+{text:"File List",url:"files.html"}]}]}
diff --git a/docs/html/namespacemembers.html b/docs/html/namespacemembers.html
new file mode 100644
index 0000000..83a5f6e
--- /dev/null
+++ b/docs/html/namespacemembers.html
@@ -0,0 +1,288 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: Namespace Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all namespace members with links to the namespace documentation for each member:
+
+
- a -
+
+
+
- c -
+
+
+
- d -
+
+
+
- e -
+
+
+
- f -
+
+
+
- g -
+
+
+
- h -
+
+
+
- i -
+
+
+
- j -
+
+
+
- l -
+
+
+
- m -
+
+
+
- n -
+
+
+
- p -
+
+
+
- r -
+
+
+
- s -
+
+
+
- t -
+
+
+
- u -
+
+
+
- v -
+
+
+
- w -
+
+
+
+
+
+
+
diff --git a/docs/html/namespacemembers_func.html b/docs/html/namespacemembers_func.html
new file mode 100644
index 0000000..a19f1d3
--- /dev/null
+++ b/docs/html/namespacemembers_func.html
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: Namespace Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- c -
+
+
+
- f -
+
+
+
- g -
+
+
+
- h -
+
+
+
- i -
+
+
+
- l -
+
+
+
- m -
+
+
+
- p -
+
+
+
- r -
+
+
+
- s -
+
+
+
- t -
+
+
+
- u -
+
+
+
+
+
+
+
diff --git a/docs/html/namespacemembers_vars.html b/docs/html/namespacemembers_vars.html
new file mode 100644
index 0000000..fda04b3
--- /dev/null
+++ b/docs/html/namespacemembers_vars.html
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: Namespace Members
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- a -
+
+
+
- c -
+
+
+
- d -
+
+
+
- e -
+
+
+
- h -
+
+
+
- i -
+
+
+
- j -
+
+
+
- l -
+
+
+
- n -
+
+
+
- p -
+
+
+
- s -
+
+
+
- u -
+
+
+
- v -
+
+
+
- w -
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook.html b/docs/html/namespacepenify__hook.html
new file mode 100644
index 0000000..fc76960
--- /dev/null
+++ b/docs/html/namespacepenify__hook.html
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook.js b/docs/html/namespacepenify__hook.js
new file mode 100644
index 0000000..3344578
--- /dev/null
+++ b/docs/html/namespacepenify__hook.js
@@ -0,0 +1,56 @@
+var namespacepenify__hook =
+[
+ [ "api_client", "namespacepenify__hook_1_1api__client.html", "namespacepenify__hook_1_1api__client" ],
+ [ "base_analyzer", "namespacepenify__hook_1_1base__analyzer.html", "namespacepenify__hook_1_1base__analyzer" ],
+ [ "commands", "namespacepenify__hook_1_1commands.html", "namespacepenify__hook_1_1commands" ],
+ [ "commit_analyzer", "namespacepenify__hook_1_1commit__analyzer.html", "namespacepenify__hook_1_1commit__analyzer" ],
+ [ "config_command", "namespacepenify__hook_1_1config__command.html", [
+ [ "handle_config", "namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde", null ],
+ [ "setup_config_parser", "namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e", null ]
+ ] ],
+ [ "constants", "namespacepenify__hook_1_1constants.html", [
+ [ "API_URL", "namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0", null ],
+ [ "DASHBOARD_URL", "namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0", null ]
+ ] ],
+ [ "file_analyzer", "namespacepenify__hook_1_1file__analyzer.html", "namespacepenify__hook_1_1file__analyzer" ],
+ [ "folder_analyzer", "namespacepenify__hook_1_1folder__analyzer.html", "namespacepenify__hook_1_1folder__analyzer" ],
+ [ "git_analyzer", "namespacepenify__hook_1_1git__analyzer.html", "namespacepenify__hook_1_1git__analyzer" ],
+ [ "jira_client", "namespacepenify__hook_1_1jira__client.html", "namespacepenify__hook_1_1jira__client" ],
+ [ "llm_client", "namespacepenify__hook_1_1llm__client.html", "namespacepenify__hook_1_1llm__client" ],
+ [ "login_command", "namespacepenify__hook_1_1login__command.html", [
+ [ "handle_login", "namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd", null ],
+ [ "setup_login_parser", "namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a", null ]
+ ] ],
+ [ "main", "namespacepenify__hook_1_1main.html", [
+ [ "main", "namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f", null ]
+ ] ],
+ [ "ui_utils", "namespacepenify__hook_1_1ui__utils.html", [
+ [ "create_progress_bar", "namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c", null ],
+ [ "create_stage_progress_bar", "namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef", null ],
+ [ "format_error", "namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e", null ],
+ [ "format_file_path", "namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4", null ],
+ [ "format_highlight", "namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452", null ],
+ [ "format_info", "namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6", null ],
+ [ "format_success", "namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776", null ],
+ [ "format_warning", "namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2", null ],
+ [ "print_error", "namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f", null ],
+ [ "print_info", "namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44", null ],
+ [ "print_processing", "namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115", null ],
+ [ "print_status", "namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c", null ],
+ [ "print_success", "namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a", null ],
+ [ "print_warning", "namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa", null ],
+ [ "update_stage", "namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d", null ],
+ [ "autoreset", "namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71", null ],
+ [ "ERROR_COLOR", "namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe", null ],
+ [ "ERROR_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0", null ],
+ [ "HIGHLIGHT_COLOR", "namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc", null ],
+ [ "INFO_COLOR", "namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c", null ],
+ [ "NEUTRAL_COLOR", "namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5", null ],
+ [ "PROCESSING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756", null ],
+ [ "SUCCESS_COLOR", "namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4", null ],
+ [ "SUCCESS_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e", null ],
+ [ "WARNING_COLOR", "namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff", null ],
+ [ "WARNING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16", null ]
+ ] ],
+ [ "utils", "namespacepenify__hook_1_1utils.html", "namespacepenify__hook_1_1utils" ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1api__client.html b/docs/html/namespacepenify__hook_1_1api__client.html
new file mode 100644
index 0000000..b56edff
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1api__client.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.api_client Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1api__client.js b/docs/html/namespacepenify__hook_1_1api__client.js
new file mode 100644
index 0000000..fb9b017
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1api__client.js
@@ -0,0 +1,4 @@
+var namespacepenify__hook_1_1api__client =
+[
+ [ "APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", "classpenify__hook_1_1api__client_1_1APIClient" ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1base__analyzer.html b/docs/html/namespacepenify__hook_1_1base__analyzer.html
new file mode 100644
index 0000000..a838145
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1base__analyzer.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.base_analyzer Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1base__analyzer.js b/docs/html/namespacepenify__hook_1_1base__analyzer.js
new file mode 100644
index 0000000..6701f69
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1base__analyzer.js
@@ -0,0 +1,4 @@
+var namespacepenify__hook_1_1base__analyzer =
+[
+ [ "BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer" ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands.html b/docs/html/namespacepenify__hook_1_1commands.html
new file mode 100644
index 0000000..45f2e1d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands.html
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.commands Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands.js b/docs/html/namespacepenify__hook_1_1commands.js
new file mode 100644
index 0000000..28e70f5
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands.js
@@ -0,0 +1,38 @@
+var namespacepenify__hook_1_1commands =
+[
+ [ "auth_commands", "namespacepenify__hook_1_1commands_1_1auth__commands.html", [
+ [ "login", "namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655", null ],
+ [ "save_credentials", "namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24", null ]
+ ] ],
+ [ "commit_commands", "namespacepenify__hook_1_1commands_1_1commit__commands.html", [
+ [ "commit_code", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a", null ],
+ [ "handle_commit", "namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23", null ],
+ [ "setup_commit_parser", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c", null ]
+ ] ],
+ [ "config_commands", "namespacepenify__hook_1_1commands_1_1config__commands.html", [
+ [ "config_jira_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06", null ],
+ [ "config_llm_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c", null ],
+ [ "get_env_var_or_default", "namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87", null ],
+ [ "get_jira_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2", null ],
+ [ "get_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0", null ],
+ [ "get_penify_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20", null ],
+ [ "get_token", "namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812", null ],
+ [ "load_env_files", "namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae", null ],
+ [ "save_jira_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4", null ],
+ [ "save_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4", null ],
+ [ "DOTENV_AVAILABLE", "namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67", null ],
+ [ "path", "namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880", null ]
+ ] ],
+ [ "doc_commands", "namespacepenify__hook_1_1commands_1_1doc__commands.html", [
+ [ "generate_doc", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25", null ],
+ [ "handle_docgen", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704", null ],
+ [ "setup_docgen_parser", "namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0", null ],
+ [ "docgen_description", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948", null ]
+ ] ],
+ [ "hook_commands", "namespacepenify__hook_1_1commands_1_1hook__commands.html", [
+ [ "install_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2", null ],
+ [ "uninstall_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d", null ],
+ [ "HOOK_FILENAME", "namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1", null ],
+ [ "HOOK_TEMPLATE", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7", null ]
+ ] ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html
new file mode 100644
index 0000000..b548e89
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html
@@ -0,0 +1,228 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.commands.auth_commands Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ login()
+
+
+
+
+
+ def penify_hook.commands.auth_commands.login
+ (
+
+ api_url ,
+
+
+
+
+
+ dashboard_url
+
+
+
+ )
+
+
+
+
+
Open the login page in a web browser and capture the token via redirect.
+
+
+
+
+
+
+
+
◆ save_credentials()
+
+
+
+
+
+ def penify_hook.commands.auth_commands.save_credentials
+ (
+
+ api_key )
+
+
+
+
+
Save the API key in a priority-based manner.
+
+This function attempts to save the API key in two locations, based on priority:
+1. In a `.env` file located in the root of the Git repository if one is found.
+2. In a global `.penify` file located in the user's home directory as a
+fallback. The function first tries to locate the Git repository using
+`recursive_search_git_folder`. If a Git repository is found, it reads the
+existing `.env` file (if present), updates or adds the API key under the key
+`PENIFY_API_TOKEN`, and writes the updated content back. If any error occurs
+during this process, it falls back to saving the credentials in the global
+`.penify` file. The function handles exceptions and prints appropriate error
+messages.
+
+Args:
+ api_key (str): The API key to save.
+
+Returns:
+ bool: True if the API key is saved successfully, False otherwise.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map
new file mode 100644
index 0000000..966bdbb
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5
new file mode 100644
index 0000000..3843ca4
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5
@@ -0,0 +1 @@
+8ad325585e8efe43cb16f6c7070d7d0a
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg
new file mode 100644
index 0000000..50d45ea
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.auth_commands.login
+
+
+
+Node1
+
+
+penify_hook.commands.auth
+_commands.login
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.auth
+_commands.save_credentials
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg
new file mode 100644
index 0000000..964fd40
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+penify_hook.commands.auth_commands.login
+
+
+
+Node1
+
+
+penify_hook.commands.auth
+_commands.login
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.auth
+_commands.save_credentials
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map
new file mode 100644
index 0000000..88a6ff8
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5
new file mode 100644
index 0000000..a7db012
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5
@@ -0,0 +1 @@
+65e495614449516908c997067ca3d2d2
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg
new file mode 100644
index 0000000..028514f
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg
@@ -0,0 +1,148 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.auth_commands.login
+
+
+
+Node1
+
+
+penify_hook.commands.auth
+_commands.login
+
+
+
+
+
+Node2
+
+
+penify_hook.login_command.handle
+_login
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg
new file mode 100644
index 0000000..a07bb01
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+penify_hook.commands.auth_commands.login
+
+
+
+Node1
+
+
+penify_hook.commands.auth
+_commands.login
+
+
+
+
+
+Node2
+
+
+penify_hook.login_command.handle
+_login
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map
new file mode 100644
index 0000000..5c0b505
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5
new file mode 100644
index 0000000..17fadc1
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5
@@ -0,0 +1 @@
+31a51591f0a8f9ef897c4a08daac5829
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg
new file mode 100644
index 0000000..e40984b
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+penify_hook.commands.auth_commands.save_credentials
+
+
+
+Node1
+
+
+penify_hook.commands.auth
+_commands.save_credentials
+
+
+
+
+
+Node2
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map
new file mode 100644
index 0000000..c6d1bd8
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5
new file mode 100644
index 0000000..051c10c
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5
@@ -0,0 +1 @@
+ec7d7c899a70e1c68057353448e9a6d9
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg
new file mode 100644
index 0000000..7d1c3a1
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg
@@ -0,0 +1,164 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.auth_commands.save_credentials
+
+
+
+Node1
+
+
+penify_hook.commands.auth
+_commands.save_credentials
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.auth
+_commands.login
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.login_command.handle
+_login
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg
new file mode 100644
index 0000000..8ab520a
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+penify_hook.commands.auth_commands.save_credentials
+
+
+
+Node1
+
+
+penify_hook.commands.auth
+_commands.save_credentials
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.auth
+_commands.login
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.login_command.handle
+_login
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html
new file mode 100644
index 0000000..f486e07
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html
@@ -0,0 +1,310 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.commands.commit_commands Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def commit_code (api_url, token, message, open_terminal, generate_description, llm_model=None, llm_api_base=None, llm_api_key=None, jira_url=None, jira_user=None, jira_api_token=None)
+
+def setup_commit_parser (parser)
+
+def handle_commit (args)
+
+
+
+
+
◆ commit_code()
+
+
+
+
+
+ def penify_hook.commands.commit_commands.commit_code
+ (
+
+ api_url ,
+
+
+
+
+
+ token ,
+
+
+
+
+
+ message ,
+
+
+
+
+
+ open_terminal ,
+
+
+
+
+
+ generate_description ,
+
+
+
+
+
+ llm_model = None,
+
+
+
+
+
+ llm_api_base = None,
+
+
+
+
+
+ llm_api_key = None,
+
+
+
+
+
+ jira_url = None,
+
+
+
+
+
+ jira_user = None,
+
+
+
+
+
+ jira_api_token = None
+
+
+
+ )
+
+
+
+
+
Enhance Git commits with AI-powered commit messages.
+
+This function allows for the generation of enhanced commit messages using
+natural language processing models and optionally integrates with JIRA for
+additional context. It processes the current Git folder to find relevant files
+and generates a detailed commit message based on the provided parameters.
+
+Args:
+ api_url (str): URL of the API endpoint.
+ token (str): Authentication token for the API.
+ message (str): Initial commit message provided by the user.
+ open_terminal (bool): Whether to open the terminal after committing.
+ generate_description (bool): Whether to generate a detailed description in the commit message.
+ llm_model (str?): The language model to use for generating the commit message. Defaults to None.
+ llm_api_base (str?): Base URL of the LLM API. Defaults to None.
+ llm_api_key (str?): API key for accessing the LLM service. Defaults to None.
+ jira_url (str?): URL of the JIRA instance. Defaults to None.
+ jira_user (str?): Username for authenticating with JIRA. Defaults to None.
+ jira_api_token (str?): API token for accessing JIRA. Defaults to None.
+
+
+
+
+
+
+
+
+
◆ handle_commit()
+
+
+
+
+
+ def penify_hook.commands.commit_commands.handle_commit
+ (
+
+ args )
+
+
+
+
+
Handle commit functionality by processing arguments and invoking the
+appropriate commands.
+
+
+
+
+
+
+
+
◆ setup_commit_parser()
+
+
+
+
+
+ def penify_hook.commands.commit_commands.setup_commit_parser
+ (
+
+ parser )
+
+
+
+
+
Sets up an argument parser for generating smart commit messages.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map
new file mode 100644
index 0000000..9d410b4
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5
new file mode 100644
index 0000000..f0df322
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5
@@ -0,0 +1 @@
+ebbb356587ab923660dadd713f529935
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg
new file mode 100644
index 0000000..1a0e3d8
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.commit_commands.commit_code
+
+
+
+Node1
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.print
+_error
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node4
+
+
+penify_hook.ui_utils.print_info
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node6
+
+
+penify_hook.ui_utils.print
+_warning
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node3
+
+
+penify_hook.ui_utils.format
+_error
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node5
+
+
+penify_hook.ui_utils.format_info
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node7
+
+
+penify_hook.ui_utils.format
+_warning
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node8->Node8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg
new file mode 100644
index 0000000..602876a
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+penify_hook.commands.commit_commands.commit_code
+
+
+
+Node1
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.print
+_error
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node4
+
+
+penify_hook.ui_utils.print_info
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node6
+
+
+penify_hook.ui_utils.print
+_warning
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node3
+
+
+penify_hook.ui_utils.format
+_error
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node5
+
+
+penify_hook.ui_utils.format_info
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node7
+
+
+penify_hook.ui_utils.format
+_warning
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node8->Node8
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map
new file mode 100644
index 0000000..45d80f3
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5
new file mode 100644
index 0000000..30b2f36
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5
@@ -0,0 +1 @@
+b42af33551c96c0ccabd26bf5dac7901
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg
new file mode 100644
index 0000000..ec9d033
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.commit_commands.commit_code
+
+
+
+Node1
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node5
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node1->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg
new file mode 100644
index 0000000..c3b9bf0
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+penify_hook.commands.commit_commands.commit_code
+
+
+
+Node1
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node5
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node1->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map
new file mode 100644
index 0000000..f16a071
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5
new file mode 100644
index 0000000..c49ca59
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5
@@ -0,0 +1 @@
+9d31c6bce57180d0019639c06f0a64c6
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg
new file mode 100644
index 0000000..e254716
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+penify_hook.commands.commit_commands.setup_commit_parser
+
+
+
+Node1
+
+
+penify_hook.commands.commit
+_commands.setup_commit_parser
+
+
+
+
+
+Node2
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_setup_commit_parser
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map
new file mode 100644
index 0000000..2910728
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5
new file mode 100644
index 0000000..9c1af92
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5
@@ -0,0 +1 @@
+76b990698c4e374b742a1a611bfd524b
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg
new file mode 100644
index 0000000..7ad44ff
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg
@@ -0,0 +1,388 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.commit_commands.handle_commit
+
+
+
+Node1
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node5
+
+
+penify_hook.ui_utils.print_info
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node13
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node1->Node13
+
+
+
+
+
+Node14
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node1->Node14
+
+
+
+
+
+Node3
+
+
+penify_hook.ui_utils.print
+_error
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+Node7
+
+
+penify_hook.ui_utils.print
+_warning
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node9
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.ui_utils.format
+_error
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node6
+
+
+penify_hook.ui_utils.format_info
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.ui_utils.format
+_warning
+
+
+
+
+
+Node7->Node8
+
+
+
+
+
+Node9->Node9
+
+
+
+
+
+Node11
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node10->Node11
+
+
+
+
+
+Node12
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node10->Node12
+
+
+
+
+
+Node12->Node9
+
+
+
+
+
+Node12->Node12
+
+
+
+
+
+Node13->Node11
+
+
+
+
+
+Node13->Node12
+
+
+
+
+
+Node14->Node11
+
+
+
+
+
+Node14->Node12
+
+
+
+
+
+Node15
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node14->Node15
+
+
+
+
+
+Node15->Node9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg
new file mode 100644
index 0000000..bd1b9a1
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+penify_hook.commands.commit_commands.handle_commit
+
+
+
+Node1
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node5
+
+
+penify_hook.ui_utils.print_info
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node13
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node1->Node13
+
+
+
+
+
+Node14
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node1->Node14
+
+
+
+
+
+Node3
+
+
+penify_hook.ui_utils.print
+_error
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+Node7
+
+
+penify_hook.ui_utils.print
+_warning
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node9
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.ui_utils.format
+_error
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node6
+
+
+penify_hook.ui_utils.format_info
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.ui_utils.format
+_warning
+
+
+
+
+
+Node7->Node8
+
+
+
+
+
+Node9->Node9
+
+
+
+
+
+Node11
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node10->Node11
+
+
+
+
+
+Node12
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node10->Node12
+
+
+
+
+
+Node12->Node9
+
+
+
+
+
+Node12->Node12
+
+
+
+
+
+Node13->Node11
+
+
+
+
+
+Node13->Node12
+
+
+
+
+
+Node14->Node11
+
+
+
+
+
+Node14->Node12
+
+
+
+
+
+Node15
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node14->Node15
+
+
+
+
+
+Node15->Node9
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map
new file mode 100644
index 0000000..d25f3e9
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5
new file mode 100644
index 0000000..47a6cde
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5
@@ -0,0 +1 @@
+a8800179f1f560b476cc721ea33d08f7
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg
new file mode 100644
index 0000000..c57863f
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+penify_hook.commands.commit_commands.handle_commit
+
+
+
+Node1
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html
new file mode 100644
index 0000000..2927d1d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html
@@ -0,0 +1,566 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.commands.config_commands Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ config_jira_web()
+
+
+
+
+
+ def penify_hook.commands.config_commands.config_jira_web
+ (
+ )
+
+
+
+
+
Starts a web server for configuring JIRA settings.
+
+
+
+
+
+
+
+
◆ config_llm_web()
+
+
+
+
+
+ def penify_hook.commands.config_commands.config_llm_web
+ (
+ )
+
+
+
+
+
Starts an HTTP server for configuring LLM settings via a web interface.
+
+
+
+
+
+
◆ get_env_var_or_default()
+
+
+
+
+
+ Any penify_hook.commands.config_commands.get_env_var_or_default
+ (
+ str
+ env_var ,
+
+
+
+
+ Any
+ default = None
+
+
+
+ )
+
+
+
+
+
Get environment variable or return default value.
+
+
+
+
+
+
◆ get_jira_config()
+
+
+
+
+
+ Dict[str, str] penify_hook.commands.config_commands.get_jira_config
+ (
+ )
+
+
+
+
+
Retrieve JIRA configuration from environment variables.
+
+
+
+
+
+
+
+
◆ get_llm_config()
+
+
+
+
+
+ Dict[str, str] penify_hook.commands.config_commands.get_llm_config
+ (
+ )
+
+
+
+
+
Retrieve LLM configuration from environment variables.
+
+
+
+
+
+
+
+
◆ get_penify_config()
+
+
+
+
+
+ Path penify_hook.commands.config_commands.get_penify_config
+ (
+ )
+
+
+
+
+
Returns the path to the `config.json` file within the `.penify` directory,
+creating it if necessary.
+
+
+
+
+
+
+
+
◆ get_token()
+
+
+
+
+
+ Optional[str] penify_hook.commands.config_commands.get_token
+ (
+ )
+
+
+
+
+
Retrieves an API token using a prioritized method.
+
+This function first attempts to load environment variables from all `.env`
+files and checks if the `PENIFY_API_TOKEN` environment variable is set. If
+found, it returns the token. If not, it looks for the API key in a
+configuration file named 'api_keys'. If both methods fail, it returns None.
+
+Returns:
+ str or None: The API token if found, otherwise None.
+
+
+
+
+
+
+
+
+
◆ load_env_files()
+
+
+
+
+
+ None penify_hook.commands.config_commands.load_env_files
+ (
+ )
+
+
+
+
+
Load environment variables from .env files in various locations with proper
+priority.
+
+This function loads environment variables from .env files located in different
+directories, prioritizing the current directory over the Git repo root and the
+user home directory. The loading process ensures that later files override
+earlier ones.
+
+
+
+
+
+
+
+
+
◆ save_jira_config()
+
+
+
+
+
+ def penify_hook.commands.config_commands.save_jira_config
+ (
+
+ url ,
+
+
+
+
+
+ username ,
+
+
+
+
+
+ api_token
+
+
+
+ )
+
+
+
+
+
Save JIRA configuration settings to a .env file.
+
+This function saves JIRA configuration following these steps: 1. Determine the
+target .env file location based on whether the current directory is inside a
+Git repository. 2. If inside a Git repo, use the Git repo root's .env file;
+otherwise, use the user home directory's .env file. 3. Read the existing
+content of the .env file (if it exists) to preserve other settings. 4. Update
+the .env content with the new JIRA configuration. 5. Write the updated content
+back to the .env file. 6. Optionally, reload environment variables to make
+changes immediately available.
+
+Args:
+ url (str): The JIRA URL to be saved in the .env file.
+ username (str): The JIRA username to be saved in the .env file.
+ api_token (str): The JIRA API token to be saved in the .env file.
+
+Returns:
+ bool: True if the configuration was successfully saved, False otherwise.
+
+
+
+
+
+
+
+
+
◆ save_llm_config()
+
+
+
+
+
+ def penify_hook.commands.config_commands.save_llm_config
+ (
+
+ model ,
+
+
+
+
+
+ api_base ,
+
+
+
+
+
+ api_key
+
+
+
+ )
+
+
+
+
+
Save LLM configuration settings to an .env file.
+
+This function saves the LLM configuration following a specific priority: 1. Git
+repo root .env (if inside a git repo) 2. User home directory .env It handles
+the detection of the Git repo root, reads the existing .env content, updates it
+with the new LLM configuration, and writes it back to the file. It also reloads
+the environment variables to make changes immediately available.
+
+Args:
+ model (str): The name of the language model.
+ api_base (str): The base URL for the API.
+ api_key (str): The API key for authentication.
+
+Returns:
+ bool: True if the configuration is saved successfully, False otherwise.
+
+
+
+
+
+
+
+
+
+
◆ DOTENV_AVAILABLE
+
+
+
+
+
+ bool penify_hook.commands.config_commands.DOTENV_AVAILABLE = True
+
+
+
+
+
+
+
+
◆ path
+
+
+
+
+
+ penify_hook.commands.config_commands.path
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map
new file mode 100644
index 0000000..3d04ded
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5
new file mode 100644
index 0000000..8a855e7
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5
@@ -0,0 +1 @@
+168858f3e9d4759f99db4c52c229e797
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg
new file mode 100644
index 0000000..fb362e4
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_jira_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg
new file mode 100644
index 0000000..3cc35c6
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_jira_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map
new file mode 100644
index 0000000..31799e7
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5
new file mode 100644
index 0000000..3595ee0
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5
@@ -0,0 +1 @@
+543187d5c63c1c460ff6dd5d57c6a646
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg
new file mode 100644
index 0000000..b03c3d5
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg
@@ -0,0 +1,237 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_jira_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node8
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_jira_config_exists
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node3
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node5
+
+
+tests.test_web_config.Test
+WebConfig.test_config_jira
+_web_server_setup
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node6->Node4
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg
new file mode 100644
index 0000000..9f5c40f
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_jira_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node8
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_jira_config_exists
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node3
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node5
+
+
+tests.test_web_config.Test
+WebConfig.test_config_jira
+_web_server_setup
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node6->Node4
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map
new file mode 100644
index 0000000..6bb067d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5
new file mode 100644
index 0000000..fd6eb21
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5
@@ -0,0 +1 @@
+91a6c2c6a25f3c8c1d38cd6f5f5c3f25
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg
new file mode 100644
index 0000000..ece71b8
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.config_llm_web
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.config_llm_web
+
+
+
+
+
+Node2
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node4
+
+
+tests.test_web_config.Test
+WebConfig.test_config_llm
+_web_server_setup
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg
new file mode 100644
index 0000000..3ab7894
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.config_llm_web
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.config_llm_web
+
+
+
+
+
+Node2
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node4
+
+
+tests.test_web_config.Test
+WebConfig.test_config_llm
+_web_server_setup
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map
new file mode 100644
index 0000000..988f965
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5
new file mode 100644
index 0000000..f9c067a
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5
@@ -0,0 +1 @@
+78a315f2a9f5ef12496dc5b4a1f2f578
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg
new file mode 100644
index 0000000..af8bba2
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg
@@ -0,0 +1,486 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_env_var_or_default
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node14
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node1->Node14
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node7
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node9
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_jira_config_exists
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node6
+
+
+tests.test_web_config.Test
+WebConfig.test_config_jira
+_web_server_setup
+
+
+
+
+
+Node3->Node6
+
+
+
+
+
+Node5
+
+
+penify_hook.main.main
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
+Node7->Node5
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node7->Node8
+
+
+
+
+
+Node10->Node7
+
+
+
+
+
+Node11
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_empty
+
+
+
+
+
+Node10->Node11
+
+
+
+
+
+Node12
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_exists
+
+
+
+
+
+Node10->Node12
+
+
+
+
+
+Node13
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_invalid_json
+
+
+
+
+
+Node10->Node13
+
+
+
+
+
+Node14->Node7
+
+
+
+
+
+Node15
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node14->Node15
+
+
+
+
+
+Node20
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_config
+
+
+
+
+
+Node14->Node20
+
+
+
+
+
+Node21
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_env
+
+
+
+
+
+Node14->Node21
+
+
+
+
+
+Node22
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_not_found
+
+
+
+
+
+Node14->Node22
+
+
+
+
+
+Node15->Node5
+
+
+
+
+
+Node16
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node15->Node16
+
+
+
+
+
+Node17
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node15->Node17
+
+
+
+
+
+Node18
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node15->Node18
+
+
+
+
+
+Node19
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node15->Node19
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg
new file mode 100644
index 0000000..5dd38f9
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg
@@ -0,0 +1,398 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_env_var_or_default
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node14
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node1->Node14
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node7
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node9
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_jira_config_exists
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node6
+
+
+tests.test_web_config.Test
+WebConfig.test_config_jira
+_web_server_setup
+
+
+
+
+
+Node3->Node6
+
+
+
+
+
+Node5
+
+
+penify_hook.main.main
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
+Node7->Node5
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node7->Node8
+
+
+
+
+
+Node10->Node7
+
+
+
+
+
+Node11
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_empty
+
+
+
+
+
+Node10->Node11
+
+
+
+
+
+Node12
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_exists
+
+
+
+
+
+Node10->Node12
+
+
+
+
+
+Node13
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_invalid_json
+
+
+
+
+
+Node10->Node13
+
+
+
+
+
+Node14->Node7
+
+
+
+
+
+Node15
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node14->Node15
+
+
+
+
+
+Node20
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_config
+
+
+
+
+
+Node14->Node20
+
+
+
+
+
+Node21
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_env
+
+
+
+
+
+Node14->Node21
+
+
+
+
+
+Node22
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_not_found
+
+
+
+
+
+Node14->Node22
+
+
+
+
+
+Node15->Node5
+
+
+
+
+
+Node16
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node15->Node16
+
+
+
+
+
+Node17
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node15->Node17
+
+
+
+
+
+Node18
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node15->Node18
+
+
+
+
+
+Node19
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node15->Node19
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map
new file mode 100644
index 0000000..523e618
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5
new file mode 100644
index 0000000..1d6bd9c
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5
@@ -0,0 +1 @@
+1312bc7ffa0a3c4b3d914591e46647ea
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg
new file mode 100644
index 0000000..6772dc2
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.save_llm_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.save_llm_config
+
+
+
+
+
+Node2
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map
new file mode 100644
index 0000000..0a1bd6e
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5
new file mode 100644
index 0000000..4427799
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5
@@ -0,0 +1 @@
+64e3e5d1614b987e9beaa7b1002e49e6
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg
new file mode 100644
index 0000000..7653ae5
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.save_llm_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.save_llm_config
+
+
+
+
+
+Node2
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node4
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_save_llm_config_failure
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_save_llm_config_success
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg
new file mode 100644
index 0000000..4779598
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.save_llm_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.save_llm_config
+
+
+
+
+
+Node2
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node4
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_save_llm_config_failure
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_save_llm_config_success
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map
new file mode 100644
index 0000000..8a89956
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5
new file mode 100644
index 0000000..47f24a6
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5
@@ -0,0 +1 @@
+e227b3587529f3c7fa14501fb496ccc8
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg
new file mode 100644
index 0000000..af6abf0
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg
@@ -0,0 +1,194 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_token
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node4
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node5->Node4
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg
new file mode 100644
index 0000000..0cd794d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_token
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node4
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node5->Node4
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map
new file mode 100644
index 0000000..27e33e7
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5
new file mode 100644
index 0000000..5a5a866
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5
@@ -0,0 +1 @@
+9c6b048bd5412b617ea890b1f88c2104
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg
new file mode 100644
index 0000000..6b05345
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg
@@ -0,0 +1,302 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_token
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node10
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_config
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node11
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_env
+
+
+
+
+
+Node1->Node11
+
+
+
+
+
+Node12
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_not_found
+
+
+
+
+
+Node1->Node12
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+Node5->Node3
+
+
+
+
+
+Node6
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node5->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node5->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node5->Node9
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg
new file mode 100644
index 0000000..8a0f76b
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg
@@ -0,0 +1,214 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_token
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node10
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_config
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node11
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_env
+
+
+
+
+
+Node1->Node11
+
+
+
+
+
+Node12
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_not_found
+
+
+
+
+
+Node1->Node12
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+Node5->Node3
+
+
+
+
+
+Node6
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node5->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node5->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node5->Node9
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map
new file mode 100644
index 0000000..55fc422
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5
new file mode 100644
index 0000000..c4b9ce2
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5
@@ -0,0 +1 @@
+67c138c843a1f5d8ab7592c326643328
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg
new file mode 100644
index 0000000..aa2fbc9
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_llm_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg
new file mode 100644
index 0000000..4b9759c
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_llm_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map
new file mode 100644
index 0000000..11e9843
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5
new file mode 100644
index 0000000..280df61
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5
@@ -0,0 +1 @@
+32e055c0ae757bbecf2b86db164d29df
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg
new file mode 100644
index 0000000..2e5a94a
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg
@@ -0,0 +1,216 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_llm_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node5
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_empty
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_exists
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_invalid_json
+
+
+
+
+
+Node1->Node7
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg
new file mode 100644
index 0000000..7c7fba4
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg
@@ -0,0 +1,128 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_llm_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node5
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_empty
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_exists
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_invalid_json
+
+
+
+
+
+Node1->Node7
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map
new file mode 100644
index 0000000..a9f72bb
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5
new file mode 100644
index 0000000..6643612
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5
@@ -0,0 +1 @@
+69777adad7caeabd935b90d3f0ca21e8
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg
new file mode 100644
index 0000000..26a2c27
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_penify_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node2
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map
new file mode 100644
index 0000000..9de687d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5
new file mode 100644
index 0000000..3e643ef
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5
@@ -0,0 +1 @@
+4f8f2c5d878438fd8fa2e1f0ca1dbc52
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg
new file mode 100644
index 0000000..9a839f1
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg
@@ -0,0 +1,352 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_penify_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node14
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_penify_config_existing_dir
+
+
+
+
+
+Node1->Node14
+
+
+
+
+
+Node15
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_penify_config_new_dir
+
+
+
+
+
+Node1->Node15
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node11
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_config
+
+
+
+
+
+Node2->Node11
+
+
+
+
+
+Node12
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_env
+
+
+
+
+
+Node2->Node12
+
+
+
+
+
+Node13
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_not_found
+
+
+
+
+
+Node2->Node13
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node6->Node4
+
+
+
+
+
+Node7
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node6->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node6->Node9
+
+
+
+
+
+Node10
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node6->Node10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg
new file mode 100644
index 0000000..a6f9814
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg
@@ -0,0 +1,264 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.get_penify_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node14
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_penify_config_existing_dir
+
+
+
+
+
+Node1->Node14
+
+
+
+
+
+Node15
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_penify_config_new_dir
+
+
+
+
+
+Node1->Node15
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node11
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_config
+
+
+
+
+
+Node2->Node11
+
+
+
+
+
+Node12
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_env
+
+
+
+
+
+Node2->Node12
+
+
+
+
+
+Node13
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_not_found
+
+
+
+
+
+Node2->Node13
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node6->Node4
+
+
+
+
+
+Node7
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node6->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node6->Node9
+
+
+
+
+
+Node10
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node6->Node10
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map
new file mode 100644
index 0000000..85cba52
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5
new file mode 100644
index 0000000..26009b0
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5
@@ -0,0 +1 @@
+91b1c0b60f8171163e43b782cfdc5e4b
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg
new file mode 100644
index 0000000..5ed2818
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.load_env_files
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node1->Node1
+
+
+
+
+
+Node2
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map
new file mode 100644
index 0000000..d99de6a
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5
new file mode 100644
index 0000000..a2245b9
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5
@@ -0,0 +1 @@
+e208c1be2bea05a2824626f2971c2bf3
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg
new file mode 100644
index 0000000..e4f35a6
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg
@@ -0,0 +1,491 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.load_env_files
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node1->Node1
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node14
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node1->Node14
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node7
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node9
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_jira_config_exists
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node6
+
+
+tests.test_web_config.Test
+WebConfig.test_config_jira
+_web_server_setup
+
+
+
+
+
+Node3->Node6
+
+
+
+
+
+Node5
+
+
+penify_hook.main.main
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
+Node7->Node5
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node7->Node8
+
+
+
+
+
+Node10->Node7
+
+
+
+
+
+Node11
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_empty
+
+
+
+
+
+Node10->Node11
+
+
+
+
+
+Node12
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_exists
+
+
+
+
+
+Node10->Node12
+
+
+
+
+
+Node13
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_invalid_json
+
+
+
+
+
+Node10->Node13
+
+
+
+
+
+Node14->Node7
+
+
+
+
+
+Node15
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node14->Node15
+
+
+
+
+
+Node20
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_config
+
+
+
+
+
+Node14->Node20
+
+
+
+
+
+Node21
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_env
+
+
+
+
+
+Node14->Node21
+
+
+
+
+
+Node22
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_not_found
+
+
+
+
+
+Node14->Node22
+
+
+
+
+
+Node15->Node5
+
+
+
+
+
+Node16
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node15->Node16
+
+
+
+
+
+Node17
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node15->Node17
+
+
+
+
+
+Node18
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node15->Node18
+
+
+
+
+
+Node19
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node15->Node19
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg
new file mode 100644
index 0000000..a264e4b
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg
@@ -0,0 +1,403 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.load_env_files
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node1->Node1
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node14
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node1->Node14
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node7
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node9
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_jira_config_exists
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node6
+
+
+tests.test_web_config.Test
+WebConfig.test_config_jira
+_web_server_setup
+
+
+
+
+
+Node3->Node6
+
+
+
+
+
+Node5
+
+
+penify_hook.main.main
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
+Node7->Node5
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node7->Node8
+
+
+
+
+
+Node10->Node7
+
+
+
+
+
+Node11
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_empty
+
+
+
+
+
+Node10->Node11
+
+
+
+
+
+Node12
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_exists
+
+
+
+
+
+Node10->Node12
+
+
+
+
+
+Node13
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_invalid_json
+
+
+
+
+
+Node10->Node13
+
+
+
+
+
+Node14->Node7
+
+
+
+
+
+Node15
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node14->Node15
+
+
+
+
+
+Node20
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_config
+
+
+
+
+
+Node14->Node20
+
+
+
+
+
+Node21
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_env
+
+
+
+
+
+Node14->Node21
+
+
+
+
+
+Node22
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_not_found
+
+
+
+
+
+Node14->Node22
+
+
+
+
+
+Node15->Node5
+
+
+
+
+
+Node16
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node15->Node16
+
+
+
+
+
+Node17
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node15->Node17
+
+
+
+
+
+Node18
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node15->Node18
+
+
+
+
+
+Node19
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node15->Node19
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map
new file mode 100644
index 0000000..66dc072
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5
new file mode 100644
index 0000000..9c2e575
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5
@@ -0,0 +1 @@
+68e4fb55d25659f523e8547c8cb01464
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg
new file mode 100644
index 0000000..d2e2758
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.save_jira_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.save_jira_config
+
+
+
+
+
+Node2
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map
new file mode 100644
index 0000000..c80d943
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5
new file mode 100644
index 0000000..1f53baa
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5
@@ -0,0 +1 @@
+d1ffd3debe0bd71ea914f1dd47c727ad
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg
new file mode 100644
index 0000000..359799d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.save_jira_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.save_jira_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node6
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_save_jira_config_success
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node5
+
+
+tests.test_web_config.Test
+WebConfig.test_config_jira
+_web_server_setup
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg
new file mode 100644
index 0000000..d5eb5c0
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.save_jira_config
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.save_jira_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node6
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_save_jira_config_success
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node5
+
+
+tests.test_web_config.Test
+WebConfig.test_config_jira
+_web_server_setup
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map
new file mode 100644
index 0000000..f9b2f55
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5
new file mode 100644
index 0000000..7795142
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5
@@ -0,0 +1 @@
+e83a80d18918d47faae41628fcd92c7a
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg
new file mode 100644
index 0000000..5211cae
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg
@@ -0,0 +1,210 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.config_jira_web
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.config
+_commands.save_jira_config
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node5
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
+Node6->Node5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg
new file mode 100644
index 0000000..d7f7ae5
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.config_jira_web
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.config
+_commands.save_jira_config
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node5
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
+Node6->Node5
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map
new file mode 100644
index 0000000..fc35b2e
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5
new file mode 100644
index 0000000..166f9b7
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5
@@ -0,0 +1 @@
+e627346d77982130e6685bfc2c553220
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg
new file mode 100644
index 0000000..b4cc55b
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.config_commands.config_jira_web
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node2
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node4
+
+
+tests.test_web_config.Test
+WebConfig.test_config_jira
+_web_server_setup
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg
new file mode 100644
index 0000000..72fd941
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+penify_hook.commands.config_commands.config_jira_web
+
+
+
+Node1
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node2
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node4
+
+
+tests.test_web_config.Test
+WebConfig.test_config_jira
+_web_server_setup
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html
new file mode 100644
index 0000000..8a77deb
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html
@@ -0,0 +1,278 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.commands.doc_commands Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ generate_doc()
+
+
+
+
+
+ def penify_hook.commands.doc_commands.generate_doc
+ (
+
+ api_url ,
+
+
+
+
+
+ token ,
+
+
+
+
+
+ location = None
+
+
+
+ )
+
+
+
+
+
Generates documentation based on the given parameters.
+
+This function initializes an API client using the provided API URL and token.
+It then generates documentation by analyzing the specified location, which can
+be a folder, a file, or the current working directory if no location is
+provided. The function handles different types of analysis based on the input
+location and reports any errors encountered during the process.
+
+Args:
+ api_url (str): The URL of the API to connect to for documentation generation.
+ token (str): The authentication token for accessing the API.
+ location (str?): The path to a specific file or folder to analyze. If not provided,
+ the current working directory is used.
+
+
+
+
+
+
+
◆ handle_docgen()
+
+
+
+
+
+ def penify_hook.commands.doc_commands.handle_docgen
+ (
+
+ args )
+
+
+
+
+
Handle document generation and hook management based on subcommands.
+
+
+
+
+
+
+
+
◆ setup_docgen_parser()
+
+
+
+
+
+ def penify_hook.commands.doc_commands.setup_docgen_parser
+ (
+
+ parser )
+
+
+
+
+
Configure a parser for generating documentation using Git commands.
+
+
+
+
+
+
+
◆ docgen_description
+
+
+
+
+
+ string penify_hook.commands.doc_commands.docgen_description
+
+
+
+
Initial value: 1 = """Generate code documentation using Penify.
+
2
+
3 This command requires you to be logged in to your Penify account.
+
4 You can generate documentation for:
+
5 - Current Git diff (default)
+
6 - Specific file
+
7 - Specific folder
+
8 """
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map
new file mode 100644
index 0000000..2c0a565
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5
new file mode 100644
index 0000000..472a430
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5
@@ -0,0 +1 @@
+d7ee1e07127beb9f489b974a61acce5d
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg
new file mode 100644
index 0000000..9ea3b5d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg
@@ -0,0 +1,258 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.doc_commands.handle_docgen
+
+
+
+Node1
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node9
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node1->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node7
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node3->Node7
+
+
+
+
+
+Node6
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node6->Node6
+
+
+
+
+
+Node7->Node6
+
+
+
+
+
+Node7->Node7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg
new file mode 100644
index 0000000..838bb12
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+penify_hook.commands.doc_commands.handle_docgen
+
+
+
+Node1
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node9
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node1->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node7
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node3->Node7
+
+
+
+
+
+Node6
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node6->Node6
+
+
+
+
+
+Node7->Node6
+
+
+
+
+
+Node7->Node7
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map
new file mode 100644
index 0000000..37a65e4
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5
new file mode 100644
index 0000000..9d429ee
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5
@@ -0,0 +1 @@
+ed70390d069e80c493faf1a14a7c6fff
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg
new file mode 100644
index 0000000..6790fe4
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg
@@ -0,0 +1,108 @@
+
+
+
+
+
+
+penify_hook.commands.doc_commands.handle_docgen
+
+
+
+Node1
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node2
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node1->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map
new file mode 100644
index 0000000..3084ab9
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5
new file mode 100644
index 0000000..171b82e
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5
@@ -0,0 +1 @@
+5e9faa5a79a60188abcf0c90efae69aa
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg
new file mode 100644
index 0000000..c5131ef
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg
@@ -0,0 +1,309 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.doc_commands.generate_doc
+
+
+
+Node1
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node8
+
+
+tests.test_doc_commands.test
+_generate_doc_error_handling
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_doc_commands.test
+_generate_doc_file_location
+
+
+
+
+
+Node1->Node9
+
+
+
+
+
+Node10
+
+
+tests.test_doc_commands.test
+_generate_doc_folder_location
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node11
+
+
+tests.test_doc_commands.test
+_generate_doc_no_location
+
+
+
+
+
+Node1->Node11
+
+
+
+
+
+Node12
+
+
+tests.test_doc_commands.test
+_generate_doc_with_file_exception
+
+
+
+
+
+Node1->Node12
+
+
+
+
+
+Node13
+
+
+tests.test_doc_commands.test
+_generate_doc_with_folder
+_exception
+
+
+
+
+
+Node1->Node13
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg
new file mode 100644
index 0000000..4cf4b48
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+penify_hook.commands.doc_commands.generate_doc
+
+
+
+Node1
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node8
+
+
+tests.test_doc_commands.test
+_generate_doc_error_handling
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_doc_commands.test
+_generate_doc_file_location
+
+
+
+
+
+Node1->Node9
+
+
+
+
+
+Node10
+
+
+tests.test_doc_commands.test
+_generate_doc_folder_location
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node11
+
+
+tests.test_doc_commands.test
+_generate_doc_no_location
+
+
+
+
+
+Node1->Node11
+
+
+
+
+
+Node12
+
+
+tests.test_doc_commands.test
+_generate_doc_with_file_exception
+
+
+
+
+
+Node1->Node12
+
+
+
+
+
+Node13
+
+
+tests.test_doc_commands.test
+_generate_doc_with_folder
+_exception
+
+
+
+
+
+Node1->Node13
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map
new file mode 100644
index 0000000..0ee99eb
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5
new file mode 100644
index 0000000..0dc7e32
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5
@@ -0,0 +1 @@
+0fa78969e5f8672d0da52972dd124680
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg
new file mode 100644
index 0000000..998d629
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+penify_hook.commands.doc_commands.setup_docgen_parser
+
+
+
+Node1
+
+
+penify_hook.commands.doc
+_commands.setup_docgen_parser
+
+
+
+
+
+Node2
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+tests.test_doc_commands.test
+_setup_docgen_parser
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html
new file mode 100644
index 0000000..7401a80
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html
@@ -0,0 +1,241 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.commands.hook_commands Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ install_git_hook()
+
+
+
+
+
+ def penify_hook.commands.hook_commands.install_git_hook
+ (
+
+ location ,
+
+
+
+
+
+ token
+
+
+
+ )
+
+
+
+
+
Install a post-commit Git hook that generates documentation for changed files.
+
+
+
+
+
+
◆ uninstall_git_hook()
+
+
+
+
+
+ def penify_hook.commands.hook_commands.uninstall_git_hook
+ (
+
+ location )
+
+
+
+
+
Uninstalls the post-commit hook from the specified location.
+
+
+
+
+
+
+
◆ HOOK_FILENAME
+
+
+
+
+
+ string penify_hook.commands.hook_commands.HOOK_FILENAME = "post-commit"
+
+
+
+
+
+
+
+
◆ HOOK_TEMPLATE
+
+
+
+
+
+ string penify_hook.commands.hook_commands.HOOK_TEMPLATE
+
+
+
+
Initial value: 1 = """#!/bin/sh
+
2 # This is a post-commit hook generated by penify.
+
3 # Automatically generates documentation for changed files after each commit.
+
4
+
5 penify docgen -gf {git_folder_path} -t {token}
+
6 """
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map
new file mode 100644
index 0000000..ea3d3f4
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5
new file mode 100644
index 0000000..197f108
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5
@@ -0,0 +1 @@
+25f36344702d0e8ec428aac2f670078e
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg
new file mode 100644
index 0000000..a399555
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.hook_commands.uninstall_git_hook
+
+
+
+Node1
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg
new file mode 100644
index 0000000..6068928
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+penify_hook.commands.hook_commands.uninstall_git_hook
+
+
+
+Node1
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map
new file mode 100644
index 0000000..16920b6
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5
new file mode 100644
index 0000000..333d2ec
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5
@@ -0,0 +1 @@
+3ec2e3ff4462cc865b4cb6fd3a62753d
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg
new file mode 100644
index 0000000..ebcff0a
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg
@@ -0,0 +1,212 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.commands.hook_commands.install_git_hook
+
+
+
+Node1
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg
new file mode 100644
index 0000000..8141220
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg
@@ -0,0 +1,124 @@
+
+
+
+
+
+
+penify_hook.commands.hook_commands.install_git_hook
+
+
+
+Node1
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.main.main
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node3->Node3
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commit__analyzer.html b/docs/html/namespacepenify__hook_1_1commit__analyzer.html
new file mode 100644
index 0000000..71d4ec9
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commit__analyzer.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.commit_analyzer Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1commit__analyzer.js b/docs/html/namespacepenify__hook_1_1commit__analyzer.js
new file mode 100644
index 0000000..da2cbba
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1commit__analyzer.js
@@ -0,0 +1,4 @@
+var namespacepenify__hook_1_1commit__analyzer =
+[
+ [ "CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook" ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1config__command.html b/docs/html/namespacepenify__hook_1_1config__command.html
new file mode 100644
index 0000000..ff57d54
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1config__command.html
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.config_command Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ handle_config()
+
+
+
+
+
+ def penify_hook.config_command.handle_config
+ (
+
+ args )
+
+
+
+
+
Handle configuration settings based on the specified config type.
+
+This function processes different types of configurations such as LLM (Language
+Model) and JIRA. It saves configurations, sets up web-based configurations, and
+verifies JIRA connections. Depending on the `args.config_type`, it imports
+necessary modules, handles configuration saving or setup, and optionally
+verifies JIRA connectivity.
+
+Args:
+ args (argparse.Namespace): Command-line arguments containing the type of configuration to handle.
+
+
+
+
+
+
+
+
+
◆ setup_config_parser()
+
+
+
+
+
+ def penify_hook.config_command.setup_config_parser
+ (
+
+ parent_parser )
+
+
+
+
+
Set up configuration parsers with subcommands for LLM and JIRA settings.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map
new file mode 100644
index 0000000..5262513
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5
new file mode 100644
index 0000000..1e009e6
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5
@@ -0,0 +1 @@
+4f75720d323fed0e1cf98ec14ae8f6e9
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg
new file mode 100644
index 0000000..7daaddc
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg
@@ -0,0 +1,270 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.config_command.handle_config
+
+
+
+Node1
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node7
+
+
+penify_hook.commands.config
+_commands.save_jira_config
+
+
+
+
+
+Node1->Node7
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.config
+_commands.config_llm_web
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node9
+
+
+penify_hook.commands.config
+_commands.save_llm_config
+
+
+
+
+
+Node1->Node9
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
+Node6
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node6->Node6
+
+
+
+
+
+Node7->Node6
+
+
+
+
+
+Node9->Node6
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg
new file mode 100644
index 0000000..2707803
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg
@@ -0,0 +1,182 @@
+
+
+
+
+
+
+penify_hook.config_command.handle_config
+
+
+
+Node1
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node7
+
+
+penify_hook.commands.config
+_commands.save_jira_config
+
+
+
+
+
+Node1->Node7
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.config
+_commands.config_llm_web
+
+
+
+
+
+Node1->Node8
+
+
+
+
+
+Node9
+
+
+penify_hook.commands.config
+_commands.save_llm_config
+
+
+
+
+
+Node1->Node9
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
+Node6
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node5->Node6
+
+
+
+
+
+Node6->Node6
+
+
+
+
+
+Node7->Node6
+
+
+
+
+
+Node9->Node6
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map
new file mode 100644
index 0000000..b702a42
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5
new file mode 100644
index 0000000..a09bdd4
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5
@@ -0,0 +1 @@
+f35e472a3767aa0a0b09219e96174cf9
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg
new file mode 100644
index 0000000..cafcc47
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+penify_hook.config_command.handle_config
+
+
+
+Node1
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node2
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map
new file mode 100644
index 0000000..f0c2ef3
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5
new file mode 100644
index 0000000..48311b5
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5
@@ -0,0 +1 @@
+a17b5eb406ca6a74de12d7201d9bcee7
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg
new file mode 100644
index 0000000..edae0c9
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+penify_hook.config_command.setup_config_parser
+
+
+
+Node1
+
+
+penify_hook.config
+_command.setup_config
+_parser
+
+
+
+
+
+Node2
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1constants.html b/docs/html/namespacepenify__hook_1_1constants.html
new file mode 100644
index 0000000..78939c0
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1constants.html
@@ -0,0 +1,168 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.constants Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+string API_URL = 'http://localhost:8000/api'
+
+string DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
+
+
+
+
+
◆ API_URL
+
+
+
+
+
+ string penify_hook.constants.API_URL = 'http://localhost:8000/api'
+
+
+
+
+
+
+
+
◆ DASHBOARD_URL
+
+
+
+
+
+ string penify_hook.constants.DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1file__analyzer.html b/docs/html/namespacepenify__hook_1_1file__analyzer.html
new file mode 100644
index 0000000..66b3a4d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1file__analyzer.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.file_analyzer Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ logger = logging.getLogger(__name__)
+
+
+
+
+
◆ logger
+
+
+
+
+
+ penify_hook.file_analyzer.logger = logging.getLogger(__name__)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1file__analyzer.js b/docs/html/namespacepenify__hook_1_1file__analyzer.js
new file mode 100644
index 0000000..2fd7c22
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1file__analyzer.js
@@ -0,0 +1,5 @@
+var namespacepenify__hook_1_1file__analyzer =
+[
+ [ "FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook" ],
+ [ "logger", "namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828", null ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1folder__analyzer.html b/docs/html/namespacepenify__hook_1_1folder__analyzer.html
new file mode 100644
index 0000000..eaf9b7d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1folder__analyzer.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.folder_analyzer Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1folder__analyzer.js b/docs/html/namespacepenify__hook_1_1folder__analyzer.js
new file mode 100644
index 0000000..01d86ca
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1folder__analyzer.js
@@ -0,0 +1,4 @@
+var namespacepenify__hook_1_1folder__analyzer =
+[
+ [ "FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook" ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1git__analyzer.html b/docs/html/namespacepenify__hook_1_1git__analyzer.html
new file mode 100644
index 0000000..c7d9712
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1git__analyzer.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.git_analyzer Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ logger = logging.getLogger(__name__)
+
+
+
+
+
◆ logger
+
+
+
+
+
+ penify_hook.git_analyzer.logger = logging.getLogger(__name__)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1git__analyzer.js b/docs/html/namespacepenify__hook_1_1git__analyzer.js
new file mode 100644
index 0000000..d89c507
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1git__analyzer.js
@@ -0,0 +1,5 @@
+var namespacepenify__hook_1_1git__analyzer =
+[
+ [ "GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook" ],
+ [ "logger", "namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a", null ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1jira__client.html b/docs/html/namespacepenify__hook_1_1jira__client.html
new file mode 100644
index 0000000..842a160
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1jira__client.html
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.jira_client Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ JIRA_AVAILABLE
+
+
+
+
+
+ bool penify_hook.jira_client.JIRA_AVAILABLE = True
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1jira__client.js b/docs/html/namespacepenify__hook_1_1jira__client.js
new file mode 100644
index 0000000..824018c
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1jira__client.js
@@ -0,0 +1,5 @@
+var namespacepenify__hook_1_1jira__client =
+[
+ [ "JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", "classpenify__hook_1_1jira__client_1_1JiraClient" ],
+ [ "JIRA_AVAILABLE", "namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2", null ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1llm__client.html b/docs/html/namespacepenify__hook_1_1llm__client.html
new file mode 100644
index 0000000..f3d4610
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1llm__client.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.llm_client Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1llm__client.js b/docs/html/namespacepenify__hook_1_1llm__client.js
new file mode 100644
index 0000000..9f99a1e
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1llm__client.js
@@ -0,0 +1,4 @@
+var namespacepenify__hook_1_1llm__client =
+[
+ [ "LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", "classpenify__hook_1_1llm__client_1_1LLMClient" ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1login__command.html b/docs/html/namespacepenify__hook_1_1login__command.html
new file mode 100644
index 0000000..056354c
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1login__command.html
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.login_command Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ handle_login()
+
+
+
+
+
+ def penify_hook.login_command.handle_login
+ (
+
+ args )
+
+
+
+
+
Initiates a user login process using predefined constants and the `login`
+function.
+
+
+
+
+
+
+
+
◆ setup_login_parser()
+
+
+
+
+
+ def penify_hook.login_command.setup_login_parser
+ (
+
+ parser )
+
+
+
+
+
Set up command-line arguments for login.
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map
new file mode 100644
index 0000000..e39c064
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5
new file mode 100644
index 0000000..2daae41
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5
@@ -0,0 +1 @@
+34cbd1a77d726e3937d67455d405b0ba
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg
new file mode 100644
index 0000000..84d1c1e
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+penify_hook.login_command.setup_login_parser
+
+
+
+Node1
+
+
+penify_hook.login_command.setup
+_login_parser
+
+
+
+
+
+Node2
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map
new file mode 100644
index 0000000..dd44b98
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5
new file mode 100644
index 0000000..ad91965
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5
@@ -0,0 +1 @@
+6a1ceeef99a0101ba5882e9e71fa9bce
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg
new file mode 100644
index 0000000..23caccd
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.login_command.handle_login
+
+
+
+Node1
+
+
+penify_hook.login_command.handle
+_login
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.auth
+_commands.login
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.auth
+_commands.save_credentials
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg
new file mode 100644
index 0000000..97e0e2a
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+penify_hook.login_command.handle_login
+
+
+
+Node1
+
+
+penify_hook.login_command.handle
+_login
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.auth
+_commands.login
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.auth
+_commands.save_credentials
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map
new file mode 100644
index 0000000..74fa8c7
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5
new file mode 100644
index 0000000..7a114f5
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5
@@ -0,0 +1 @@
+1f6ec32e02e9919f90ba1a6a23743cb6
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg
new file mode 100644
index 0000000..88bfdb9
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+penify_hook.login_command.handle_login
+
+
+
+Node1
+
+
+penify_hook.login_command.handle
+_login
+
+
+
+
+
+Node2
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node2->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1main.html b/docs/html/namespacepenify__hook_1_1main.html
new file mode 100644
index 0000000..b005417
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1main.html
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.main Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ main()
+
+
+
+
+
+ def penify_hook.main.main
+ (
+ )
+
+
+
+
+
Main function to handle command-line interface (CLI) interactions with Penify
+services.
+
+This tool provides a command-line interface for generating smart commit
+messages, configuring local-LLM and JIRA, and generating code documentation. It
+supports basic commands that do not require login and advanced commands that
+require user authentication. The `--version` flag can be used to display the
+version information.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map
new file mode 100644
index 0000000..5c35b70
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5
new file mode 100644
index 0000000..304cb74
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5
@@ -0,0 +1 @@
+73631f13dbb5d5f90aafdead88d96c1c
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg
new file mode 100644
index 0000000..eed8f52
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg
@@ -0,0 +1,708 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.main.main
+
+
+
+Node1
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node1
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node6
+
+
+penify_hook.ui_utils.print_info
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node17
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node1->Node17
+
+
+
+
+
+Node22
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node22
+
+
+
+
+
+Node26
+
+
+penify_hook.login_command.handle
+_login
+
+
+
+
+
+Node1->Node26
+
+
+
+
+
+Node29
+
+
+penify_hook.commands.commit
+_commands.setup_commit_parser
+
+
+
+
+
+Node1->Node29
+
+
+
+
+
+Node30
+
+
+penify_hook.config
+_command.setup_config
+_parser
+
+
+
+
+
+Node1->Node30
+
+
+
+
+
+Node31
+
+
+penify_hook.commands.doc
+_commands.setup_docgen_parser
+
+
+
+
+
+Node1->Node31
+
+
+
+
+
+Node32
+
+
+penify_hook.login_command.setup
+_login_parser
+
+
+
+
+
+Node1->Node32
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node11
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node2->Node11
+
+
+
+
+
+Node14
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node2->Node14
+
+
+
+
+
+Node15
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2->Node15
+
+
+
+
+
+Node4
+
+
+penify_hook.ui_utils.print
+_error
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node3->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.ui_utils.print
+_warning
+
+
+
+
+
+Node3->Node8
+
+
+
+
+
+Node10
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node3->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.ui_utils.format
+_error
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node7
+
+
+penify_hook.ui_utils.format_info
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node9
+
+
+penify_hook.ui_utils.format
+_warning
+
+
+
+
+
+Node8->Node9
+
+
+
+
+
+Node10->Node10
+
+
+
+
+
+Node12
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node11->Node12
+
+
+
+
+
+Node13
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node11->Node13
+
+
+
+
+
+Node13->Node10
+
+
+
+
+
+Node13->Node13
+
+
+
+
+
+Node14->Node12
+
+
+
+
+
+Node14->Node13
+
+
+
+
+
+Node15->Node12
+
+
+
+
+
+Node15->Node13
+
+
+
+
+
+Node16
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node15->Node16
+
+
+
+
+
+Node16->Node10
+
+
+
+
+
+Node18
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node17->Node18
+
+
+
+
+
+Node19
+
+
+penify_hook.commands.config
+_commands.save_jira_config
+
+
+
+
+
+Node17->Node19
+
+
+
+
+
+Node20
+
+
+penify_hook.commands.config
+_commands.config_llm_web
+
+
+
+
+
+Node17->Node20
+
+
+
+
+
+Node21
+
+
+penify_hook.commands.config
+_commands.save_llm_config
+
+
+
+
+
+Node17->Node21
+
+
+
+
+
+Node18->Node11
+
+
+
+
+
+Node18->Node19
+
+
+
+
+
+Node19->Node10
+
+
+
+
+
+Node21->Node10
+
+
+
+
+
+Node22->Node15
+
+
+
+
+
+Node23
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node22->Node23
+
+
+
+
+
+Node24
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node22->Node24
+
+
+
+
+
+Node25
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node22->Node25
+
+
+
+
+
+Node27
+
+
+penify_hook.commands.auth
+_commands.login
+
+
+
+
+
+Node26->Node27
+
+
+
+
+
+Node28
+
+
+penify_hook.commands.auth
+_commands.save_credentials
+
+
+
+
+
+Node27->Node28
+
+
+
+
+
+Node28->Node10
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg
new file mode 100644
index 0000000..4199d83
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg
@@ -0,0 +1,620 @@
+
+
+
+
+
+
+penify_hook.main.main
+
+
+
+Node1
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node1
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node6
+
+
+penify_hook.ui_utils.print_info
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node17
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node1->Node17
+
+
+
+
+
+Node22
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node22
+
+
+
+
+
+Node26
+
+
+penify_hook.login_command.handle
+_login
+
+
+
+
+
+Node1->Node26
+
+
+
+
+
+Node29
+
+
+penify_hook.commands.commit
+_commands.setup_commit_parser
+
+
+
+
+
+Node1->Node29
+
+
+
+
+
+Node30
+
+
+penify_hook.config
+_command.setup_config
+_parser
+
+
+
+
+
+Node1->Node30
+
+
+
+
+
+Node31
+
+
+penify_hook.commands.doc
+_commands.setup_docgen_parser
+
+
+
+
+
+Node1->Node31
+
+
+
+
+
+Node32
+
+
+penify_hook.login_command.setup
+_login_parser
+
+
+
+
+
+Node1->Node32
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node11
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node2->Node11
+
+
+
+
+
+Node14
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node2->Node14
+
+
+
+
+
+Node15
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2->Node15
+
+
+
+
+
+Node4
+
+
+penify_hook.ui_utils.print
+_error
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node3->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.ui_utils.print
+_warning
+
+
+
+
+
+Node3->Node8
+
+
+
+
+
+Node10
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node3->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.ui_utils.format
+_error
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node7
+
+
+penify_hook.ui_utils.format_info
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node9
+
+
+penify_hook.ui_utils.format
+_warning
+
+
+
+
+
+Node8->Node9
+
+
+
+
+
+Node10->Node10
+
+
+
+
+
+Node12
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node11->Node12
+
+
+
+
+
+Node13
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node11->Node13
+
+
+
+
+
+Node13->Node10
+
+
+
+
+
+Node13->Node13
+
+
+
+
+
+Node14->Node12
+
+
+
+
+
+Node14->Node13
+
+
+
+
+
+Node15->Node12
+
+
+
+
+
+Node15->Node13
+
+
+
+
+
+Node16
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node15->Node16
+
+
+
+
+
+Node16->Node10
+
+
+
+
+
+Node18
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node17->Node18
+
+
+
+
+
+Node19
+
+
+penify_hook.commands.config
+_commands.save_jira_config
+
+
+
+
+
+Node17->Node19
+
+
+
+
+
+Node20
+
+
+penify_hook.commands.config
+_commands.config_llm_web
+
+
+
+
+
+Node17->Node20
+
+
+
+
+
+Node21
+
+
+penify_hook.commands.config
+_commands.save_llm_config
+
+
+
+
+
+Node17->Node21
+
+
+
+
+
+Node18->Node11
+
+
+
+
+
+Node18->Node19
+
+
+
+
+
+Node19->Node10
+
+
+
+
+
+Node21->Node10
+
+
+
+
+
+Node22->Node15
+
+
+
+
+
+Node23
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node22->Node23
+
+
+
+
+
+Node24
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node22->Node24
+
+
+
+
+
+Node25
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node22->Node25
+
+
+
+
+
+Node27
+
+
+penify_hook.commands.auth
+_commands.login
+
+
+
+
+
+Node26->Node27
+
+
+
+
+
+Node28
+
+
+penify_hook.commands.auth
+_commands.save_credentials
+
+
+
+
+
+Node27->Node28
+
+
+
+
+
+Node28->Node10
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map
new file mode 100644
index 0000000..3aaa58c
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5
new file mode 100644
index 0000000..4bf17ac
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5
@@ -0,0 +1 @@
+3a9435159e82b3293bbcf47f41f2b41c
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg
new file mode 100644
index 0000000..5001f6b
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+penify_hook.main.main
+
+
+
+Node1
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node1
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils.html b/docs/html/namespacepenify__hook_1_1ui__utils.html
new file mode 100644
index 0000000..a973a93
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils.html
@@ -0,0 +1,794 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.ui_utils Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
UI utilities for Penify CLI.
+
+This module provides utility functions for consistent UI formatting,
+colored output, and progress indicators across the Penify CLI application.
+
+
+
◆ create_progress_bar()
+
+
+
+
+
+ def penify_hook.ui_utils.create_progress_bar
+ (
+
+ total ,
+
+
+
+
+
+ desc = "Processing",
+
+
+
+
+
+ unit = "item"
+
+
+
+ )
+
+
+
+
+
Create a tqdm progress bar with consistent styling.
+
+
+
+
+
+
+
+
◆ create_stage_progress_bar()
+
+
+
+
+
+ def penify_hook.ui_utils.create_stage_progress_bar
+ (
+
+ stages ,
+
+
+
+
+
+ desc = "Processing"
+
+
+
+ )
+
+
+
+
+
Create a tqdm progress bar for processing stages with consistent styling.
+
+
+
+
+
+
+
+
◆ format_error()
+
+
+
+
+
+ def penify_hook.ui_utils.format_error
+ (
+
+ message )
+
+
+
+
+
Format an error message with the specified error color.
+
+
+
+
+
+
◆ format_file_path()
+
+
+
+
+
+ def penify_hook.ui_utils.format_file_path
+ (
+
+ file_path )
+
+
+
+
+
Format a file path with a warning color.
+
+
+
+
+
+
◆ format_highlight()
+
+
+
+
+
+ def penify_hook.ui_utils.format_highlight
+ (
+
+ message )
+
+
+
+
+
Format a highlighted message with appropriate color.
+
+
+
+
◆ format_info()
+
+
+
+
+
+ def penify_hook.ui_utils.format_info
+ (
+
+ message )
+
+
+
+
+
Format an informational message with appropriate color.
+
+
+
+
+
+
◆ format_success()
+
+
+
+
+
+ def penify_hook.ui_utils.format_success
+ (
+
+ message )
+
+
+
+
+
Formats a success message with green color and reset style.
+
+
+
+
+
+
◆ format_warning()
+
+
+
+
+
+ def penify_hook.ui_utils.format_warning
+ (
+
+ message )
+
+
+
+
+
Format a warning message with appropriate color.
+
+
+
+
+
+
◆ print_error()
+
+
+
+
+
+ def penify_hook.ui_utils.print_error
+ (
+
+ message )
+
+
+
+
+
Print an error message with appropriate formatting.
+
+
+
+
+
+
+
+
◆ print_info()
+
+
+
+
+
+ def penify_hook.ui_utils.print_info
+ (
+
+ message )
+
+
+
+
+
Prints an informational message with formatting.
+
+
+
+
+
+
+
+
◆ print_processing()
+
+
+
+
+
+ def penify_hook.ui_utils.print_processing
+ (
+
+ file_path )
+
+
+
+
+
Print a processing message for a specified file.
+
+
+
+
+
+
+
+
◆ print_status()
+
+
+
+
+
+ def penify_hook.ui_utils.print_status
+ (
+
+ status ,
+
+
+
+
+
+ message
+
+
+
+ )
+
+
+
+
+
Print a status message with an appropriate symbol.
+
+
+
+
+
+
◆ print_success()
+
+
+
+
+
+ def penify_hook.ui_utils.print_success
+ (
+
+ message )
+
+
+
+
+
Prints a formatted success message.
+
+
+
+
+
+
+
+
◆ print_warning()
+
+
+
+
+
+ def penify_hook.ui_utils.print_warning
+ (
+
+ message )
+
+
+
+
+
Prints a warning message with formatted output.
+
+
+
+
+
+
+
+
◆ update_stage()
+
+
+
+
+
+ def penify_hook.ui_utils.update_stage
+ (
+
+ pbar ,
+
+
+
+
+
+ stage_name
+
+
+
+ )
+
+
+
+
+
Update the progress bar with a new stage name.
+
+
+
+
+
+
+
◆ autoreset
+
+
+
+
+
+ penify_hook.ui_utils.autoreset
+
+
+
+
+
+
+
+
◆ ERROR_COLOR
+
+
+
+
+
+ penify_hook.ui_utils.ERROR_COLOR = Fore.RED
+
+
+
+
+
+
+
+
◆ ERROR_SYMBOL
+
+
+
+
+
+ string penify_hook.ui_utils.ERROR_SYMBOL = "✗"
+
+
+
+
+
+
+
+
◆ HIGHLIGHT_COLOR
+
+
+
+
+
+ penify_hook.ui_utils.HIGHLIGHT_COLOR = Fore.BLUE
+
+
+
+
+
+
+
+
◆ INFO_COLOR
+
+
+
+
+
+ penify_hook.ui_utils.INFO_COLOR = Fore.CYAN
+
+
+
+
+
+
+
+
◆ NEUTRAL_COLOR
+
+
+
+
+
+ penify_hook.ui_utils.NEUTRAL_COLOR = Fore.WHITE
+
+
+
+
+
+
+
+
◆ PROCESSING_SYMBOL
+
+
+
+
+
+ string penify_hook.ui_utils.PROCESSING_SYMBOL = "⟳"
+
+
+
+
+
+
+
+
◆ SUCCESS_COLOR
+
+
+
+
+
+ penify_hook.ui_utils.SUCCESS_COLOR = Fore.GREEN
+
+
+
+
+
+
+
+
◆ SUCCESS_SYMBOL
+
+
+
+
+
+ string penify_hook.ui_utils.SUCCESS_SYMBOL = "✓"
+
+
+
+
+
+
+
+
◆ WARNING_COLOR
+
+
+
+
+
+ penify_hook.ui_utils.WARNING_COLOR = Fore.YELLOW
+
+
+
+
+
+
+
+
◆ WARNING_SYMBOL
+
+
+
+
+
+ string penify_hook.ui_utils.WARNING_SYMBOL = "○"
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map
new file mode 100644
index 0000000..25e33d6
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5
new file mode 100644
index 0000000..e8c2c22
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5
@@ -0,0 +1 @@
+e844738072248c6c64fdcc2330f4e553
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg
new file mode 100644
index 0000000..d1398fc
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.ui_utils.format_warning
+
+
+
+Node1
+
+
+penify_hook.ui_utils.format
+_warning
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.print
+_warning
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node11
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.process_file
+
+
+
+
+
+Node2->Node11
+
+
+
+
+
+Node14
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.process
+_jira_integration
+
+
+
+
+
+Node2->Node14
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node3->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node3->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node3->Node9
+
+
+
+
+
+Node10
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node3->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.main.main
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
+Node12
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node11->Node12
+
+
+
+
+
+Node13
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node11->Node13
+
+
+
+
+
+Node15
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.run
+
+
+
+
+
+Node14->Node15
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg
new file mode 100644
index 0000000..1de8b95
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg
@@ -0,0 +1,259 @@
+
+
+
+
+
+
+penify_hook.ui_utils.format_warning
+
+
+
+Node1
+
+
+penify_hook.ui_utils.format
+_warning
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.print
+_warning
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node11
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.process_file
+
+
+
+
+
+Node2->Node11
+
+
+
+
+
+Node14
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.process
+_jira_integration
+
+
+
+
+
+Node2->Node14
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node3->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node3->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node3->Node9
+
+
+
+
+
+Node10
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node3->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.main.main
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
+Node12
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node11->Node12
+
+
+
+
+
+Node13
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node11->Node13
+
+
+
+
+
+Node15
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.run
+
+
+
+
+
+Node14->Node15
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map
new file mode 100644
index 0000000..b3bbd49
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5
new file mode 100644
index 0000000..61c5559
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5
@@ -0,0 +1 @@
+107c8ab941ac9fce368d49be27d3ad77
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg
new file mode 100644
index 0000000..4f4e98b
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+penify_hook.ui_utils.create_progress_bar
+
+
+
+Node1
+
+
+penify_hook.ui_utils.create
+_progress_bar
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.format_info
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map
new file mode 100644
index 0000000..2837065
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5
new file mode 100644
index 0000000..28e733d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5
@@ -0,0 +1 @@
+31face48bece50b969dd777e2fc02655
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg
new file mode 100644
index 0000000..c38d43e
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+penify_hook.ui_utils.create_progress_bar
+
+
+
+Node1
+
+
+penify_hook.ui_utils.create
+_progress_bar
+
+
+
+
+
+Node2
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map
new file mode 100644
index 0000000..9aa84d3
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5
new file mode 100644
index 0000000..95113cf
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5
@@ -0,0 +1 @@
+dc9c89eee18a938f2f9191abf1d0c4e3
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg
new file mode 100644
index 0000000..3d3ba26
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+penify_hook.ui_utils.print_warning
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print
+_warning
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.format
+_warning
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map
new file mode 100644
index 0000000..951c8b4
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5
new file mode 100644
index 0000000..cd55665
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5
@@ -0,0 +1 @@
+9fb882734b6d928eec5be79c1f8ddcfd
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg
new file mode 100644
index 0000000..c19d945
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg
@@ -0,0 +1,331 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.ui_utils.print_warning
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print
+_warning
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node10
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.process_file
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node13
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.process
+_jira_integration
+
+
+
+
+
+Node1->Node13
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node2->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node11
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node10->Node11
+
+
+
+
+
+Node12
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node10->Node12
+
+
+
+
+
+Node14
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.run
+
+
+
+
+
+Node13->Node14
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg
new file mode 100644
index 0000000..8fa32d4
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+penify_hook.ui_utils.print_warning
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print
+_warning
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node10
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.process_file
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node13
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.process
+_jira_integration
+
+
+
+
+
+Node1->Node13
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node2->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node11
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node10->Node11
+
+
+
+
+
+Node12
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node10->Node12
+
+
+
+
+
+Node14
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.run
+
+
+
+
+
+Node13->Node14
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map
new file mode 100644
index 0000000..dd6f039
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5
new file mode 100644
index 0000000..2cb272d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5
@@ -0,0 +1 @@
+86ecc3cd8eb77718a70cf2d0a033d81b
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg
new file mode 100644
index 0000000..7e446d7
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+penify_hook.ui_utils.print_success
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print
+_success
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.format
+_success
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map
new file mode 100644
index 0000000..ae7f6f9
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5
new file mode 100644
index 0000000..aeb43db
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5
@@ -0,0 +1 @@
+5a5f4e31cb2a03012aa538af45b7c2f7
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg
new file mode 100644
index 0000000..72720aa
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+penify_hook.ui_utils.print_success
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print
+_success
+
+
+
+
+
+Node2
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.run
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map
new file mode 100644
index 0000000..7bb444c
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5
new file mode 100644
index 0000000..13a3f9b
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5
@@ -0,0 +1 @@
+07bb20aff57367351bd025b6bbac0225
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg
new file mode 100644
index 0000000..29c14be
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+penify_hook.ui_utils.create_stage_progress_bar
+
+
+
+Node1
+
+
+penify_hook.ui_utils.create
+_stage_progress_bar
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.format_info
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map
new file mode 100644
index 0000000..f7b8a4e
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5
new file mode 100644
index 0000000..2972d31
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5
@@ -0,0 +1 @@
+c7fe8cba89008798c4a6df0ce478844e
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg
new file mode 100644
index 0000000..756b57c
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+penify_hook.ui_utils.create_stage_progress_bar
+
+
+
+Node1
+
+
+penify_hook.ui_utils.create
+_stage_progress_bar
+
+
+
+
+
+Node2
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map
new file mode 100644
index 0000000..1474643
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5
new file mode 100644
index 0000000..69b06bc
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5
@@ -0,0 +1 @@
+e9b17f53f8eea3fa235635a840d97fb5
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg
new file mode 100644
index 0000000..35fcfaa
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg
@@ -0,0 +1,266 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.ui_utils.format_error
+
+
+
+Node1
+
+
+penify_hook.ui_utils.format
+_error
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.print
+_error
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node3->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node3->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node3->Node9
+
+
+
+
+
+Node10
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node3->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.main.main
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg
new file mode 100644
index 0000000..d6c4844
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg
@@ -0,0 +1,178 @@
+
+
+
+
+
+
+penify_hook.ui_utils.format_error
+
+
+
+Node1
+
+
+penify_hook.ui_utils.format
+_error
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.print
+_error
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node3->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node3->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node3->Node9
+
+
+
+
+
+Node10
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node3->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.main.main
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node5->Node5
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map
new file mode 100644
index 0000000..9ed7a63
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5
new file mode 100644
index 0000000..5199573
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5
@@ -0,0 +1 @@
+e25efaa5775be3034819eb11f9cbeeb3
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg
new file mode 100644
index 0000000..1b60170
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg
@@ -0,0 +1,175 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.ui_utils.format_success
+
+
+
+Node1
+
+
+penify_hook.ui_utils.format
+_success
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.print
+_success
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node5
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.run
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg
new file mode 100644
index 0000000..a84c7b9
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+penify_hook.ui_utils.format_success
+
+
+
+Node1
+
+
+penify_hook.ui_utils.format
+_success
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.print
+_success
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node5
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.run
+
+
+
+
+
+Node2->Node5
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map
new file mode 100644
index 0000000..68ad486
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5
new file mode 100644
index 0000000..882dba5
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5
@@ -0,0 +1 @@
+3b447097b4d45a9b7a66bc911d7dd54f
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg
new file mode 100644
index 0000000..dd6a762
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.ui_utils.update_stage
+
+
+
+Node1
+
+
+penify_hook.ui_utils.update
+_stage
+
+
+
+
+
+Node2
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.process_file
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg
new file mode 100644
index 0000000..1b51200
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+penify_hook.ui_utils.update_stage
+
+
+
+Node1
+
+
+penify_hook.ui_utils.update
+_stage
+
+
+
+
+
+Node2
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.process_file
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map
new file mode 100644
index 0000000..b95ed08
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5
new file mode 100644
index 0000000..e14594c
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5
@@ -0,0 +1 @@
+f7f77cf41919f414860683374ddefc0a
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg
new file mode 100644
index 0000000..268b380
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+penify_hook.ui_utils.print_error
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print
+_error
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.format
+_error
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map
new file mode 100644
index 0000000..cfe84b1
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5
new file mode 100644
index 0000000..8538194
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5
@@ -0,0 +1 @@
+9c27aeee4681a41d96bdc9cb1c2cd259
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg
new file mode 100644
index 0000000..5e321ab
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg
@@ -0,0 +1,250 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.ui_utils.print_error
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print
+_error
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node2->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg
new file mode 100644
index 0000000..e913c1f
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg
@@ -0,0 +1,162 @@
+
+
+
+
+
+
+penify_hook.ui_utils.print_error
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print
+_error
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node2->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map
new file mode 100644
index 0000000..07143b8
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5
new file mode 100644
index 0000000..f566c4a
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5
@@ -0,0 +1 @@
+0ee2c99f818d114be866466bd3ca67e3
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg
new file mode 100644
index 0000000..ec42fa5
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+penify_hook.ui_utils.print_info
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print_info
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.format_info
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map
new file mode 100644
index 0000000..a111cc8
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5
new file mode 100644
index 0000000..9d7b6fc
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5
@@ -0,0 +1 @@
+4693bdcc77b647a09f27d1c12b6cf38a
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg
new file mode 100644
index 0000000..5e238f9
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.ui_utils.print_info
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print_info
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node10
+
+
+penify_hook.jira_client.
+JiraClient.extract_issue
+_keys_from_branch
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node11
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.get
+_summary
+
+
+
+
+
+Node1->Node11
+
+
+
+
+
+Node12
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.run
+
+
+
+
+
+Node1->Node12
+
+
+
+
+
+Node13
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.process
+_jira_integration
+
+
+
+
+
+Node1->Node13
+
+
+
+
+
+Node14
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node1->Node14
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node2->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node11->Node12
+
+
+
+
+
+Node13->Node12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg
new file mode 100644
index 0000000..f960222
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg
@@ -0,0 +1,268 @@
+
+
+
+
+
+
+penify_hook.ui_utils.print_info
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print_info
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node10
+
+
+penify_hook.jira_client.
+JiraClient.extract_issue
+_keys_from_branch
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node11
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.get
+_summary
+
+
+
+
+
+Node1->Node11
+
+
+
+
+
+Node12
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.run
+
+
+
+
+
+Node1->Node12
+
+
+
+
+
+Node13
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.process
+_jira_integration
+
+
+
+
+
+Node1->Node13
+
+
+
+
+
+Node14
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node1->Node14
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node2->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node11->Node12
+
+
+
+
+
+Node13->Node12
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map
new file mode 100644
index 0000000..7df2c63
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5
new file mode 100644
index 0000000..0acebf0
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5
@@ -0,0 +1 @@
+ebb2d3fbd74327cb6297532859329884
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg
new file mode 100644
index 0000000..af64c2d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg
@@ -0,0 +1,425 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.ui_utils.format_info
+
+
+
+Node1
+
+
+penify_hook.ui_utils.format_info
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.create
+_progress_bar
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node4
+
+
+penify_hook.ui_utils.create
+_stage_progress_bar
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node6
+
+
+penify_hook.ui_utils.print_info
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node3
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node5
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6->Node3
+
+
+
+
+
+Node7
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node6->Node8
+
+
+
+
+
+Node9
+
+
+penify_hook.main.main
+
+
+
+
+
+Node6->Node9
+
+
+
+
+
+Node15
+
+
+penify_hook.jira_client.
+JiraClient.extract_issue
+_keys_from_branch
+
+
+
+
+
+Node6->Node15
+
+
+
+
+
+Node16
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.get
+_summary
+
+
+
+
+
+Node6->Node16
+
+
+
+
+
+Node17
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.run
+
+
+
+
+
+Node6->Node17
+
+
+
+
+
+Node18
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.process
+_jira_integration
+
+
+
+
+
+Node6->Node18
+
+
+
+
+
+Node7->Node8
+
+
+
+
+
+Node11
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node7->Node11
+
+
+
+
+
+Node12
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node7->Node12
+
+
+
+
+
+Node13
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node7->Node13
+
+
+
+
+
+Node14
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node7->Node14
+
+
+
+
+
+Node8->Node9
+
+
+
+
+
+Node10
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node8->Node10
+
+
+
+
+
+Node9->Node9
+
+
+
+
+
+Node16->Node17
+
+
+
+
+
+Node18->Node17
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg
new file mode 100644
index 0000000..99f7f74
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+penify_hook.ui_utils.format_info
+
+
+
+Node1
+
+
+penify_hook.ui_utils.format_info
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.create
+_progress_bar
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node4
+
+
+penify_hook.ui_utils.create
+_stage_progress_bar
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node6
+
+
+penify_hook.ui_utils.print_info
+
+
+
+
+
+Node1->Node6
+
+
+
+
+
+Node3
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node5
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6->Node3
+
+
+
+
+
+Node7
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node6->Node8
+
+
+
+
+
+Node9
+
+
+penify_hook.main.main
+
+
+
+
+
+Node6->Node9
+
+
+
+
+
+Node15
+
+
+penify_hook.jira_client.
+JiraClient.extract_issue
+_keys_from_branch
+
+
+
+
+
+Node6->Node15
+
+
+
+
+
+Node16
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.get
+_summary
+
+
+
+
+
+Node6->Node16
+
+
+
+
+
+Node17
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.run
+
+
+
+
+
+Node6->Node17
+
+
+
+
+
+Node18
+
+
+penify_hook.commit
+_analyzer.CommitDocGenHook.process
+_jira_integration
+
+
+
+
+
+Node6->Node18
+
+
+
+
+
+Node7->Node8
+
+
+
+
+
+Node11
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node7->Node11
+
+
+
+
+
+Node12
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node7->Node12
+
+
+
+
+
+Node13
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node7->Node13
+
+
+
+
+
+Node14
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node7->Node14
+
+
+
+
+
+Node8->Node9
+
+
+
+
+
+Node10
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node8->Node10
+
+
+
+
+
+Node9->Node9
+
+
+
+
+
+Node16->Node17
+
+
+
+
+
+Node18->Node17
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map
new file mode 100644
index 0000000..a068346
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5
new file mode 100644
index 0000000..fc03531
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5
@@ -0,0 +1 @@
+cb2ef693a136057440c77b2ffc5fc5cc
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg
new file mode 100644
index 0000000..57fce61
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+penify_hook.ui_utils.print_status
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print
+_status
+
+
+
+
+
+Node2
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.run
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node1->Node3
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map
new file mode 100644
index 0000000..0d99cfe
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5
new file mode 100644
index 0000000..c14d515
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5
@@ -0,0 +1 @@
+65fe82e63024fcc065fa65dce2c0c8fb
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg
new file mode 100644
index 0000000..a59c184
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+penify_hook.ui_utils.print_processing
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print
+_processing
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.format
+_file_path
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map
new file mode 100644
index 0000000..f15b74e
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5
new file mode 100644
index 0000000..568301c
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5
@@ -0,0 +1 @@
+34c0d184b1a914e69d4b0bdacbaaff04
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg
new file mode 100644
index 0000000..8c29f6a
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+penify_hook.ui_utils.print_processing
+
+
+
+Node1
+
+
+penify_hook.ui_utils.print
+_processing
+
+
+
+
+
+Node2
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map
new file mode 100644
index 0000000..37c3667
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5
new file mode 100644
index 0000000..354e231
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5
@@ -0,0 +1 @@
+788f6631fd68b88312b14eace530bcf4
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg
new file mode 100644
index 0000000..fa2467e
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.ui_utils.format_file_path
+
+
+
+Node1
+
+
+penify_hook.ui_utils.format
+_file_path
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.print
+_processing
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node4
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.print
+_processing
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node3
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg
new file mode 100644
index 0000000..2e9a0f9
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+penify_hook.ui_utils.format_file_path
+
+
+
+Node1
+
+
+penify_hook.ui_utils.format
+_file_path
+
+
+
+
+
+Node2
+
+
+penify_hook.ui_utils.print
+_processing
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node4
+
+
+penify_hook.file_analyzer.
+FileAnalyzerGenHook.print
+_processing
+
+
+
+
+
+Node1->Node4
+
+
+
+
+
+Node3
+
+
+penify_hook.git_analyzer.
+GitDocGenHook.run
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1utils.html b/docs/html/namespacepenify__hook_1_1utils.html
new file mode 100644
index 0000000..9d9ce29
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1utils.html
@@ -0,0 +1,252 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: penify_hook.utils Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ logger = logging.getLogger(__name__)
+
+
+
+
+
◆ find_git_parent()
+
+
+
+
+
+ def penify_hook.utils.find_git_parent
+ (
+
+ path )
+
+
+
+
+
Traverse up from the given path to find the nearest directory containing a .git
+subdirectory.
+
+
+
+
◆ get_repo_details()
+
+
+
+
+
+ def penify_hook.utils.get_repo_details
+ (
+ Repo
+ repo )
+
+
+
+
+
Determine the details of a repository including its remote URL, hosting
+service, organization name, and repository name.
+
+This function extracts the remote URL from the given Git repository object and
+determines the hosting service (e.g., GitHub, Azure DevOps, Bitbucket, GitLab).
+It then parses the URL to extract the organization name and repository name. If
+the URL does not match any known hosting service pattern, it sets the hosting
+service as "Unknown". The function handles exceptions that may occur during
+this process and logs an error message if needed.
+
+Args:
+ repo (Repo): A GitPython Repo object representing the local git repository.
+
+Returns:
+ dict: A dictionary containing the organization name, repository name, and hosting
+ service.
+
+
+
+
+
◆ recursive_search_git_folder()
+
+
+
+
+
+ def penify_hook.utils.recursive_search_git_folder
+ (
+
+ folder_path )
+
+
+
+
+
Recursively searches for a .git folder starting from the given directory.
+
+
+
+
+
+
+
+
+
◆ logger
+
+
+
+
+
+ penify_hook.utils.logger = logging.getLogger(__name__)
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1utils.js b/docs/html/namespacepenify__hook_1_1utils.js
new file mode 100644
index 0000000..af7a599
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1utils.js
@@ -0,0 +1,8 @@
+var namespacepenify__hook_1_1utils =
+[
+ [ "GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ],
+ [ "find_git_parent", "namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2", null ],
+ [ "get_repo_details", "namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3", null ],
+ [ "recursive_search_git_folder", "namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f", null ],
+ [ "logger", "namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01", null ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map
new file mode 100644
index 0000000..054f06d
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map
@@ -0,0 +1,3 @@
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5
new file mode 100644
index 0000000..1431c94
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5
@@ -0,0 +1 @@
+dd726258fb2e799d709d2647521b3371
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg
new file mode 100644
index 0000000..058cc5f
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+penify_hook.utils.recursive_search_git_folder
+
+
+
+Node1
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node1->Node1
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map
new file mode 100644
index 0000000..24785f5
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5
new file mode 100644
index 0000000..768ce43
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5
@@ -0,0 +1 @@
+7f750ca69d16550b240f7065f5db45d2
\ No newline at end of file
diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg
new file mode 100644
index 0000000..4b06faf
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg
@@ -0,0 +1,815 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify_hook.utils.recursive_search_git_folder
+
+
+
+Node1
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node1->Node1
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node22
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node1->Node22
+
+
+
+
+
+Node32
+
+
+penify_hook.commands.auth
+_commands.save_credentials
+
+
+
+
+
+Node1->Node32
+
+
+
+
+
+Node35
+
+
+penify_hook.commands.config
+_commands.save_jira_config
+
+
+
+
+
+Node1->Node35
+
+
+
+
+
+Node37
+
+
+penify_hook.commands.config
+_commands.save_llm_config
+
+
+
+
+
+Node1->Node37
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node2->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node11
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node10->Node11
+
+
+
+
+
+Node20
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_penify_config_existing_dir
+
+
+
+
+
+Node10->Node20
+
+
+
+
+
+Node21
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_penify_config_new_dir
+
+
+
+
+
+Node10->Node21
+
+
+
+
+
+Node11->Node3
+
+
+
+
+
+Node12
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node11->Node12
+
+
+
+
+
+Node17
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_config
+
+
+
+
+
+Node11->Node17
+
+
+
+
+
+Node18
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_env
+
+
+
+
+
+Node11->Node18
+
+
+
+
+
+Node19
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_not_found
+
+
+
+
+
+Node11->Node19
+
+
+
+
+
+Node12->Node4
+
+
+
+
+
+Node13
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node12->Node13
+
+
+
+
+
+Node14
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node12->Node14
+
+
+
+
+
+Node15
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node12->Node15
+
+
+
+
+
+Node16
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node12->Node16
+
+
+
+
+
+Node22->Node11
+
+
+
+
+
+Node22->Node22
+
+
+
+
+
+Node23
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node22->Node23
+
+
+
+
+
+Node28
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node22->Node28
+
+
+
+
+
+Node23->Node3
+
+
+
+
+
+Node24
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node23->Node24
+
+
+
+
+
+Node27
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_jira_config_exists
+
+
+
+
+
+Node23->Node27
+
+
+
+
+
+Node25
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node24->Node25
+
+
+
+
+
+Node26
+
+
+tests.test_web_config.Test
+WebConfig.test_config_jira
+_web_server_setup
+
+
+
+
+
+Node24->Node26
+
+
+
+
+
+Node25->Node4
+
+
+
+
+
+Node28->Node3
+
+
+
+
+
+Node29
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_empty
+
+
+
+
+
+Node28->Node29
+
+
+
+
+
+Node30
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_exists
+
+
+
+
+
+Node28->Node30
+
+
+
+
+
+Node31
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_invalid_json
+
+
+
+
+
+Node28->Node31
+
+
+
+
+
+Node33
+
+
+penify_hook.commands.auth
+_commands.login
+
+
+
+
+
+Node32->Node33
+
+
+
+
+
+Node34
+
+
+penify_hook.login_command.handle
+_login
+
+
+
+
+
+Node33->Node34
+
+
+
+
+
+Node34->Node4
+
+
+
+
+
+Node35->Node24
+
+
+
+
+
+Node35->Node25
+
+
+
+
+
+Node36
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_save_jira_config_success
+
+
+
+
+
+Node35->Node36
+
+
+
+
+
+Node37->Node25
+
+
+
+
+
+Node38
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_save_llm_config_failure
+
+
+
+
+
+Node37->Node38
+
+
+
+
+
+Node39
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_save_llm_config_success
+
+
+
+
+
+Node37->Node39
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg
new file mode 100644
index 0000000..8094fbd
--- /dev/null
+++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg
@@ -0,0 +1,727 @@
+
+
+
+
+
+
+penify_hook.utils.recursive_search_git_folder
+
+
+
+Node1
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node1->Node1
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.commit
+_commands.commit_code
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node1->Node10
+
+
+
+
+
+Node22
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node1->Node22
+
+
+
+
+
+Node32
+
+
+penify_hook.commands.auth
+_commands.save_credentials
+
+
+
+
+
+Node1->Node32
+
+
+
+
+
+Node35
+
+
+penify_hook.commands.config
+_commands.save_jira_config
+
+
+
+
+
+Node1->Node35
+
+
+
+
+
+Node37
+
+
+penify_hook.commands.config
+_commands.save_llm_config
+
+
+
+
+
+Node1->Node37
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.commit
+_commands.handle_commit
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node6
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_error_handling
+
+
+
+
+
+Node2->Node6
+
+
+
+
+
+Node7
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_client
+
+
+
+
+
+Node2->Node7
+
+
+
+
+
+Node8
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_jira_connection
+_failure
+
+
+
+
+
+Node2->Node8
+
+
+
+
+
+Node9
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_commit_code_with_llm_client
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node4
+
+
+penify_hook.main.main
+
+
+
+
+
+Node3->Node4
+
+
+
+
+
+Node5
+
+
+tests.test_commit_commands.
+TestCommitCommands.test
+_handle_commit
+
+
+
+
+
+Node3->Node5
+
+
+
+
+
+Node4->Node4
+
+
+
+
+
+Node11
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node10->Node11
+
+
+
+
+
+Node20
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_penify_config_existing_dir
+
+
+
+
+
+Node10->Node20
+
+
+
+
+
+Node21
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_penify_config_new_dir
+
+
+
+
+
+Node10->Node21
+
+
+
+
+
+Node11->Node3
+
+
+
+
+
+Node12
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node11->Node12
+
+
+
+
+
+Node17
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_config
+
+
+
+
+
+Node11->Node17
+
+
+
+
+
+Node18
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_from_env
+
+
+
+
+
+Node11->Node18
+
+
+
+
+
+Node19
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_token_not_found
+
+
+
+
+
+Node11->Node19
+
+
+
+
+
+Node12->Node4
+
+
+
+
+
+Node13
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node12->Node13
+
+
+
+
+
+Node14
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node12->Node14
+
+
+
+
+
+Node15
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node12->Node15
+
+
+
+
+
+Node16
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node12->Node16
+
+
+
+
+
+Node22->Node11
+
+
+
+
+
+Node22->Node22
+
+
+
+
+
+Node23
+
+
+penify_hook.commands.config
+_commands.get_jira_config
+
+
+
+
+
+Node22->Node23
+
+
+
+
+
+Node28
+
+
+penify_hook.commands.config
+_commands.get_llm_config
+
+
+
+
+
+Node22->Node28
+
+
+
+
+
+Node23->Node3
+
+
+
+
+
+Node24
+
+
+penify_hook.commands.config
+_commands.config_jira_web
+
+
+
+
+
+Node23->Node24
+
+
+
+
+
+Node27
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_jira_config_exists
+
+
+
+
+
+Node23->Node27
+
+
+
+
+
+Node25
+
+
+penify_hook.config
+_command.handle_config
+
+
+
+
+
+Node24->Node25
+
+
+
+
+
+Node26
+
+
+tests.test_web_config.Test
+WebConfig.test_config_jira
+_web_server_setup
+
+
+
+
+
+Node24->Node26
+
+
+
+
+
+Node25->Node4
+
+
+
+
+
+Node28->Node3
+
+
+
+
+
+Node29
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_empty
+
+
+
+
+
+Node28->Node29
+
+
+
+
+
+Node30
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_exists
+
+
+
+
+
+Node28->Node30
+
+
+
+
+
+Node31
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_get_llm_config_invalid_json
+
+
+
+
+
+Node28->Node31
+
+
+
+
+
+Node33
+
+
+penify_hook.commands.auth
+_commands.login
+
+
+
+
+
+Node32->Node33
+
+
+
+
+
+Node34
+
+
+penify_hook.login_command.handle
+_login
+
+
+
+
+
+Node33->Node34
+
+
+
+
+
+Node34->Node4
+
+
+
+
+
+Node35->Node24
+
+
+
+
+
+Node35->Node25
+
+
+
+
+
+Node36
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_save_jira_config_success
+
+
+
+
+
+Node35->Node36
+
+
+
+
+
+Node37->Node25
+
+
+
+
+
+Node38
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_save_llm_config_failure
+
+
+
+
+
+Node37->Node38
+
+
+
+
+
+Node39
+
+
+tests.test_config_commands.
+TestConfigCommands.test
+_save_llm_config_success
+
+
+
+
+
+Node37->Node39
+
+
+
+
+
diff --git a/docs/html/namespaces.html b/docs/html/namespaces.html
new file mode 100644
index 0000000..d6dfa7d
--- /dev/null
+++ b/docs/html/namespaces.html
@@ -0,0 +1,172 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: Namespace List
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all namespaces with brief descriptions:
+
+
+
+
+
+
+
diff --git a/docs/html/namespaces_dup.js b/docs/html/namespaces_dup.js
new file mode 100644
index 0000000..7fcb39b
--- /dev/null
+++ b/docs/html/namespaces_dup.js
@@ -0,0 +1,20 @@
+var namespaces_dup =
+[
+ [ "penify_hook", "namespacepenify__hook.html", "namespacepenify__hook" ],
+ [ "setup", "namespacesetup.html", [
+ [ "author", "namespacesetup.html#a3a57a4772d418a06835249cbade0d86a", null ],
+ [ "author_email", "namespacesetup.html#a5b08034343aa2be607722a8b315f3625", null ],
+ [ "classifiers", "namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785", null ],
+ [ "description", "namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0", null ],
+ [ "entry_points", "namespacesetup.html#ada7058afc98897f073d3f3b8b9157059", null ],
+ [ "install_requires", "namespacesetup.html#abead4f26b530856f858f0d44c7cf2588", null ],
+ [ "long_description", "namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde", null ],
+ [ "long_description_content_type", "namespacesetup.html#a3796ea10c998699d07d391414ff5d720", null ],
+ [ "name", "namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f", null ],
+ [ "packages", "namespacesetup.html#aff2375a361fd5865c77bd9aa093be747", null ],
+ [ "python_requires", "namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf", null ],
+ [ "url", "namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb", null ],
+ [ "version", "namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c", null ]
+ ] ],
+ [ "tests", "namespacetests.html", "namespacetests" ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacesetup.html b/docs/html/namespacesetup.html
new file mode 100644
index 0000000..659ae1d
--- /dev/null
+++ b/docs/html/namespacesetup.html
@@ -0,0 +1,344 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: setup Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
◆ author
+
+
+
+
◆ author_email
+
+
+
+
+
+ setup.author_email
+
+
+
+
+
+
+
+
◆ classifiers
+
+
+
+
+
+ setup.classifiers
+
+
+
+
+
+
+
+
◆ description
+
+
+
+
+
+ setup.description
+
+
+
+
+
+
+
+
◆ entry_points
+
+
+
+
+
+ setup.entry_points
+
+
+
+
+
+
+
+
◆ install_requires
+
+
+
+
+
+ setup.install_requires
+
+
+
+
+
+
+
+
◆ long_description
+
+
+
+
+
+ setup.long_description
+
+
+
+
+
+
+
+
◆ long_description_content_type
+
+
+
+
+
+ setup.long_description_content_type
+
+
+
+
+
+
+
+
◆ name
+
+
+
+
◆ packages
+
+
+
+
◆ python_requires
+
+
+
+
+
+ setup.python_requires
+
+
+
+
+
+
+
+
◆ url
+
+
+
+
◆ version
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests.html b/docs/html/namespacetests.html
new file mode 100644
index 0000000..b1b39ec
--- /dev/null
+++ b/docs/html/namespacetests.html
@@ -0,0 +1,145 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: tests Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests.js b/docs/html/namespacetests.js
new file mode 100644
index 0000000..cc880ce
--- /dev/null
+++ b/docs/html/namespacetests.js
@@ -0,0 +1,20 @@
+var namespacetests =
+[
+ [ "conftest", "namespacetests_1_1conftest.html", null ],
+ [ "test_commit_commands", "namespacetests_1_1test__commit__commands.html", "namespacetests_1_1test__commit__commands" ],
+ [ "test_config_commands", "namespacetests_1_1test__config__commands.html", "namespacetests_1_1test__config__commands" ],
+ [ "test_doc_commands", "namespacetests_1_1test__doc__commands.html", [
+ [ "test_generate_doc_error_handling", "namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0", null ],
+ [ "test_generate_doc_file_location", "namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45", null ],
+ [ "test_generate_doc_folder_location", "namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186", null ],
+ [ "test_generate_doc_no_location", "namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8", null ],
+ [ "test_generate_doc_with_file_exception", "namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0", null ],
+ [ "test_generate_doc_with_folder_exception", "namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3", null ],
+ [ "test_handle_docgen_generate", "namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a", null ],
+ [ "test_handle_docgen_install_hook", "namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05", null ],
+ [ "test_handle_docgen_no_token", "namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c", null ],
+ [ "test_handle_docgen_uninstall_hook", "namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482", null ],
+ [ "test_setup_docgen_parser", "namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7", null ]
+ ] ],
+ [ "test_web_config", "namespacetests_1_1test__web__config.html", "namespacetests_1_1test__web__config" ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1conftest.html b/docs/html/namespacetests_1_1conftest.html
new file mode 100644
index 0000000..8a842c1
--- /dev/null
+++ b/docs/html/namespacetests_1_1conftest.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: tests.conftest Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__commit__commands.html b/docs/html/namespacetests_1_1test__commit__commands.html
new file mode 100644
index 0000000..e0728ff
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__commit__commands.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: tests.test_commit_commands Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__commit__commands.js b/docs/html/namespacetests_1_1test__commit__commands.js
new file mode 100644
index 0000000..03fd373
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__commit__commands.js
@@ -0,0 +1,4 @@
+var namespacetests_1_1test__commit__commands =
+[
+ [ "TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", "classtests_1_1test__commit__commands_1_1TestCommitCommands" ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__config__commands.html b/docs/html/namespacetests_1_1test__config__commands.html
new file mode 100644
index 0000000..bb62914
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__config__commands.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: tests.test_config_commands Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__config__commands.js b/docs/html/namespacetests_1_1test__config__commands.js
new file mode 100644
index 0000000..ae998ee
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__config__commands.js
@@ -0,0 +1,4 @@
+var namespacetests_1_1test__config__commands =
+[
+ [ "TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", "classtests_1_1test__config__commands_1_1TestConfigCommands" ]
+];
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__doc__commands.html b/docs/html/namespacetests_1_1test__doc__commands.html
new file mode 100644
index 0000000..7e825db
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands.html
@@ -0,0 +1,745 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: tests.test_doc_commands Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+def test_generate_doc_no_location (mock_getcwd, mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
+
+def test_generate_doc_file_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
+
+def test_generate_doc_folder_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
+
+def test_generate_doc_error_handling (mock_api_client, mock_git_analyzer, mock_exit)
+
+def test_setup_docgen_parser ()
+
+def test_handle_docgen_install_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
+
+def test_handle_docgen_uninstall_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
+
+def test_handle_docgen_generate (mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
+
+def test_handle_docgen_no_token (mock_exit, mock_get_token)
+
+def test_generate_doc_with_file_exception (mock_api_client, mock_getcwd)
+
+def test_generate_doc_with_folder_exception (mock_api_client, mock_getcwd)
+
+
+
+
+
◆ test_generate_doc_error_handling()
+
+
+
+
+
+ def tests.test_doc_commands.test_generate_doc_error_handling
+ (
+
+ mock_api_client ,
+
+
+
+
+
+ mock_git_analyzer ,
+
+
+
+
+
+ mock_exit
+
+
+
+ )
+
+
+
+
+
Generate a documentation string for the provided code snippet using
+Google Docstring style.
+
+Short one line description: Test function to ensure proper error
+handling during API calls with GitAnalyzer. Multiline long description:
+This test function is designed to verify that the generate_doc function
+handles exceptions correctly when an error occurs during API interaction
+with GitAnalyzer. It sets up a mock API client and a mock Git analyzer,
+causing the analyzer to raise an exception to simulate a failure
+condition. The function then asserts that the exit code is set to 1 when
+the error handling mechanism is invoked.
+
+Args:
+ mock_api_client (MagicMock): A mock object simulating the API client.
+ mock_git_analyzer (MagicMock): A mock object simulating the Git analyzer, configured to raise an
+ exception.
+ mock_exit (MagicMock): A mock object representing the exit function, which should be called
+ with an error code.
+
+
+
+
+
+
+
◆ test_generate_doc_file_location()
+
+
+
+
+
+ def tests.test_doc_commands.test_generate_doc_file_location
+ (
+
+ mock_api_client ,
+
+
+
+
+
+ mock_folder_analyzer ,
+
+
+
+
+
+ mock_file_analyzer ,
+
+
+
+
+
+ mock_git_analyzer
+
+
+
+ )
+
+
+
+
+
Test generating a documentation file location.
+
+This function tests the process of generating a documentation file
+location using mock objects for API client, folder analyzer, file
+analyzer, and Git analyzer. It sets up the necessary mocks, calls the
+`generate_doc` function with specified parameters, and asserts that the
+appropriate methods on the mock objects are called as expected.
+
+Args:
+ mock_api_client (MagicMock): Mock object for the API client.
+ mock_folder_analyzer (MagicMock): Mock object for the folder analyzer.
+ mock_file_analyzer (MagicMock): Mock object for the file analyzer.
+ mock_git_analyzer (MagicMock): Mock object for the Git analyzer.
+
+
+
+
+
+
+
◆ test_generate_doc_folder_location()
+
+
+
+
+
+ def tests.test_doc_commands.test_generate_doc_folder_location
+ (
+
+ mock_api_client ,
+
+
+
+
+
+ mock_folder_analyzer ,
+
+
+
+
+
+ mock_file_analyzer ,
+
+
+
+
+
+ mock_git_analyzer
+
+
+
+ )
+
+
+
+
+
Test the function to generate documentation for a folder location.
+
+It sets up mock objects for API client, folder analyzer, file analyzer,
+and Git analyzer, then calls the `generate_doc` function with specified
+parameters. Finally, it asserts that the correct methods on the mock
+objects were called as expected.
+
+Args:
+ mock_api_client (MagicMock): Mock object for the API client.
+ mock_folder_analyzer (MagicMock): Mock object for the folder analyzer.
+ mock_file_analyzer (MagicMock): Mock object for the file analyzer.
+ mock_git_analyzer (MagicMock): Mock object for the Git analyzer.
+
+
+
+
+
+
+
◆ test_generate_doc_no_location()
+
+
+
+
+
+ def tests.test_doc_commands.test_generate_doc_no_location
+ (
+
+ mock_getcwd ,
+
+
+
+
+
+ mock_api_client ,
+
+
+
+
+
+ mock_folder_analyzer ,
+
+
+
+
+
+ mock_file_analyzer ,
+
+
+
+
+
+ mock_git_analyzer
+
+
+
+ )
+
+
+
+
+
Test function to generate documentation without location information.
+
+This function sets up mocks for the API client, current working
+directory, and Git analyzer. It then calls the `generate_doc` function
+with a fake API URL and token. The function is expected to initialize
+the API client, configure the Git analyzer, and run it without any
+location information.
+
+Args:
+ mock_getcwd (MagicMock): Mock for os.getcwd().
+ mock_api_client (MagicMock): Mock for creating an API client.
+ mock_folder_analyzer (MagicMock): Mock for folder analysis.
+ mock_file_analyzer (MagicMock): Mock for file analysis.
+ mock_git_analyzer (MagicMock): Mock for Git analyzer setup.
+
+
+
+
+
+
+
◆ test_generate_doc_with_file_exception()
+
+
+
+
+
+ def tests.test_doc_commands.test_generate_doc_with_file_exception
+ (
+
+ mock_api_client ,
+
+
+
+
+
+ mock_getcwd
+
+
+
+ )
+
+
+
+
+
Generate documentation from a Python source file.
+
+This function reads a Python file and generates a docstring based on its
+content. It uses mock objects to simulate API calls and directory
+operations during testing.
+
+Args:
+ mock_api_client (unittest.mock.MagicMock): A mock object for simulating API client behavior.
+ mock_getcwd (unittest.mock.MagicMock): A mock object for simulating the current working directory function.
+
+
+
+
+
+
+
◆ test_generate_doc_with_folder_exception()
+
+
+
+
+
+ def tests.test_doc_commands.test_generate_doc_with_folder_exception
+ (
+
+ mock_api_client ,
+
+
+
+
+
+ mock_getcwd
+
+
+
+ )
+
+
+
+
+
Generate documentation from a given API endpoint and save it to a
+folder.
+
+This function fetches data from the specified API endpoint, processes
+it, and saves the generated documentation in the provided folder. If an
+error occurs during the fetching process, a SystemExit exception is
+raised with an appropriate message.
+
+Args:
+ api_url (str): The URL of the API endpoint from which data will be fetched.
+ token (str): The authentication token required to access the API.
+ folder_path (str): The path to the folder where the documentation will be saved.
+
+
+
+
+
+
+
◆ test_handle_docgen_generate()
+
+
+
+
+
+ def tests.test_doc_commands.test_handle_docgen_generate
+ (
+
+ mock_get_token ,
+
+
+
+
+
+ mock_generate_doc ,
+
+
+
+
+
+ mock_uninstall_hook ,
+
+
+
+
+
+ mock_install_hook
+
+
+
+ )
+
+
+
+
+
Test the direct documentation generation functionality.
+
+This function tests the `handle_docgen` function when no subcommand is
+provided. It verifies that the document generation hook is called and
+the uninstall and install hooks are not called.
+
+Args:
+ mock_get_token (MagicMock): Mocked function to get authentication token.
+ mock_generate_doc (MagicMock): Mocked function for generating documentation.
+ mock_uninstall_hook (MagicMock): Mocked function for uninstalling the document generation hook.
+ mock_install_hook (MagicMock): Mocked function for installing the document generation hook.
+
+
+
+
+
+
+
◆ test_handle_docgen_install_hook()
+
+
+
+
+
+ def tests.test_doc_commands.test_handle_docgen_install_hook
+ (
+
+ mock_exit ,
+
+
+
+
+
+ mock_get_token ,
+
+
+
+
+
+ mock_generate_doc ,
+
+
+
+
+
+ mock_uninstall_hook ,
+
+
+
+
+
+ mock_install_hook
+
+
+
+ )
+
+
+
+
+
Test the handling of the 'install-hook' subcommand.
+
+This function sets up a mock environment where it simulates the
+execution of the 'install-hook' subcommand. It verifies that the
+`mock_install_hook` is called with the correct arguments, while
+`mock_generate_doc` and `mock_uninstall_hook` are not called.
+
+Args:
+ mock_exit (MagicMock): Mock object for sys.exit.
+ mock_get_token (MagicMock): Mock object to simulate fetching a token.
+ mock_generate_doc (MagicMock): Mock object to simulate generating documentation.
+ mock_uninstall_hook (MagicMock): Mock object to simulate uninstalling a hook.
+ mock_install_hook (MagicMock): Mock object to simulate installing a hook.
+
+
+
+
+
+
+
◆ test_handle_docgen_no_token()
+
+
+
+
+
+ def tests.test_doc_commands.test_handle_docgen_no_token
+ (
+
+ mock_exit ,
+
+
+
+
+
+ mock_get_token
+
+
+
+ )
+
+
+
+
+
Test the behavior of the `handle_docgen` function when no token is
+provided.
+
+This function asserts that if no token is returned by `mock_get_token`,
+the `handle_docgen` function will call `mock_exit` with a status code of
+1.
+
+Args:
+ mock_exit (MagicMock): A MagicMock object simulating the `exit` function.
+ mock_get_token (MagicMock): A MagicMock object simulating the `get_token` function.
+
+
+
+
+
+
+
◆ test_handle_docgen_uninstall_hook()
+
+
+
+
+
+ def tests.test_doc_commands.test_handle_docgen_uninstall_hook
+ (
+
+ mock_exit ,
+
+
+
+
+
+ mock_get_token ,
+
+
+
+
+
+ mock_generate_doc ,
+
+
+
+
+
+ mock_uninstall_hook ,
+
+
+
+
+
+ mock_install_hook
+
+
+
+ )
+
+
+
+
+
Test the uninstall-hook subcommand of the handle_docgen function.
+This test case sets up a mock environment and verifies that the
+uninstall-hook is called with the correct location, while generate_doc
+and install_hook are not called.
+
+Args:
+ mock_exit (MagicMock): A mock for the exit function.
+ mock_get_token (MagicMock): A mock for the get_token function.
+ mock_generate_doc (MagicMock): A mock for the generate_doc function.
+ mock_uninstall_hook (MagicMock): A mock for the uninstall_hook function.
+ mock_install_hook (MagicMock): A mock for the install_hook function.
+
+
+
+
+
+
+
◆ test_setup_docgen_parser()
+
+
+
+
+
+ def tests.test_doc_commands.test_setup_docgen_parser
+ (
+ )
+
+
+
+
+
Test the setup_docgen_parser function to ensure it properly configures
+the ArgumentParser for docgen options.
+
+It verifies that the parser correctly sets up docgen options and handles
+different subcommands like 'install-hook' and 'uninstall-hook'.
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map
new file mode 100644
index 0000000..f0f54c3
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5
new file mode 100644
index 0000000..b280dc5
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5
@@ -0,0 +1 @@
+28c17f21f2a2a250d23b14c68e3e5d3a
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg
new file mode 100644
index 0000000..c482b86
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+tests.test_doc_commands.test_generate_doc_file_location
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_generate_doc_file_location
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map
new file mode 100644
index 0000000..a8ff77b
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5
new file mode 100644
index 0000000..53e2e0a
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5
@@ -0,0 +1 @@
+192fbe5412db3710d1849692c54ac106
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg
new file mode 100644
index 0000000..6ca2ff2
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+tests.test_doc_commands.test_setup_docgen_parser
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_setup_docgen_parser
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.setup_docgen_parser
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map
new file mode 100644
index 0000000..b5bbb57
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5
new file mode 100644
index 0000000..300f399
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5
@@ -0,0 +1 @@
+aef759552fc6cc4d80899b0b13739a5e
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg
new file mode 100644
index 0000000..94a320e
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+tests.test_doc_commands.test_handle_docgen_uninstall_hook
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node9
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node2->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node4->Node8
+
+
+
+
+
+Node7
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node7->Node7
+
+
+
+
+
+Node8->Node7
+
+
+
+
+
+Node8->Node8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg
new file mode 100644
index 0000000..fd67a25
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+tests.test_doc_commands.test_handle_docgen_uninstall_hook
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_handle_docgen_uninstall_hook
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node9
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node2->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node4->Node8
+
+
+
+
+
+Node7
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node7->Node7
+
+
+
+
+
+Node8->Node7
+
+
+
+
+
+Node8->Node8
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map
new file mode 100644
index 0000000..f220740
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5
new file mode 100644
index 0000000..ef64a42
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5
@@ -0,0 +1 @@
+10d76966ac7089e8706fb1aec3e4f9d6
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg
new file mode 100644
index 0000000..b369e3b
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+tests.test_doc_commands.test_generate_doc_with_file_exception
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_generate_doc_with_file_exception
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map
new file mode 100644
index 0000000..1cee3ef
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5
new file mode 100644
index 0000000..076630a
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5
@@ -0,0 +1 @@
+064f1a8c9470887507dea5cf5dd184eb
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg
new file mode 100644
index 0000000..d9f33f9
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+tests.test_doc_commands.test_generate_doc_folder_location
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_generate_doc_folder_location
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map
new file mode 100644
index 0000000..6505473
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5
new file mode 100644
index 0000000..314f15d
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5
@@ -0,0 +1 @@
+e42b926dad2f0ff5205af415d972f1da
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg
new file mode 100644
index 0000000..f231670
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+tests.test_doc_commands.test_generate_doc_with_folder_exception
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_generate_doc_with_folder
+_exception
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map
new file mode 100644
index 0000000..73c8b64
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5
new file mode 100644
index 0000000..99c08a9
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5
@@ -0,0 +1 @@
+d4d1f9d92eb42ae249ce3409ab7627ac
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg
new file mode 100644
index 0000000..0ee0fcd
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+tests.test_doc_commands.test_generate_doc_no_location
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_generate_doc_no_location
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map
new file mode 100644
index 0000000..86fe3ea
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5
new file mode 100644
index 0000000..28ac74a
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5
@@ -0,0 +1 @@
+810237d2c8640fcab5bd4448f12a9692
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg
new file mode 100644
index 0000000..ae76a88
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+tests.test_doc_commands.test_handle_docgen_generate
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node9
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node2->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node4->Node8
+
+
+
+
+
+Node7
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node7->Node7
+
+
+
+
+
+Node8->Node7
+
+
+
+
+
+Node8->Node8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg
new file mode 100644
index 0000000..408dbc3
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+tests.test_doc_commands.test_handle_docgen_generate
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_handle_docgen_generate
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node9
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node2->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node4->Node8
+
+
+
+
+
+Node7
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node7->Node7
+
+
+
+
+
+Node8->Node7
+
+
+
+
+
+Node8->Node8
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map
new file mode 100644
index 0000000..97c848c
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5
new file mode 100644
index 0000000..56e1467
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5
@@ -0,0 +1 @@
+dc60bba75d6f8dafbd4701e4ac271385
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg
new file mode 100644
index 0000000..927f757
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+tests.test_doc_commands.test_handle_docgen_install_hook
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node9
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node2->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node4->Node8
+
+
+
+
+
+Node7
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node7->Node7
+
+
+
+
+
+Node8->Node7
+
+
+
+
+
+Node8->Node8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg
new file mode 100644
index 0000000..0258a01
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+tests.test_doc_commands.test_handle_docgen_install_hook
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_handle_docgen_install_hook
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node9
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node2->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node4->Node8
+
+
+
+
+
+Node7
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node7->Node7
+
+
+
+
+
+Node8->Node7
+
+
+
+
+
+Node8->Node8
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map
new file mode 100644
index 0000000..1b841f4
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5
new file mode 100644
index 0000000..ef9f04c
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5
@@ -0,0 +1 @@
+7930a342103b95a29b43ca93e1212cff
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg
new file mode 100644
index 0000000..9768a7e
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+tests.test_doc_commands.test_generate_doc_error_handling
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_generate_doc_error_handling
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map
new file mode 100644
index 0000000..6b196ac
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5
new file mode 100644
index 0000000..8969799
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5
@@ -0,0 +1 @@
+4dfa85ad92a13ab307edd504ab65bb1a
\ No newline at end of file
diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg
new file mode 100644
index 0000000..b636d21
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+tests.test_doc_commands.test_handle_docgen_no_token
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node9
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node2->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node4->Node8
+
+
+
+
+
+Node7
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node7->Node7
+
+
+
+
+
+Node8->Node7
+
+
+
+
+
+Node8->Node8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg
new file mode 100644
index 0000000..0cfb00d
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+tests.test_doc_commands.test_handle_docgen_no_token
+
+
+
+Node1
+
+
+tests.test_doc_commands.test
+_handle_docgen_no_token
+
+
+
+
+
+Node2
+
+
+penify_hook.commands.doc
+_commands.handle_docgen
+
+
+
+
+
+Node1->Node2
+
+
+
+
+
+Node3
+
+
+penify_hook.commands.doc
+_commands.generate_doc
+
+
+
+
+
+Node2->Node3
+
+
+
+
+
+Node4
+
+
+penify_hook.commands.config
+_commands.get_token
+
+
+
+
+
+Node2->Node4
+
+
+
+
+
+Node9
+
+
+penify_hook.commands.hook
+_commands.install_git_hook
+
+
+
+
+
+Node2->Node9
+
+
+
+
+
+Node10
+
+
+penify_hook.commands.hook
+_commands.uninstall_git_hook
+
+
+
+
+
+Node2->Node10
+
+
+
+
+
+Node5
+
+
+penify_hook.commands.config
+_commands.get_env_var_or
+_default
+
+
+
+
+
+Node4->Node5
+
+
+
+
+
+Node6
+
+
+penify_hook.commands.config
+_commands.get_penify_config
+
+
+
+
+
+Node4->Node6
+
+
+
+
+
+Node8
+
+
+penify_hook.commands.config
+_commands.load_env_files
+
+
+
+
+
+Node4->Node8
+
+
+
+
+
+Node7
+
+
+penify_hook.utils.recursive
+_search_git_folder
+
+
+
+
+
+Node6->Node7
+
+
+
+
+
+Node7->Node7
+
+
+
+
+
+Node8->Node7
+
+
+
+
+
+Node8->Node8
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__web__config.html b/docs/html/namespacetests_1_1test__web__config.html
new file mode 100644
index 0000000..fc624b3
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__web__config.html
@@ -0,0 +1,137 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: tests.test_web_config Namespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/namespacetests_1_1test__web__config.js b/docs/html/namespacetests_1_1test__web__config.js
new file mode 100644
index 0000000..9c444bb
--- /dev/null
+++ b/docs/html/namespacetests_1_1test__web__config.js
@@ -0,0 +1,4 @@
+var namespacetests_1_1test__web__config =
+[
+ [ "TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", "classtests_1_1test__web__config_1_1TestWebConfig" ]
+];
\ No newline at end of file
diff --git a/docs/html/nav_f.png b/docs/html/nav_f.png
new file mode 100644
index 0000000..72a58a5
Binary files /dev/null and b/docs/html/nav_f.png differ
diff --git a/docs/html/nav_g.png b/docs/html/nav_g.png
new file mode 100644
index 0000000..2093a23
Binary files /dev/null and b/docs/html/nav_g.png differ
diff --git a/docs/html/nav_h.png b/docs/html/nav_h.png
new file mode 100644
index 0000000..33389b1
Binary files /dev/null and b/docs/html/nav_h.png differ
diff --git a/docs/html/navtree.css b/docs/html/navtree.css
new file mode 100644
index 0000000..d8a311a
--- /dev/null
+++ b/docs/html/navtree.css
@@ -0,0 +1,147 @@
+#nav-tree .children_ul {
+ margin:0;
+ padding:4px;
+}
+
+#nav-tree ul {
+ list-style:none outside none;
+ margin:0px;
+ padding:0px;
+}
+
+#nav-tree li {
+ white-space:nowrap;
+ margin:0px;
+ padding:0px;
+}
+
+#nav-tree .plus {
+ margin:0px;
+}
+
+#nav-tree .selected {
+ background-image: url('tab_a.png');
+ background-repeat:repeat-x;
+ color: #fff;
+ text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
+}
+
+#nav-tree img {
+ margin:0px;
+ padding:0px;
+ border:0px;
+ vertical-align: middle;
+}
+
+#nav-tree a {
+ text-decoration:none;
+ padding:0px;
+ margin:0px;
+ outline:none;
+}
+
+#nav-tree .label {
+ margin:0px;
+ padding:0px;
+ font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
+}
+
+#nav-tree .label a {
+ padding:2px;
+}
+
+#nav-tree .selected a {
+ text-decoration:none;
+ color:#fff;
+}
+
+#nav-tree .children_ul {
+ margin:0px;
+ padding:0px;
+}
+
+#nav-tree .item {
+ margin:0px;
+ padding:0px;
+}
+
+#nav-tree {
+ padding: 0px 0px;
+ background-color: #FAFAFF;
+ font-size:14px;
+ overflow:auto;
+}
+
+#doc-content {
+ overflow:auto;
+ display:block;
+ padding:0px;
+ margin:0px;
+ -webkit-overflow-scrolling : touch; /* iOS 5+ */
+}
+
+#side-nav {
+ padding:0 6px 0 0;
+ margin: 0px;
+ display:block;
+ position: absolute;
+ left: 0px;
+ width: 250px;
+ overflow : hidden;
+}
+
+.ui-resizable .ui-resizable-handle {
+ display:block;
+}
+
+.ui-resizable-e {
+ background-image:url("splitbar.png");
+ background-size:100%;
+ background-repeat:repeat-y;
+ background-attachment: scroll;
+ cursor:ew-resize;
+ height:100%;
+ right:0;
+ top:0;
+ width:6px;
+}
+
+.ui-resizable-handle {
+ display:none;
+ font-size:0.1px;
+ position:absolute;
+ z-index:1;
+}
+
+#nav-tree-contents {
+ margin: 6px 0px 0px 0px;
+}
+
+#nav-tree {
+ background-image:url('nav_h.png');
+ background-repeat:repeat-x;
+ background-color: #F9FAFC;
+ -webkit-overflow-scrolling : touch; /* iOS 5+ */
+}
+
+#nav-sync {
+ position:absolute;
+ top:5px;
+ right:24px;
+ z-index:0;
+}
+
+#nav-sync img {
+ opacity:0.3;
+}
+
+#nav-sync img:hover {
+ opacity:0.9;
+}
+
+@media print
+{
+ #nav-tree { display: none; }
+ div.ui-resizable-handle { display: none; position: relative; }
+}
+
diff --git a/docs/html/navtree.js b/docs/html/navtree.js
new file mode 100644
index 0000000..2798368
--- /dev/null
+++ b/docs/html/navtree.js
@@ -0,0 +1,549 @@
+/*
+ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+var navTreeSubIndices = new Array();
+var arrowDown = '▼';
+var arrowRight = '►';
+
+function getData(varName)
+{
+ var i = varName.lastIndexOf('/');
+ var n = i>=0 ? varName.substring(i+1) : varName;
+ return eval(n.replace(/\-/g,'_'));
+}
+
+function stripPath(uri)
+{
+ return uri.substring(uri.lastIndexOf('/')+1);
+}
+
+function stripPath2(uri)
+{
+ var i = uri.lastIndexOf('/');
+ var s = uri.substring(i+1);
+ var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/);
+ return m ? uri.substring(i-6) : s;
+}
+
+function hashValue()
+{
+ return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,'');
+}
+
+function hashUrl()
+{
+ return '#'+hashValue();
+}
+
+function pathName()
+{
+ return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, '');
+}
+
+function localStorageSupported()
+{
+ try {
+ return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem;
+ }
+ catch(e) {
+ return false;
+ }
+}
+
+function storeLink(link)
+{
+ if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) {
+ window.localStorage.setItem('navpath',link);
+ }
+}
+
+function deleteLink()
+{
+ if (localStorageSupported()) {
+ window.localStorage.setItem('navpath','');
+ }
+}
+
+function cachedLink()
+{
+ if (localStorageSupported()) {
+ return window.localStorage.getItem('navpath');
+ } else {
+ return '';
+ }
+}
+
+function getScript(scriptName,func,show)
+{
+ var head = document.getElementsByTagName("head")[0];
+ var script = document.createElement('script');
+ script.id = scriptName;
+ script.type = 'text/javascript';
+ script.onload = func;
+ script.src = scriptName+'.js';
+ head.appendChild(script);
+}
+
+function createIndent(o,domNode,node,level)
+{
+ var level=-1;
+ var n = node;
+ while (n.parentNode) { level++; n=n.parentNode; }
+ if (node.childrenData) {
+ var imgNode = document.createElement("span");
+ imgNode.className = 'arrow';
+ imgNode.style.paddingLeft=(16*level).toString()+'px';
+ imgNode.innerHTML=arrowRight;
+ node.plus_img = imgNode;
+ node.expandToggle = document.createElement("a");
+ node.expandToggle.href = "javascript:void(0)";
+ node.expandToggle.onclick = function() {
+ if (node.expanded) {
+ $(node.getChildrenUL()).slideUp("fast");
+ node.plus_img.innerHTML=arrowRight;
+ node.expanded = false;
+ } else {
+ expandNode(o, node, false, false);
+ }
+ }
+ node.expandToggle.appendChild(imgNode);
+ domNode.appendChild(node.expandToggle);
+ } else {
+ var span = document.createElement("span");
+ span.className = 'arrow';
+ span.style.width = 16*(level+1)+'px';
+ span.innerHTML = ' ';
+ domNode.appendChild(span);
+ }
+}
+
+var animationInProgress = false;
+
+function gotoAnchor(anchor,aname,updateLocation)
+{
+ var pos, docContent = $('#doc-content');
+ var ancParent = $(anchor.parent());
+ if (ancParent.hasClass('memItemLeft') ||
+ ancParent.hasClass('memtitle') ||
+ ancParent.hasClass('fieldname') ||
+ ancParent.hasClass('fieldtype') ||
+ ancParent.is(':header'))
+ {
+ pos = ancParent.position().top;
+ } else if (anchor.position()) {
+ pos = anchor.position().top;
+ }
+ if (pos) {
+ var dist = Math.abs(Math.min(
+ pos-docContent.offset().top,
+ docContent[0].scrollHeight-
+ docContent.height()-docContent.scrollTop()));
+ animationInProgress=true;
+ docContent.animate({
+ scrollTop: pos + docContent.scrollTop() - docContent.offset().top
+ },Math.max(50,Math.min(500,dist)),function(){
+ if (updateLocation) window.location.href=aname;
+ animationInProgress=false;
+ });
+ }
+}
+
+function newNode(o, po, text, link, childrenData, lastNode)
+{
+ var node = new Object();
+ node.children = Array();
+ node.childrenData = childrenData;
+ node.depth = po.depth + 1;
+ node.relpath = po.relpath;
+ node.isLast = lastNode;
+
+ node.li = document.createElement("li");
+ po.getChildrenUL().appendChild(node.li);
+ node.parentNode = po;
+
+ node.itemDiv = document.createElement("div");
+ node.itemDiv.className = "item";
+
+ node.labelSpan = document.createElement("span");
+ node.labelSpan.className = "label";
+
+ createIndent(o,node.itemDiv,node,0);
+ node.itemDiv.appendChild(node.labelSpan);
+ node.li.appendChild(node.itemDiv);
+
+ var a = document.createElement("a");
+ node.labelSpan.appendChild(a);
+ node.label = document.createTextNode(text);
+ node.expanded = false;
+ a.appendChild(node.label);
+ if (link) {
+ var url;
+ if (link.substring(0,1)=='^') {
+ url = link.substring(1);
+ link = url;
+ } else {
+ url = node.relpath+link;
+ }
+ a.className = stripPath(link.replace('#',':'));
+ if (link.indexOf('#')!=-1) {
+ var aname = '#'+link.split('#')[1];
+ var srcPage = stripPath(pathName());
+ var targetPage = stripPath(link.split('#')[0]);
+ a.href = srcPage!=targetPage ? url : "javascript:void(0)";
+ a.onclick = function(){
+ storeLink(link);
+ if (!$(a).parent().parent().hasClass('selected'))
+ {
+ $('.item').removeClass('selected');
+ $('.item').removeAttr('id');
+ $(a).parent().parent().addClass('selected');
+ $(a).parent().parent().attr('id','selected');
+ }
+ var anchor = $(aname);
+ gotoAnchor(anchor,aname,true);
+ };
+ } else {
+ a.href = url;
+ a.onclick = function() { storeLink(link); }
+ }
+ } else {
+ if (childrenData != null)
+ {
+ a.className = "nolink";
+ a.href = "javascript:void(0)";
+ a.onclick = node.expandToggle.onclick;
+ }
+ }
+
+ node.childrenUL = null;
+ node.getChildrenUL = function() {
+ if (!node.childrenUL) {
+ node.childrenUL = document.createElement("ul");
+ node.childrenUL.className = "children_ul";
+ node.childrenUL.style.display = "none";
+ node.li.appendChild(node.childrenUL);
+ }
+ return node.childrenUL;
+ };
+
+ return node;
+}
+
+function showRoot()
+{
+ var headerHeight = $("#top").height();
+ var footerHeight = $("#nav-path").height();
+ var windowHeight = $(window).height() - headerHeight - footerHeight;
+ (function (){ // retry until we can scroll to the selected item
+ try {
+ var navtree=$('#nav-tree');
+ navtree.scrollTo('#selected',100,{offset:-windowHeight/2});
+ } catch (err) {
+ setTimeout(arguments.callee, 0);
+ }
+ })();
+}
+
+function expandNode(o, node, imm, showRoot)
+{
+ if (node.childrenData && !node.expanded) {
+ if (typeof(node.childrenData)==='string') {
+ var varName = node.childrenData;
+ getScript(node.relpath+varName,function(){
+ node.childrenData = getData(varName);
+ expandNode(o, node, imm, showRoot);
+ }, showRoot);
+ } else {
+ if (!node.childrenVisited) {
+ getNode(o, node);
+ }
+ $(node.getChildrenUL()).slideDown("fast");
+ node.plus_img.innerHTML = arrowDown;
+ node.expanded = true;
+ }
+ }
+}
+
+function glowEffect(n,duration)
+{
+ n.addClass('glow').delay(duration).queue(function(next){
+ $(this).removeClass('glow');next();
+ });
+}
+
+function highlightAnchor()
+{
+ var aname = hashUrl();
+ var anchor = $(aname);
+ if (anchor.parent().attr('class')=='memItemLeft'){
+ var rows = $('.memberdecls tr[class$="'+hashValue()+'"]');
+ glowEffect(rows.children(),300); // member without details
+ } else if (anchor.parent().attr('class')=='fieldname'){
+ glowEffect(anchor.parent().parent(),1000); // enum value
+ } else if (anchor.parent().attr('class')=='fieldtype'){
+ glowEffect(anchor.parent().parent(),1000); // struct field
+ } else if (anchor.parent().is(":header")) {
+ glowEffect(anchor.parent(),1000); // section header
+ } else {
+ glowEffect(anchor.next(),1000); // normal member
+ }
+}
+
+function selectAndHighlight(hash,n)
+{
+ var a;
+ if (hash) {
+ var link=stripPath(pathName())+':'+hash.substring(1);
+ a=$('.item a[class$="'+link+'"]');
+ }
+ if (a && a.length) {
+ a.parent().parent().addClass('selected');
+ a.parent().parent().attr('id','selected');
+ highlightAnchor();
+ } else if (n) {
+ $(n.itemDiv).addClass('selected');
+ $(n.itemDiv).attr('id','selected');
+ }
+ var topOffset=5;
+ if (typeof page_layout!=='undefined' && page_layout==1) {
+ topOffset+=$('#top').outerHeight();
+ }
+ if ($('#nav-tree-contents .item:first').hasClass('selected')) {
+ topOffset+=25;
+ }
+ $('#nav-sync').css('top',topOffset+'px');
+ showRoot();
+}
+
+function showNode(o, node, index, hash)
+{
+ if (node && node.childrenData) {
+ if (typeof(node.childrenData)==='string') {
+ var varName = node.childrenData;
+ getScript(node.relpath+varName,function(){
+ node.childrenData = getData(varName);
+ showNode(o,node,index,hash);
+ },true);
+ } else {
+ if (!node.childrenVisited) {
+ getNode(o, node);
+ }
+ $(node.getChildrenUL()).css({'display':'block'});
+ node.plus_img.innerHTML = arrowDown;
+ node.expanded = true;
+ var n = node.children[o.breadcrumbs[index]];
+ if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,'');
+ else hash='';
+ }
+ if (hash.match(/^#l\d+$/)) {
+ var anchor=$('a[name='+hash.substring(1)+']');
+ glowEffect(anchor.parent(),1000); // line number
+ hash=''; // strip line number anchors
+ }
+ var url=root+hash;
+ var i=-1;
+ while (NAVTREEINDEX[i+1]<=url) i++;
+ if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index
+ if (navTreeSubIndices[i]) {
+ gotoNode(o,i,root,hash,relpath)
+ } else {
+ getScript(relpath+'navtreeindex'+i,function(){
+ navTreeSubIndices[i] = eval('NAVTREEINDEX'+i);
+ if (navTreeSubIndices[i]) {
+ gotoNode(o,i,root,hash,relpath);
+ }
+ },true);
+ }
+}
+
+function showSyncOff(n,relpath)
+{
+ n.html(' ');
+}
+
+function showSyncOn(n,relpath)
+{
+ n.html(' ');
+}
+
+function toggleSyncButton(relpath)
+{
+ var navSync = $('#nav-sync');
+ if (navSync.hasClass('sync')) {
+ navSync.removeClass('sync');
+ showSyncOff(navSync,relpath);
+ storeLink(stripPath2(pathName())+hashUrl());
+ } else {
+ navSync.addClass('sync');
+ showSyncOn(navSync,relpath);
+ deleteLink();
+ }
+}
+
+var loadTriggered = false;
+var readyTriggered = false;
+var loadObject,loadToRoot,loadUrl,loadRelPath;
+
+$(window).on('load',function(){
+ if (readyTriggered) { // ready first
+ navTo(loadObject,loadToRoot,loadUrl,loadRelPath);
+ showRoot();
+ }
+ loadTriggered=true;
+});
+
+function initNavTree(toroot,relpath)
+{
+ var o = new Object();
+ o.toroot = toroot;
+ o.node = new Object();
+ o.node.li = document.getElementById("nav-tree-contents");
+ o.node.childrenData = NAVTREE;
+ o.node.children = new Array();
+ o.node.childrenUL = document.createElement("ul");
+ o.node.getChildrenUL = function() { return o.node.childrenUL; };
+ o.node.li.appendChild(o.node.childrenUL);
+ o.node.depth = 0;
+ o.node.relpath = relpath;
+ o.node.expanded = false;
+ o.node.isLast = true;
+ o.node.plus_img = document.createElement("span");
+ o.node.plus_img.className = 'arrow';
+ o.node.plus_img.innerHTML = arrowRight;
+
+ if (localStorageSupported()) {
+ var navSync = $('#nav-sync');
+ if (cachedLink()) {
+ showSyncOff(navSync,relpath);
+ navSync.removeClass('sync');
+ } else {
+ showSyncOn(navSync,relpath);
+ }
+ navSync.click(function(){ toggleSyncButton(relpath); });
+ }
+
+ if (loadTriggered) { // load before ready
+ navTo(o,toroot,hashUrl(),relpath);
+ showRoot();
+ } else { // ready before load
+ loadObject = o;
+ loadToRoot = toroot;
+ loadUrl = hashUrl();
+ loadRelPath = relpath;
+ readyTriggered=true;
+ }
+
+ $(window).bind('hashchange', function(){
+ if (window.location.hash && window.location.hash.length>1){
+ var a;
+ if ($(location).attr('hash')){
+ var clslink=stripPath(pathName())+':'+hashValue();
+ a=$('.item a[class$="'+clslink.replace(/-m, --message", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md3", null ],
+ [ "-e, --terminal ", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md4", null ],
+ [ "-d, --description ", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md5", null ]
+ ] ],
+ [ "Option Combinations", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md6", [
+ [ "Generate Title Only with Context", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md7", null ],
+ [ "Generate Title and Description with Context", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md8", null ],
+ [ "Generate and Edit Full Commit Message", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md9", null ],
+ [ "Generate, Edit, and Provide Context", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md10", null ]
+ ] ],
+ [ "LLM and JIRA Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md11", [
+ [ "Using Local LLM", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md12", null ],
+ [ "JIRA Enhancement", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md13", null ]
+ ] ],
+ [ "Configuration Requirements", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md14", null ],
+ [ "Examples", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md15", [
+ [ "Basic Commit with Default Settings", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md16", null ],
+ [ "Full Workflow with All Features", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md17", null ]
+ ] ],
+ [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md18", [
+ [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md19", null ]
+ ] ]
+ ] ],
+ [ "Penify CLI - Configuration Commands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html", [
+ [ "Configuration Overview", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md21", null ],
+ [ "Basic Usage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md22", null ],
+ [ "LLM Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md23", [
+ [ "Web Interface", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md24", null ],
+ [ "Supported LLMs", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md25", [
+ [ "OpenAI", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md26", null ],
+ [ "Anthropic", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md27", null ],
+ [ "Ollama (Local)", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md28", null ],
+ [ "Azure OpenAI", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md29", null ]
+ ] ],
+ [ "Configuration File Structure", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md30", null ]
+ ] ],
+ [ "JIRA Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md31", [
+ [ "Web Interface", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md32", null ],
+ [ "Creating a JIRA API Token", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md33", null ],
+ [ "Configuration File Structure", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md34", null ]
+ ] ],
+ [ "Configuration Locations", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md35", null ],
+ [ "Environment Variables", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md36", null ],
+ [ "Command-Line Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md37", null ],
+ [ "Sharing Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md38", null ],
+ [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md39", [
+ [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md40", null ]
+ ] ]
+ ] ],
+ [ "Penify CLI - Detailed Usage Guide", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html", [
+ [ "Table of Contents", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md42", null ],
+ [ "Authentication", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md43", [
+ [ "Login Process", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md44", null ],
+ [ "API Token Storage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md45", null ],
+ [ "Token Precedence", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md46", null ]
+ ] ],
+ [ "Command Overview", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md47", null ],
+ [ "Commit Message Generation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md48", null ],
+ [ "Code Documentation Generation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md49", [
+ [ "Use Cases", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md50", null ],
+ [ "Authentication Requirement", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md51", null ]
+ ] ],
+ [ "Configuration Settings", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md52", null ],
+ [ "Git Hooks", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md53", [
+ [ "Post-Commit Hook", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md54", null ],
+ [ "Custom Hook Location", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md55", null ]
+ ] ],
+ [ "Advanced Use Cases", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md56", [
+ [ "CI/CD Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md57", null ],
+ [ "Remote Repository Documentation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md58", null ]
+ ] ],
+ [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md59", [
+ [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md60", null ],
+ [ "Logs", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md61", null ],
+ [ "Support", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md62", null ]
+ ] ]
+ ] ],
+ [ "Penify CLI - Documentation Generation Commands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html", [
+ [ "Table of Contents", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md64", null ],
+ [ "Basic Usage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md65", null ],
+ [ "Command Options", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md66", [
+ [ "-l, --location ", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md67", null ],
+ [ "Subcommands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md68", [
+ [ "install-hook ", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md69", null ],
+ [ "uninstall-hook ", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md70", null ]
+ ] ]
+ ] ],
+ [ "Option Combinations", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md71", [
+ [ "Generate Documentation for Current Git Diff", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md72", null ],
+ [ "Generate Documentation for a Specific File", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md73", null ],
+ [ "Generate Documentation for a Folder", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md74", null ],
+ [ "Install Hook in Current Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md75", null ],
+ [ "Install Hook in Specific Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md76", null ],
+ [ "Uninstall Hook from Current Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md77", null ],
+ [ "Uninstall Hook from Specific Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md78", null ]
+ ] ],
+ [ "Git Hook Commands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md79", [
+ [ "Hook Installation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md80", [
+ [ "How Hooks Work", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md81", null ],
+ [ "Hook Script Content", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md82", null ],
+ [ "Installation Location", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md83", null ],
+ [ "Installation Requirements", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md84", null ],
+ [ "Verifying Installation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md85", null ]
+ ] ],
+ [ "Hook Customization", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md86", [
+ [ "Modifying Hook Behavior", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md87", null ],
+ [ "Advanced Hook Scenarios", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md88", null ]
+ ] ],
+ [ "Hook Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md89", [
+ [ "Standard Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md90", null ],
+ [ "Specific Repository Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md91", null ],
+ [ "Manual Hook Removal", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md92", null ],
+ [ "Verifying Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md93", null ]
+ ] ]
+ ] ],
+ [ "Advanced Use Cases", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md94", [
+ [ "Continuous Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md95", null ],
+ [ "Batch Documentation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md96", null ],
+ [ "Custom Git Hook Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md97", null ],
+ [ "Documenting Release Tags", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md98", null ]
+ ] ],
+ [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md99", [
+ [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md100", null ],
+ [ "Debugging", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md101", null ],
+ [ "Getting Help", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md102", null ]
+ ] ]
+ ] ],
+ [ "Penify CLI Example Workflows", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html", [
+ [ "Workflow 1: Efficient Git Commits with AI", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md104", [
+ [ "Setup", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md105", null ],
+ [ "Daily Workflow", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md106", null ],
+ [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md107", null ]
+ ] ],
+ [ "Workflow 2: Documentation Generation Pipeline", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md108", [
+ [ "Setup", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md109", null ],
+ [ "Daily Workflow", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md110", null ],
+ [ "Manual Documentation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md111", null ],
+ [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md112", null ]
+ ] ],
+ [ "Workflow 3: Code Review Enhancement", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md113", [
+ [ "Setup", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md114", null ],
+ [ "Workflow", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md115", null ],
+ [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md116", null ]
+ ] ],
+ [ "Workflow 4: Onboarding New Team Members", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md117", [
+ [ "For Team Leads", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md118", null ],
+ [ "For New Team Members", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md119", null ],
+ [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md120", null ]
+ ] ],
+ [ "Workflow 5: Legacy Code Understanding", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md121", [
+ [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md122", null ]
+ ] ]
+ ] ],
+ [ "Penify CLI Tool", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html", [
+ [ "Features", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md157", null ],
+ [ "Installation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md158", null ],
+ [ "Usage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md159", null ],
+ [ "Basic Commands (No login required)", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md160", [
+ [ "Commit", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md161", null ],
+ [ "Config", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md162", null ]
+ ] ],
+ [ "Advanced Commands (Login required)", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md163", [
+ [ "Login", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md164", null ],
+ [ "Documentation Generation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md165", null ],
+ [ "Git Hook Management", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md166", null ]
+ ] ],
+ [ "Authentication", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md167", null ],
+ [ "Local LLM Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md168", null ],
+ [ "JIRA Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md169", null ],
+ [ "Development", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md170", [
+ [ "Running Tests", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md171", null ]
+ ] ],
+ [ "License", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md172", null ],
+ [ "Author", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md173", null ],
+ [ "Contributing", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md174", null ],
+ [ "Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md175", null ],
+ [ "Support", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md176", null ]
+ ] ],
+ [ "Namespaces", "namespaces.html", [
+ [ "Namespace List", "namespaces.html", "namespaces_dup" ],
+ [ "Namespace Members", "namespacemembers.html", [
+ [ "All", "namespacemembers.html", null ],
+ [ "Functions", "namespacemembers_func.html", null ],
+ [ "Variables", "namespacemembers_vars.html", null ]
+ ] ]
+ ] ],
+ [ "Classes", "annotated.html", [
+ [ "Class List", "annotated.html", "annotated_dup" ],
+ [ "Class Index", "classes.html", null ],
+ [ "Class Hierarchy", "hierarchy.html", "hierarchy" ],
+ [ "Class Members", "functions.html", [
+ [ "All", "functions.html", null ],
+ [ "Functions", "functions_func.html", null ],
+ [ "Variables", "functions_vars.html", null ]
+ ] ]
+ ] ],
+ [ "Files", "files.html", [
+ [ "File List", "files.html", "files_dup" ]
+ ] ]
+ ] ]
+];
+
+var NAVTREEINDEX =
+[
+"annotated.html",
+"jira__client_8py.html#a5593ea3415081eca1eea92e4c1ad1aa2",
+"namespacesetup.html#abead4f26b530856f858f0d44c7cf2588"
+];
+
+var SYNCONMSG = 'click to disable panel synchronisation';
+var SYNCOFFMSG = 'click to enable panel synchronisation';
\ No newline at end of file
diff --git a/docs/html/navtreeindex0.js b/docs/html/navtreeindex0.js
new file mode 100644
index 0000000..8358b16
--- /dev/null
+++ b/docs/html/navtreeindex0.js
@@ -0,0 +1,253 @@
+var NAVTREEINDEX0 =
+{
+"annotated.html":[7,0],
+"api__client_8py.html":[8,0,0,1,2],
+"auth__commands_8py.html":[8,0,0,1,0,1],
+"auth__commands_8py.html#a78f375c58bb6f69f98675e6a9ac84655":[8,0,0,1,0,1,0],
+"auth__commands_8py.html#aa3956ca1749d4218ea1dc6e5b6218b24":[8,0,0,1,0,1,1],
+"base__analyzer_8py.html":[8,0,0,1,3],
+"classException.html":[7,0,2],
+"classes.html":[7,1],
+"classpenify__hook_1_1api__client_1_1APIClient.html":[7,0,0,0,0],
+"classpenify__hook_1_1api__client_1_1APIClient.html":[6,0,0,0,0],
+"classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872":[6,0,0,0,0,6],
+"classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872":[7,0,0,0,0,6],
+"classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237":[6,0,0,0,0,7],
+"classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237":[7,0,0,0,0,7],
+"classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402":[7,0,0,0,0,4],
+"classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402":[6,0,0,0,0,4],
+"classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0":[6,0,0,0,0,8],
+"classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0":[7,0,0,0,0,8],
+"classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce":[6,0,0,0,0,1],
+"classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce":[7,0,0,0,0,1],
+"classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3":[6,0,0,0,0,2],
+"classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3":[7,0,0,0,0,2],
+"classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3":[7,0,0,0,0,5],
+"classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3":[6,0,0,0,0,5],
+"classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99":[6,0,0,0,0,3],
+"classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99":[7,0,0,0,0,3],
+"classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086":[7,0,0,0,0,0],
+"classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086":[6,0,0,0,0,0],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html":[6,0,0,1,0],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html":[7,0,0,1,0],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb":[6,0,0,1,0,7],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb":[7,0,0,1,0,7],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369":[6,0,0,1,0,4],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369":[7,0,0,1,0,4],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2":[7,0,0,1,0,1],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2":[6,0,0,1,0,1],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499":[6,0,0,1,0,6],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499":[7,0,0,1,0,6],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5":[6,0,0,1,0,5],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5":[7,0,0,1,0,5],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25":[6,0,0,1,0,2],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25":[7,0,0,1,0,2],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344":[7,0,0,1,0,0],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344":[6,0,0,1,0,0],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4":[7,0,0,1,0,3],
+"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4":[6,0,0,1,0,3],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html":[6,0,0,3,0],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html":[7,0,0,2,0],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9":[6,0,0,3,0,4],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9":[7,0,0,2,0,4],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37":[6,0,0,3,0,2],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37":[7,0,0,2,0,2],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca":[7,0,0,2,0,1],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca":[6,0,0,3,0,1],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a":[7,0,0,2,0,5],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a":[6,0,0,3,0,5],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f":[7,0,0,2,0,3],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f":[6,0,0,3,0,3],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e":[7,0,0,2,0,0],
+"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e":[6,0,0,3,0,0],
+"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html":[6,0,0,6,0],
+"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html":[7,0,0,3,0],
+"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b":[6,0,0,6,0,0],
+"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b":[7,0,0,3,0,0],
+"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e":[7,0,0,3,0,2],
+"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e":[6,0,0,6,0,2],
+"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1":[6,0,0,6,0,3],
+"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1":[7,0,0,3,0,3],
+"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073":[7,0,0,3,0,1],
+"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073":[6,0,0,6,0,1],
+"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32":[6,0,0,6,0,4],
+"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32":[7,0,0,3,0,4],
+"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html":[6,0,0,7,0],
+"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html":[7,0,0,4,0],
+"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821":[7,0,0,4,0,0],
+"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821":[6,0,0,7,0,0],
+"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393":[6,0,0,7,0,3],
+"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393":[7,0,0,4,0,3],
+"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec":[7,0,0,4,0,1],
+"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec":[6,0,0,7,0,1],
+"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc":[7,0,0,4,0,2],
+"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc":[6,0,0,7,0,2],
+"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html":[6,0,0,8,0],
+"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html":[7,0,0,5,0],
+"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85":[7,0,0,5,0,3],
+"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85":[6,0,0,8,0,3],
+"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481":[6,0,0,8,0,1],
+"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481":[7,0,0,5,0,1],
+"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae":[7,0,0,5,0,4],
+"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae":[6,0,0,8,0,4],
+"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c":[6,0,0,8,0,0],
+"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c":[7,0,0,5,0,0],
+"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd":[7,0,0,5,0,2],
+"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd":[6,0,0,8,0,2],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html":[7,0,0,6,0],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html":[6,0,0,9,0],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8":[7,0,0,6,0,9],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8":[6,0,0,9,0,9],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c":[7,0,0,6,0,4],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c":[6,0,0,9,0,4],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197":[6,0,0,9,0,13],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197":[7,0,0,6,0,13],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5":[7,0,0,6,0,0],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5":[6,0,0,9,0,0],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23":[6,0,0,9,0,5],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23":[7,0,0,6,0,5],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a":[6,0,0,9,0,8],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a":[7,0,0,6,0,8],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760":[7,0,0,6,0,2],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760":[6,0,0,9,0,2],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1":[6,0,0,9,0,1],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1":[7,0,0,6,0,1],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746":[7,0,0,6,0,7],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746":[6,0,0,9,0,7],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826":[7,0,0,6,0,10],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826":[6,0,0,9,0,10],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7":[7,0,0,6,0,3],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7":[6,0,0,9,0,3],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c":[7,0,0,6,0,14],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c":[6,0,0,9,0,14],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6":[7,0,0,6,0,12],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6":[6,0,0,9,0,12],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd":[7,0,0,6,0,6],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd":[6,0,0,9,0,6],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9":[7,0,0,6,0,11],
+"classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9":[6,0,0,9,0,11],
+"classpenify__hook_1_1llm__client_1_1LLMClient.html":[6,0,0,10,0],
+"classpenify__hook_1_1llm__client_1_1LLMClient.html":[7,0,0,7,0],
+"classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000":[7,0,0,7,0,1],
+"classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000":[6,0,0,10,0,1],
+"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362":[7,0,0,7,0,3],
+"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362":[6,0,0,10,0,3],
+"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764":[6,0,0,10,0,0],
+"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764":[7,0,0,7,0,0],
+"classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10":[7,0,0,7,0,4],
+"classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10":[6,0,0,10,0,4],
+"classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e":[7,0,0,7,0,2],
+"classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e":[6,0,0,10,0,2],
+"classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html":[7,0,0,8,0],
+"classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html":[6,0,0,14,0],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html":[6,0,2,1,0],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html":[7,0,1,0,0],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be":[6,0,2,1,0,3],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be":[7,0,1,0,0,3],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4":[7,0,1,0,0,4],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4":[6,0,2,1,0,4],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e":[7,0,1,0,0,2],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e":[6,0,2,1,0,2],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691":[7,0,1,0,0,6],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691":[6,0,2,1,0,6],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc":[6,0,2,1,0,11],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc":[7,0,1,0,0,11],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6":[7,0,1,0,0,1],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6":[6,0,2,1,0,1],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2":[6,0,2,1,0,0],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2":[7,0,1,0,0,0],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597":[7,0,1,0,0,10],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597":[6,0,2,1,0,10],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0":[7,0,1,0,0,9],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0":[6,0,2,1,0,9],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e":[6,0,2,1,0,8],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e":[7,0,1,0,0,8],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b":[6,0,2,1,0,7],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b":[7,0,1,0,0,7],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be":[6,0,2,1,0,5],
+"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be":[7,0,1,0,0,5],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html":[6,0,2,2,0],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html":[7,0,1,1,0],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a":[7,0,1,1,0,4],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a":[6,0,2,2,0,4],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232":[6,0,2,2,0,7],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232":[7,0,1,1,0,7],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948":[7,0,1,1,0,5],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948":[6,0,2,2,0,5],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436":[7,0,1,1,0,8],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436":[6,0,2,2,0,8],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd":[7,0,1,1,0,3],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd":[6,0,2,2,0,3],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c":[7,0,1,1,0,6],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c":[6,0,2,2,0,6],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac":[7,0,1,1,0,10],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac":[6,0,2,2,0,10],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd":[6,0,2,2,0,1],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd":[7,0,1,1,0,1],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9":[7,0,1,1,0,11],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9":[6,0,2,2,0,11],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167":[6,0,2,2,0,2],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167":[7,0,1,1,0,2],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf":[6,0,2,2,0,0],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf":[7,0,1,1,0,0],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375":[7,0,1,1,0,9],
+"classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375":[6,0,2,2,0,9],
+"classtests_1_1test__web__config_1_1TestWebConfig.html":[6,0,2,4,0],
+"classtests_1_1test__web__config_1_1TestWebConfig.html":[7,0,1,2,0],
+"classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a":[6,0,2,4,0,0],
+"classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a":[7,0,1,2,0,0],
+"classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35":[7,0,1,2,0,1],
+"classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35":[6,0,2,4,0,1],
+"commit__analyzer_8py.html":[8,0,0,1,4],
+"commit__commands_8py.html":[8,0,0,1,0,2],
+"commit__commands_8py.html#a62564c4e8ad59fc46d56cb0f9122a71a":[8,0,0,1,0,2,0],
+"commit__commands_8py.html#a8627583116eb78e31a4d3cdc16d2f15c":[8,0,0,1,0,2,2],
+"commit__commands_8py.html#af4f739f524c38b437e4e47673d683e23":[8,0,0,1,0,2,1],
+"config__command_8py.html":[8,0,0,1,5],
+"config__command_8py.html#a240e5331681eb574ac319d7458783bde":[8,0,0,1,5,0],
+"config__command_8py.html#a4f3eb92164a69df1446d745f8a09285e":[8,0,0,1,5,1],
+"config__commands_8py.html":[8,0,0,1,0,3],
+"config__commands_8py.html#a152642ab83cf6219b604bda6122aba67":[8,0,0,1,0,3,10],
+"config__commands_8py.html#a15bf3685c4dcb5c15ba6a4055e484cf2":[8,0,0,1,0,3,3],
+"config__commands_8py.html#a185dfc34a655ed80e6c95939b6f3c35c":[8,0,0,1,0,3,1],
+"config__commands_8py.html#a3caf2b062dd33b1f1d7ddc7224f0ff87":[8,0,0,1,0,3,2],
+"config__commands_8py.html#a4617bc5956e502c9555dc0dda0376df4":[8,0,0,1,0,3,9],
+"config__commands_8py.html#a4b202072a3a3b8515c9c254622e9c880":[8,0,0,1,0,3,11],
+"config__commands_8py.html#a5503d51c905e2f1b299b12d2a73bd812":[8,0,0,1,0,3,6],
+"config__commands_8py.html#a6492bc8e7df6e38bb06ad05e572d4cc0":[8,0,0,1,0,3,4],
+"config__commands_8py.html#a6559a82d0bf727703d550d1003d3ed20":[8,0,0,1,0,3,5],
+"config__commands_8py.html#aabe277132ce0bc0aacef951cf1dee2ae":[8,0,0,1,0,3,7],
+"config__commands_8py.html#ab2486ac2bf16b4a671e49625bfa4f9b4":[8,0,0,1,0,3,8],
+"config__commands_8py.html#af115198ea5d6808ccb98733957f50b06":[8,0,0,1,0,3,0],
+"conftest_8py.html":[8,0,0,2,1],
+"constants_8py.html":[8,0,0,1,6],
+"constants_8py.html#a316c5a606e4440fb8224c6544c3a15f0":[8,0,0,1,6,1],
+"constants_8py.html#af198b5d1fc2f44657a2061aa324af3e0":[8,0,0,1,6,0],
+"dir_063e2d5fe58a131099a7fe4200cca78c.html":[8,0,0,2],
+"dir_1648a057408aae8db85b8e3797335623.html":[8,0,0,0],
+"dir_624fa2a8bce97f0444ac5cca335d4e23.html":[8,0,0,1,0],
+"dir_b3b22d2ab7966b65f6b237e3231b41be.html":[8,0,0],
+"dir_f88c3381c1861b3f7ca1f3d63cf244b5.html":[8,0,0,1],
+"doc__commands_8py.html":[8,0,0,1,0,4],
+"doc__commands_8py.html#a2006ab13bff718ef783868a910c0b704":[8,0,0,1,0,4,1],
+"doc__commands_8py.html#a3e42540047da37565afffeaf106cb948":[8,0,0,1,0,4,3],
+"doc__commands_8py.html#a4daac68bc563432bf25c85dc78081a25":[8,0,0,1,0,4,0],
+"doc__commands_8py.html#acc7f4ead1b11951d885fa5c151c2cbe0":[8,0,0,1,0,4,2],
+"file__analyzer_8py.html":[8,0,0,1,7],
+"file__analyzer_8py.html#af419a4965f079d58cac5a5281ddb1828":[8,0,0,1,7,1],
+"files.html":[8,0],
+"folder__analyzer_8py.html":[8,0,0,1,8],
+"functions.html":[7,3,0],
+"functions_func.html":[7,3,1],
+"functions_vars.html":[7,3,2],
+"git__analyzer_8py.html":[8,0,0,1,9],
+"git__analyzer_8py.html#ac4ce143fdca789a79c66852c37d7363a":[8,0,0,1,9,1],
+"hierarchy.html":[7,2],
+"hook__commands_8py.html":[8,0,0,1,0,5],
+"hook__commands_8py.html#a6a45aad71c8d32ce11a6dff8cee8bee7":[8,0,0,1,0,5,3],
+"hook__commands_8py.html#a81543eb5fa835fd1237f24e8bce6201d":[8,0,0,1,0,5,1],
+"hook__commands_8py.html#adff8f5d3bf1c3795974a391ee95b72b2":[8,0,0,1,0,5,0],
+"hook__commands_8py.html#ae82fd46e5a9219da1478b0476b8214b1":[8,0,0,1,0,5,2],
+"index.html":[],
+"jira__client_8py.html":[8,0,0,1,10]
+};
diff --git a/docs/html/navtreeindex1.js b/docs/html/navtreeindex1.js
new file mode 100644
index 0000000..f9245fe
--- /dev/null
+++ b/docs/html/navtreeindex1.js
@@ -0,0 +1,253 @@
+var NAVTREEINDEX1 =
+{
+"jira__client_8py.html#a5593ea3415081eca1eea92e4c1ad1aa2":[8,0,0,1,10,1],
+"llm__client_8py.html":[8,0,0,1,11],
+"login__command_8py.html":[8,0,0,1,12],
+"login__command_8py.html#aae63db4c484797bead34b7d874020c6a":[8,0,0,1,12,1],
+"login__command_8py.html#ae4bf932fbafeff834b0a0c5a37f74ccd":[8,0,0,1,12,0],
+"main_8py.html":[8,0,0,1,13],
+"main_8py.html#a16838b20df4bd14ee4b5e1dd2906738f":[8,0,0,1,13,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html":[5],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md157":[5,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md158":[5,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md159":[5,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md160":[5,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md161":[5,3,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md162":[5,3,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md163":[5,4],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md164":[5,4,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md165":[5,4,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md166":[5,4,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md167":[5,5],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md168":[5,6],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md169":[5,7],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md170":[5,8],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md171":[5,8,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md172":[5,9],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md173":[5,10],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md174":[5,11],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md175":[5,12],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md176":[5,13],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html":[0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md1":[0,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md10":[0,2,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md11":[0,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md12":[0,3,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md13":[0,3,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md14":[0,4],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md15":[0,5],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md16":[0,5,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md17":[0,5,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md18":[0,6],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md19":[0,6,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md2":[0,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md3":[0,1,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md4":[0,1,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md5":[0,1,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md6":[0,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md7":[0,2,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md8":[0,2,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md9":[0,2,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html":[1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md21":[1,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md22":[1,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md23":[1,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md24":[1,2,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md25":[1,2,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md26":[1,2,1,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md27":[1,2,1,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md28":[1,2,1,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md29":[1,2,1,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md30":[1,2,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md31":[1,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md32":[1,3,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md33":[1,3,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md34":[1,3,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md35":[1,4],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md36":[1,5],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md37":[1,6],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md38":[1,7],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md39":[1,8],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md40":[1,8,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html":[2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md42":[2,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md43":[2,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md44":[2,1,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md45":[2,1,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md46":[2,1,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md47":[2,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md48":[2,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md49":[2,4],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md50":[2,4,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md51":[2,4,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md52":[2,5],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md53":[2,6],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md54":[2,6,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md55":[2,6,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md56":[2,7],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md57":[2,7,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md58":[2,7,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md59":[2,8],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md60":[2,8,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md61":[2,8,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md62":[2,8,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html":[3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md100":[3,6,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md101":[3,6,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md102":[3,6,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md64":[3,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md65":[3,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md66":[3,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md67":[3,2,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md68":[3,2,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md69":[3,2,1,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md70":[3,2,1,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md71":[3,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md72":[3,3,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md73":[3,3,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md74":[3,3,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md75":[3,3,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md76":[3,3,4],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md77":[3,3,5],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md78":[3,3,6],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md79":[3,4],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md80":[3,4,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md81":[3,4,0,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md82":[3,4,0,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md83":[3,4,0,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md84":[3,4,0,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md85":[3,4,0,4],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md86":[3,4,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md87":[3,4,1,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md88":[3,4,1,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md89":[3,4,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md90":[3,4,2,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md91":[3,4,2,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md92":[3,4,2,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md93":[3,4,2,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md94":[3,5],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md95":[3,5,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md96":[3,5,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md97":[3,5,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md98":[3,5,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md99":[3,6],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html":[4],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md104":[4,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md105":[4,0,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md106":[4,0,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md107":[4,0,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md108":[4,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md109":[4,1,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md110":[4,1,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md111":[4,1,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md112":[4,1,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md113":[4,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md114":[4,2,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md115":[4,2,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md116":[4,2,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md117":[4,3],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md118":[4,3,0],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md119":[4,3,1],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md120":[4,3,2],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md121":[4,4],
+"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md122":[4,4,0],
+"namespacemembers.html":[6,1,0],
+"namespacemembers_func.html":[6,1,1],
+"namespacemembers_vars.html":[6,1,2],
+"namespacepenify__hook.html":[6,0,0],
+"namespacepenify__hook_1_1api__client.html":[6,0,0,0],
+"namespacepenify__hook_1_1base__analyzer.html":[6,0,0,1],
+"namespacepenify__hook_1_1commands.html":[6,0,0,2],
+"namespacepenify__hook_1_1commands_1_1auth__commands.html":[6,0,0,2,0],
+"namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655":[6,0,0,2,0,0],
+"namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24":[6,0,0,2,0,1],
+"namespacepenify__hook_1_1commands_1_1commit__commands.html":[6,0,0,2,1],
+"namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a":[6,0,0,2,1,0],
+"namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c":[6,0,0,2,1,2],
+"namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23":[6,0,0,2,1,1],
+"namespacepenify__hook_1_1commands_1_1config__commands.html":[6,0,0,2,2],
+"namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67":[6,0,0,2,2,10],
+"namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2":[6,0,0,2,2,3],
+"namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c":[6,0,0,2,2,1],
+"namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87":[6,0,0,2,2,2],
+"namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4":[6,0,0,2,2,9],
+"namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880":[6,0,0,2,2,11],
+"namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812":[6,0,0,2,2,6],
+"namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0":[6,0,0,2,2,4],
+"namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20":[6,0,0,2,2,5],
+"namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae":[6,0,0,2,2,7],
+"namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4":[6,0,0,2,2,8],
+"namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06":[6,0,0,2,2,0],
+"namespacepenify__hook_1_1commands_1_1doc__commands.html":[6,0,0,2,3],
+"namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704":[6,0,0,2,3,1],
+"namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948":[6,0,0,2,3,3],
+"namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25":[6,0,0,2,3,0],
+"namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0":[6,0,0,2,3,2],
+"namespacepenify__hook_1_1commands_1_1hook__commands.html":[6,0,0,2,4],
+"namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7":[6,0,0,2,4,3],
+"namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d":[6,0,0,2,4,1],
+"namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2":[6,0,0,2,4,0],
+"namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1":[6,0,0,2,4,2],
+"namespacepenify__hook_1_1commit__analyzer.html":[6,0,0,3],
+"namespacepenify__hook_1_1config__command.html":[6,0,0,4],
+"namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde":[6,0,0,4,0],
+"namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e":[6,0,0,4,1],
+"namespacepenify__hook_1_1constants.html":[6,0,0,5],
+"namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0":[6,0,0,5,1],
+"namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0":[6,0,0,5,0],
+"namespacepenify__hook_1_1file__analyzer.html":[6,0,0,6],
+"namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828":[6,0,0,6,1],
+"namespacepenify__hook_1_1folder__analyzer.html":[6,0,0,7],
+"namespacepenify__hook_1_1git__analyzer.html":[6,0,0,8],
+"namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a":[6,0,0,8,1],
+"namespacepenify__hook_1_1jira__client.html":[6,0,0,9],
+"namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2":[6,0,0,9,1],
+"namespacepenify__hook_1_1llm__client.html":[6,0,0,10],
+"namespacepenify__hook_1_1login__command.html":[6,0,0,11],
+"namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a":[6,0,0,11,1],
+"namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd":[6,0,0,11,0],
+"namespacepenify__hook_1_1main.html":[6,0,0,12],
+"namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f":[6,0,0,12,0],
+"namespacepenify__hook_1_1ui__utils.html":[6,0,0,13],
+"namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2":[6,0,0,13,7],
+"namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c":[6,0,0,13,0],
+"namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff":[6,0,0,13,24],
+"namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa":[6,0,0,13,13],
+"namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4":[6,0,0,13,22],
+"namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a":[6,0,0,13,12],
+"namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756":[6,0,0,13,21],
+"namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e":[6,0,0,13,23],
+"namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef":[6,0,0,13,1],
+"namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe":[6,0,0,13,16],
+"namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e":[6,0,0,13,2],
+"namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776":[6,0,0,13,6],
+"namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d":[6,0,0,13,14],
+"namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16":[6,0,0,13,25],
+"namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f":[6,0,0,13,8],
+"namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44":[6,0,0,13,9],
+"namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6":[6,0,0,13,5],
+"namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c":[6,0,0,13,19],
+"namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0":[6,0,0,13,17],
+"namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c":[6,0,0,13,11],
+"namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71":[6,0,0,13,15],
+"namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc":[6,0,0,13,18],
+"namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5":[6,0,0,13,20],
+"namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452":[6,0,0,13,4],
+"namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115":[6,0,0,13,10],
+"namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4":[6,0,0,13,3],
+"namespacepenify__hook_1_1utils.html":[6,0,0,14],
+"namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01":[6,0,0,14,4],
+"namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2":[6,0,0,14,1],
+"namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f":[6,0,0,14,3],
+"namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3":[6,0,0,14,2],
+"namespaces.html":[6,0],
+"namespacesetup.html":[6,0,1],
+"namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c":[6,0,1,12],
+"namespacesetup.html#a3796ea10c998699d07d391414ff5d720":[6,0,1,7],
+"namespacesetup.html#a3a57a4772d418a06835249cbade0d86a":[6,0,1,0],
+"namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde":[6,0,1,6],
+"namespacesetup.html#a5b08034343aa2be607722a8b315f3625":[6,0,1,1],
+"namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf":[6,0,1,10],
+"namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f":[6,0,1,8],
+"namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785":[6,0,1,2]
+};
diff --git a/docs/html/navtreeindex2.js b/docs/html/navtreeindex2.js
new file mode 100644
index 0000000..8e18872
--- /dev/null
+++ b/docs/html/navtreeindex2.js
@@ -0,0 +1,90 @@
+var NAVTREEINDEX2 =
+{
+"namespacesetup.html#abead4f26b530856f858f0d44c7cf2588":[6,0,1,5],
+"namespacesetup.html#ada7058afc98897f073d3f3b8b9157059":[6,0,1,4],
+"namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0":[6,0,1,3],
+"namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb":[6,0,1,11],
+"namespacesetup.html#aff2375a361fd5865c77bd9aa093be747":[6,0,1,9],
+"namespacetests.html":[6,0,2],
+"namespacetests_1_1conftest.html":[6,0,2,0],
+"namespacetests_1_1test__commit__commands.html":[6,0,2,1],
+"namespacetests_1_1test__config__commands.html":[6,0,2,2],
+"namespacetests_1_1test__doc__commands.html":[6,0,2,3],
+"namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45":[6,0,2,3,1],
+"namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7":[6,0,2,3,10],
+"namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482":[6,0,2,3,9],
+"namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0":[6,0,2,3,4],
+"namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186":[6,0,2,3,2],
+"namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3":[6,0,2,3,5],
+"namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8":[6,0,2,3,3],
+"namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a":[6,0,2,3,6],
+"namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05":[6,0,2,3,7],
+"namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0":[6,0,2,3,0],
+"namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c":[6,0,2,3,8],
+"namespacetests_1_1test__web__config.html":[6,0,2,4],
+"pages.html":[],
+"penify__hook_2____init_____8py.html":[8,0,0,1,1],
+"penify__hook_2commands_2____init_____8py.html":[8,0,0,1,0,0],
+"setup_8py.html":[8,0,0,3],
+"setup_8py.html#a2aa722b36a933088812b50ea79b97a5c":[8,0,0,3,12],
+"setup_8py.html#a3796ea10c998699d07d391414ff5d720":[8,0,0,3,7],
+"setup_8py.html#a3a57a4772d418a06835249cbade0d86a":[8,0,0,3,0],
+"setup_8py.html#a4cda9dbfb952875376a0749fe08a5bde":[8,0,0,3,6],
+"setup_8py.html#a5b08034343aa2be607722a8b315f3625":[8,0,0,3,1],
+"setup_8py.html#aa7ca7bc9391b217e81efeb03689d8dbf":[8,0,0,3,10],
+"setup_8py.html#ab3a7a0638d76a01367c5bc3cc699447f":[8,0,0,3,8],
+"setup_8py.html#abe96a9c38c1c61f9f0fdb002c482f785":[8,0,0,3,2],
+"setup_8py.html#abead4f26b530856f858f0d44c7cf2588":[8,0,0,3,5],
+"setup_8py.html#ada7058afc98897f073d3f3b8b9157059":[8,0,0,3,4],
+"setup_8py.html#aedf461ec52a946bda975938ba0b93ec0":[8,0,0,3,3],
+"setup_8py.html#afc13124aa5c0124e84e1d965e3f4b0fb":[8,0,0,3,11],
+"setup_8py.html#aff2375a361fd5865c77bd9aa093be747":[8,0,0,3,9],
+"test__commit__commands_8py.html":[8,0,0,2,2],
+"test__config__commands_8py.html":[8,0,0,2,3],
+"test__doc__commands_8py.html":[8,0,0,2,4],
+"test__doc__commands_8py.html#a0e74c920f258f442914771164fe26b45":[8,0,0,2,4,1],
+"test__doc__commands_8py.html#a0f27751d0ba2acfe40ef7e85bccf47d7":[8,0,0,2,4,10],
+"test__doc__commands_8py.html#a1458af9ad0128c3ca1263b552fd5e482":[8,0,0,2,4,9],
+"test__doc__commands_8py.html#a335e7fd4912192c7276cf31bbebc6eb0":[8,0,0,2,4,4],
+"test__doc__commands_8py.html#a4bb75610e40d94d42bc169b25403c186":[8,0,0,2,4,2],
+"test__doc__commands_8py.html#a64165ddfdb3071a88422f080f0e529a3":[8,0,0,2,4,5],
+"test__doc__commands_8py.html#a806110833eb0aad547156faf014b31d8":[8,0,0,2,4,3],
+"test__doc__commands_8py.html#ab158ffa48469b6c097a7a55fcb20c21a":[8,0,0,2,4,6],
+"test__doc__commands_8py.html#ab74688baa8c9b5ba302c2877a9789d05":[8,0,0,2,4,7],
+"test__doc__commands_8py.html#aec76cc25c23476794234cdadbcaef0c0":[8,0,0,2,4,0],
+"test__doc__commands_8py.html#af9b01e5fc89255cac96747fa081c442c":[8,0,0,2,4,8],
+"test__web__config_8py.html":[8,0,0,2,5],
+"tests_2____init_____8py.html":[8,0,0,2,0],
+"ui__utils_8py.html":[8,0,0,1,14],
+"ui__utils_8py.html#a0a6fd2613c6fe053b6e4356cd9e5cda2":[8,0,0,1,14,7],
+"ui__utils_8py.html#a12b92532b1458af94f3649d411b5505c":[8,0,0,1,14,0],
+"ui__utils_8py.html#a177bc9b44157844c999e0c1c2c6936ff":[8,0,0,1,14,24],
+"ui__utils_8py.html#a1ffbb9671dbe233770268e2dd66a67fa":[8,0,0,1,14,13],
+"ui__utils_8py.html#a22c450c5e2b5394618ecf9b636560df4":[8,0,0,1,14,22],
+"ui__utils_8py.html#a2b16aa6b68a9edea5f29f84f1c4be79a":[8,0,0,1,14,12],
+"ui__utils_8py.html#a3b208e2750a38dd09467a73e4afd9756":[8,0,0,1,14,21],
+"ui__utils_8py.html#a3c6fe4bd17c1a5fe76587225ae4beb3e":[8,0,0,1,14,23],
+"ui__utils_8py.html#a3da02cd1140179a9ce60f62c85fccfef":[8,0,0,1,14,1],
+"ui__utils_8py.html#a4ab4e61dfab7973c87bef59c6e1977fe":[8,0,0,1,14,16],
+"ui__utils_8py.html#a4dd934568897433fa73f9cc182ac4a3e":[8,0,0,1,14,2],
+"ui__utils_8py.html#a532cdb4de7c679ce8b29c3e9116c4776":[8,0,0,1,14,6],
+"ui__utils_8py.html#a5a7340d0fc60fb80f17514d60bf45f1d":[8,0,0,1,14,14],
+"ui__utils_8py.html#a6eaea98f1a8cbe16a181647da2fc0a16":[8,0,0,1,14,25],
+"ui__utils_8py.html#a6f0acd7dd91abfe67d0807803bc3b65f":[8,0,0,1,14,8],
+"ui__utils_8py.html#a811f0adf6e9bf71510c379b6fa155e44":[8,0,0,1,14,9],
+"ui__utils_8py.html#a92c3e466d1912058167be2eacf85b9f6":[8,0,0,1,14,5],
+"ui__utils_8py.html#a9fdcb180915696f5d217032a62c3857c":[8,0,0,1,14,19],
+"ui__utils_8py.html#aa564e1e1d016c8227d076542e74cecb0":[8,0,0,1,14,17],
+"ui__utils_8py.html#aa6e684c00e26199440137a87ed9b195c":[8,0,0,1,14,11],
+"ui__utils_8py.html#ab560cfade398ac1e0bd47befb52d9f71":[8,0,0,1,14,15],
+"ui__utils_8py.html#aba01b8259f0d66cdc2b4a1b58f9736fc":[8,0,0,1,14,18],
+"ui__utils_8py.html#aca0fcee81606857497520ae4290bc9f5":[8,0,0,1,14,20],
+"ui__utils_8py.html#adcb97fc26b405d2b9cdf5eb7aecc5452":[8,0,0,1,14,4],
+"ui__utils_8py.html#adfcbbfe39029ab6d1dd33e7bf75ae115":[8,0,0,1,14,10],
+"ui__utils_8py.html#af3441fb3c2c3850b8b3b6455a9fdaba4":[8,0,0,1,14,3],
+"utils_8py.html":[8,0,0,1,15],
+"utils_8py.html#a0c0c1ed6b197038085c94a90ceedfb01":[8,0,0,1,15,4],
+"utils_8py.html#a4ec5335a4026c22a34a3a8ccf665a5f2":[8,0,0,1,15,1],
+"utils_8py.html#a95c3f9c80860d6a2e2d061d2fb660a3f":[8,0,0,1,15,3],
+"utils_8py.html#ae236f3c4c8bf5dcddbb92b4c2065eea3":[8,0,0,1,15,2]
+};
diff --git a/docs/html/open.png b/docs/html/open.png
new file mode 100644
index 0000000..30f75c7
Binary files /dev/null and b/docs/html/open.png differ
diff --git a/docs/html/pages.html b/docs/html/pages.html
new file mode 100644
index 0000000..5dd1cc7
--- /dev/null
+++ b/docs/html/pages.html
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: Related Pages
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Here is a list of all related documentation pages:
+
+
+
+
+
+
+
diff --git a/docs/html/penify-cli-documentation_8md.html b/docs/html/penify-cli-documentation_8md.html
new file mode 100644
index 0000000..ff26794
--- /dev/null
+++ b/docs/html/penify-cli-documentation_8md.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/penify-cli-documentation.md File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/penify__hook_2____init_____8py.html b/docs/html/penify__hook_2____init_____8py.html
new file mode 100644
index 0000000..0bcb0f1
--- /dev/null
+++ b/docs/html/penify__hook_2____init_____8py.html
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/__init__.py File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/penify__hook_2commands_2____init_____8py.html b/docs/html/penify__hook_2commands_2____init_____8py.html
new file mode 100644
index 0000000..0556d79
--- /dev/null
+++ b/docs/html/penify__hook_2commands_2____init_____8py.html
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/__init__.py File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/resize.js b/docs/html/resize.js
new file mode 100644
index 0000000..7fe30d1
--- /dev/null
+++ b/docs/html/resize.js
@@ -0,0 +1,150 @@
+/*
+ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+function initResizable()
+{
+ var cookie_namespace = 'doxygen';
+ var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight;
+
+ function readCookie(cookie)
+ {
+ var myCookie = cookie_namespace+"_"+cookie+"=";
+ if (document.cookie) {
+ var index = document.cookie.indexOf(myCookie);
+ if (index != -1) {
+ var valStart = index + myCookie.length;
+ var valEnd = document.cookie.indexOf(";", valStart);
+ if (valEnd == -1) {
+ valEnd = document.cookie.length;
+ }
+ var val = document.cookie.substring(valStart, valEnd);
+ return val;
+ }
+ }
+ return 0;
+ }
+
+ function writeCookie(cookie, val, expiration)
+ {
+ if (val==undefined) return;
+ if (expiration == null) {
+ var date = new Date();
+ date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week
+ expiration = date.toGMTString();
+ }
+ document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/";
+ }
+
+ function resizeWidth()
+ {
+ var windowWidth = $(window).width() + "px";
+ var sidenavWidth = $(sidenav).outerWidth();
+ content.css({marginLeft:parseInt(sidenavWidth)+"px"});
+ writeCookie('width',sidenavWidth-barWidth, null);
+ }
+
+ function restoreWidth(navWidth)
+ {
+ var windowWidth = $(window).width() + "px";
+ content.css({marginLeft:parseInt(navWidth)+barWidth+"px"});
+ sidenav.css({width:navWidth + "px"});
+ }
+
+ function resizeHeight()
+ {
+ var headerHeight = header.outerHeight();
+ var footerHeight = footer.outerHeight();
+ var windowHeight = $(window).height();
+ var contentHeight,navtreeHeight,sideNavHeight;
+ if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */
+ contentHeight = windowHeight - headerHeight - footerHeight;
+ navtreeHeight = contentHeight;
+ sideNavHeight = contentHeight;
+ } else if (page_layout==1) { /* DISABLE_INDEX=YES */
+ contentHeight = windowHeight - footerHeight;
+ navtreeHeight = windowHeight - headerHeight;
+ sideNavHeight = windowHeight;
+ }
+ content.css({height:contentHeight + "px"});
+ navtree.css({height:navtreeHeight + "px"});
+ sidenav.css({height:sideNavHeight + "px"});
+ var width=$(window).width();
+ if (width!=collapsedWidth) {
+ if (width=desktop_vp) {
+ if (!collapsed) {
+ collapseExpand();
+ }
+ } else if (width>desktop_vp && collapsedWidth0) {
+ restoreWidth(0);
+ collapsed=true;
+ }
+ else {
+ var width = readCookie('width');
+ if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); }
+ collapsed=false;
+ }
+ }
+
+ header = $("#top");
+ sidenav = $("#side-nav");
+ content = $("#doc-content");
+ navtree = $("#nav-tree");
+ footer = $("#nav-path");
+ $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } });
+ $(sidenav).resizable({ minWidth: 0 });
+ $(window).resize(function() { resizeHeight(); });
+ var device = navigator.userAgent.toLowerCase();
+ var touch_device = device.match(/(iphone|ipod|ipad|android)/);
+ if (touch_device) { /* wider split bar for touch only devices */
+ $(sidenav).css({ paddingRight:'20px' });
+ $('.ui-resizable-e').css({ width:'20px' });
+ $('#nav-sync').css({ right:'34px' });
+ barWidth=20;
+ }
+ var width = readCookie('width');
+ if (width) { restoreWidth(width); } else { resizeWidth(); }
+ resizeHeight();
+ var url = location.href;
+ var i=url.indexOf("#");
+ if (i>=0) window.location.hash=url.substr(i);
+ var _preventDefault = function(evt) { evt.preventDefault(); };
+ $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
+ $(".ui-resizable-handle").dblclick(collapseExpand);
+ $(window).on('load',resizeHeight);
+}
+/* @license-end */
diff --git a/docs/html/search/all_0.html b/docs/html/search/all_0.html
new file mode 100644
index 0000000..bb9e364
--- /dev/null
+++ b/docs/html/search/all_0.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js
new file mode 100644
index 0000000..66bb827
--- /dev/null
+++ b/docs/html/search/all_0.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['_5f_5finit_5f_5f_0',['__init__',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086',1,'penify_hook.api_client.APIClient.__init__()'],['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344',1,'penify_hook.base_analyzer.BaseAnalyzer.__init__()'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e',1,'penify_hook.commit_analyzer.CommitDocGenHook.__init__()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c',1,'penify_hook.git_analyzer.GitDocGenHook.__init__()'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5',1,'penify_hook.jira_client.JiraClient.__init__()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764',1,'penify_hook.llm_client.LLMClient.__init__()']]],
+ ['_5f_5finit_5f_5f_2epy_1',['__init__.py',['../penify__hook_2____init_____8py.html',1,'(Global Namespace)'],['../penify__hook_2commands_2____init_____8py.html',1,'(Global Namespace)'],['../tests_2____init_____8py.html',1,'(Global Namespace)']]],
+ ['_5famend_5fcommit_2',['_amend_commit',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca',1,'penify_hook::commit_analyzer::CommitDocGenHook']]],
+ ['_5flitellm_3',['_litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362',1,'penify_hook::llm_client::LLMClient']]]
+];
diff --git a/docs/html/search/all_1.html b/docs/html/search/all_1.html
new file mode 100644
index 0000000..8989416
--- /dev/null
+++ b/docs/html/search/all_1.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js
new file mode 100644
index 0000000..b6a2dbe
--- /dev/null
+++ b/docs/html/search/all_1.js
@@ -0,0 +1,14 @@
+var searchData=
+[
+ ['add_5fcomment_0',['add_comment',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1',1,'penify_hook::jira_client::JiraClient']]],
+ ['api_5fclient_1',['api_client',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2',1,'penify_hook::base_analyzer::BaseAnalyzer']]],
+ ['api_5fclient_2epy_2',['api_client.py',['../api__client_8py.html',1,'']]],
+ ['api_5furl_3',['api_url',['../classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872',1,'penify_hook::api_client::APIClient']]],
+ ['api_5furl_4',['API_URL',['../namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0',1,'penify_hook::constants']]],
+ ['apiclient_5',['APIClient',['../classpenify__hook_1_1api__client_1_1APIClient.html',1,'penify_hook::api_client']]],
+ ['auth_5fcommands_2epy_6',['auth_commands.py',['../auth__commands_8py.html',1,'']]],
+ ['auth_5ftoken_7',['AUTH_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237',1,'penify_hook::api_client::APIClient']]],
+ ['author_8',['author',['../namespacesetup.html#a3a57a4772d418a06835249cbade0d86a',1,'setup']]],
+ ['author_5femail_9',['author_email',['../namespacesetup.html#a5b08034343aa2be607722a8b315f3625',1,'setup']]],
+ ['autoreset_10',['autoreset',['../namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71',1,'penify_hook::ui_utils']]]
+];
diff --git a/docs/html/search/all_10.html b/docs/html/search/all_10.html
new file mode 100644
index 0000000..a7c1f9c
--- /dev/null
+++ b/docs/html/search/all_10.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_10.js b/docs/html/search/all_10.js
new file mode 100644
index 0000000..7fb377d
--- /dev/null
+++ b/docs/html/search/all_10.js
@@ -0,0 +1,16 @@
+var searchData=
+[
+ ['save_5fcredentials_0',['save_credentials',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24',1,'penify_hook::commands::auth_commands']]],
+ ['save_5fjira_5fconfig_1',['save_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4',1,'penify_hook::commands::config_commands']]],
+ ['save_5fllm_5fconfig_2',['save_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4',1,'penify_hook::commands::config_commands']]],
+ ['send_5ffile_5ffor_5fdocstring_5fgeneration_3',['send_file_for_docstring_generation',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3',1,'penify_hook::api_client::APIClient']]],
+ ['setup_4',['setup',['../namespacesetup.html',1,'']]],
+ ['setup_2epy_5',['setup.py',['../setup_8py.html',1,'']]],
+ ['setup_5fcommit_5fparser_6',['setup_commit_parser',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c',1,'penify_hook::commands::commit_commands']]],
+ ['setup_5fconfig_5fparser_7',['setup_config_parser',['../namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e',1,'penify_hook::config_command']]],
+ ['setup_5fdocgen_5fparser_8',['setup_docgen_parser',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0',1,'penify_hook::commands::doc_commands']]],
+ ['setup_5flogin_5fparser_9',['setup_login_parser',['../namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a',1,'penify_hook::login_command']]],
+ ['success_5fcolor_10',['SUCCESS_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4',1,'penify_hook::ui_utils']]],
+ ['success_5fsymbol_11',['SUCCESS_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e',1,'penify_hook::ui_utils']]],
+ ['supported_5ffile_5ftypes_12',['supported_file_types',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb',1,'penify_hook::base_analyzer::BaseAnalyzer']]]
+];
diff --git a/docs/html/search/all_11.html b/docs/html/search/all_11.html
new file mode 100644
index 0000000..8f86146
--- /dev/null
+++ b/docs/html/search/all_11.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js
new file mode 100644
index 0000000..45646f7
--- /dev/null
+++ b/docs/html/search/all_11.js
@@ -0,0 +1,47 @@
+var searchData=
+[
+ ['conftest_0',['conftest',['../namespacetests_1_1conftest.html',1,'tests']]],
+ ['test_5fcommit_5fcode_5ferror_5fhandling_1',['test_commit_code_error_handling',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['test_5fcommit_5fcode_5fwith_5fjira_5fclient_2',['test_commit_code_with_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['test_5fcommit_5fcode_5fwith_5fjira_5fconnection_5ffailure_3',['test_commit_code_with_jira_connection_failure',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['test_5fcommit_5fcode_5fwith_5fllm_5fclient_4',['test_commit_code_with_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['test_5fcommit_5fcommands_5',['test_commit_commands',['../namespacetests_1_1test__commit__commands.html',1,'tests']]],
+ ['test_5fcommit_5fcommands_2epy_6',['test_commit_commands.py',['../test__commit__commands_8py.html',1,'']]],
+ ['test_5fconfig_5fcommands_7',['test_config_commands',['../namespacetests_1_1test__config__commands.html',1,'tests']]],
+ ['test_5fconfig_5fcommands_2epy_8',['test_config_commands.py',['../test__config__commands_8py.html',1,'']]],
+ ['test_5fconfig_5fjira_5fweb_5fserver_5fsetup_9',['test_config_jira_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a',1,'tests::test_web_config::TestWebConfig']]],
+ ['test_5fconfig_5fllm_5fweb_5fserver_5fsetup_10',['test_config_llm_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35',1,'tests::test_web_config::TestWebConfig']]],
+ ['test_5fdoc_5fcommands_11',['test_doc_commands',['../namespacetests_1_1test__doc__commands.html',1,'tests']]],
+ ['test_5fdoc_5fcommands_2epy_12',['test_doc_commands.py',['../test__doc__commands_8py.html',1,'']]],
+ ['test_5fgenerate_5fdoc_5ferror_5fhandling_13',['test_generate_doc_error_handling',['../namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0',1,'tests::test_doc_commands']]],
+ ['test_5fgenerate_5fdoc_5ffile_5flocation_14',['test_generate_doc_file_location',['../namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45',1,'tests::test_doc_commands']]],
+ ['test_5fgenerate_5fdoc_5ffolder_5flocation_15',['test_generate_doc_folder_location',['../namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186',1,'tests::test_doc_commands']]],
+ ['test_5fgenerate_5fdoc_5fno_5flocation_16',['test_generate_doc_no_location',['../namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8',1,'tests::test_doc_commands']]],
+ ['test_5fgenerate_5fdoc_5fwith_5ffile_5fexception_17',['test_generate_doc_with_file_exception',['../namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0',1,'tests::test_doc_commands']]],
+ ['test_5fgenerate_5fdoc_5fwith_5ffolder_5fexception_18',['test_generate_doc_with_folder_exception',['../namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3',1,'tests::test_doc_commands']]],
+ ['test_5fget_5fjira_5fconfig_5fexists_19',['test_get_jira_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5fllm_5fconfig_5fempty_20',['test_get_llm_config_empty',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5fllm_5fconfig_5fexists_21',['test_get_llm_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5fllm_5fconfig_5finvalid_5fjson_22',['test_get_llm_config_invalid_json',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5fpenify_5fconfig_5fexisting_5fdir_23',['test_get_penify_config_existing_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5fpenify_5fconfig_5fnew_5fdir_24',['test_get_penify_config_new_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5ftoken_5ffrom_5fconfig_25',['test_get_token_from_config',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5ftoken_5ffrom_5fenv_26',['test_get_token_from_env',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5ftoken_5fnot_5ffound_27',['test_get_token_not_found',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fhandle_5fcommit_28',['test_handle_commit',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['test_5fhandle_5fdocgen_5fgenerate_29',['test_handle_docgen_generate',['../namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a',1,'tests::test_doc_commands']]],
+ ['test_5fhandle_5fdocgen_5finstall_5fhook_30',['test_handle_docgen_install_hook',['../namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05',1,'tests::test_doc_commands']]],
+ ['test_5fhandle_5fdocgen_5fno_5ftoken_31',['test_handle_docgen_no_token',['../namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c',1,'tests::test_doc_commands']]],
+ ['test_5fhandle_5fdocgen_5funinstall_5fhook_32',['test_handle_docgen_uninstall_hook',['../namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482',1,'tests::test_doc_commands']]],
+ ['test_5fsave_5fjira_5fconfig_5fsuccess_33',['test_save_jira_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fsave_5fllm_5fconfig_5ffailure_34',['test_save_llm_config_failure',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fsave_5fllm_5fconfig_5fsuccess_35',['test_save_llm_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fsetup_5fcommit_5fparser_36',['test_setup_commit_parser',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['test_5fsetup_5fdocgen_5fparser_37',['test_setup_docgen_parser',['../namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7',1,'tests::test_doc_commands']]],
+ ['test_5fweb_5fconfig_38',['test_web_config',['../namespacetests_1_1test__web__config.html',1,'tests']]],
+ ['test_5fweb_5fconfig_2epy_39',['test_web_config.py',['../test__web__config_8py.html',1,'']]],
+ ['testcommitcommands_40',['TestCommitCommands',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html',1,'tests::test_commit_commands']]],
+ ['testconfigcommands_41',['TestConfigCommands',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html',1,'tests::test_config_commands']]],
+ ['tests_42',['tests',['../namespacetests.html',1,'']]],
+ ['testwebconfig_43',['TestWebConfig',['../classtests_1_1test__web__config_1_1TestWebConfig.html',1,'tests::test_web_config']]]
+];
diff --git a/docs/html/search/all_12.html b/docs/html/search/all_12.html
new file mode 100644
index 0000000..90b128f
--- /dev/null
+++ b/docs/html/search/all_12.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_12.js b/docs/html/search/all_12.js
new file mode 100644
index 0000000..0d33c8a
--- /dev/null
+++ b/docs/html/search/all_12.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+ ['ui_5futils_2epy_0',['ui_utils.py',['../ui__utils_8py.html',1,'']]],
+ ['uninstall_5fgit_5fhook_1',['uninstall_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d',1,'penify_hook::commands::hook_commands']]],
+ ['update_5fissue_5fstatus_2',['update_issue_status',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826',1,'penify_hook::jira_client::JiraClient']]],
+ ['update_5fstage_3',['update_stage',['../namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d',1,'penify_hook::ui_utils']]],
+ ['url_4',['url',['../namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb',1,'setup']]],
+ ['utils_2epy_5',['utils.py',['../utils_8py.html',1,'']]]
+];
diff --git a/docs/html/search/all_13.html b/docs/html/search/all_13.html
new file mode 100644
index 0000000..272d129
--- /dev/null
+++ b/docs/html/search/all_13.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_13.js b/docs/html/search/all_13.js
new file mode 100644
index 0000000..d9621d9
--- /dev/null
+++ b/docs/html/search/all_13.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['version_0',['version',['../namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c',1,'setup']]]
+];
diff --git a/docs/html/search/all_14.html b/docs/html/search/all_14.html
new file mode 100644
index 0000000..291e0d9
--- /dev/null
+++ b/docs/html/search/all_14.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_14.js b/docs/html/search/all_14.js
new file mode 100644
index 0000000..10d696f
--- /dev/null
+++ b/docs/html/search/all_14.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['warning_5fcolor_0',['WARNING_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff',1,'penify_hook::ui_utils']]],
+ ['warning_5fsymbol_1',['WARNING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16',1,'penify_hook::ui_utils']]]
+];
diff --git a/docs/html/search/all_2.html b/docs/html/search/all_2.html
new file mode 100644
index 0000000..98e648c
--- /dev/null
+++ b/docs/html/search/all_2.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js
new file mode 100644
index 0000000..56f2add
--- /dev/null
+++ b/docs/html/search/all_2.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['base_5fanalyzer_2epy_0',['base_analyzer.py',['../base__analyzer_8py.html',1,'']]],
+ ['baseanalyzer_1',['BaseAnalyzer',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html',1,'penify_hook::base_analyzer']]],
+ ['bearer_5ftoken_2',['BEARER_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0',1,'penify_hook::api_client::APIClient']]]
+];
diff --git a/docs/html/search/all_3.html b/docs/html/search/all_3.html
new file mode 100644
index 0000000..f4e8da7
--- /dev/null
+++ b/docs/html/search/all_3.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js
new file mode 100644
index 0000000..45ec4ff
--- /dev/null
+++ b/docs/html/search/all_3.js
@@ -0,0 +1,18 @@
+var searchData=
+[
+ ['classifiers_0',['classifiers',['../namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785',1,'setup']]],
+ ['commit_2dcommands_2emd_1',['commit-commands.md',['../commit-commands_8md.html',1,'']]],
+ ['commit_5fanalyzer_2epy_2',['commit_analyzer.py',['../commit__analyzer_8py.html',1,'']]],
+ ['commit_5fcode_3',['commit_code',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a',1,'penify_hook::commands::commit_commands']]],
+ ['commit_5fcommands_2epy_4',['commit_commands.py',['../commit__commands_8py.html',1,'']]],
+ ['commitdocgenhook_5',['CommitDocGenHook',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook::commit_analyzer']]],
+ ['config_2dcommands_2emd_6',['config-commands.md',['../config-commands_8md.html',1,'']]],
+ ['config_5fcommand_2epy_7',['config_command.py',['../config__command_8py.html',1,'']]],
+ ['config_5fcommands_2epy_8',['config_commands.py',['../config__commands_8py.html',1,'']]],
+ ['config_5fjira_5fweb_9',['config_jira_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06',1,'penify_hook::commands::config_commands']]],
+ ['config_5fllm_5fweb_10',['config_llm_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c',1,'penify_hook::commands::config_commands']]],
+ ['conftest_2epy_11',['conftest.py',['../conftest_8py.html',1,'']]],
+ ['constants_2epy_12',['constants.py',['../constants_8py.html',1,'']]],
+ ['create_5fprogress_5fbar_13',['create_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c',1,'penify_hook::ui_utils']]],
+ ['create_5fstage_5fprogress_5fbar_14',['create_stage_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef',1,'penify_hook::ui_utils']]]
+];
diff --git a/docs/html/search/all_4.html b/docs/html/search/all_4.html
new file mode 100644
index 0000000..678d3a2
--- /dev/null
+++ b/docs/html/search/all_4.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js
new file mode 100644
index 0000000..ccfe815
--- /dev/null
+++ b/docs/html/search/all_4.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+ ['dashboard_5furl_0',['DASHBOARD_URL',['../namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0',1,'penify_hook::constants']]],
+ ['description_1',['description',['../namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0',1,'setup']]],
+ ['detailed_2dusage_2emd_2',['detailed-usage.md',['../detailed-usage_8md.html',1,'']]],
+ ['dir_5fpath_3',['dir_path',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]],
+ ['doc_5fcommands_2emd_4',['doc_commands.md',['../doc__commands_8md.html',1,'']]],
+ ['doc_5fcommands_2epy_5',['doc_commands.py',['../doc__commands_8py.html',1,'']]],
+ ['docgen_5fdescription_6',['docgen_description',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948',1,'penify_hook::commands::doc_commands']]],
+ ['dotenv_5favailable_7',['DOTENV_AVAILABLE',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67',1,'penify_hook::commands::config_commands']]]
+];
diff --git a/docs/html/search/all_5.html b/docs/html/search/all_5.html
new file mode 100644
index 0000000..aa9af78
--- /dev/null
+++ b/docs/html/search/all_5.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js
new file mode 100644
index 0000000..89b0ea5
--- /dev/null
+++ b/docs/html/search/all_5.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+ ['enhance_5fcommit_5fmessage_0',['enhance_commit_message',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760',1,'penify_hook::jira_client::JiraClient']]],
+ ['entry_5fpoints_1',['entry_points',['../namespacesetup.html#ada7058afc98897f073d3f3b8b9157059',1,'setup']]],
+ ['error_5fcolor_2',['ERROR_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe',1,'penify_hook::ui_utils']]],
+ ['error_5fsymbol_3',['ERROR_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0',1,'penify_hook::ui_utils']]],
+ ['example_2dworkflows_2emd_4',['example-workflows.md',['../example-workflows_8md.html',1,'']]],
+ ['exception_5',['Exception',['../classException.html',1,'']]],
+ ['extract_5fissue_5fkeys_6',['extract_issue_keys',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7',1,'penify_hook::jira_client::JiraClient']]],
+ ['extract_5fissue_5fkeys_5ffrom_5fbranch_7',['extract_issue_keys_from_branch',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c',1,'penify_hook::jira_client::JiraClient']]]
+];
diff --git a/docs/html/search/all_6.html b/docs/html/search/all_6.html
new file mode 100644
index 0000000..d3026a7
--- /dev/null
+++ b/docs/html/search/all_6.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js
new file mode 100644
index 0000000..9da4602
--- /dev/null
+++ b/docs/html/search/all_6.js
@@ -0,0 +1,17 @@
+var searchData=
+[
+ ['file_5fanalyzer_2epy_0',['file_analyzer.py',['../file__analyzer_8py.html',1,'']]],
+ ['file_5fpath_1',['file_path',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32',1,'penify_hook::file_analyzer::FileAnalyzerGenHook']]],
+ ['fileanalyzergenhook_2',['FileAnalyzerGenHook',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html',1,'penify_hook::file_analyzer']]],
+ ['find_5fgit_5fparent_3',['find_git_parent',['../namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2',1,'penify_hook::utils']]],
+ ['folder_5fanalyzer_2epy_4',['folder_analyzer.py',['../folder__analyzer_8py.html',1,'']]],
+ ['folder_5fpath_5',['folder_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25',1,'penify_hook::base_analyzer::BaseAnalyzer']]],
+ ['folderanalyzergenhook_6',['FolderAnalyzerGenHook',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html',1,'penify_hook::folder_analyzer']]],
+ ['format_5fcommit_5fmessage_5fwith_5fjira_5finfo_7',['format_commit_message_with_jira_info',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23',1,'penify_hook::jira_client::JiraClient']]],
+ ['format_5ferror_8',['format_error',['../namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e',1,'penify_hook::ui_utils']]],
+ ['format_5ffile_5fpath_9',['format_file_path',['../namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4',1,'penify_hook::ui_utils']]],
+ ['format_5fhighlight_10',['format_highlight',['../namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452',1,'penify_hook::ui_utils']]],
+ ['format_5finfo_11',['format_info',['../namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6',1,'penify_hook::ui_utils']]],
+ ['format_5fsuccess_12',['format_success',['../namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776',1,'penify_hook::ui_utils']]],
+ ['format_5fwarning_13',['format_warning',['../namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2',1,'penify_hook::ui_utils']]]
+];
diff --git a/docs/html/search/all_7.html b/docs/html/search/all_7.html
new file mode 100644
index 0000000..b2ee042
--- /dev/null
+++ b/docs/html/search/all_7.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js
new file mode 100644
index 0000000..d5e7346
--- /dev/null
+++ b/docs/html/search/all_7.js
@@ -0,0 +1,23 @@
+var searchData=
+[
+ ['generate_5fcommit_5fsummary_0',['generate_commit_summary',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce',1,'penify_hook.api_client.APIClient.generate_commit_summary()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000',1,'penify_hook.llm_client.LLMClient.generate_commit_summary()']]],
+ ['generate_5fcommit_5fsummary_5fwith_5fllm_1',['generate_commit_summary_with_llm',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3',1,'penify_hook::api_client::APIClient']]],
+ ['generate_5fdoc_2',['generate_doc',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25',1,'penify_hook::commands::doc_commands']]],
+ ['get_5fapi_5fkey_3',['get_api_key',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99',1,'penify_hook::api_client::APIClient']]],
+ ['get_5fcommit_5fcontext_5ffrom_5fissues_4',['get_commit_context_from_issues',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd',1,'penify_hook::jira_client::JiraClient']]],
+ ['get_5fdetailed_5fissue_5fcontext_5',['get_detailed_issue_context',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746',1,'penify_hook::jira_client::JiraClient']]],
+ ['get_5fenv_5fvar_5for_5fdefault_6',['get_env_var_or_default',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87',1,'penify_hook::commands::config_commands']]],
+ ['get_5fissue_5fdetails_7',['get_issue_details',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a',1,'penify_hook::jira_client::JiraClient']]],
+ ['get_5fjira_5fconfig_8',['get_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2',1,'penify_hook::commands::config_commands']]],
+ ['get_5fllm_5fconfig_9',['get_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0',1,'penify_hook::commands::config_commands']]],
+ ['get_5fmodified_5ffiles_5fin_5flast_5fcommit_10',['get_modified_files_in_last_commit',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481',1,'penify_hook::git_analyzer::GitDocGenHook']]],
+ ['get_5fmodified_5flines_11',['get_modified_lines',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd',1,'penify_hook::git_analyzer::GitDocGenHook']]],
+ ['get_5fpenify_5fconfig_12',['get_penify_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20',1,'penify_hook::commands::config_commands']]],
+ ['get_5frepo_5fdetails_13',['get_repo_details',['../namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3',1,'penify_hook::utils']]],
+ ['get_5fsummary_14',['get_summary',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37',1,'penify_hook::commit_analyzer::CommitDocGenHook']]],
+ ['get_5fsupported_5ffile_5ftypes_15',['get_supported_file_types',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402',1,'penify_hook::api_client::APIClient']]],
+ ['get_5ftoken_16',['get_token',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812',1,'penify_hook::commands::config_commands']]],
+ ['git_5fanalyzer_2epy_17',['git_analyzer.py',['../git__analyzer_8py.html',1,'']]],
+ ['gitdocgenhook_18',['GitDocGenHook',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html',1,'penify_hook::git_analyzer']]],
+ ['gitreponotfounderror_19',['GitRepoNotFoundError',['../classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html',1,'penify_hook::utils']]]
+];
diff --git a/docs/html/search/all_8.html b/docs/html/search/all_8.html
new file mode 100644
index 0000000..40a0b3f
--- /dev/null
+++ b/docs/html/search/all_8.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js
new file mode 100644
index 0000000..b83bbc6
--- /dev/null
+++ b/docs/html/search/all_8.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+ ['handle_5fcommit_0',['handle_commit',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23',1,'penify_hook::commands::commit_commands']]],
+ ['handle_5fconfig_1',['handle_config',['../namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde',1,'penify_hook::config_command']]],
+ ['handle_5fdocgen_2',['handle_docgen',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704',1,'penify_hook::commands::doc_commands']]],
+ ['handle_5flogin_3',['handle_login',['../namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd',1,'penify_hook::login_command']]],
+ ['highlight_5fcolor_4',['HIGHLIGHT_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc',1,'penify_hook::ui_utils']]],
+ ['hook_5fcommands_2epy_5',['hook_commands.py',['../hook__commands_8py.html',1,'']]],
+ ['hook_5ffilename_6',['HOOK_FILENAME',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1',1,'penify_hook::commands::hook_commands']]],
+ ['hook_5ftemplate_7',['HOOK_TEMPLATE',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7',1,'penify_hook::commands::hook_commands']]]
+];
diff --git a/docs/html/search/all_9.html b/docs/html/search/all_9.html
new file mode 100644
index 0000000..7c49144
--- /dev/null
+++ b/docs/html/search/all_9.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_9.js b/docs/html/search/all_9.js
new file mode 100644
index 0000000..bf0f94f
--- /dev/null
+++ b/docs/html/search/all_9.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['info_5fcolor_0',['INFO_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c',1,'penify_hook::ui_utils']]],
+ ['install_5fgit_5fhook_1',['install_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2',1,'penify_hook::commands::hook_commands']]],
+ ['install_5frequires_2',['install_requires',['../namespacesetup.html#abead4f26b530856f858f0d44c7cf2588',1,'setup']]],
+ ['is_5fconnected_3',['is_connected',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8',1,'penify_hook::jira_client::JiraClient']]]
+];
diff --git a/docs/html/search/all_a.html b/docs/html/search/all_a.html
new file mode 100644
index 0000000..fc9d79c
--- /dev/null
+++ b/docs/html/search/all_a.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_a.js b/docs/html/search/all_a.js
new file mode 100644
index 0000000..cb87635
--- /dev/null
+++ b/docs/html/search/all_a.js
@@ -0,0 +1,10 @@
+var searchData=
+[
+ ['jira_5fapi_5ftoken_0',['jira_api_token',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9',1,'penify_hook::jira_client::JiraClient']]],
+ ['jira_5favailable_1',['JIRA_AVAILABLE',['../namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2',1,'penify_hook::jira_client']]],
+ ['jira_5fclient_2',['jira_client',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6',1,'penify_hook::jira_client::JiraClient']]],
+ ['jira_5fclient_2epy_3',['jira_client.py',['../jira__client_8py.html',1,'']]],
+ ['jira_5furl_4',['jira_url',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197',1,'penify_hook::jira_client::JiraClient']]],
+ ['jira_5fuser_5',['jira_user',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c',1,'penify_hook::jira_client::JiraClient']]],
+ ['jiraclient_6',['JiraClient',['../classpenify__hook_1_1jira__client_1_1JiraClient.html',1,'penify_hook::jira_client']]]
+];
diff --git a/docs/html/search/all_b.html b/docs/html/search/all_b.html
new file mode 100644
index 0000000..dafb1fa
--- /dev/null
+++ b/docs/html/search/all_b.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js
new file mode 100644
index 0000000..2024217
--- /dev/null
+++ b/docs/html/search/all_b.js
@@ -0,0 +1,14 @@
+var searchData=
+[
+ ['list_5fall_5ffiles_5fin_5fdir_0',['list_all_files_in_dir',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]],
+ ['litellm_1',['litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e',1,'penify_hook::llm_client::LLMClient']]],
+ ['llm_5fclient_2',['llm_client',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a',1,'penify_hook::commit_analyzer::CommitDocGenHook']]],
+ ['llm_5fclient_2epy_3',['llm_client.py',['../llm__client_8py.html',1,'']]],
+ ['llmclient_4',['LLMClient',['../classpenify__hook_1_1llm__client_1_1LLMClient.html',1,'penify_hook::llm_client']]],
+ ['load_5fenv_5ffiles_5',['load_env_files',['../namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae',1,'penify_hook::commands::config_commands']]],
+ ['logger_6',['logger',['../namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828',1,'penify_hook.file_analyzer.logger()'],['../namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a',1,'penify_hook.git_analyzer.logger()'],['../namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01',1,'penify_hook.utils.logger()']]],
+ ['login_7',['login',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655',1,'penify_hook::commands::auth_commands']]],
+ ['login_5fcommand_2epy_8',['login_command.py',['../login__command_8py.html',1,'']]],
+ ['long_5fdescription_9',['long_description',['../namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde',1,'setup']]],
+ ['long_5fdescription_5fcontent_5ftype_10',['long_description_content_type',['../namespacesetup.html#a3796ea10c998699d07d391414ff5d720',1,'setup']]]
+];
diff --git a/docs/html/search/all_c.html b/docs/html/search/all_c.html
new file mode 100644
index 0000000..9df619d
--- /dev/null
+++ b/docs/html/search/all_c.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js
new file mode 100644
index 0000000..885d3c4
--- /dev/null
+++ b/docs/html/search/all_c.js
@@ -0,0 +1,12 @@
+var searchData=
+[
+ ['main_0',['main',['../namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f',1,'penify_hook::main']]],
+ ['main_2epy_1',['main.py',['../main_8py.html',1,'']]],
+ ['mock_5fapi_5fclient_2',['mock_api_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['mock_5fcommit_5fdoc_5fgen_3',['mock_commit_doc_gen',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['mock_5fgit_5ffolder_5fsearch_4',['mock_git_folder_search',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['mock_5fjira_5fclient_5',['mock_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['mock_5fllm_5fclient_6',['mock_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['mock_5fprint_5ffunctions_7',['mock_print_functions',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['model_8',['model',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10',1,'penify_hook::llm_client::LLMClient']]]
+];
diff --git a/docs/html/search/all_d.html b/docs/html/search/all_d.html
new file mode 100644
index 0000000..95d8eec
--- /dev/null
+++ b/docs/html/search/all_d.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js
new file mode 100644
index 0000000..eb3ec51
--- /dev/null
+++ b/docs/html/search/all_d.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['name_0',['name',['../namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f',1,'setup']]],
+ ['neutral_5fcolor_1',['NEUTRAL_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5',1,'penify_hook::ui_utils']]]
+];
diff --git a/docs/html/search/all_e.html b/docs/html/search/all_e.html
new file mode 100644
index 0000000..a54e120
--- /dev/null
+++ b/docs/html/search/all_e.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js
new file mode 100644
index 0000000..c246db6
--- /dev/null
+++ b/docs/html/search/all_e.js
@@ -0,0 +1,43 @@
+var searchData=
+[
+ ['api_5fclient_0',['api_client',['../namespacepenify__hook_1_1api__client.html',1,'penify_hook']]],
+ ['auth_5fcommands_1',['auth_commands',['../namespacepenify__hook_1_1commands_1_1auth__commands.html',1,'penify_hook::commands']]],
+ ['base_5fanalyzer_2',['base_analyzer',['../namespacepenify__hook_1_1base__analyzer.html',1,'penify_hook']]],
+ ['commands_3',['commands',['../namespacepenify__hook_1_1commands.html',1,'penify_hook']]],
+ ['commit_5fanalyzer_4',['commit_analyzer',['../namespacepenify__hook_1_1commit__analyzer.html',1,'penify_hook']]],
+ ['commit_5fcommands_5',['commit_commands',['../namespacepenify__hook_1_1commands_1_1commit__commands.html',1,'penify_hook::commands']]],
+ ['config_5fcommand_6',['config_command',['../namespacepenify__hook_1_1config__command.html',1,'penify_hook']]],
+ ['config_5fcommands_7',['config_commands',['../namespacepenify__hook_1_1commands_1_1config__commands.html',1,'penify_hook::commands']]],
+ ['constants_8',['constants',['../namespacepenify__hook_1_1constants.html',1,'penify_hook']]],
+ ['doc_5fcommands_9',['doc_commands',['../namespacepenify__hook_1_1commands_1_1doc__commands.html',1,'penify_hook::commands']]],
+ ['file_5fanalyzer_10',['file_analyzer',['../namespacepenify__hook_1_1file__analyzer.html',1,'penify_hook']]],
+ ['folder_5fanalyzer_11',['folder_analyzer',['../namespacepenify__hook_1_1folder__analyzer.html',1,'penify_hook']]],
+ ['git_5fanalyzer_12',['git_analyzer',['../namespacepenify__hook_1_1git__analyzer.html',1,'penify_hook']]],
+ ['hook_5fcommands_13',['hook_commands',['../namespacepenify__hook_1_1commands_1_1hook__commands.html',1,'penify_hook::commands']]],
+ ['jira_5fclient_14',['jira_client',['../namespacepenify__hook_1_1jira__client.html',1,'penify_hook']]],
+ ['llm_5fclient_15',['llm_client',['../namespacepenify__hook_1_1llm__client.html',1,'penify_hook']]],
+ ['login_5fcommand_16',['login_command',['../namespacepenify__hook_1_1login__command.html',1,'penify_hook']]],
+ ['main_17',['main',['../namespacepenify__hook_1_1main.html',1,'penify_hook']]],
+ ['packages_18',['packages',['../namespacesetup.html#aff2375a361fd5865c77bd9aa093be747',1,'setup']]],
+ ['path_19',['path',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880',1,'penify_hook::commands::config_commands']]],
+ ['penify_20cli_20_2d_20commit_20commands_20',['Penify CLI - Commit Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html',1,'']]],
+ ['penify_20cli_20_2d_20configuration_20commands_21',['Penify CLI - Configuration Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html',1,'']]],
+ ['penify_20cli_20_2d_20detailed_20usage_20guide_22',['Penify CLI - Detailed Usage Guide',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html',1,'']]],
+ ['penify_20cli_20_2d_20documentation_20generation_20commands_23',['Penify CLI - Documentation Generation Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html',1,'']]],
+ ['penify_20cli_20example_20workflows_24',['Penify CLI Example Workflows',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html',1,'']]],
+ ['penify_20cli_20tool_25',['Penify CLI Tool',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html',1,'']]],
+ ['penify_2dcli_2ddocumentation_2emd_26',['penify-cli-documentation.md',['../penify-cli-documentation_8md.html',1,'']]],
+ ['penify_5fhook_27',['penify_hook',['../namespacepenify__hook.html',1,'']]],
+ ['print_5ferror_28',['print_error',['../namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f',1,'penify_hook::ui_utils']]],
+ ['print_5finfo_29',['print_info',['../namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44',1,'penify_hook::ui_utils']]],
+ ['print_5fprocessing_30',['print_processing',['../namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115',1,'penify_hook.ui_utils.print_processing()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing()']]],
+ ['print_5fstatus_31',['print_status',['../namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c',1,'penify_hook::ui_utils']]],
+ ['print_5fsuccess_32',['print_success',['../namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a',1,'penify_hook::ui_utils']]],
+ ['print_5fwarning_33',['print_warning',['../namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa',1,'penify_hook::ui_utils']]],
+ ['process_5ffile_34',['process_file',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85',1,'penify_hook.git_analyzer.GitDocGenHook.process_file()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.process_file()']]],
+ ['process_5fjira_5fintegration_35',['process_jira_integration',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f',1,'penify_hook::commit_analyzer::CommitDocGenHook']]],
+ ['processing_5fsymbol_36',['PROCESSING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756',1,'penify_hook::ui_utils']]],
+ ['python_5frequires_37',['python_requires',['../namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf',1,'setup']]],
+ ['ui_5futils_38',['ui_utils',['../namespacepenify__hook_1_1ui__utils.html',1,'penify_hook']]],
+ ['utils_39',['utils',['../namespacepenify__hook_1_1utils.html',1,'penify_hook']]]
+];
diff --git a/docs/html/search/all_f.html b/docs/html/search/all_f.html
new file mode 100644
index 0000000..8d0aed3
--- /dev/null
+++ b/docs/html/search/all_f.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/all_f.js b/docs/html/search/all_f.js
new file mode 100644
index 0000000..11f8b78
--- /dev/null
+++ b/docs/html/search/all_f.js
@@ -0,0 +1,10 @@
+var searchData=
+[
+ ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]],
+ ['recursive_5fsearch_5fgit_5ffolder_1',['recursive_search_git_folder',['../namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f',1,'penify_hook::utils']]],
+ ['relative_5ffile_5fpath_2',['relative_file_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4',1,'penify_hook::base_analyzer::BaseAnalyzer']]],
+ ['repo_3',['repo',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369',1,'penify_hook::base_analyzer::BaseAnalyzer']]],
+ ['repo_5fdetails_4',['repo_details',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5',1,'penify_hook::base_analyzer::BaseAnalyzer']]],
+ ['repo_5fpath_5',['repo_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499',1,'penify_hook::base_analyzer::BaseAnalyzer']]],
+ ['run_6',['run',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9',1,'penify_hook.commit_analyzer.CommitDocGenHook.run()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.run()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.run()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae',1,'penify_hook.git_analyzer.GitDocGenHook.run()']]]
+];
diff --git a/docs/html/search/classes_0.html b/docs/html/search/classes_0.html
new file mode 100644
index 0000000..9d4f871
--- /dev/null
+++ b/docs/html/search/classes_0.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/classes_0.js b/docs/html/search/classes_0.js
new file mode 100644
index 0000000..d470783
--- /dev/null
+++ b/docs/html/search/classes_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['apiclient_0',['APIClient',['../classpenify__hook_1_1api__client_1_1APIClient.html',1,'penify_hook::api_client']]]
+];
diff --git a/docs/html/search/classes_1.html b/docs/html/search/classes_1.html
new file mode 100644
index 0000000..0557f9f
--- /dev/null
+++ b/docs/html/search/classes_1.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/classes_1.js b/docs/html/search/classes_1.js
new file mode 100644
index 0000000..740b36f
--- /dev/null
+++ b/docs/html/search/classes_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['baseanalyzer_0',['BaseAnalyzer',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html',1,'penify_hook::base_analyzer']]]
+];
diff --git a/docs/html/search/classes_2.html b/docs/html/search/classes_2.html
new file mode 100644
index 0000000..fa20861
--- /dev/null
+++ b/docs/html/search/classes_2.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/classes_2.js b/docs/html/search/classes_2.js
new file mode 100644
index 0000000..8bdd859
--- /dev/null
+++ b/docs/html/search/classes_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['commitdocgenhook_0',['CommitDocGenHook',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook::commit_analyzer']]]
+];
diff --git a/docs/html/search/classes_3.html b/docs/html/search/classes_3.html
new file mode 100644
index 0000000..98fbc87
--- /dev/null
+++ b/docs/html/search/classes_3.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/classes_3.js b/docs/html/search/classes_3.js
new file mode 100644
index 0000000..0ed9487
--- /dev/null
+++ b/docs/html/search/classes_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['exception_0',['Exception',['../classException.html',1,'']]]
+];
diff --git a/docs/html/search/classes_4.html b/docs/html/search/classes_4.html
new file mode 100644
index 0000000..3b6c51e
--- /dev/null
+++ b/docs/html/search/classes_4.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/classes_4.js b/docs/html/search/classes_4.js
new file mode 100644
index 0000000..e90ffee
--- /dev/null
+++ b/docs/html/search/classes_4.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['fileanalyzergenhook_0',['FileAnalyzerGenHook',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html',1,'penify_hook::file_analyzer']]],
+ ['folderanalyzergenhook_1',['FolderAnalyzerGenHook',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html',1,'penify_hook::folder_analyzer']]]
+];
diff --git a/docs/html/search/classes_5.html b/docs/html/search/classes_5.html
new file mode 100644
index 0000000..51c2b30
--- /dev/null
+++ b/docs/html/search/classes_5.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/classes_5.js b/docs/html/search/classes_5.js
new file mode 100644
index 0000000..a6b1740
--- /dev/null
+++ b/docs/html/search/classes_5.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['gitdocgenhook_0',['GitDocGenHook',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html',1,'penify_hook::git_analyzer']]],
+ ['gitreponotfounderror_1',['GitRepoNotFoundError',['../classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html',1,'penify_hook::utils']]]
+];
diff --git a/docs/html/search/classes_6.html b/docs/html/search/classes_6.html
new file mode 100644
index 0000000..431fb05
--- /dev/null
+++ b/docs/html/search/classes_6.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/classes_6.js b/docs/html/search/classes_6.js
new file mode 100644
index 0000000..6f010a9
--- /dev/null
+++ b/docs/html/search/classes_6.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['jiraclient_0',['JiraClient',['../classpenify__hook_1_1jira__client_1_1JiraClient.html',1,'penify_hook::jira_client']]]
+];
diff --git a/docs/html/search/classes_7.html b/docs/html/search/classes_7.html
new file mode 100644
index 0000000..0c76bf5
--- /dev/null
+++ b/docs/html/search/classes_7.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/classes_7.js b/docs/html/search/classes_7.js
new file mode 100644
index 0000000..bd37889
--- /dev/null
+++ b/docs/html/search/classes_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['llmclient_0',['LLMClient',['../classpenify__hook_1_1llm__client_1_1LLMClient.html',1,'penify_hook::llm_client']]]
+];
diff --git a/docs/html/search/classes_8.html b/docs/html/search/classes_8.html
new file mode 100644
index 0000000..5a392ee
--- /dev/null
+++ b/docs/html/search/classes_8.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/classes_8.js b/docs/html/search/classes_8.js
new file mode 100644
index 0000000..ca590a4
--- /dev/null
+++ b/docs/html/search/classes_8.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['testcommitcommands_0',['TestCommitCommands',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html',1,'tests::test_commit_commands']]],
+ ['testconfigcommands_1',['TestConfigCommands',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html',1,'tests::test_config_commands']]],
+ ['testwebconfig_2',['TestWebConfig',['../classtests_1_1test__web__config_1_1TestWebConfig.html',1,'tests::test_web_config']]]
+];
diff --git a/docs/html/search/close.svg b/docs/html/search/close.svg
new file mode 100644
index 0000000..a933eea
--- /dev/null
+++ b/docs/html/search/close.svg
@@ -0,0 +1,31 @@
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
diff --git a/docs/html/search/files_0.html b/docs/html/search/files_0.html
new file mode 100644
index 0000000..2dbb4c2
--- /dev/null
+++ b/docs/html/search/files_0.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_0.js b/docs/html/search/files_0.js
new file mode 100644
index 0000000..7b3d690
--- /dev/null
+++ b/docs/html/search/files_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['_5f_5finit_5f_5f_2epy_0',['__init__.py',['../penify__hook_2____init_____8py.html',1,'(Global Namespace)'],['../penify__hook_2commands_2____init_____8py.html',1,'(Global Namespace)'],['../tests_2____init_____8py.html',1,'(Global Namespace)']]]
+];
diff --git a/docs/html/search/files_1.html b/docs/html/search/files_1.html
new file mode 100644
index 0000000..18ccd15
--- /dev/null
+++ b/docs/html/search/files_1.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_1.js b/docs/html/search/files_1.js
new file mode 100644
index 0000000..6d2b14e
--- /dev/null
+++ b/docs/html/search/files_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['api_5fclient_2epy_0',['api_client.py',['../api__client_8py.html',1,'']]],
+ ['auth_5fcommands_2epy_1',['auth_commands.py',['../auth__commands_8py.html',1,'']]]
+];
diff --git a/docs/html/search/files_10.html b/docs/html/search/files_10.html
new file mode 100644
index 0000000..c6af52c
--- /dev/null
+++ b/docs/html/search/files_10.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_10.js b/docs/html/search/files_10.js
new file mode 100644
index 0000000..b759a00
--- /dev/null
+++ b/docs/html/search/files_10.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['ui_5futils_2epy_0',['ui_utils.py',['../ui__utils_8py.html',1,'']]],
+ ['utils_2epy_1',['utils.py',['../utils_8py.html',1,'']]]
+];
diff --git a/docs/html/search/files_2.html b/docs/html/search/files_2.html
new file mode 100644
index 0000000..a4c2be4
--- /dev/null
+++ b/docs/html/search/files_2.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_2.js b/docs/html/search/files_2.js
new file mode 100644
index 0000000..ba3909d
--- /dev/null
+++ b/docs/html/search/files_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['base_5fanalyzer_2epy_0',['base_analyzer.py',['../base__analyzer_8py.html',1,'']]]
+];
diff --git a/docs/html/search/files_3.html b/docs/html/search/files_3.html
new file mode 100644
index 0000000..3ac4cfb
--- /dev/null
+++ b/docs/html/search/files_3.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_3.js b/docs/html/search/files_3.js
new file mode 100644
index 0000000..bb00fd4
--- /dev/null
+++ b/docs/html/search/files_3.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+ ['commit_2dcommands_2emd_0',['commit-commands.md',['../commit-commands_8md.html',1,'']]],
+ ['commit_5fanalyzer_2epy_1',['commit_analyzer.py',['../commit__analyzer_8py.html',1,'']]],
+ ['commit_5fcommands_2epy_2',['commit_commands.py',['../commit__commands_8py.html',1,'']]],
+ ['config_2dcommands_2emd_3',['config-commands.md',['../config-commands_8md.html',1,'']]],
+ ['config_5fcommand_2epy_4',['config_command.py',['../config__command_8py.html',1,'']]],
+ ['config_5fcommands_2epy_5',['config_commands.py',['../config__commands_8py.html',1,'']]],
+ ['conftest_2epy_6',['conftest.py',['../conftest_8py.html',1,'']]],
+ ['constants_2epy_7',['constants.py',['../constants_8py.html',1,'']]]
+];
diff --git a/docs/html/search/files_4.html b/docs/html/search/files_4.html
new file mode 100644
index 0000000..eb19ecf
--- /dev/null
+++ b/docs/html/search/files_4.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_4.js b/docs/html/search/files_4.js
new file mode 100644
index 0000000..e7bf2b2
--- /dev/null
+++ b/docs/html/search/files_4.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['detailed_2dusage_2emd_0',['detailed-usage.md',['../detailed-usage_8md.html',1,'']]],
+ ['doc_5fcommands_2emd_1',['doc_commands.md',['../doc__commands_8md.html',1,'']]],
+ ['doc_5fcommands_2epy_2',['doc_commands.py',['../doc__commands_8py.html',1,'']]]
+];
diff --git a/docs/html/search/files_5.html b/docs/html/search/files_5.html
new file mode 100644
index 0000000..61d86d0
--- /dev/null
+++ b/docs/html/search/files_5.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_5.js b/docs/html/search/files_5.js
new file mode 100644
index 0000000..29d814a
--- /dev/null
+++ b/docs/html/search/files_5.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['example_2dworkflows_2emd_0',['example-workflows.md',['../example-workflows_8md.html',1,'']]]
+];
diff --git a/docs/html/search/files_6.html b/docs/html/search/files_6.html
new file mode 100644
index 0000000..333517d
--- /dev/null
+++ b/docs/html/search/files_6.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_6.js b/docs/html/search/files_6.js
new file mode 100644
index 0000000..3d76b9d
--- /dev/null
+++ b/docs/html/search/files_6.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['file_5fanalyzer_2epy_0',['file_analyzer.py',['../file__analyzer_8py.html',1,'']]],
+ ['folder_5fanalyzer_2epy_1',['folder_analyzer.py',['../folder__analyzer_8py.html',1,'']]]
+];
diff --git a/docs/html/search/files_7.html b/docs/html/search/files_7.html
new file mode 100644
index 0000000..ad481b0
--- /dev/null
+++ b/docs/html/search/files_7.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_7.js b/docs/html/search/files_7.js
new file mode 100644
index 0000000..4c89ef8
--- /dev/null
+++ b/docs/html/search/files_7.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['git_5fanalyzer_2epy_0',['git_analyzer.py',['../git__analyzer_8py.html',1,'']]]
+];
diff --git a/docs/html/search/files_8.html b/docs/html/search/files_8.html
new file mode 100644
index 0000000..2af8404
--- /dev/null
+++ b/docs/html/search/files_8.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_8.js b/docs/html/search/files_8.js
new file mode 100644
index 0000000..3d83c4a
--- /dev/null
+++ b/docs/html/search/files_8.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['hook_5fcommands_2epy_0',['hook_commands.py',['../hook__commands_8py.html',1,'']]]
+];
diff --git a/docs/html/search/files_9.html b/docs/html/search/files_9.html
new file mode 100644
index 0000000..8d5c07d
--- /dev/null
+++ b/docs/html/search/files_9.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_9.js b/docs/html/search/files_9.js
new file mode 100644
index 0000000..fcddd7a
--- /dev/null
+++ b/docs/html/search/files_9.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['jira_5fclient_2epy_0',['jira_client.py',['../jira__client_8py.html',1,'']]]
+];
diff --git a/docs/html/search/files_a.html b/docs/html/search/files_a.html
new file mode 100644
index 0000000..806a999
--- /dev/null
+++ b/docs/html/search/files_a.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_a.js b/docs/html/search/files_a.js
new file mode 100644
index 0000000..876ef0d
--- /dev/null
+++ b/docs/html/search/files_a.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['llm_5fclient_2epy_0',['llm_client.py',['../llm__client_8py.html',1,'']]],
+ ['login_5fcommand_2epy_1',['login_command.py',['../login__command_8py.html',1,'']]]
+];
diff --git a/docs/html/search/files_b.html b/docs/html/search/files_b.html
new file mode 100644
index 0000000..371cc0f
--- /dev/null
+++ b/docs/html/search/files_b.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_b.js b/docs/html/search/files_b.js
new file mode 100644
index 0000000..01a0bf7
--- /dev/null
+++ b/docs/html/search/files_b.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['main_2epy_0',['main.py',['../main_8py.html',1,'']]]
+];
diff --git a/docs/html/search/files_c.html b/docs/html/search/files_c.html
new file mode 100644
index 0000000..5b93d7f
--- /dev/null
+++ b/docs/html/search/files_c.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_c.js b/docs/html/search/files_c.js
new file mode 100644
index 0000000..6f265cb
--- /dev/null
+++ b/docs/html/search/files_c.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['penify_2dcli_2ddocumentation_2emd_0',['penify-cli-documentation.md',['../penify-cli-documentation_8md.html',1,'']]]
+];
diff --git a/docs/html/search/files_d.html b/docs/html/search/files_d.html
new file mode 100644
index 0000000..a9b1c64
--- /dev/null
+++ b/docs/html/search/files_d.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_d.js b/docs/html/search/files_d.js
new file mode 100644
index 0000000..9847676
--- /dev/null
+++ b/docs/html/search/files_d.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]]
+];
diff --git a/docs/html/search/files_e.html b/docs/html/search/files_e.html
new file mode 100644
index 0000000..db2d31a
--- /dev/null
+++ b/docs/html/search/files_e.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_e.js b/docs/html/search/files_e.js
new file mode 100644
index 0000000..d0dfcff
--- /dev/null
+++ b/docs/html/search/files_e.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['setup_2epy_0',['setup.py',['../setup_8py.html',1,'']]]
+];
diff --git a/docs/html/search/files_f.html b/docs/html/search/files_f.html
new file mode 100644
index 0000000..82b198a
--- /dev/null
+++ b/docs/html/search/files_f.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/files_f.js b/docs/html/search/files_f.js
new file mode 100644
index 0000000..133fd11
--- /dev/null
+++ b/docs/html/search/files_f.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['test_5fcommit_5fcommands_2epy_0',['test_commit_commands.py',['../test__commit__commands_8py.html',1,'']]],
+ ['test_5fconfig_5fcommands_2epy_1',['test_config_commands.py',['../test__config__commands_8py.html',1,'']]],
+ ['test_5fdoc_5fcommands_2epy_2',['test_doc_commands.py',['../test__doc__commands_8py.html',1,'']]],
+ ['test_5fweb_5fconfig_2epy_3',['test_web_config.py',['../test__web__config_8py.html',1,'']]]
+];
diff --git a/docs/html/search/functions_0.html b/docs/html/search/functions_0.html
new file mode 100644
index 0000000..3b739c7
--- /dev/null
+++ b/docs/html/search/functions_0.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js
new file mode 100644
index 0000000..8362237
--- /dev/null
+++ b/docs/html/search/functions_0.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['_5f_5finit_5f_5f_0',['__init__',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086',1,'penify_hook.api_client.APIClient.__init__()'],['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344',1,'penify_hook.base_analyzer.BaseAnalyzer.__init__()'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e',1,'penify_hook.commit_analyzer.CommitDocGenHook.__init__()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c',1,'penify_hook.git_analyzer.GitDocGenHook.__init__()'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5',1,'penify_hook.jira_client.JiraClient.__init__()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764',1,'penify_hook.llm_client.LLMClient.__init__()']]],
+ ['_5famend_5fcommit_1',['_amend_commit',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca',1,'penify_hook::commit_analyzer::CommitDocGenHook']]]
+];
diff --git a/docs/html/search/functions_1.html b/docs/html/search/functions_1.html
new file mode 100644
index 0000000..2cef5e3
--- /dev/null
+++ b/docs/html/search/functions_1.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_1.js b/docs/html/search/functions_1.js
new file mode 100644
index 0000000..6c71456
--- /dev/null
+++ b/docs/html/search/functions_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['add_5fcomment_0',['add_comment',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1',1,'penify_hook::jira_client::JiraClient']]]
+];
diff --git a/docs/html/search/functions_2.html b/docs/html/search/functions_2.html
new file mode 100644
index 0000000..3308c65
--- /dev/null
+++ b/docs/html/search/functions_2.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_2.js b/docs/html/search/functions_2.js
new file mode 100644
index 0000000..9ea0560
--- /dev/null
+++ b/docs/html/search/functions_2.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+ ['commit_5fcode_0',['commit_code',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a',1,'penify_hook::commands::commit_commands']]],
+ ['config_5fjira_5fweb_1',['config_jira_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06',1,'penify_hook::commands::config_commands']]],
+ ['config_5fllm_5fweb_2',['config_llm_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c',1,'penify_hook::commands::config_commands']]],
+ ['create_5fprogress_5fbar_3',['create_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c',1,'penify_hook::ui_utils']]],
+ ['create_5fstage_5fprogress_5fbar_4',['create_stage_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef',1,'penify_hook::ui_utils']]]
+];
diff --git a/docs/html/search/functions_3.html b/docs/html/search/functions_3.html
new file mode 100644
index 0000000..43ac697
--- /dev/null
+++ b/docs/html/search/functions_3.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_3.js b/docs/html/search/functions_3.js
new file mode 100644
index 0000000..79bed7c
--- /dev/null
+++ b/docs/html/search/functions_3.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['enhance_5fcommit_5fmessage_0',['enhance_commit_message',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760',1,'penify_hook::jira_client::JiraClient']]],
+ ['extract_5fissue_5fkeys_1',['extract_issue_keys',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7',1,'penify_hook::jira_client::JiraClient']]],
+ ['extract_5fissue_5fkeys_5ffrom_5fbranch_2',['extract_issue_keys_from_branch',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c',1,'penify_hook::jira_client::JiraClient']]]
+];
diff --git a/docs/html/search/functions_4.html b/docs/html/search/functions_4.html
new file mode 100644
index 0000000..d12c2df
--- /dev/null
+++ b/docs/html/search/functions_4.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_4.js b/docs/html/search/functions_4.js
new file mode 100644
index 0000000..3c2e1af
--- /dev/null
+++ b/docs/html/search/functions_4.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+ ['find_5fgit_5fparent_0',['find_git_parent',['../namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2',1,'penify_hook::utils']]],
+ ['format_5fcommit_5fmessage_5fwith_5fjira_5finfo_1',['format_commit_message_with_jira_info',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23',1,'penify_hook::jira_client::JiraClient']]],
+ ['format_5ferror_2',['format_error',['../namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e',1,'penify_hook::ui_utils']]],
+ ['format_5ffile_5fpath_3',['format_file_path',['../namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4',1,'penify_hook::ui_utils']]],
+ ['format_5fhighlight_4',['format_highlight',['../namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452',1,'penify_hook::ui_utils']]],
+ ['format_5finfo_5',['format_info',['../namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6',1,'penify_hook::ui_utils']]],
+ ['format_5fsuccess_6',['format_success',['../namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776',1,'penify_hook::ui_utils']]],
+ ['format_5fwarning_7',['format_warning',['../namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2',1,'penify_hook::ui_utils']]]
+];
diff --git a/docs/html/search/functions_5.html b/docs/html/search/functions_5.html
new file mode 100644
index 0000000..7266236
--- /dev/null
+++ b/docs/html/search/functions_5.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_5.js b/docs/html/search/functions_5.js
new file mode 100644
index 0000000..75c7e99
--- /dev/null
+++ b/docs/html/search/functions_5.js
@@ -0,0 +1,20 @@
+var searchData=
+[
+ ['generate_5fcommit_5fsummary_0',['generate_commit_summary',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000',1,'penify_hook.llm_client.LLMClient.generate_commit_summary()'],['../classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce',1,'penify_hook.api_client.APIClient.generate_commit_summary(self, git_diff, str instruction="", repo_details=None, dict jira_context=None)']]],
+ ['generate_5fcommit_5fsummary_5fwith_5fllm_1',['generate_commit_summary_with_llm',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3',1,'penify_hook::api_client::APIClient']]],
+ ['generate_5fdoc_2',['generate_doc',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25',1,'penify_hook::commands::doc_commands']]],
+ ['get_5fapi_5fkey_3',['get_api_key',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99',1,'penify_hook::api_client::APIClient']]],
+ ['get_5fcommit_5fcontext_5ffrom_5fissues_4',['get_commit_context_from_issues',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd',1,'penify_hook::jira_client::JiraClient']]],
+ ['get_5fdetailed_5fissue_5fcontext_5',['get_detailed_issue_context',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746',1,'penify_hook::jira_client::JiraClient']]],
+ ['get_5fenv_5fvar_5for_5fdefault_6',['get_env_var_or_default',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87',1,'penify_hook::commands::config_commands']]],
+ ['get_5fissue_5fdetails_7',['get_issue_details',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a',1,'penify_hook::jira_client::JiraClient']]],
+ ['get_5fjira_5fconfig_8',['get_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2',1,'penify_hook::commands::config_commands']]],
+ ['get_5fllm_5fconfig_9',['get_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0',1,'penify_hook::commands::config_commands']]],
+ ['get_5fmodified_5ffiles_5fin_5flast_5fcommit_10',['get_modified_files_in_last_commit',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481',1,'penify_hook::git_analyzer::GitDocGenHook']]],
+ ['get_5fmodified_5flines_11',['get_modified_lines',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd',1,'penify_hook::git_analyzer::GitDocGenHook']]],
+ ['get_5fpenify_5fconfig_12',['get_penify_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20',1,'penify_hook::commands::config_commands']]],
+ ['get_5frepo_5fdetails_13',['get_repo_details',['../namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3',1,'penify_hook::utils']]],
+ ['get_5fsummary_14',['get_summary',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37',1,'penify_hook::commit_analyzer::CommitDocGenHook']]],
+ ['get_5fsupported_5ffile_5ftypes_15',['get_supported_file_types',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402',1,'penify_hook::api_client::APIClient']]],
+ ['get_5ftoken_16',['get_token',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812',1,'penify_hook::commands::config_commands']]]
+];
diff --git a/docs/html/search/functions_6.html b/docs/html/search/functions_6.html
new file mode 100644
index 0000000..7f9fc45
--- /dev/null
+++ b/docs/html/search/functions_6.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_6.js b/docs/html/search/functions_6.js
new file mode 100644
index 0000000..6ef2054
--- /dev/null
+++ b/docs/html/search/functions_6.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['handle_5fcommit_0',['handle_commit',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23',1,'penify_hook::commands::commit_commands']]],
+ ['handle_5fconfig_1',['handle_config',['../namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde',1,'penify_hook::config_command']]],
+ ['handle_5fdocgen_2',['handle_docgen',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704',1,'penify_hook::commands::doc_commands']]],
+ ['handle_5flogin_3',['handle_login',['../namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd',1,'penify_hook::login_command']]]
+];
diff --git a/docs/html/search/functions_7.html b/docs/html/search/functions_7.html
new file mode 100644
index 0000000..ad0f88b
--- /dev/null
+++ b/docs/html/search/functions_7.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_7.js b/docs/html/search/functions_7.js
new file mode 100644
index 0000000..f0f0714
--- /dev/null
+++ b/docs/html/search/functions_7.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['install_5fgit_5fhook_0',['install_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2',1,'penify_hook::commands::hook_commands']]],
+ ['is_5fconnected_1',['is_connected',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8',1,'penify_hook::jira_client::JiraClient']]]
+];
diff --git a/docs/html/search/functions_8.html b/docs/html/search/functions_8.html
new file mode 100644
index 0000000..ea7fa74
--- /dev/null
+++ b/docs/html/search/functions_8.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_8.js b/docs/html/search/functions_8.js
new file mode 100644
index 0000000..8934697
--- /dev/null
+++ b/docs/html/search/functions_8.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['list_5fall_5ffiles_5fin_5fdir_0',['list_all_files_in_dir',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]],
+ ['litellm_1',['litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e',1,'penify_hook::llm_client::LLMClient']]],
+ ['load_5fenv_5ffiles_2',['load_env_files',['../namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae',1,'penify_hook::commands::config_commands']]],
+ ['login_3',['login',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655',1,'penify_hook::commands::auth_commands']]]
+];
diff --git a/docs/html/search/functions_9.html b/docs/html/search/functions_9.html
new file mode 100644
index 0000000..d831dc7
--- /dev/null
+++ b/docs/html/search/functions_9.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_9.js b/docs/html/search/functions_9.js
new file mode 100644
index 0000000..70a2559
--- /dev/null
+++ b/docs/html/search/functions_9.js
@@ -0,0 +1,10 @@
+var searchData=
+[
+ ['main_0',['main',['../namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f',1,'penify_hook::main']]],
+ ['mock_5fapi_5fclient_1',['mock_api_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['mock_5fcommit_5fdoc_5fgen_2',['mock_commit_doc_gen',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['mock_5fgit_5ffolder_5fsearch_3',['mock_git_folder_search',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['mock_5fjira_5fclient_4',['mock_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['mock_5fllm_5fclient_5',['mock_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['mock_5fprint_5ffunctions_6',['mock_print_functions',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be',1,'tests::test_commit_commands::TestCommitCommands']]]
+];
diff --git a/docs/html/search/functions_a.html b/docs/html/search/functions_a.html
new file mode 100644
index 0000000..7018fc6
--- /dev/null
+++ b/docs/html/search/functions_a.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_a.js b/docs/html/search/functions_a.js
new file mode 100644
index 0000000..0283fbe
--- /dev/null
+++ b/docs/html/search/functions_a.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+ ['print_5ferror_0',['print_error',['../namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f',1,'penify_hook::ui_utils']]],
+ ['print_5finfo_1',['print_info',['../namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44',1,'penify_hook::ui_utils']]],
+ ['print_5fprocessing_2',['print_processing',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing()'],['../namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115',1,'penify_hook.ui_utils.print_processing(file_path)']]],
+ ['print_5fstatus_3',['print_status',['../namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c',1,'penify_hook::ui_utils']]],
+ ['print_5fsuccess_4',['print_success',['../namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a',1,'penify_hook::ui_utils']]],
+ ['print_5fwarning_5',['print_warning',['../namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa',1,'penify_hook::ui_utils']]],
+ ['process_5ffile_6',['process_file',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.process_file()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85',1,'penify_hook.git_analyzer.GitDocGenHook.process_file()']]],
+ ['process_5fjira_5fintegration_7',['process_jira_integration',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f',1,'penify_hook::commit_analyzer::CommitDocGenHook']]]
+];
diff --git a/docs/html/search/functions_b.html b/docs/html/search/functions_b.html
new file mode 100644
index 0000000..c0660b0
--- /dev/null
+++ b/docs/html/search/functions_b.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_b.js b/docs/html/search/functions_b.js
new file mode 100644
index 0000000..aa36dc7
--- /dev/null
+++ b/docs/html/search/functions_b.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['recursive_5fsearch_5fgit_5ffolder_0',['recursive_search_git_folder',['../namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f',1,'penify_hook::utils']]],
+ ['run_1',['run',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9',1,'penify_hook.commit_analyzer.CommitDocGenHook.run()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.run()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.run()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae',1,'penify_hook.git_analyzer.GitDocGenHook.run()']]]
+];
diff --git a/docs/html/search/functions_c.html b/docs/html/search/functions_c.html
new file mode 100644
index 0000000..b642767
--- /dev/null
+++ b/docs/html/search/functions_c.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_c.js b/docs/html/search/functions_c.js
new file mode 100644
index 0000000..8de5e4c
--- /dev/null
+++ b/docs/html/search/functions_c.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+ ['save_5fcredentials_0',['save_credentials',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24',1,'penify_hook::commands::auth_commands']]],
+ ['save_5fjira_5fconfig_1',['save_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4',1,'penify_hook::commands::config_commands']]],
+ ['save_5fllm_5fconfig_2',['save_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4',1,'penify_hook::commands::config_commands']]],
+ ['send_5ffile_5ffor_5fdocstring_5fgeneration_3',['send_file_for_docstring_generation',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3',1,'penify_hook::api_client::APIClient']]],
+ ['setup_5fcommit_5fparser_4',['setup_commit_parser',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c',1,'penify_hook::commands::commit_commands']]],
+ ['setup_5fconfig_5fparser_5',['setup_config_parser',['../namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e',1,'penify_hook::config_command']]],
+ ['setup_5fdocgen_5fparser_6',['setup_docgen_parser',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0',1,'penify_hook::commands::doc_commands']]],
+ ['setup_5flogin_5fparser_7',['setup_login_parser',['../namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a',1,'penify_hook::login_command']]]
+];
diff --git a/docs/html/search/functions_d.html b/docs/html/search/functions_d.html
new file mode 100644
index 0000000..16464b4
--- /dev/null
+++ b/docs/html/search/functions_d.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_d.js b/docs/html/search/functions_d.js
new file mode 100644
index 0000000..36538fa
--- /dev/null
+++ b/docs/html/search/functions_d.js
@@ -0,0 +1,34 @@
+var searchData=
+[
+ ['test_5fcommit_5fcode_5ferror_5fhandling_0',['test_commit_code_error_handling',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['test_5fcommit_5fcode_5fwith_5fjira_5fclient_1',['test_commit_code_with_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['test_5fcommit_5fcode_5fwith_5fjira_5fconnection_5ffailure_2',['test_commit_code_with_jira_connection_failure',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['test_5fcommit_5fcode_5fwith_5fllm_5fclient_3',['test_commit_code_with_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['test_5fconfig_5fjira_5fweb_5fserver_5fsetup_4',['test_config_jira_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a',1,'tests::test_web_config::TestWebConfig']]],
+ ['test_5fconfig_5fllm_5fweb_5fserver_5fsetup_5',['test_config_llm_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35',1,'tests::test_web_config::TestWebConfig']]],
+ ['test_5fgenerate_5fdoc_5ferror_5fhandling_6',['test_generate_doc_error_handling',['../namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0',1,'tests::test_doc_commands']]],
+ ['test_5fgenerate_5fdoc_5ffile_5flocation_7',['test_generate_doc_file_location',['../namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45',1,'tests::test_doc_commands']]],
+ ['test_5fgenerate_5fdoc_5ffolder_5flocation_8',['test_generate_doc_folder_location',['../namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186',1,'tests::test_doc_commands']]],
+ ['test_5fgenerate_5fdoc_5fno_5flocation_9',['test_generate_doc_no_location',['../namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8',1,'tests::test_doc_commands']]],
+ ['test_5fgenerate_5fdoc_5fwith_5ffile_5fexception_10',['test_generate_doc_with_file_exception',['../namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0',1,'tests::test_doc_commands']]],
+ ['test_5fgenerate_5fdoc_5fwith_5ffolder_5fexception_11',['test_generate_doc_with_folder_exception',['../namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3',1,'tests::test_doc_commands']]],
+ ['test_5fget_5fjira_5fconfig_5fexists_12',['test_get_jira_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5fllm_5fconfig_5fempty_13',['test_get_llm_config_empty',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5fllm_5fconfig_5fexists_14',['test_get_llm_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5fllm_5fconfig_5finvalid_5fjson_15',['test_get_llm_config_invalid_json',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5fpenify_5fconfig_5fexisting_5fdir_16',['test_get_penify_config_existing_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5fpenify_5fconfig_5fnew_5fdir_17',['test_get_penify_config_new_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5ftoken_5ffrom_5fconfig_18',['test_get_token_from_config',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5ftoken_5ffrom_5fenv_19',['test_get_token_from_env',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fget_5ftoken_5fnot_5ffound_20',['test_get_token_not_found',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fhandle_5fcommit_21',['test_handle_commit',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['test_5fhandle_5fdocgen_5fgenerate_22',['test_handle_docgen_generate',['../namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a',1,'tests::test_doc_commands']]],
+ ['test_5fhandle_5fdocgen_5finstall_5fhook_23',['test_handle_docgen_install_hook',['../namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05',1,'tests::test_doc_commands']]],
+ ['test_5fhandle_5fdocgen_5fno_5ftoken_24',['test_handle_docgen_no_token',['../namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c',1,'tests::test_doc_commands']]],
+ ['test_5fhandle_5fdocgen_5funinstall_5fhook_25',['test_handle_docgen_uninstall_hook',['../namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482',1,'tests::test_doc_commands']]],
+ ['test_5fsave_5fjira_5fconfig_5fsuccess_26',['test_save_jira_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fsave_5fllm_5fconfig_5ffailure_27',['test_save_llm_config_failure',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fsave_5fllm_5fconfig_5fsuccess_28',['test_save_llm_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9',1,'tests::test_config_commands::TestConfigCommands']]],
+ ['test_5fsetup_5fcommit_5fparser_29',['test_setup_commit_parser',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc',1,'tests::test_commit_commands::TestCommitCommands']]],
+ ['test_5fsetup_5fdocgen_5fparser_30',['test_setup_docgen_parser',['../namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7',1,'tests::test_doc_commands']]]
+];
diff --git a/docs/html/search/functions_e.html b/docs/html/search/functions_e.html
new file mode 100644
index 0000000..e55bbf1
--- /dev/null
+++ b/docs/html/search/functions_e.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/functions_e.js b/docs/html/search/functions_e.js
new file mode 100644
index 0000000..60953c2
--- /dev/null
+++ b/docs/html/search/functions_e.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['uninstall_5fgit_5fhook_0',['uninstall_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d',1,'penify_hook::commands::hook_commands']]],
+ ['update_5fissue_5fstatus_1',['update_issue_status',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826',1,'penify_hook::jira_client::JiraClient']]],
+ ['update_5fstage_2',['update_stage',['../namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d',1,'penify_hook::ui_utils']]]
+];
diff --git a/docs/html/search/mag_sel.svg b/docs/html/search/mag_sel.svg
new file mode 100644
index 0000000..03626f6
--- /dev/null
+++ b/docs/html/search/mag_sel.svg
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/search/namespaces_0.html b/docs/html/search/namespaces_0.html
new file mode 100644
index 0000000..b2d68fe
--- /dev/null
+++ b/docs/html/search/namespaces_0.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/namespaces_0.js b/docs/html/search/namespaces_0.js
new file mode 100644
index 0000000..3a1e6d3
--- /dev/null
+++ b/docs/html/search/namespaces_0.js
@@ -0,0 +1,24 @@
+var searchData=
+[
+ ['api_5fclient_0',['api_client',['../namespacepenify__hook_1_1api__client.html',1,'penify_hook']]],
+ ['auth_5fcommands_1',['auth_commands',['../namespacepenify__hook_1_1commands_1_1auth__commands.html',1,'penify_hook::commands']]],
+ ['base_5fanalyzer_2',['base_analyzer',['../namespacepenify__hook_1_1base__analyzer.html',1,'penify_hook']]],
+ ['commands_3',['commands',['../namespacepenify__hook_1_1commands.html',1,'penify_hook']]],
+ ['commit_5fanalyzer_4',['commit_analyzer',['../namespacepenify__hook_1_1commit__analyzer.html',1,'penify_hook']]],
+ ['commit_5fcommands_5',['commit_commands',['../namespacepenify__hook_1_1commands_1_1commit__commands.html',1,'penify_hook::commands']]],
+ ['config_5fcommand_6',['config_command',['../namespacepenify__hook_1_1config__command.html',1,'penify_hook']]],
+ ['config_5fcommands_7',['config_commands',['../namespacepenify__hook_1_1commands_1_1config__commands.html',1,'penify_hook::commands']]],
+ ['constants_8',['constants',['../namespacepenify__hook_1_1constants.html',1,'penify_hook']]],
+ ['doc_5fcommands_9',['doc_commands',['../namespacepenify__hook_1_1commands_1_1doc__commands.html',1,'penify_hook::commands']]],
+ ['file_5fanalyzer_10',['file_analyzer',['../namespacepenify__hook_1_1file__analyzer.html',1,'penify_hook']]],
+ ['folder_5fanalyzer_11',['folder_analyzer',['../namespacepenify__hook_1_1folder__analyzer.html',1,'penify_hook']]],
+ ['git_5fanalyzer_12',['git_analyzer',['../namespacepenify__hook_1_1git__analyzer.html',1,'penify_hook']]],
+ ['hook_5fcommands_13',['hook_commands',['../namespacepenify__hook_1_1commands_1_1hook__commands.html',1,'penify_hook::commands']]],
+ ['jira_5fclient_14',['jira_client',['../namespacepenify__hook_1_1jira__client.html',1,'penify_hook']]],
+ ['llm_5fclient_15',['llm_client',['../namespacepenify__hook_1_1llm__client.html',1,'penify_hook']]],
+ ['login_5fcommand_16',['login_command',['../namespacepenify__hook_1_1login__command.html',1,'penify_hook']]],
+ ['main_17',['main',['../namespacepenify__hook_1_1main.html',1,'penify_hook']]],
+ ['penify_5fhook_18',['penify_hook',['../namespacepenify__hook.html',1,'']]],
+ ['ui_5futils_19',['ui_utils',['../namespacepenify__hook_1_1ui__utils.html',1,'penify_hook']]],
+ ['utils_20',['utils',['../namespacepenify__hook_1_1utils.html',1,'penify_hook']]]
+];
diff --git a/docs/html/search/namespaces_1.html b/docs/html/search/namespaces_1.html
new file mode 100644
index 0000000..a4b1530
--- /dev/null
+++ b/docs/html/search/namespaces_1.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/namespaces_1.js b/docs/html/search/namespaces_1.js
new file mode 100644
index 0000000..fdca1a8
--- /dev/null
+++ b/docs/html/search/namespaces_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['setup_0',['setup',['../namespacesetup.html',1,'']]]
+];
diff --git a/docs/html/search/namespaces_2.html b/docs/html/search/namespaces_2.html
new file mode 100644
index 0000000..a89a756
--- /dev/null
+++ b/docs/html/search/namespaces_2.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/namespaces_2.js b/docs/html/search/namespaces_2.js
new file mode 100644
index 0000000..10ec4ce
--- /dev/null
+++ b/docs/html/search/namespaces_2.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+ ['conftest_0',['conftest',['../namespacetests_1_1conftest.html',1,'tests']]],
+ ['test_5fcommit_5fcommands_1',['test_commit_commands',['../namespacetests_1_1test__commit__commands.html',1,'tests']]],
+ ['test_5fconfig_5fcommands_2',['test_config_commands',['../namespacetests_1_1test__config__commands.html',1,'tests']]],
+ ['test_5fdoc_5fcommands_3',['test_doc_commands',['../namespacetests_1_1test__doc__commands.html',1,'tests']]],
+ ['test_5fweb_5fconfig_4',['test_web_config',['../namespacetests_1_1test__web__config.html',1,'tests']]],
+ ['tests_5',['tests',['../namespacetests.html',1,'']]]
+];
diff --git a/docs/html/search/nomatches.html b/docs/html/search/nomatches.html
new file mode 100644
index 0000000..2b9360b
--- /dev/null
+++ b/docs/html/search/nomatches.html
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/search/pages_0.html b/docs/html/search/pages_0.html
new file mode 100644
index 0000000..1981712
--- /dev/null
+++ b/docs/html/search/pages_0.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/pages_0.js b/docs/html/search/pages_0.js
new file mode 100644
index 0000000..3cd36ca
--- /dev/null
+++ b/docs/html/search/pages_0.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+ ['penify_20cli_20_2d_20commit_20commands_0',['Penify CLI - Commit Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html',1,'']]],
+ ['penify_20cli_20_2d_20configuration_20commands_1',['Penify CLI - Configuration Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html',1,'']]],
+ ['penify_20cli_20_2d_20detailed_20usage_20guide_2',['Penify CLI - Detailed Usage Guide',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html',1,'']]],
+ ['penify_20cli_20_2d_20documentation_20generation_20commands_3',['Penify CLI - Documentation Generation Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html',1,'']]],
+ ['penify_20cli_20example_20workflows_4',['Penify CLI Example Workflows',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html',1,'']]],
+ ['penify_20cli_20tool_5',['Penify CLI Tool',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html',1,'']]]
+];
diff --git a/docs/html/search/search.css b/docs/html/search/search.css
new file mode 100644
index 0000000..648a792
--- /dev/null
+++ b/docs/html/search/search.css
@@ -0,0 +1,263 @@
+/*---------------- Search Box */
+
+#MSearchBox {
+ white-space : nowrap;
+ background: white;
+ border-radius: 0.65em;
+ box-shadow: inset 0.5px 0.5px 3px 0px #555;
+ z-index: 102;
+}
+
+#MSearchBox .left {
+ display: inline-block;
+ vertical-align: middle;
+ height: 1.4em;
+}
+
+#MSearchSelect {
+ display: inline-block;
+ vertical-align: middle;
+ height: 19px;
+ padding: 0 0 0 0.3em;
+ margin: 0;
+}
+
+#MSearchField {
+ display: inline-block;
+ vertical-align: middle;
+ width: 7.5em;
+ height: 19px;
+ margin: 0 0.15em;
+ padding: 0;
+ line-height: 1em;
+ border:none;
+ color: #909090;
+ outline: none;
+ font-family: Arial, Verdana, sans-serif;
+ -webkit-border-radius: 0px;
+ border-radius: 0px;
+ background: none;
+}
+
+@media(hover: none) {
+ /* to avoid zooming on iOS */
+ #MSearchField {
+ font-size: 16px;
+ }
+}
+
+#MSearchBox .right {
+ display: inline-block;
+ vertical-align: middle;
+ width: 1.4em;
+ height: 1.4em;
+}
+
+#MSearchClose {
+ display: none;
+ font-size: inherit;
+ background : none;
+ border: none;
+ margin: 0;
+ padding: 0;
+ outline: none;
+
+}
+
+#MSearchCloseImg {
+ height: 1.4em;
+ padding: 0.3em;
+ margin: 0;
+}
+
+.MSearchBoxActive #MSearchField {
+ color: #000000;
+}
+
+#main-menu > li:last-child {
+ /* This object is the parent of the search bar */
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ height: 36px;
+ margin-right: 1em;
+}
+
+/*---------------- Search filter selection */
+
+#MSearchSelectWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid #90A5CE;
+ background-color: #F9FAFC;
+ z-index: 10001;
+ padding-top: 4px;
+ padding-bottom: 4px;
+ -moz-border-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
+}
+
+.SelectItem {
+ font: 8pt Arial, Verdana, sans-serif;
+ padding-left: 2px;
+ padding-right: 12px;
+ border: 0px;
+}
+
+span.SelectionMark {
+ margin-right: 4px;
+ font-family: monospace;
+ outline-style: none;
+ text-decoration: none;
+}
+
+a.SelectItem {
+ display: block;
+ outline-style: none;
+ color: #000000;
+ text-decoration: none;
+ padding-left: 6px;
+ padding-right: 12px;
+}
+
+a.SelectItem:focus,
+a.SelectItem:active {
+ color: #000000;
+ outline-style: none;
+ text-decoration: none;
+}
+
+a.SelectItem:hover {
+ color: #FFFFFF;
+ background-color: #3D578C;
+ outline-style: none;
+ text-decoration: none;
+ cursor: pointer;
+ display: block;
+}
+
+/*---------------- Search results window */
+
+iframe#MSearchResults {
+ /*width: 60ex;*/
+ height: 15em;
+}
+
+#MSearchResultsWindow {
+ display: none;
+ position: absolute;
+ left: 0; top: 0;
+ border: 1px solid #000;
+ background-color: #EEF1F7;
+ z-index:10000;
+}
+
+/* ----------------------------------- */
+
+
+#SRIndex {
+ clear:both;
+ padding-bottom: 15px;
+}
+
+.SREntry {
+ font-size: 10pt;
+ padding-left: 1ex;
+}
+
+.SRPage .SREntry {
+ font-size: 8pt;
+ padding: 1px 5px;
+}
+
+body.SRPage {
+ margin: 5px 2px;
+}
+
+.SRChildren {
+ padding-left: 3ex; padding-bottom: .5em
+}
+
+.SRPage .SRChildren {
+ display: none;
+}
+
+.SRSymbol {
+ font-weight: bold;
+ color: #425E97;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+ outline: none;
+}
+
+a.SRScope {
+ display: block;
+ color: #425E97;
+ font-family: Arial, Verdana, sans-serif;
+ text-decoration: none;
+ outline: none;
+}
+
+a.SRSymbol:focus, a.SRSymbol:active,
+a.SRScope:focus, a.SRScope:active {
+ text-decoration: underline;
+}
+
+span.SRScope {
+ padding-left: 4px;
+ font-family: Arial, Verdana, sans-serif;
+}
+
+.SRPage .SRStatus {
+ padding: 2px 5px;
+ font-size: 8pt;
+ font-style: italic;
+ font-family: Arial, Verdana, sans-serif;
+}
+
+.SRResult {
+ display: none;
+}
+
+div.searchresults {
+ margin-left: 10px;
+ margin-right: 10px;
+}
+
+/*---------------- External search page results */
+
+.searchresult {
+ background-color: #F0F3F8;
+}
+
+.pages b {
+ color: white;
+ padding: 5px 5px 3px 5px;
+ background-image: url("../tab_a.png");
+ background-repeat: repeat-x;
+ text-shadow: 0 1px 1px #000000;
+}
+
+.pages {
+ line-height: 17px;
+ margin-left: 4px;
+ text-decoration: none;
+}
+
+.hl {
+ font-weight: bold;
+}
+
+#searchresults {
+ margin-bottom: 20px;
+}
+
+.searchpages {
+ margin-top: 10px;
+}
+
diff --git a/docs/html/search/search.js b/docs/html/search/search.js
new file mode 100644
index 0000000..607f4e1
--- /dev/null
+++ b/docs/html/search/search.js
@@ -0,0 +1,802 @@
+/*
+ @licstart The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+function convertToId(search)
+{
+ var result = '';
+ for (i=0;i do a search
+ {
+ this.Search();
+ }
+ }
+
+ this.OnSearchSelectKey = function(evt)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==40 && this.searchIndex0) // Up
+ {
+ this.searchIndex--;
+ this.OnSelectItem(this.searchIndex);
+ }
+ else if (e.keyCode==13 || e.keyCode==27)
+ {
+ this.OnSelectItem(this.searchIndex);
+ this.CloseSelectionWindow();
+ this.DOMSearchField().focus();
+ }
+ return false;
+ }
+
+ // --------- Actions
+
+ // Closes the results window.
+ this.CloseResultsWindow = function()
+ {
+ this.DOMPopupSearchResultsWindow().style.display = 'none';
+ this.DOMSearchClose().style.display = 'none';
+ this.Activate(false);
+ }
+
+ this.CloseSelectionWindow = function()
+ {
+ this.DOMSearchSelectWindow().style.display = 'none';
+ }
+
+ // Performs a search.
+ this.Search = function()
+ {
+ this.keyTimeout = 0;
+
+ // strip leading whitespace
+ var searchValue = this.DOMSearchField().value.replace(/^ +/, "");
+
+ var code = searchValue.toLowerCase().charCodeAt(0);
+ var idxChar = searchValue.substr(0, 1).toLowerCase();
+ if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair
+ {
+ idxChar = searchValue.substr(0, 2);
+ }
+
+ var resultsPage;
+ var resultsPageWithSearch;
+ var hasResultsPage;
+
+ var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar);
+ if (idx!=-1)
+ {
+ var hexCode=idx.toString(16);
+ resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension;
+ resultsPageWithSearch = resultsPage+'?'+escape(searchValue);
+ hasResultsPage = true;
+ }
+ else // nothing available for this search term
+ {
+ resultsPage = this.resultsPath + '/nomatches' + this.extension;
+ resultsPageWithSearch = resultsPage;
+ hasResultsPage = false;
+ }
+
+ window.frames.MSearchResults.location = resultsPageWithSearch;
+ var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow();
+
+ if (domPopupSearchResultsWindow.style.display!='block')
+ {
+ var domSearchBox = this.DOMSearchBox();
+ this.DOMSearchClose().style.display = 'inline-block';
+ var domPopupSearchResults = this.DOMPopupSearchResults();
+ var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth;
+ var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1;
+ domPopupSearchResultsWindow.style.display = 'block';
+ left -= domPopupSearchResults.offsetWidth;
+ var maxWidth = document.body.clientWidth;
+ var width = 400;
+ if (left<10) left=10;
+ if (width+left+8>maxWidth) width=maxWidth-left-8;
+ domPopupSearchResultsWindow.style.top = top + 'px';
+ domPopupSearchResultsWindow.style.left = left + 'px';
+ domPopupSearchResultsWindow.style.width = width + 'px';
+ }
+
+ this.lastSearchValue = searchValue;
+ this.lastResultsPage = resultsPage;
+ }
+
+ // -------- Activation Functions
+
+ // Activates or deactivates the search panel, resetting things to
+ // their default values if necessary.
+ this.Activate = function(isActive)
+ {
+ if (isActive || // open it
+ this.DOMPopupSearchResultsWindow().style.display == 'block'
+ )
+ {
+ this.DOMSearchBox().className = 'MSearchBoxActive';
+
+ var searchField = this.DOMSearchField();
+
+ if (searchField.value == this.searchLabel) // clear "Search" term upon entry
+ {
+ searchField.value = '';
+ this.searchActive = true;
+ }
+ }
+ else if (!isActive) // directly remove the panel
+ {
+ this.DOMSearchBox().className = 'MSearchBoxInactive';
+ this.DOMSearchField().value = this.searchLabel;
+ this.searchActive = false;
+ this.lastSearchValue = ''
+ this.lastResultsPage = '';
+ }
+ }
+}
+
+// -----------------------------------------------------------------------
+
+// The class that handles everything on the search results page.
+function SearchResults(name)
+{
+ // The number of matches from the last run of .
+ this.lastMatchCount = 0;
+ this.lastKey = 0;
+ this.repeatOn = false;
+
+ // Toggles the visibility of the passed element ID.
+ this.FindChildElement = function(id)
+ {
+ var parentElement = document.getElementById(id);
+ var element = parentElement.firstChild;
+
+ while (element && element!=parentElement)
+ {
+ if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren')
+ {
+ return element;
+ }
+
+ if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes())
+ {
+ element = element.firstChild;
+ }
+ else if (element.nextSibling)
+ {
+ element = element.nextSibling;
+ }
+ else
+ {
+ do
+ {
+ element = element.parentNode;
+ }
+ while (element && element!=parentElement && !element.nextSibling);
+
+ if (element && element!=parentElement)
+ {
+ element = element.nextSibling;
+ }
+ }
+ }
+ }
+
+ this.Toggle = function(id)
+ {
+ var element = this.FindChildElement(id);
+ if (element)
+ {
+ if (element.style.display == 'block')
+ {
+ element.style.display = 'none';
+ }
+ else
+ {
+ element.style.display = 'block';
+ }
+ }
+ }
+
+ // Searches for the passed string. If there is no parameter,
+ // it takes it from the URL query.
+ //
+ // Always returns true, since other documents may try to call it
+ // and that may or may not be possible.
+ this.Search = function(search)
+ {
+ if (!search) // get search word from URL
+ {
+ search = window.location.search;
+ search = search.substring(1); // Remove the leading '?'
+ search = unescape(search);
+ }
+
+ search = search.replace(/^ +/, ""); // strip leading spaces
+ search = search.replace(/ +$/, ""); // strip trailing spaces
+ search = search.toLowerCase();
+ search = convertToId(search);
+
+ var resultRows = document.getElementsByTagName("div");
+ var matches = 0;
+
+ var i = 0;
+ while (i < resultRows.length)
+ {
+ var row = resultRows.item(i);
+ if (row.className == "SRResult")
+ {
+ var rowMatchName = row.id.toLowerCase();
+ rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_'
+
+ if (search.length<=rowMatchName.length &&
+ rowMatchName.substr(0, search.length)==search)
+ {
+ row.style.display = 'block';
+ matches++;
+ }
+ else
+ {
+ row.style.display = 'none';
+ }
+ }
+ i++;
+ }
+ document.getElementById("Searching").style.display='none';
+ if (matches == 0) // no results
+ {
+ document.getElementById("NoMatches").style.display='block';
+ }
+ else // at least one result
+ {
+ document.getElementById("NoMatches").style.display='none';
+ }
+ this.lastMatchCount = matches;
+ return true;
+ }
+
+ // return the first item with index index or higher that is visible
+ this.NavNext = function(index)
+ {
+ var focusItem;
+ while (1)
+ {
+ var focusName = 'Item'+index;
+ focusItem = document.getElementById(focusName);
+ if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+ {
+ break;
+ }
+ else if (!focusItem) // last element
+ {
+ break;
+ }
+ focusItem=null;
+ index++;
+ }
+ return focusItem;
+ }
+
+ this.NavPrev = function(index)
+ {
+ var focusItem;
+ while (1)
+ {
+ var focusName = 'Item'+index;
+ focusItem = document.getElementById(focusName);
+ if (focusItem && focusItem.parentNode.parentNode.style.display=='block')
+ {
+ break;
+ }
+ else if (!focusItem) // last element
+ {
+ break;
+ }
+ focusItem=null;
+ index--;
+ }
+ return focusItem;
+ }
+
+ this.ProcessKeys = function(e)
+ {
+ if (e.type == "keydown")
+ {
+ this.repeatOn = false;
+ this.lastKey = e.keyCode;
+ }
+ else if (e.type == "keypress")
+ {
+ if (!this.repeatOn)
+ {
+ if (this.lastKey) this.repeatOn = true;
+ return false; // ignore first keypress after keydown
+ }
+ }
+ else if (e.type == "keyup")
+ {
+ this.lastKey = 0;
+ this.repeatOn = false;
+ }
+ return this.lastKey!=0;
+ }
+
+ this.Nav = function(evt,itemIndex)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==13) return true;
+ if (!this.ProcessKeys(e)) return false;
+
+ if (this.lastKey==38) // Up
+ {
+ var newIndex = itemIndex-1;
+ var focusItem = this.NavPrev(newIndex);
+ if (focusItem)
+ {
+ var child = this.FindChildElement(focusItem.parentNode.parentNode.id);
+ if (child && child.style.display == 'block') // children visible
+ {
+ var n=0;
+ var tmpElem;
+ while (1) // search for last child
+ {
+ tmpElem = document.getElementById('Item'+newIndex+'_c'+n);
+ if (tmpElem)
+ {
+ focusItem = tmpElem;
+ }
+ else // found it!
+ {
+ break;
+ }
+ n++;
+ }
+ }
+ }
+ if (focusItem)
+ {
+ focusItem.focus();
+ }
+ else // return focus to search field
+ {
+ parent.document.getElementById("MSearchField").focus();
+ }
+ }
+ else if (this.lastKey==40) // Down
+ {
+ var newIndex = itemIndex+1;
+ var focusItem;
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem && elem.style.display == 'block') // children visible
+ {
+ focusItem = document.getElementById('Item'+itemIndex+'_c0');
+ }
+ if (!focusItem) focusItem = this.NavNext(newIndex);
+ if (focusItem) focusItem.focus();
+ }
+ else if (this.lastKey==39) // Right
+ {
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem) elem.style.display = 'block';
+ }
+ else if (this.lastKey==37) // Left
+ {
+ var item = document.getElementById('Item'+itemIndex);
+ var elem = this.FindChildElement(item.parentNode.parentNode.id);
+ if (elem) elem.style.display = 'none';
+ }
+ else if (this.lastKey==27) // Escape
+ {
+ parent.searchBox.CloseResultsWindow();
+ parent.document.getElementById("MSearchField").focus();
+ }
+ else if (this.lastKey==13) // Enter
+ {
+ return true;
+ }
+ return false;
+ }
+
+ this.NavChild = function(evt,itemIndex,childIndex)
+ {
+ var e = (evt) ? evt : window.event; // for IE
+ if (e.keyCode==13) return true;
+ if (!this.ProcessKeys(e)) return false;
+
+ if (this.lastKey==38) // Up
+ {
+ if (childIndex>0)
+ {
+ var newIndex = childIndex-1;
+ document.getElementById('Item'+itemIndex+'_c'+newIndex).focus();
+ }
+ else // already at first child, jump to parent
+ {
+ document.getElementById('Item'+itemIndex).focus();
+ }
+ }
+ else if (this.lastKey==40) // Down
+ {
+ var newIndex = childIndex+1;
+ var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex);
+ if (!elem) // last child, jump to parent next parent
+ {
+ elem = this.NavNext(itemIndex+1);
+ }
+ if (elem)
+ {
+ elem.focus();
+ }
+ }
+ else if (this.lastKey==27) // Escape
+ {
+ parent.searchBox.CloseResultsWindow();
+ parent.document.getElementById("MSearchField").focus();
+ }
+ else if (this.lastKey==13) // Enter
+ {
+ return true;
+ }
+ return false;
+ }
+}
+
+function setKeyActions(elem,action)
+{
+ elem.setAttribute('onkeydown',action);
+ elem.setAttribute('onkeypress',action);
+ elem.setAttribute('onkeyup',action);
+}
+
+function setClassAttr(elem,attr)
+{
+ elem.setAttribute('class',attr);
+ elem.setAttribute('className',attr);
+}
+
+function createResults()
+{
+ var results = document.getElementById("SRResults");
+ for (var e=0; e
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_0.js b/docs/html/search/variables_0.js
new file mode 100644
index 0000000..ee0a9ff
--- /dev/null
+++ b/docs/html/search/variables_0.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['_5flitellm_0',['_litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362',1,'penify_hook::llm_client::LLMClient']]]
+];
diff --git a/docs/html/search/variables_1.html b/docs/html/search/variables_1.html
new file mode 100644
index 0000000..5f8e440
--- /dev/null
+++ b/docs/html/search/variables_1.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_1.js b/docs/html/search/variables_1.js
new file mode 100644
index 0000000..a34ece5
--- /dev/null
+++ b/docs/html/search/variables_1.js
@@ -0,0 +1,10 @@
+var searchData=
+[
+ ['api_5fclient_0',['api_client',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2',1,'penify_hook::base_analyzer::BaseAnalyzer']]],
+ ['api_5furl_1',['api_url',['../classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872',1,'penify_hook::api_client::APIClient']]],
+ ['api_5furl_2',['API_URL',['../namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0',1,'penify_hook::constants']]],
+ ['auth_5ftoken_3',['AUTH_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237',1,'penify_hook::api_client::APIClient']]],
+ ['author_4',['author',['../namespacesetup.html#a3a57a4772d418a06835249cbade0d86a',1,'setup']]],
+ ['author_5femail_5',['author_email',['../namespacesetup.html#a5b08034343aa2be607722a8b315f3625',1,'setup']]],
+ ['autoreset_6',['autoreset',['../namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71',1,'penify_hook::ui_utils']]]
+];
diff --git a/docs/html/search/variables_10.html b/docs/html/search/variables_10.html
new file mode 100644
index 0000000..943cbd1
--- /dev/null
+++ b/docs/html/search/variables_10.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_10.js b/docs/html/search/variables_10.js
new file mode 100644
index 0000000..28d0871
--- /dev/null
+++ b/docs/html/search/variables_10.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['url_0',['url',['../namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb',1,'setup']]]
+];
diff --git a/docs/html/search/variables_11.html b/docs/html/search/variables_11.html
new file mode 100644
index 0000000..47f1ec5
--- /dev/null
+++ b/docs/html/search/variables_11.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_11.js b/docs/html/search/variables_11.js
new file mode 100644
index 0000000..d9621d9
--- /dev/null
+++ b/docs/html/search/variables_11.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['version_0',['version',['../namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c',1,'setup']]]
+];
diff --git a/docs/html/search/variables_12.html b/docs/html/search/variables_12.html
new file mode 100644
index 0000000..2842f66
--- /dev/null
+++ b/docs/html/search/variables_12.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_12.js b/docs/html/search/variables_12.js
new file mode 100644
index 0000000..10d696f
--- /dev/null
+++ b/docs/html/search/variables_12.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['warning_5fcolor_0',['WARNING_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff',1,'penify_hook::ui_utils']]],
+ ['warning_5fsymbol_1',['WARNING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16',1,'penify_hook::ui_utils']]]
+];
diff --git a/docs/html/search/variables_2.html b/docs/html/search/variables_2.html
new file mode 100644
index 0000000..77a7f48
--- /dev/null
+++ b/docs/html/search/variables_2.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_2.js b/docs/html/search/variables_2.js
new file mode 100644
index 0000000..d02ac2e
--- /dev/null
+++ b/docs/html/search/variables_2.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['bearer_5ftoken_0',['BEARER_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0',1,'penify_hook::api_client::APIClient']]]
+];
diff --git a/docs/html/search/variables_3.html b/docs/html/search/variables_3.html
new file mode 100644
index 0000000..3ee62ba
--- /dev/null
+++ b/docs/html/search/variables_3.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_3.js b/docs/html/search/variables_3.js
new file mode 100644
index 0000000..c6d851a
--- /dev/null
+++ b/docs/html/search/variables_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['classifiers_0',['classifiers',['../namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785',1,'setup']]]
+];
diff --git a/docs/html/search/variables_4.html b/docs/html/search/variables_4.html
new file mode 100644
index 0000000..640713f
--- /dev/null
+++ b/docs/html/search/variables_4.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_4.js b/docs/html/search/variables_4.js
new file mode 100644
index 0000000..ea198d0
--- /dev/null
+++ b/docs/html/search/variables_4.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+ ['dashboard_5furl_0',['DASHBOARD_URL',['../namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0',1,'penify_hook::constants']]],
+ ['description_1',['description',['../namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0',1,'setup']]],
+ ['dir_5fpath_2',['dir_path',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]],
+ ['docgen_5fdescription_3',['docgen_description',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948',1,'penify_hook::commands::doc_commands']]],
+ ['dotenv_5favailable_4',['DOTENV_AVAILABLE',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67',1,'penify_hook::commands::config_commands']]]
+];
diff --git a/docs/html/search/variables_5.html b/docs/html/search/variables_5.html
new file mode 100644
index 0000000..7b2ba97
--- /dev/null
+++ b/docs/html/search/variables_5.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_5.js b/docs/html/search/variables_5.js
new file mode 100644
index 0000000..0ca10cf
--- /dev/null
+++ b/docs/html/search/variables_5.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['entry_5fpoints_0',['entry_points',['../namespacesetup.html#ada7058afc98897f073d3f3b8b9157059',1,'setup']]],
+ ['error_5fcolor_1',['ERROR_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe',1,'penify_hook::ui_utils']]],
+ ['error_5fsymbol_2',['ERROR_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0',1,'penify_hook::ui_utils']]]
+];
diff --git a/docs/html/search/variables_6.html b/docs/html/search/variables_6.html
new file mode 100644
index 0000000..fb1de8f
--- /dev/null
+++ b/docs/html/search/variables_6.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_6.js b/docs/html/search/variables_6.js
new file mode 100644
index 0000000..6f038b5
--- /dev/null
+++ b/docs/html/search/variables_6.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['file_5fpath_0',['file_path',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32',1,'penify_hook::file_analyzer::FileAnalyzerGenHook']]],
+ ['folder_5fpath_1',['folder_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25',1,'penify_hook::base_analyzer::BaseAnalyzer']]]
+];
diff --git a/docs/html/search/variables_7.html b/docs/html/search/variables_7.html
new file mode 100644
index 0000000..cf8dcf4
--- /dev/null
+++ b/docs/html/search/variables_7.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_7.js b/docs/html/search/variables_7.js
new file mode 100644
index 0000000..05d3ba9
--- /dev/null
+++ b/docs/html/search/variables_7.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['highlight_5fcolor_0',['HIGHLIGHT_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc',1,'penify_hook::ui_utils']]],
+ ['hook_5ffilename_1',['HOOK_FILENAME',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1',1,'penify_hook::commands::hook_commands']]],
+ ['hook_5ftemplate_2',['HOOK_TEMPLATE',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7',1,'penify_hook::commands::hook_commands']]]
+];
diff --git a/docs/html/search/variables_8.html b/docs/html/search/variables_8.html
new file mode 100644
index 0000000..88cbb01
--- /dev/null
+++ b/docs/html/search/variables_8.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_8.js b/docs/html/search/variables_8.js
new file mode 100644
index 0000000..6c4b704
--- /dev/null
+++ b/docs/html/search/variables_8.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['info_5fcolor_0',['INFO_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c',1,'penify_hook::ui_utils']]],
+ ['install_5frequires_1',['install_requires',['../namespacesetup.html#abead4f26b530856f858f0d44c7cf2588',1,'setup']]]
+];
diff --git a/docs/html/search/variables_9.html b/docs/html/search/variables_9.html
new file mode 100644
index 0000000..36c49bd
--- /dev/null
+++ b/docs/html/search/variables_9.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_9.js b/docs/html/search/variables_9.js
new file mode 100644
index 0000000..4d28226
--- /dev/null
+++ b/docs/html/search/variables_9.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+ ['jira_5fapi_5ftoken_0',['jira_api_token',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9',1,'penify_hook::jira_client::JiraClient']]],
+ ['jira_5favailable_1',['JIRA_AVAILABLE',['../namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2',1,'penify_hook::jira_client']]],
+ ['jira_5fclient_2',['jira_client',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6',1,'penify_hook::jira_client::JiraClient']]],
+ ['jira_5furl_3',['jira_url',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197',1,'penify_hook::jira_client::JiraClient']]],
+ ['jira_5fuser_4',['jira_user',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c',1,'penify_hook::jira_client::JiraClient']]]
+];
diff --git a/docs/html/search/variables_a.html b/docs/html/search/variables_a.html
new file mode 100644
index 0000000..0005c6a
--- /dev/null
+++ b/docs/html/search/variables_a.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_a.js b/docs/html/search/variables_a.js
new file mode 100644
index 0000000..1b06afc
--- /dev/null
+++ b/docs/html/search/variables_a.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['llm_5fclient_0',['llm_client',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a',1,'penify_hook::commit_analyzer::CommitDocGenHook']]],
+ ['logger_1',['logger',['../namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828',1,'penify_hook.file_analyzer.logger()'],['../namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a',1,'penify_hook.git_analyzer.logger()'],['../namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01',1,'penify_hook.utils.logger()']]],
+ ['long_5fdescription_2',['long_description',['../namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde',1,'setup']]],
+ ['long_5fdescription_5fcontent_5ftype_3',['long_description_content_type',['../namespacesetup.html#a3796ea10c998699d07d391414ff5d720',1,'setup']]]
+];
diff --git a/docs/html/search/variables_b.html b/docs/html/search/variables_b.html
new file mode 100644
index 0000000..757c068
--- /dev/null
+++ b/docs/html/search/variables_b.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_b.js b/docs/html/search/variables_b.js
new file mode 100644
index 0000000..0081627
--- /dev/null
+++ b/docs/html/search/variables_b.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+ ['model_0',['model',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10',1,'penify_hook::llm_client::LLMClient']]]
+];
diff --git a/docs/html/search/variables_c.html b/docs/html/search/variables_c.html
new file mode 100644
index 0000000..451a136
--- /dev/null
+++ b/docs/html/search/variables_c.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_c.js b/docs/html/search/variables_c.js
new file mode 100644
index 0000000..eb3ec51
--- /dev/null
+++ b/docs/html/search/variables_c.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+ ['name_0',['name',['../namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f',1,'setup']]],
+ ['neutral_5fcolor_1',['NEUTRAL_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5',1,'penify_hook::ui_utils']]]
+];
diff --git a/docs/html/search/variables_d.html b/docs/html/search/variables_d.html
new file mode 100644
index 0000000..aea4286
--- /dev/null
+++ b/docs/html/search/variables_d.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_d.js b/docs/html/search/variables_d.js
new file mode 100644
index 0000000..e4b61ad
--- /dev/null
+++ b/docs/html/search/variables_d.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['packages_0',['packages',['../namespacesetup.html#aff2375a361fd5865c77bd9aa093be747',1,'setup']]],
+ ['path_1',['path',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880',1,'penify_hook::commands::config_commands']]],
+ ['processing_5fsymbol_2',['PROCESSING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756',1,'penify_hook::ui_utils']]],
+ ['python_5frequires_3',['python_requires',['../namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf',1,'setup']]]
+];
diff --git a/docs/html/search/variables_e.html b/docs/html/search/variables_e.html
new file mode 100644
index 0000000..ec3793e
--- /dev/null
+++ b/docs/html/search/variables_e.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_e.js b/docs/html/search/variables_e.js
new file mode 100644
index 0000000..90e3cd7
--- /dev/null
+++ b/docs/html/search/variables_e.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+ ['relative_5ffile_5fpath_0',['relative_file_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4',1,'penify_hook::base_analyzer::BaseAnalyzer']]],
+ ['repo_1',['repo',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369',1,'penify_hook::base_analyzer::BaseAnalyzer']]],
+ ['repo_5fdetails_2',['repo_details',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5',1,'penify_hook::base_analyzer::BaseAnalyzer']]],
+ ['repo_5fpath_3',['repo_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499',1,'penify_hook::base_analyzer::BaseAnalyzer']]]
+];
diff --git a/docs/html/search/variables_f.html b/docs/html/search/variables_f.html
new file mode 100644
index 0000000..ee82fce
--- /dev/null
+++ b/docs/html/search/variables_f.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
Loading...
+
+
+
Searching...
+
No Matches
+
+
+
+
diff --git a/docs/html/search/variables_f.js b/docs/html/search/variables_f.js
new file mode 100644
index 0000000..2dcc04a
--- /dev/null
+++ b/docs/html/search/variables_f.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+ ['success_5fcolor_0',['SUCCESS_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4',1,'penify_hook::ui_utils']]],
+ ['success_5fsymbol_1',['SUCCESS_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e',1,'penify_hook::ui_utils']]],
+ ['supported_5ffile_5ftypes_2',['supported_file_types',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb',1,'penify_hook::base_analyzer::BaseAnalyzer']]]
+];
diff --git a/docs/html/setup_8py.html b/docs/html/setup_8py.html
new file mode 100644
index 0000000..908f623
--- /dev/null
+++ b/docs/html/setup_8py.html
@@ -0,0 +1,167 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/setup.py File Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ penify-cli
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/html/setup_8py.js b/docs/html/setup_8py.js
new file mode 100644
index 0000000..241d406
--- /dev/null
+++ b/docs/html/setup_8py.js
@@ -0,0 +1,16 @@
+var setup_8py =
+[
+ [ "author", "setup_8py.html#a3a57a4772d418a06835249cbade0d86a", null ],
+ [ "author_email", "setup_8py.html#a5b08034343aa2be607722a8b315f3625", null ],
+ [ "classifiers", "setup_8py.html#abe96a9c38c1c61f9f0fdb002c482f785", null ],
+ [ "description", "setup_8py.html#aedf461ec52a946bda975938ba0b93ec0", null ],
+ [ "entry_points", "setup_8py.html#ada7058afc98897f073d3f3b8b9157059", null ],
+ [ "install_requires", "setup_8py.html#abead4f26b530856f858f0d44c7cf2588", null ],
+ [ "long_description", "setup_8py.html#a4cda9dbfb952875376a0749fe08a5bde", null ],
+ [ "long_description_content_type", "setup_8py.html#a3796ea10c998699d07d391414ff5d720", null ],
+ [ "name", "setup_8py.html#ab3a7a0638d76a01367c5bc3cc699447f", null ],
+ [ "packages", "setup_8py.html#aff2375a361fd5865c77bd9aa093be747", null ],
+ [ "python_requires", "setup_8py.html#aa7ca7bc9391b217e81efeb03689d8dbf", null ],
+ [ "url", "setup_8py.html#afc13124aa5c0124e84e1d965e3f4b0fb", null ],
+ [ "version", "setup_8py.html#a2aa722b36a933088812b50ea79b97a5c", null ]
+];
\ No newline at end of file
diff --git a/docs/html/splitbar.png b/docs/html/splitbar.png
new file mode 100644
index 0000000..fe895f2
Binary files /dev/null and b/docs/html/splitbar.png differ
diff --git a/docs/html/svgpan.js b/docs/html/svgpan.js
new file mode 100644
index 0000000..2678d38
--- /dev/null
+++ b/docs/html/svgpan.js
@@ -0,0 +1,323 @@
+/*
+ @licstart The following is the entire license notice for the JavaScript code in this file.
+ The code below is based on SVGPan Library 1.2 and was modified for doxygen
+ to support both zooming and panning via the mouse and via embedded buttons.
+
+ This code is licensed under the following BSD license:
+
+ Copyright 2009-2010 Andrea Leofreddi . All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without modification, are
+ permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this list of
+ conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list
+ of conditions and the following disclaimer in the documentation and/or other materials
+ provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ The views and conclusions contained in the software and documentation are those of the
+ authors and should not be interpreted as representing official policies, either expressed
+ or implied, of Andrea Leofreddi.
+
+ @licend The above is the entire license notice for the JavaScript code in this file
+ */
+
+var root = document.documentElement;
+var state = 'none';
+var stateOrigin;
+var stateTf = root.createSVGMatrix();
+var cursorGrab = ' url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRFAAAA////////c3ilYwAAAAN0Uk5T//8A18oNQQAAAD1JREFUeNp0zlEKACAIA9Bt9z90bZBZkQj29qFBEuBOzQHSnWTTyckEfqUuZgFvslH4ch3qLCO/Kr8cAgwATw4Ax6XRCcoAAAAASUVORK5CYII="), move';
+var zoomSteps = 10;
+var zoomInFactor;
+var zoomOutFactor;
+var windowWidth;
+var windowHeight;
+var svgDoc;
+var minZoom;
+var maxZoom;
+if (!window) window=this;
+
+/**
+ * Show the graph in the middle of the view, scaled to fit
+ */
+function show()
+{
+ if (window.innerHeight) // Firefox
+ {
+ windowWidth = window.innerWidth;
+ windowHeight = window.innerHeight;
+ }
+ else if (document.documentElement.clientWidth) // Chrome/Safari
+ {
+ windowWidth = document.documentElement.clientWidth
+ windowHeight = document.documentElement.clientHeight
+ }
+ if (!windowWidth || !windowHeight) // failsafe
+ {
+ windowWidth = 800;
+ windowHeight = 600;
+ }
+ minZoom = Math.min(Math.min(viewHeight,windowHeight)/viewHeight,Math.min(viewWidth,windowWidth)/viewWidth);
+ maxZoom = minZoom+1.5;
+ zoomInFactor = Math.pow(maxZoom/minZoom,1.0/zoomSteps);
+ zoomOutFactor = 1.0/zoomInFactor;
+
+ var g = svgDoc.getElementById('viewport');
+ try
+ {
+ var bb = g.getBBox(); // this can throw an exception if css { display: none }
+ var tx = (windowWidth-viewWidth*minZoom+8)/(2*minZoom);
+ var ty = viewHeight+(windowHeight-viewHeight*minZoom)/(2*minZoom);
+ var a = 'scale('+minZoom+') rotate(0) translate('+tx+' '+ty+')';
+ g.setAttribute('transform',a);
+ }
+ catch(e) {}
+}
+
+/**
+ * Register handlers
+ */
+function init(evt)
+{
+ svgDoc = evt.target.ownerDocument;
+ try {
+ if (top.window && top.window.registerShow) { // register show function in html doc for dynamic sections
+ top.window.registerShow(sectionId,show);
+ }
+ } catch(e) {
+ // ugh, we are not allowed to talk to the parent; can happen with Chrome when viewing pages
+ // locally, since they treat every local page as having a different origin
+ }
+ show();
+
+ setAttributes(root, {
+ "onmousedown" : "handleMouseDown(evt)",
+ "onmousemove" : "handleMouseMove(evt)",
+ "onmouseup" : "handleMouseUp(evt)"
+ });
+
+ if (window.addEventListener)
+ {
+ if (navigator.userAgent.toLowerCase().indexOf('webkit') >= 0 ||
+ navigator.userAgent.toLowerCase().indexOf("opera") >= 0 ||
+ navigator.appVersion.indexOf("MSIE") != -1)
+ {
+ window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari/IE9
+ }
+ else
+ {
+ window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others
+ }
+ }
+}
+
+window.onresize=function()
+{
+ if (svgDoc) { show(); }
+}
+
+/**
+ * Instance an SVGPoint object with given event coordinates.
+ */
+function getEventPoint(evt)
+{
+ var p = root.createSVGPoint();
+ p.x = evt.clientX;
+ p.y = evt.clientY;
+ return p;
+}
+
+/**
+ * Sets the current transform matrix of an element.
+ */
+function setCTM(element, matrix)
+{
+ var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")";
+ element.setAttribute("transform", s);
+}
+
+/**
+ * Sets attributes of an element.
+ */
+function setAttributes(element, attributes)
+{
+ for (i in attributes)
+ element.setAttributeNS(null, i, attributes[i]);
+}
+
+function doZoom(g,point,zoomFactor)
+{
+ var p = point.matrixTransform(g.getCTM().inverse());
+ var k = root.createSVGMatrix().translate(p.x, p.y).scale(zoomFactor).translate(-p.x, -p.y);
+ var n = g.getCTM().multiply(k);
+ var s = Math.max(n.a,n.d);
+ if (s>maxZoom) n=n.translate(p.x,p.y).scale(maxZoom/s).translate(-p.x,-p.y);
+ else if (s');
+ d.write('Print SVG ');
+ d.write('');
+ d.write(''+xs+'
');
+ d.write('');
+ d.write('