diff --git a/docs/html/README_8md.html b/docs/html/README_8md.html new file mode 100644 index 0000000..5ecc33f --- /dev/null +++ b/docs/html/README_8md.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/annotated.html b/docs/html/annotated.html new file mode 100644 index 0000000..8c708d2 --- /dev/null +++ b/docs/html/annotated.html @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
+
+ + + + + diff --git a/docs/html/annotated_dup.js b/docs/html/annotated_dup.js new file mode 100644 index 0000000..e374ec6 --- /dev/null +++ b/docs/html/annotated_dup.js @@ -0,0 +1,44 @@ +var annotated_dup = +[ + [ "penify_hook", "namespacepenify__hook.html", [ + [ "api_client", "namespacepenify__hook_1_1api__client.html", [ + [ "APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", "classpenify__hook_1_1api__client_1_1APIClient" ] + ] ], + [ "base_analyzer", "namespacepenify__hook_1_1base__analyzer.html", [ + [ "BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer" ] + ] ], + [ "commit_analyzer", "namespacepenify__hook_1_1commit__analyzer.html", [ + [ "CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook" ] + ] ], + [ "file_analyzer", "namespacepenify__hook_1_1file__analyzer.html", [ + [ "FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook" ] + ] ], + [ "folder_analyzer", "namespacepenify__hook_1_1folder__analyzer.html", [ + [ "FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook" ] + ] ], + [ "git_analyzer", "namespacepenify__hook_1_1git__analyzer.html", [ + [ "GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook" ] + ] ], + [ "jira_client", "namespacepenify__hook_1_1jira__client.html", [ + [ "JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", "classpenify__hook_1_1jira__client_1_1JiraClient" ] + ] ], + [ "llm_client", "namespacepenify__hook_1_1llm__client.html", [ + [ "LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", "classpenify__hook_1_1llm__client_1_1LLMClient" ] + ] ], + [ "utils", "namespacepenify__hook_1_1utils.html", [ + [ "GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ] + ] ] + ] ], + [ "tests", "namespacetests.html", [ + [ "test_commit_commands", "namespacetests_1_1test__commit__commands.html", [ + [ "TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", "classtests_1_1test__commit__commands_1_1TestCommitCommands" ] + ] ], + [ "test_config_commands", "namespacetests_1_1test__config__commands.html", [ + [ "TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", "classtests_1_1test__config__commands_1_1TestConfigCommands" ] + ] ], + [ "test_web_config", "namespacetests_1_1test__web__config.html", [ + [ "TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", "classtests_1_1test__web__config_1_1TestWebConfig" ] + ] ] + ] ], + [ "Exception", "classException.html", null ] +]; \ No newline at end of file diff --git a/docs/html/api__client_8py.html b/docs/html/api__client_8py.html new file mode 100644 index 0000000..333cb14 --- /dev/null +++ b/docs/html/api__client_8py.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/api_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
api_client.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.api_client.APIClient
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.api_client
 
+
+
+ + + + + diff --git a/docs/html/api__client_8py.js b/docs/html/api__client_8py.js new file mode 100644 index 0000000..a3575a0 --- /dev/null +++ b/docs/html/api__client_8py.js @@ -0,0 +1,4 @@ +var api__client_8py = +[ + [ "penify_hook.api_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/auth__commands_8py.html b/docs/html/auth__commands_8py.html new file mode 100644 index 0000000..d6e9f92 --- /dev/null +++ b/docs/html/auth__commands_8py.html @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/commands/auth_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
auth_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.auth_commands
 
+ + + + + +

+Functions

 penify_hook.commands.auth_commands.save_credentials (api_key)
 
 penify_hook.commands.auth_commands.login (api_url, dashboard_url)
 
+
+
+ + + + + diff --git a/docs/html/auth__commands_8py.js b/docs/html/auth__commands_8py.js new file mode 100644 index 0000000..c76c883 --- /dev/null +++ b/docs/html/auth__commands_8py.js @@ -0,0 +1,5 @@ +var auth__commands_8py = +[ + [ "penify_hook.commands.auth_commands.login", "namespacepenify__hook_1_1commands_1_1auth__commands.html#a1eb69ebcc475060011476a65cbffd7f6", null ], + [ "penify_hook.commands.auth_commands.save_credentials", "namespacepenify__hook_1_1commands_1_1auth__commands.html#a68a2119363481a0001ad6190329c863b", null ] +]; \ No newline at end of file diff --git a/docs/html/base__analyzer_8py.html b/docs/html/base__analyzer_8py.html new file mode 100644 index 0000000..c66a0a3 --- /dev/null +++ b/docs/html/base__analyzer_8py.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/base_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
base_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.base_analyzer.BaseAnalyzer
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.base_analyzer
 
+
+
+ + + + + diff --git a/docs/html/base__analyzer_8py.js b/docs/html/base__analyzer_8py.js new file mode 100644 index 0000000..0d5c745 --- /dev/null +++ b/docs/html/base__analyzer_8py.js @@ -0,0 +1,4 @@ +var base__analyzer_8py = +[ + [ "penify_hook.base_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/bc_s.png b/docs/html/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/docs/html/bc_s.png differ diff --git a/docs/html/bc_sd.png b/docs/html/bc_sd.png new file mode 100644 index 0000000..31ca888 Binary files /dev/null and b/docs/html/bc_sd.png differ diff --git a/docs/html/classException.html b/docs/html/classException.html new file mode 100644 index 0000000..00c879a --- /dev/null +++ b/docs/html/classException.html @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Exception Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Exception Class Reference
+
+
+
+Inheritance diagram for Exception:
+
+
+
+
+Collaboration diagram for Exception:
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classException__coll__graph.map b/docs/html/classException__coll__graph.map new file mode 100644 index 0000000..1264386 --- /dev/null +++ b/docs/html/classException__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classException__coll__graph.md5 b/docs/html/classException__coll__graph.md5 new file mode 100644 index 0000000..3ac9d9b --- /dev/null +++ b/docs/html/classException__coll__graph.md5 @@ -0,0 +1 @@ +75cb8f3b3754e18418ff81689ad8fc7e \ No newline at end of file diff --git a/docs/html/classException__coll__graph.svg b/docs/html/classException__coll__graph.svg new file mode 100644 index 0000000..5524c00 --- /dev/null +++ b/docs/html/classException__coll__graph.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + +Exception + + +Node1 + + +Exception +  +  + + + + + + + + + + + + + diff --git a/docs/html/classException__coll__graph_org.svg b/docs/html/classException__coll__graph_org.svg new file mode 100644 index 0000000..845d630 --- /dev/null +++ b/docs/html/classException__coll__graph_org.svg @@ -0,0 +1,26 @@ + + + + + + +Exception + + +Node1 + + +Exception +  +  + + + + + + + + diff --git a/docs/html/classException__inherit__graph.map b/docs/html/classException__inherit__graph.map new file mode 100644 index 0000000..bb7ba7e --- /dev/null +++ b/docs/html/classException__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classException__inherit__graph.md5 b/docs/html/classException__inherit__graph.md5 new file mode 100644 index 0000000..6b5e5ff --- /dev/null +++ b/docs/html/classException__inherit__graph.md5 @@ -0,0 +1 @@ +21613c0308db4d8aa644a414d85c2b24 \ No newline at end of file diff --git a/docs/html/classException__inherit__graph.svg b/docs/html/classException__inherit__graph.svg new file mode 100644 index 0000000..a52151e --- /dev/null +++ b/docs/html/classException__inherit__graph.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + +Exception + + +Node1 + + +Exception +  +  + + + + + + + + +Node2 + + +penify_hook.utils.GitRepo +NotFoundError +  +  + + + + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classException__inherit__graph_org.svg b/docs/html/classException__inherit__graph_org.svg new file mode 100644 index 0000000..7425a0c --- /dev/null +++ b/docs/html/classException__inherit__graph_org.svg @@ -0,0 +1,50 @@ + + + + + + +Exception + + +Node1 + + +Exception +  +  + + + + + + + + +Node2 + + +penify_hook.utils.GitRepo +NotFoundError +  +  + + + + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classes.html b/docs/html/classes.html new file mode 100644 index 0000000..5725e6e --- /dev/null +++ b/docs/html/classes.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Index + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | E | F | G | J | L | T
+ +
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html b/docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html new file mode 100644 index 0000000..633bdcf --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify_hook.api_client.APIClient Member List
+
+
+ +

This is the complete list of members for penify_hook.api_client.APIClient, including all inherited members.

+ + + + + + + + + + +
__init__(self, api_url, str api_token=None, str bearer_token=None)penify_hook.api_client.APIClient
api_urlpenify_hook.api_client.APIClient
AUTH_TOKENpenify_hook.api_client.APIClient
BEARER_TOKENpenify_hook.api_client.APIClient
generate_commit_summary(self, git_diff, str instruction="", repo_details=None, dict jira_context=None)penify_hook.api_client.APIClient
generate_commit_summary_with_llm(self, diff, message, bool generate_description, repo_details, LLMClient llm_client, jira_context=None)penify_hook.api_client.APIClient
get_api_key(self)penify_hook.api_client.APIClient
get_supported_file_types(self)penify_hook.api_client.APIClient
send_file_for_docstring_generation(self, file_name, content, line_numbers, repo_details=None)penify_hook.api_client.APIClient
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient.html b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.html new file mode 100644 index 0000000..70af391 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.html @@ -0,0 +1,436 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.api_client.APIClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
penify_hook.api_client.APIClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.api_client.APIClient:
+
+
+
+ + + + + + + + + + + + + + +

+Public Member Functions

 __init__ (self, api_url, str api_token=None, str bearer_token=None)
 
 send_file_for_docstring_generation (self, file_name, content, line_numbers, repo_details=None)
 
 generate_commit_summary (self, git_diff, str instruction="", repo_details=None, dict jira_context=None)
 
list[str] get_supported_file_types (self)
 
 generate_commit_summary_with_llm (self, diff, message, bool generate_description, repo_details, LLMClient llm_client, jira_context=None)
 
 get_api_key (self)
 
+ + + + + + + +

+Public Attributes

 api_url = api_url
 
 AUTH_TOKEN = api_token
 
 BEARER_TOKEN = bearer_token
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
penify_hook.api_client.APIClient.__init__ ( self,
api_url,
str api_token = None,
str bearer_token = None )
+
+ +
+
+

Member Function Documentation

+ +

◆ generate_commit_summary()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
penify_hook.api_client.APIClient.generate_commit_summary ( self,
git_diff,
str instruction = "",
repo_details = None,
dict jira_context = None )
+
+
Generates a commit summary by sending a POST request to the API endpoint.
+
+This function constructs a payload containing the git diff and any additional
+instructions provided. It then sends this payload to a specified API endpoint
+to generate a summary of the commit. If the request is successful, it returns
+the response from the API; otherwise, it returns None. The function also
+handles optional repository details and JIRA context if they are provided.
+
+Args:
+    git_diff (str): The git diff of the commit.
+    instruction (str): Additional instruction for the commit. Defaults to "".
+    repo_details (dict): Details of the git repository. Defaults to None.
+    jira_context (dict): JIRA issue details to enhance the commit summary. Defaults to None.
+
+Returns:
+    dict: The response from the API if the request is successful, None otherwise.
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ generate_commit_summary_with_llm()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
penify_hook.api_client.APIClient.generate_commit_summary_with_llm ( self,
diff,
message,
bool generate_description,
repo_details,
LLMClient llm_client,
jira_context = None )
+
+
Generates a commit summary using a local LLM client; falls back to API on
+error.
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ get_api_key()

+ +
+
+ + + + + + + +
penify_hook.api_client.APIClient.get_api_key ( self)
+
+
Fetch an API key from a specified URL using a Bearer token.
+
+
+ +

◆ get_supported_file_types()

+ +
+
+ + + + + + + +
list[str] penify_hook.api_client.APIClient.get_supported_file_types ( self)
+
+
Retrieve supported file types from the API or return a default list.
+
+
+ +

◆ send_file_for_docstring_generation()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
penify_hook.api_client.APIClient.send_file_for_docstring_generation ( self,
file_name,
content,
line_numbers,
repo_details = None )
+
+
Send file content and modified lines to the API and return modified content.
+
+
+

Member Data Documentation

+ +

◆ api_url

+ +
+
+ + + + +
penify_hook.api_client.APIClient.api_url = api_url
+
+ +
+
+ +

◆ AUTH_TOKEN

+ +
+
+ + + + +
penify_hook.api_client.APIClient.AUTH_TOKEN = api_token
+
+ +
+
+ +

◆ BEARER_TOKEN

+ +
+
+ + + + +
penify_hook.api_client.APIClient.BEARER_TOKEN = bearer_token
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient.js b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.js new file mode 100644 index 0000000..e58299a --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.js @@ -0,0 +1,12 @@ +var classpenify__hook_1_1api__client_1_1APIClient = +[ + [ "__init__", "classpenify__hook_1_1api__client_1_1APIClient.html#a8edae83711be6de381c6ec71c7aa2e37", null ], + [ "generate_commit_summary", "classpenify__hook_1_1api__client_1_1APIClient.html#af0c2fac38629fed60e8440203a1197dd", null ], + [ "generate_commit_summary_with_llm", "classpenify__hook_1_1api__client_1_1APIClient.html#a07bc97b2af31662029a24169f285c286", null ], + [ "get_api_key", "classpenify__hook_1_1api__client_1_1APIClient.html#a57a96d5c14128dd8021347f7e72fe12b", null ], + [ "get_supported_file_types", "classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402", null ], + [ "send_file_for_docstring_generation", "classpenify__hook_1_1api__client_1_1APIClient.html#ad6392c5f8e8b5e3394a74979278835bd", null ], + [ "api_url", "classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872", null ], + [ "AUTH_TOKEN", "classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237", null ], + [ "BEARER_TOKEN", "classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map new file mode 100644 index 0000000..a326652 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 new file mode 100644 index 0000000..47f16ab --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 @@ -0,0 +1 @@ +6e4d7aebf1e7e05a36b84363da6d2f68 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg new file mode 100644 index 0000000..864fb26 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + +penify_hook.api_client.APIClient + + +Node1 + + +penify_hook.api_client.APIClient ++ +api_url ++ +AUTH_TOKEN ++ +BEARER_TOKEN ++ +__init__() ++ +send_file_for_docstring +_generation() ++ +generate_commit_summary() ++ +get_supported_file +_types() ++ +generate_commit_summary +_with_llm() ++ +get_api_key() + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph_org.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph_org.svg new file mode 100644 index 0000000..042bf1e --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph_org.svg @@ -0,0 +1,46 @@ + + + + + + +penify_hook.api_client.APIClient + + +Node1 + + +penify_hook.api_client.APIClient ++ +api_url ++ +AUTH_TOKEN ++ +BEARER_TOKEN ++ +__init__() ++ +send_file_for_docstring +_generation() ++ +generate_commit_summary() ++ +get_supported_file +_types() ++ +generate_commit_summary +_with_llm() ++ +get_api_key() + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a07bc97b2af31662029a24169f285c286_cgraph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a07bc97b2af31662029a24169f285c286_cgraph.map new file mode 100644 index 0000000..a3bcfd3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a07bc97b2af31662029a24169f285c286_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a07bc97b2af31662029a24169f285c286_cgraph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a07bc97b2af31662029a24169f285c286_cgraph.md5 new file mode 100644 index 0000000..6db7d54 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a07bc97b2af31662029a24169f285c286_cgraph.md5 @@ -0,0 +1 @@ +67bfcba9a90e6a255eb775ced957c533 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a07bc97b2af31662029a24169f285c286_cgraph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a07bc97b2af31662029a24169f285c286_cgraph.svg new file mode 100644 index 0000000..27e3d26 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a07bc97b2af31662029a24169f285c286_cgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary_with_llm + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a07bc97b2af31662029a24169f285c286_cgraph_org.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a07bc97b2af31662029a24169f285c286_cgraph_org.svg new file mode 100644 index 0000000..9fd9bf5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a07bc97b2af31662029a24169f285c286_cgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary_with_llm + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_af0c2fac38629fed60e8440203a1197dd_icgraph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_af0c2fac38629fed60e8440203a1197dd_icgraph.map new file mode 100644 index 0000000..428efcd --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_af0c2fac38629fed60e8440203a1197dd_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_af0c2fac38629fed60e8440203a1197dd_icgraph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_af0c2fac38629fed60e8440203a1197dd_icgraph.md5 new file mode 100644 index 0000000..20adf83 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_af0c2fac38629fed60e8440203a1197dd_icgraph.md5 @@ -0,0 +1 @@ +2a2e523f3c074b78685cd2eee47ac3a4 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_af0c2fac38629fed60e8440203a1197dd_icgraph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_af0c2fac38629fed60e8440203a1197dd_icgraph.svg new file mode 100644 index 0000000..d1cdfc6 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_af0c2fac38629fed60e8440203a1197dd_icgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_af0c2fac38629fed60e8440203a1197dd_icgraph_org.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_af0c2fac38629fed60e8440203a1197dd_icgraph_org.svg new file mode 100644 index 0000000..2afc2d1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_af0c2fac38629fed60e8440203a1197dd_icgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html new file mode 100644 index 0000000..dda5a3e --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify_hook.base_analyzer.BaseAnalyzer Member List
+
+
+ +

This is the complete list of members for penify_hook.base_analyzer.BaseAnalyzer, including all inherited members.

+ + + + + + + + + +
__init__(self, str folder_path, APIClient api_client)penify_hook.base_analyzer.BaseAnalyzer
api_clientpenify_hook.base_analyzer.BaseAnalyzer
folder_pathpenify_hook.base_analyzer.BaseAnalyzer
relative_file_pathpenify_hook.base_analyzer.BaseAnalyzer
repopenify_hook.base_analyzer.BaseAnalyzer
repo_detailspenify_hook.base_analyzer.BaseAnalyzer
repo_pathpenify_hook.base_analyzer.BaseAnalyzer
supported_file_typespenify_hook.base_analyzer.BaseAnalyzer
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html new file mode 100644 index 0000000..357be6a --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.base_analyzer.BaseAnalyzer Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
penify_hook.base_analyzer.BaseAnalyzer Class Reference
+
+
+
+Inheritance diagram for penify_hook.base_analyzer.BaseAnalyzer:
+
+
+
+
+Collaboration diagram for penify_hook.base_analyzer.BaseAnalyzer:
+
+
+
+ + + + +

+Public Member Functions

 __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + +

+Public Attributes

 folder_path = folder_path
 
 repo_path = recursive_search_git_folder(folder_path)
 
 repo = None
 
 repo_details = None
 
 relative_file_path = os.path.relpath(folder_path)
 
 api_client = api_client
 
 supported_file_types = set(api_client.get_supported_file_types())
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + +
penify_hook.base_analyzer.BaseAnalyzer.__init__ ( self,
str folder_path,
APIClient api_client )
+
+ +
+
+

Member Data Documentation

+ +

◆ api_client

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.api_client = api_client
+
+ +
+
+ +

◆ folder_path

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.folder_path = folder_path
+
+ +
+
+ +

◆ relative_file_path

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.relative_file_path = os.path.relpath(folder_path)
+
+ +
+
+ +

◆ repo

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.repo = None
+
+ +
+
+ +

◆ repo_details

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.repo_details = None
+
+ +
+
+ +

◆ repo_path

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.repo_path = recursive_search_git_folder(folder_path)
+
+ +
+
+ +

◆ supported_file_types

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.supported_file_types = set(api_client.get_supported_file_types())
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js new file mode 100644 index 0000000..91681ae --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js @@ -0,0 +1,11 @@ +var classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer = +[ + [ "__init__", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa5d7b59e2118c6b229ab59f3ef3b95b5", null ], + [ "api_client", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2", null ], + [ "folder_path", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25", null ], + [ "relative_file_path", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4", null ], + [ "repo", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369", null ], + [ "repo_details", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5", null ], + [ "repo_path", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499", null ], + [ "supported_file_types", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map new file mode 100644 index 0000000..66d222b --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 new file mode 100644 index 0000000..ad1c845 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 @@ -0,0 +1 @@ +456222cf8efc85e65f25381ed3b9a88d \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg new file mode 100644 index 0000000..1e464dc --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph_org.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph_org.svg new file mode 100644 index 0000000..b22e7ae --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph_org.svg @@ -0,0 +1,42 @@ + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map new file mode 100644 index 0000000..f8c9861 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 new file mode 100644 index 0000000..74c5684 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 @@ -0,0 +1 @@ +a4825e68bed8ab45d295e689402c854c \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg new file mode 100644 index 0000000..bed641c --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook ++ +llm_client ++ +jira_client ++ +__init__() ++ +get_summary() ++ +run() ++ +process_jira_integration() +# +_amend_commit() + + + + + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook ++ +file_path ++ +__init__() ++ +process_file() ++ +print_processing() ++ +run() + + + + + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook ++ +dir_path ++ +__init__() ++ +list_all_files_in_dir() ++ +run() + + + + + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +penify_hook.git_analyzer. +GitDocGenHook +  ++ +__init__() ++ +get_modified_files +_in_last_commit() ++ +get_modified_lines() ++ +process_file() ++ +run() + + + + + + + + +Node1->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg new file mode 100644 index 0000000..99281ed --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg @@ -0,0 +1,177 @@ + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook ++ +llm_client ++ +jira_client ++ +__init__() ++ +get_summary() ++ +run() ++ +process_jira_integration() +# +_amend_commit() + + + + + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook ++ +file_path ++ +__init__() ++ +process_file() ++ +print_processing() ++ +run() + + + + + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook ++ +dir_path ++ +__init__() ++ +list_all_files_in_dir() ++ +run() + + + + + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +penify_hook.git_analyzer. +GitDocGenHook +  ++ +__init__() ++ +get_modified_files +_in_last_commit() ++ +get_modified_lines() ++ +process_file() ++ +run() + + + + + + + + +Node1->Node5 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html new file mode 100644 index 0000000..d15ab9b --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify_hook.commit_analyzer.CommitDocGenHook Member List
+
+
+ +

This is the complete list of members for penify_hook.commit_analyzer.CommitDocGenHook, including all inherited members.

+ + + + + + + + + + + + + + + +
__init__(self, str repo_path, APIClient api_client, llm_client=None, jira_client=None)penify_hook.commit_analyzer.CommitDocGenHook
_amend_commit(self)penify_hook.commit_analyzer.CommitDocGenHookprotected
api_clientpenify_hook.base_analyzer.BaseAnalyzer
folder_pathpenify_hook.base_analyzer.BaseAnalyzer
get_summary(self, str instruction, bool generate_description)penify_hook.commit_analyzer.CommitDocGenHook
jira_clientpenify_hook.commit_analyzer.CommitDocGenHook
llm_clientpenify_hook.commit_analyzer.CommitDocGenHook
process_jira_integration(self, str title, str description, str msg)penify_hook.commit_analyzer.CommitDocGenHook
relative_file_pathpenify_hook.base_analyzer.BaseAnalyzer
repopenify_hook.base_analyzer.BaseAnalyzer
repo_detailspenify_hook.base_analyzer.BaseAnalyzer
repo_pathpenify_hook.base_analyzer.BaseAnalyzer
run(self, Optional[str] msg, bool edit_commit_message, bool generate_description)penify_hook.commit_analyzer.CommitDocGenHook
supported_file_typespenify_hook.base_analyzer.BaseAnalyzer
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html new file mode 100644 index 0000000..c8af673 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html @@ -0,0 +1,458 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commit_analyzer.CommitDocGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
penify_hook.commit_analyzer.CommitDocGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.commit_analyzer.CommitDocGenHook:
+
+
+
+
+Collaboration diagram for penify_hook.commit_analyzer.CommitDocGenHook:
+
+
+
+ + + + + + + + + + + + + +

+Public Member Functions

 __init__ (self, str repo_path, APIClient api_client, llm_client=None, jira_client=None)
 
dict get_summary (self, str instruction, bool generate_description)
 
 run (self, Optional[str] msg, bool edit_commit_message, bool generate_description)
 
tuple process_jira_integration (self, str title, str description, str msg)
 
- Public Member Functions inherited from penify_hook.base_analyzer.BaseAnalyzer
 __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + + + + + +

+Public Attributes

 llm_client = llm_client
 
JiraClient jira_client = jira_client
 
- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path = folder_path
 
 repo_path = recursive_search_git_folder(folder_path)
 
 repo = None
 
 repo_details = None
 
 relative_file_path = os.path.relpath(folder_path)
 
 api_client = api_client
 
 supported_file_types = set(api_client.get_supported_file_types())
 
+ + + +

+Protected Member Functions

 _amend_commit (self)
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
penify_hook.commit_analyzer.CommitDocGenHook.__init__ ( self,
str repo_path,
APIClient api_client,
llm_client = None,
jira_client = None )
+
+
+Here is the call graph for this function:
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+

Member Function Documentation

+ +

◆ _amend_commit()

+ +
+
+ + + + + +
+ + + + + + + +
penify_hook.commit_analyzer.CommitDocGenHook._amend_commit ( self)
+
+protected
+
+
Amends the last commit message in the repository.
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ get_summary()

+ +
+
+ + + + + + + + + + + + + + + + +
dict penify_hook.commit_analyzer.CommitDocGenHook.get_summary ( self,
str instruction,
bool generate_description )
+
+
Generate a summary for the commit based on the staged changes.
+
+This function retrieves the differences of the staged changes in the repository
+and generates a commit summary using the provided instruction. If there are no
+changes staged for commit, an exception is raised. If a JIRA client is
+connected, it will attempt to extract issue keys from the current branch and
+use them to fetch context. The summary can be generated either with a Language
+Model (LLM) client or through the API client.
+
+Args:
+    instruction (str): A string containing instructions for generating the commit summary.
+    generate_description (bool): Whether to include detailed descriptions in the summary.
+
+Raises:
+    ValueError: If there are no changes staged for commit.
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ process_jira_integration()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
tuple penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration ( self,
str title,
str description,
str msg )
+
+
Process JIRA integration by extracting issue keys from commit message
+components and branch name.
+
+This function looks for JIRA issue keys in the provided commit title,
+description, original user message, and the active branch name. It uses these
+keys to update the commit message with JIRA information and adds comments to
+the corresponding JIRA issues. If no keys are found, it logs a warning.
+
+Args:
+    title (str): The generated commit title.
+    description (str): The generated commit description.
+    msg (str): The original user message that might contain JIRA references.
+
+Returns:
+    tuple: A tuple containing the updated commit title and description with included JIRA
+        information.
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
penify_hook.commit_analyzer.CommitDocGenHook.run ( self,
Optional[str] msg,
bool edit_commit_message,
bool generate_description )
+
+
Run the post-commit hook.
+
+This method processes the modified files from the last commit, stages them, and
+creates an auto-commit with an optional message. It also handles JIRA
+integration if available. If there is an error generating the commit summary,
+an exception is raised.
+
+Args:
+    msg (Optional[str]): An optional message to include in the commit.
+    edit_commit_message (bool): A flag indicating whether to open the git commit
+        edit terminal after committing.
+    generate_description (bool): A flag indicating whether to include a description
+        in the commit message.
+
+Here is the call graph for this function:
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ jira_client

+ +
+
+ + + + +
JiraClient penify_hook.commit_analyzer.CommitDocGenHook.jira_client = jira_client
+
+ +
+
+ +

◆ llm_client

+ +
+
+ + + + +
penify_hook.commit_analyzer.CommitDocGenHook.llm_client = llm_client
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js new file mode 100644 index 0000000..0372b7c --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js @@ -0,0 +1,10 @@ +var classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook = +[ + [ "__init__", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a1fa29d890af3f3770743197e15776778", null ], + [ "_amend_commit", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a011812b68bf904e3beb051e585eff111", null ], + [ "get_summary", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37", null ], + [ "process_jira_integration", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f", null ], + [ "run", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a2d0bb9eba04614915fa33a1d7b0b8f03", null ], + [ "jira_client", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ab03214b60248a10bca32597098b0a107", null ], + [ "llm_client", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map new file mode 100644 index 0000000..1a8dd63 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 new file mode 100644 index 0000000..ad502df --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 @@ -0,0 +1 @@ +7f0a217e67e95d0bfca7760ee77eff80 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg new file mode 100644 index 0000000..1e51d3b --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook ++ +llm_client ++ +__init__() ++ +get_summary() ++ +run() ++ +process_jira_integration() +# +_amend_commit() + + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient ++ +jira_url ++ +jira_user ++ +jira_api_token ++ +jira_client ++ +__init__() ++ +is_connected() ++ +extract_issue_keys +_from_branch() ++ +extract_issue_keys() ++ +get_issue_details() ++ +add_comment() ++ +update_issue_status() ++ +format_commit_message +_with_jira_info() ++ +get_detailed_issue +_context() ++ +get_commit_context +_from_issues() ++ +enhance_commit_message() + + + + + + + + + +Node3->Node1 + + + + + + +jira_client + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph_org.svg new file mode 100644 index 0000000..b83dd01 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph_org.svg @@ -0,0 +1,135 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook ++ +llm_client ++ +__init__() ++ +get_summary() ++ +run() ++ +process_jira_integration() +# +_amend_commit() + + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient ++ +jira_url ++ +jira_user ++ +jira_api_token ++ +jira_client ++ +__init__() ++ +is_connected() ++ +extract_issue_keys +_from_branch() ++ +extract_issue_keys() ++ +get_issue_details() ++ +add_comment() ++ +update_issue_status() ++ +format_commit_message +_with_jira_info() ++ +get_detailed_issue +_context() ++ +get_commit_context +_from_issues() ++ +enhance_commit_message() + + + + + + + + + +Node3->Node1 + + + + + + +jira_client + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map new file mode 100644 index 0000000..422189a --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 new file mode 100644 index 0000000..ea27469 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +71b8c27971969c2195140ff298793113 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg new file mode 100644 index 0000000..7571cdc --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg @@ -0,0 +1,105 @@ + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook ++ +llm_client ++ +jira_client ++ +__init__() ++ +get_summary() ++ +run() ++ +process_jira_integration() +# +_amend_commit() + + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph_org.svg new file mode 100644 index 0000000..9458122 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph_org.svg @@ -0,0 +1,79 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook ++ +llm_client ++ +jira_client ++ +__init__() ++ +get_summary() ++ +run() ++ +process_jira_integration() +# +_amend_commit() + + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a011812b68bf904e3beb051e585eff111_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a011812b68bf904e3beb051e585eff111_icgraph.map new file mode 100644 index 0000000..e536254 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a011812b68bf904e3beb051e585eff111_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a011812b68bf904e3beb051e585eff111_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a011812b68bf904e3beb051e585eff111_icgraph.md5 new file mode 100644 index 0000000..141c6ce --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a011812b68bf904e3beb051e585eff111_icgraph.md5 @@ -0,0 +1 @@ +1d956904b17e984d4fe08b63712af5b8 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a011812b68bf904e3beb051e585eff111_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a011812b68bf904e3beb051e585eff111_icgraph.svg new file mode 100644 index 0000000..e460d9d --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a011812b68bf904e3beb051e585eff111_icgraph.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook._amend_commit + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +_amend_commit + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a011812b68bf904e3beb051e585eff111_icgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a011812b68bf904e3beb051e585eff111_icgraph_org.svg new file mode 100644 index 0000000..7928547 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a011812b68bf904e3beb051e585eff111_icgraph_org.svg @@ -0,0 +1,42 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook._amend_commit + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +_amend_commit + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_cgraph.map new file mode 100644 index 0000000..9ad9414 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_cgraph.md5 new file mode 100644 index 0000000..d763e05 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_cgraph.md5 @@ -0,0 +1 @@ +8f6d99cd255e9f96c88a98a310f284a7 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_cgraph.svg new file mode 100644 index 0000000..d841efa --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_cgraph.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.__init__ + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +__init__ + + + + + +Node1->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_cgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_cgraph_org.svg new file mode 100644 index 0000000..f08c875 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_cgraph_org.svg @@ -0,0 +1,32 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.__init__ + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +__init__ + + + + + +Node1->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_icgraph.map new file mode 100644 index 0000000..40d52aa --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_icgraph.md5 new file mode 100644 index 0000000..a09afc3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_icgraph.md5 @@ -0,0 +1 @@ +76ae1a4aa74d7b206a88fc8fc036a978 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_icgraph.svg new file mode 100644 index 0000000..8e58a78 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_icgraph.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.__init__ + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +__init__ + + + + + +Node1->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_icgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_icgraph_org.svg new file mode 100644 index 0000000..ca5fc87 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a1fa29d890af3f3770743197e15776778_icgraph_org.svg @@ -0,0 +1,32 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.__init__ + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +__init__ + + + + + +Node1->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a2d0bb9eba04614915fa33a1d7b0b8f03_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a2d0bb9eba04614915fa33a1d7b0b8f03_cgraph.map new file mode 100644 index 0000000..2997f60 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a2d0bb9eba04614915fa33a1d7b0b8f03_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a2d0bb9eba04614915fa33a1d7b0b8f03_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a2d0bb9eba04614915fa33a1d7b0b8f03_cgraph.md5 new file mode 100644 index 0000000..c271bba --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a2d0bb9eba04614915fa33a1d7b0b8f03_cgraph.md5 @@ -0,0 +1 @@ +909ae9a0a7b70478c834c118f6207927 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a2d0bb9eba04614915fa33a1d7b0b8f03_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a2d0bb9eba04614915fa33a1d7b0b8f03_cgraph.svg new file mode 100644 index 0000000..27f566c --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a2d0bb9eba04614915fa33a1d7b0b8f03_cgraph.svg @@ -0,0 +1,108 @@ + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.run + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +_amend_commit + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node4 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a2d0bb9eba04614915fa33a1d7b0b8f03_cgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a2d0bb9eba04614915fa33a1d7b0b8f03_cgraph_org.svg new file mode 100644 index 0000000..2f3e9c5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a2d0bb9eba04614915fa33a1d7b0b8f03_cgraph_org.svg @@ -0,0 +1,82 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.run + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +_amend_commit + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node4 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map new file mode 100644 index 0000000..220c14b --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 new file mode 100644 index 0000000..2ac860e --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 @@ -0,0 +1 @@ +a9c27f3d7950cafa2b938f10dddc4952 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg new file mode 100644 index 0000000..99a9929 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.get_summary + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph_org.svg new file mode 100644 index 0000000..d406ad4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph_org.svg @@ -0,0 +1,42 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.get_summary + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map new file mode 100644 index 0000000..e426636 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 new file mode 100644 index 0000000..453f89f --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 @@ -0,0 +1 @@ +9eb9d60621b71ccf464ab6bdcfa2b30e \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg new file mode 100644 index 0000000..1670f7b --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph_org.svg new file mode 100644 index 0000000..d2a7a66 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph_org.svg @@ -0,0 +1,42 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html new file mode 100644 index 0000000..69bcd3d --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify_hook.file_analyzer.FileAnalyzerGenHook Member List
+
+
+ +

This is the complete list of members for penify_hook.file_analyzer.FileAnalyzerGenHook, including all inherited members.

+ + + + + + + + + + + + + +
__init__(self, str file_path, APIClient api_client)penify_hook.file_analyzer.FileAnalyzerGenHook
api_clientpenify_hook.base_analyzer.BaseAnalyzer
file_pathpenify_hook.file_analyzer.FileAnalyzerGenHook
folder_pathpenify_hook.base_analyzer.BaseAnalyzer
print_processing(self, file_path)penify_hook.file_analyzer.FileAnalyzerGenHook
process_file(self, file_path, pbar, str new_param="")penify_hook.file_analyzer.FileAnalyzerGenHook
relative_file_pathpenify_hook.base_analyzer.BaseAnalyzer
repopenify_hook.base_analyzer.BaseAnalyzer
repo_detailspenify_hook.base_analyzer.BaseAnalyzer
repo_pathpenify_hook.base_analyzer.BaseAnalyzer
run(self)penify_hook.file_analyzer.FileAnalyzerGenHook
supported_file_typespenify_hook.base_analyzer.BaseAnalyzer
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html new file mode 100644 index 0000000..cc4d423 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html @@ -0,0 +1,334 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.file_analyzer.FileAnalyzerGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
penify_hook.file_analyzer.FileAnalyzerGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.file_analyzer.FileAnalyzerGenHook:
+
+
+
+
+Collaboration diagram for penify_hook.file_analyzer.FileAnalyzerGenHook:
+
+
+
+ + + + + + + + + + + + + +

+Public Member Functions

 __init__ (self, str file_path, APIClient api_client)
 
 process_file (self, file_path, pbar, str new_param="")
 
 print_processing (self, file_path)
 
 run (self)
 
- Public Member Functions inherited from penify_hook.base_analyzer.BaseAnalyzer
 __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

 file_path = file_path
 
- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path = folder_path
 
 repo_path = recursive_search_git_folder(folder_path)
 
 repo = None
 
 repo_details = None
 
 relative_file_path = os.path.relpath(folder_path)
 
 api_client = api_client
 
 supported_file_types = set(api_client.get_supported_file_types())
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + +
penify_hook.file_analyzer.FileAnalyzerGenHook.__init__ ( self,
str file_path,
APIClient api_client )
+
+ +
+
+

Member Function Documentation

+ +

◆ print_processing()

+ +
+
+ + + + + + + + + + + +
penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing ( self,
file_path )
+
+
Prints a message indicating that a file is being processed.
+
+
+ +

◆ process_file()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
penify_hook.file_analyzer.FileAnalyzerGenHook.process_file ( self,
file_path,
pbar,
str new_param = "" )
+
+
Processes a file by validating its extension, reading content,
+generating documentation, and writing changes back to the file.  The function
+performs several stages of processing: 1. Validates the file's extension to
+ensure it is supported. 2. Reads the content of the file. 3. Sends the file
+content for documentation generation. 4. Writes the generated documentation
+back to the file if there are changes.
+
+Args:
+    file_path (str): The path of the file to be processed.
+    pbar (tqdm.tqdm): A progress bar object to update the status of processing stages.
+    new_param (str?): An additional parameter for future use. Defaults to an empty string.
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + +
penify_hook.file_analyzer.FileAnalyzerGenHook.run ( self)
+
+
Runs the documentation process with a progress bar.
+
+This method orchestrates the documentation process by creating a progress bar,
+processing the file, and handling exceptions to ensure the progress bar
+completes properly. It updates the progress bar through various stages and
+provides feedback based on the result of the file processing.
+
+Here is the call graph for this function:
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ file_path

+ +
+
+ + + + +
penify_hook.file_analyzer.FileAnalyzerGenHook.file_path = file_path
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js new file mode 100644 index 0000000..9cda633 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js @@ -0,0 +1,8 @@ +var classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook = +[ + [ "__init__", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#ad0e39446078e1aeeb5325f3af02de2fb", null ], + [ "print_processing", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a1b371f1ba909b4fd351c542815f18747", null ], + [ "process_file", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#aeb3be324ba517855d6e5cdb684a6efda", null ], + [ "run", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a503c97b07cb2db1df0d881094dd6bb49", null ], + [ "file_path", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map new file mode 100644 index 0000000..aa7bf1a --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 new file mode 100644 index 0000000..3f45827 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 @@ -0,0 +1 @@ +117a1a4e2d4f201e19a6d591f508ba7f \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg new file mode 100644 index 0000000..e571ebd --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg @@ -0,0 +1,101 @@ + + + + + + + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook ++ +file_path ++ +__init__() ++ +process_file() ++ +print_processing() ++ +run() + + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph_org.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph_org.svg new file mode 100644 index 0000000..676c7de --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph_org.svg @@ -0,0 +1,75 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook ++ +file_path ++ +__init__() ++ +process_file() ++ +print_processing() ++ +run() + + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map new file mode 100644 index 0000000..aa7bf1a --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 new file mode 100644 index 0000000..3f45827 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +117a1a4e2d4f201e19a6d591f508ba7f \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg new file mode 100644 index 0000000..e571ebd --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg @@ -0,0 +1,101 @@ + + + + + + + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook ++ +file_path ++ +__init__() ++ +process_file() ++ +print_processing() ++ +run() + + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph_org.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph_org.svg new file mode 100644 index 0000000..676c7de --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph_org.svg @@ -0,0 +1,75 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook ++ +file_path ++ +__init__() ++ +process_file() ++ +print_processing() ++ +run() + + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a503c97b07cb2db1df0d881094dd6bb49_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a503c97b07cb2db1df0d881094dd6bb49_cgraph.map new file mode 100644 index 0000000..7237ad5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a503c97b07cb2db1df0d881094dd6bb49_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a503c97b07cb2db1df0d881094dd6bb49_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a503c97b07cb2db1df0d881094dd6bb49_cgraph.md5 new file mode 100644 index 0000000..9698276 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a503c97b07cb2db1df0d881094dd6bb49_cgraph.md5 @@ -0,0 +1 @@ +93117f42801fa341b01b414b2442652c \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a503c97b07cb2db1df0d881094dd6bb49_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a503c97b07cb2db1df0d881094dd6bb49_cgraph.svg new file mode 100644 index 0000000..5b041ca --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a503c97b07cb2db1df0d881094dd6bb49_cgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.run + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a503c97b07cb2db1df0d881094dd6bb49_cgraph_org.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a503c97b07cb2db1df0d881094dd6bb49_cgraph_org.svg new file mode 100644 index 0000000..d3029dc --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a503c97b07cb2db1df0d881094dd6bb49_cgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.run + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_aeb3be324ba517855d6e5cdb684a6efda_icgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_aeb3be324ba517855d6e5cdb684a6efda_icgraph.map new file mode 100644 index 0000000..dd9eac5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_aeb3be324ba517855d6e5cdb684a6efda_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_aeb3be324ba517855d6e5cdb684a6efda_icgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_aeb3be324ba517855d6e5cdb684a6efda_icgraph.md5 new file mode 100644 index 0000000..f5cf73b --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_aeb3be324ba517855d6e5cdb684a6efda_icgraph.md5 @@ -0,0 +1 @@ +74ae83cb32a84b3eaab417d6615b579f \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_aeb3be324ba517855d6e5cdb684a6efda_icgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_aeb3be324ba517855d6e5cdb684a6efda_icgraph.svg new file mode 100644 index 0000000..ed619c5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_aeb3be324ba517855d6e5cdb684a6efda_icgraph.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_aeb3be324ba517855d6e5cdb684a6efda_icgraph_org.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_aeb3be324ba517855d6e5cdb684a6efda_icgraph_org.svg new file mode 100644 index 0000000..640c4a9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_aeb3be324ba517855d6e5cdb684a6efda_icgraph_org.svg @@ -0,0 +1,60 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html new file mode 100644 index 0000000..42bdf7c --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify_hook.folder_analyzer.FolderAnalyzerGenHook Member List
+
+
+ +

This is the complete list of members for penify_hook.folder_analyzer.FolderAnalyzerGenHook, including all inherited members.

+ + + + + + + + + + + + +
__init__(self, str dir_path, APIClient api_client)penify_hook.folder_analyzer.FolderAnalyzerGenHook
api_clientpenify_hook.base_analyzer.BaseAnalyzer
dir_pathpenify_hook.folder_analyzer.FolderAnalyzerGenHook
folder_pathpenify_hook.base_analyzer.BaseAnalyzer
list_all_files_in_dir(self, str dir_path)penify_hook.folder_analyzer.FolderAnalyzerGenHook
relative_file_pathpenify_hook.base_analyzer.BaseAnalyzer
repopenify_hook.base_analyzer.BaseAnalyzer
repo_detailspenify_hook.base_analyzer.BaseAnalyzer
repo_pathpenify_hook.base_analyzer.BaseAnalyzer
run(self)penify_hook.folder_analyzer.FolderAnalyzerGenHook
supported_file_typespenify_hook.base_analyzer.BaseAnalyzer
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html new file mode 100644 index 0000000..90d13e8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.folder_analyzer.FolderAnalyzerGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
penify_hook.folder_analyzer.FolderAnalyzerGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.folder_analyzer.FolderAnalyzerGenHook:
+
+
+
+
+Collaboration diagram for penify_hook.folder_analyzer.FolderAnalyzerGenHook:
+
+
+
+ + + + + + + + + + + +

+Public Member Functions

 __init__ (self, str dir_path, APIClient api_client)
 
 list_all_files_in_dir (self, str dir_path)
 
 run (self)
 
- Public Member Functions inherited from penify_hook.base_analyzer.BaseAnalyzer
 __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

 dir_path = dir_path
 
- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path = folder_path
 
 repo_path = recursive_search_git_folder(folder_path)
 
 repo = None
 
 repo_details = None
 
 relative_file_path = os.path.relpath(folder_path)
 
 api_client = api_client
 
 supported_file_types = set(api_client.get_supported_file_types())
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + +
penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__ ( self,
str dir_path,
APIClient api_client )
+
+ +
+
+

Member Function Documentation

+ +

◆ list_all_files_in_dir()

+ +
+
+ + + + + + + + + + + +
penify_hook.folder_analyzer.FolderAnalyzerGenHook.list_all_files_in_dir ( self,
str dir_path )
+
+
List all non-hidden files in a directory and its subdirectories.
+
+This function recursively traverses the specified directory and its
+subdirectories, collecting paths of all non-hidden files. It filters out hidden
+directories and files (those starting with a dot) to ensure only visible files
+are returned.
+
+Args:
+    dir_path (str): The path to the directory whose files and subdirectory files need to be listed.
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + +
penify_hook.folder_analyzer.FolderAnalyzerGenHook.run ( self)
+
+
Run the post-commit hook and process files with a progress bar.
+Here is the call graph for this function:
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ dir_path

+ +
+
+ + + + +
penify_hook.folder_analyzer.FolderAnalyzerGenHook.dir_path = dir_path
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js new file mode 100644 index 0000000..c313328 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js @@ -0,0 +1,7 @@ +var classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook = +[ + [ "__init__", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a8f7a55b16cab4711eb3a3c3d9eb99344", null ], + [ "list_all_files_in_dir", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a050554646cbc07aef1fbaa748ee4c0fc", null ], + [ "run", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53c61ef41d39dd9bb1c8020a94f1dd8d", null ], + [ "dir_path", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map new file mode 100644 index 0000000..62eddcb --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 new file mode 100644 index 0000000..3acd4b8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 @@ -0,0 +1 @@ +5834d046c4f445c6ef3e2e9cc5f3f1ba \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg new file mode 100644 index 0000000..fc03766 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook ++ +dir_path ++ +__init__() ++ +list_all_files_in_dir() ++ +run() + + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph_org.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph_org.svg new file mode 100644 index 0000000..fd06869 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph_org.svg @@ -0,0 +1,73 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook ++ +dir_path ++ +__init__() ++ +list_all_files_in_dir() ++ +run() + + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map new file mode 100644 index 0000000..62eddcb --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 new file mode 100644 index 0000000..3acd4b8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +5834d046c4f445c6ef3e2e9cc5f3f1ba \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg new file mode 100644 index 0000000..fc03766 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg @@ -0,0 +1,99 @@ + + + + + + + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook ++ +dir_path ++ +__init__() ++ +list_all_files_in_dir() ++ +run() + + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph_org.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph_org.svg new file mode 100644 index 0000000..fd06869 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph_org.svg @@ -0,0 +1,73 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook ++ +dir_path ++ +__init__() ++ +list_all_files_in_dir() ++ +run() + + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a050554646cbc07aef1fbaa748ee4c0fc_icgraph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a050554646cbc07aef1fbaa748ee4c0fc_icgraph.map new file mode 100644 index 0000000..e9ab4a7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a050554646cbc07aef1fbaa748ee4c0fc_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a050554646cbc07aef1fbaa748ee4c0fc_icgraph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a050554646cbc07aef1fbaa748ee4c0fc_icgraph.md5 new file mode 100644 index 0000000..3b9ea89 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a050554646cbc07aef1fbaa748ee4c0fc_icgraph.md5 @@ -0,0 +1 @@ +dfee0c4d5deafcae96bcf260e4a5a040 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a050554646cbc07aef1fbaa748ee4c0fc_icgraph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a050554646cbc07aef1fbaa748ee4c0fc_icgraph.svg new file mode 100644 index 0000000..4be5ee0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a050554646cbc07aef1fbaa748ee4c0fc_icgraph.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook.list_all_files_in_dir + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.list_all_files_in_dir + + + + + +Node2 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.run + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a050554646cbc07aef1fbaa748ee4c0fc_icgraph_org.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a050554646cbc07aef1fbaa748ee4c0fc_icgraph_org.svg new file mode 100644 index 0000000..72bc9ea --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a050554646cbc07aef1fbaa748ee4c0fc_icgraph_org.svg @@ -0,0 +1,43 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook.list_all_files_in_dir + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.list_all_files_in_dir + + + + + +Node2 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.run + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a53c61ef41d39dd9bb1c8020a94f1dd8d_cgraph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a53c61ef41d39dd9bb1c8020a94f1dd8d_cgraph.map new file mode 100644 index 0000000..0c31fc2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a53c61ef41d39dd9bb1c8020a94f1dd8d_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a53c61ef41d39dd9bb1c8020a94f1dd8d_cgraph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a53c61ef41d39dd9bb1c8020a94f1dd8d_cgraph.md5 new file mode 100644 index 0000000..e9d17b5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a53c61ef41d39dd9bb1c8020a94f1dd8d_cgraph.md5 @@ -0,0 +1 @@ +31d341234bd6ac902e31eb06782bcf7d \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a53c61ef41d39dd9bb1c8020a94f1dd8d_cgraph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a53c61ef41d39dd9bb1c8020a94f1dd8d_cgraph.svg new file mode 100644 index 0000000..797801c --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a53c61ef41d39dd9bb1c8020a94f1dd8d_cgraph.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook.run + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.run + + + + + +Node2 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.list_all_files_in_dir + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a53c61ef41d39dd9bb1c8020a94f1dd8d_cgraph_org.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a53c61ef41d39dd9bb1c8020a94f1dd8d_cgraph_org.svg new file mode 100644 index 0000000..c7b7746 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a53c61ef41d39dd9bb1c8020a94f1dd8d_cgraph_org.svg @@ -0,0 +1,43 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook.run + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.run + + + + + +Node2 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.list_all_files_in_dir + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html new file mode 100644 index 0000000..8087650 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify_hook.git_analyzer.GitDocGenHook Member List
+
+
+ +

This is the complete list of members for penify_hook.git_analyzer.GitDocGenHook, including all inherited members.

+ + + + + + + + + + + + + +
__init__(self, str repo_path, APIClient api_client)penify_hook.git_analyzer.GitDocGenHook
api_clientpenify_hook.base_analyzer.BaseAnalyzer
folder_pathpenify_hook.base_analyzer.BaseAnalyzer
get_modified_files_in_last_commit(self)penify_hook.git_analyzer.GitDocGenHook
get_modified_lines(self, diff_text)penify_hook.git_analyzer.GitDocGenHook
process_file(self, file_path)penify_hook.git_analyzer.GitDocGenHook
relative_file_pathpenify_hook.base_analyzer.BaseAnalyzer
repopenify_hook.base_analyzer.BaseAnalyzer
repo_detailspenify_hook.base_analyzer.BaseAnalyzer
repo_pathpenify_hook.base_analyzer.BaseAnalyzer
run(self)penify_hook.git_analyzer.GitDocGenHook
supported_file_typespenify_hook.base_analyzer.BaseAnalyzer
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html new file mode 100644 index 0000000..2b69bda --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html @@ -0,0 +1,355 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.git_analyzer.GitDocGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
penify_hook.git_analyzer.GitDocGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.git_analyzer.GitDocGenHook:
+
+
+
+
+Collaboration diagram for penify_hook.git_analyzer.GitDocGenHook:
+
+
+
+ + + + + + + + + + + + + + + +

+Public Member Functions

 __init__ (self, str repo_path, APIClient api_client)
 
 get_modified_files_in_last_commit (self)
 
 get_modified_lines (self, diff_text)
 
 process_file (self, file_path)
 
 run (self)
 
- Public Member Functions inherited from penify_hook.base_analyzer.BaseAnalyzer
 __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path = folder_path
 
 repo_path = recursive_search_git_folder(folder_path)
 
 repo = None
 
 repo_details = None
 
 relative_file_path = os.path.relpath(folder_path)
 
 api_client = api_client
 
 supported_file_types = set(api_client.get_supported_file_types())
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + +
penify_hook.git_analyzer.GitDocGenHook.__init__ ( self,
str repo_path,
APIClient api_client )
+
+
+Here is the call graph for this function:
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+

Member Function Documentation

+ +

◆ get_modified_files_in_last_commit()

+ +
+
+ + + + + + + +
penify_hook.git_analyzer.GitDocGenHook.get_modified_files_in_last_commit ( self)
+
+
Get the list of files modified in the last commit.
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ get_modified_lines()

+ +
+
+ + + + + + + + + + + +
penify_hook.git_analyzer.GitDocGenHook.get_modified_lines ( self,
diff_text )
+
+
Extract modified line numbers from a diff text.
+
+This function processes a diff text to identify and extract the line numbers
+that have been modified. It distinguishes between added and deleted lines and
+keeps track of the current line number as it parses through the diff. The
+function handles hunk headers and ensures that any deletions at the end of the
+file are also captured.
+
+Args:
+    diff_text (str): A string containing the diff text to be processed.
+
+
+
+ +

◆ process_file()

+ +
+
+ + + + + + + + + + + +
penify_hook.git_analyzer.GitDocGenHook.process_file ( self,
file_path )
+
+
Processes a file by checking its type, reading its content, and sending it to
+an API.
+
+This method constructs the absolute path of the specified file and verifies if
+the file has a valid extension. If the file type is supported, it reads the
+content of the file and retrieves the differences from the last commit in the
+repository. If changes are detected, it sends the file content along with the
+modified lines to an API for further processing. If the API response indicates
+no changes, the original file will not be overwritten.
+
+Args:
+    file_path (str): The relative path to the file to be processed.
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ run()

+ +
+
+ + + + + + + +
penify_hook.git_analyzer.GitDocGenHook.run ( self)
+
+
Run the post-commit hook.
+
+This method retrieves the list of modified files from the last commit and
+processes each file. It stages any files that have been modified during
+processing and creates an auto-commit if changes were made. A progress bar is
+displayed to indicate the processing status of each file. The method handles
+any exceptions that occur during file processing, printing an error message for
+each file that fails to process. If any modifications are made to the files, an
+auto-commit is created to save those changes.
+
+Here is the call graph for this function:
+
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js new file mode 100644 index 0000000..b1f26f7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js @@ -0,0 +1,8 @@ +var classpenify__hook_1_1git__analyzer_1_1GitDocGenHook = +[ + [ "__init__", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a6f94663c0330ae7e6cbb7a8748177c24", null ], + [ "get_modified_files_in_last_commit", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a7070449b5dc058808eb13013db3d8eab", null ], + [ "get_modified_lines", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a74e36507adc1b1955cc6cc303f3f5328", null ], + [ "process_file", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a0fcec06966a3a5ef1df21529a6a3db81", null ], + [ "run", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a38fe1e50fc9448d995851d933283b633", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map new file mode 100644 index 0000000..c071a87 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 new file mode 100644 index 0000000..2e9a048 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 @@ -0,0 +1 @@ +24a454e47d3ff0abc2bfff962dc00afe \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg new file mode 100644 index 0000000..61a7636 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook +  ++ +__init__() ++ +get_modified_files +_in_last_commit() ++ +get_modified_lines() ++ +process_file() ++ +run() + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph_org.svg new file mode 100644 index 0000000..aff5080 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph_org.svg @@ -0,0 +1,76 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook +  ++ +__init__() ++ +get_modified_files +_in_last_commit() ++ +get_modified_lines() ++ +process_file() ++ +run() + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map new file mode 100644 index 0000000..c071a87 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 new file mode 100644 index 0000000..2e9a048 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +24a454e47d3ff0abc2bfff962dc00afe \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg new file mode 100644 index 0000000..61a7636 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg @@ -0,0 +1,102 @@ + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook +  ++ +__init__() ++ +get_modified_files +_in_last_commit() ++ +get_modified_lines() ++ +process_file() ++ +run() + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph_org.svg new file mode 100644 index 0000000..aff5080 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph_org.svg @@ -0,0 +1,76 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook +  ++ +__init__() ++ +get_modified_files +_in_last_commit() ++ +get_modified_lines() ++ +process_file() ++ +run() + + + + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer ++ +folder_path ++ +repo_path ++ +repo ++ +repo_details ++ +relative_file_path ++ +api_client ++ +supported_file_types ++ +__init__() + + + + + + + + + +Node2->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a0fcec06966a3a5ef1df21529a6a3db81_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a0fcec06966a3a5ef1df21529a6a3db81_icgraph.map new file mode 100644 index 0000000..01b25cb --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a0fcec06966a3a5ef1df21529a6a3db81_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a0fcec06966a3a5ef1df21529a6a3db81_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a0fcec06966a3a5ef1df21529a6a3db81_icgraph.md5 new file mode 100644 index 0000000..cdebba3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a0fcec06966a3a5ef1df21529a6a3db81_icgraph.md5 @@ -0,0 +1 @@ +d9f160cfdfa1d36f70d512752eac7200 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a0fcec06966a3a5ef1df21529a6a3db81_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a0fcec06966a3a5ef1df21529a6a3db81_icgraph.svg new file mode 100644 index 0000000..8c63bf8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a0fcec06966a3a5ef1df21529a6a3db81_icgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.process_file + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a0fcec06966a3a5ef1df21529a6a3db81_icgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a0fcec06966a3a5ef1df21529a6a3db81_icgraph_org.svg new file mode 100644 index 0000000..7e1f901 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a0fcec06966a3a5ef1df21529a6a3db81_icgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.process_file + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a38fe1e50fc9448d995851d933283b633_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a38fe1e50fc9448d995851d933283b633_cgraph.map new file mode 100644 index 0000000..5304b28 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a38fe1e50fc9448d995851d933283b633_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a38fe1e50fc9448d995851d933283b633_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a38fe1e50fc9448d995851d933283b633_cgraph.md5 new file mode 100644 index 0000000..7796201 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a38fe1e50fc9448d995851d933283b633_cgraph.md5 @@ -0,0 +1 @@ +c6c9fa3833b2627344e74616fe46c91a \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a38fe1e50fc9448d995851d933283b633_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a38fe1e50fc9448d995851d933283b633_cgraph.svg new file mode 100644 index 0000000..0fab064 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a38fe1e50fc9448d995851d933283b633_cgraph.svg @@ -0,0 +1,106 @@ + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.run + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node4 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a38fe1e50fc9448d995851d933283b633_cgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a38fe1e50fc9448d995851d933283b633_cgraph_org.svg new file mode 100644 index 0000000..9c6fa2d --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a38fe1e50fc9448d995851d933283b633_cgraph_org.svg @@ -0,0 +1,80 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.run + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node4 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_cgraph.map new file mode 100644 index 0000000..1e11953 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_cgraph.md5 new file mode 100644 index 0000000..79d04d4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_cgraph.md5 @@ -0,0 +1 @@ +42b036f12e21b8fd11794b04f4ebbb21 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_cgraph.svg new file mode 100644 index 0000000..f79241c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_cgraph.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.__init__ + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.__init__ + + + + + +Node1->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_cgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_cgraph_org.svg new file mode 100644 index 0000000..e88430c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_cgraph_org.svg @@ -0,0 +1,31 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.__init__ + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.__init__ + + + + + +Node1->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_icgraph.map new file mode 100644 index 0000000..08a0cc6 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_icgraph.md5 new file mode 100644 index 0000000..34759eb --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_icgraph.md5 @@ -0,0 +1 @@ +291583ab7d335081162c5b975d80c9b4 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_icgraph.svg new file mode 100644 index 0000000..ba71345 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_icgraph.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.__init__ + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.__init__ + + + + + +Node1->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_icgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_icgraph_org.svg new file mode 100644 index 0000000..53e7c2e --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a6f94663c0330ae7e6cbb7a8748177c24_icgraph_org.svg @@ -0,0 +1,31 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.__init__ + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.__init__ + + + + + +Node1->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a7070449b5dc058808eb13013db3d8eab_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a7070449b5dc058808eb13013db3d8eab_icgraph.map new file mode 100644 index 0000000..ea242d9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a7070449b5dc058808eb13013db3d8eab_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a7070449b5dc058808eb13013db3d8eab_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a7070449b5dc058808eb13013db3d8eab_icgraph.md5 new file mode 100644 index 0000000..1b24801 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a7070449b5dc058808eb13013db3d8eab_icgraph.md5 @@ -0,0 +1 @@ +78d3bb13be1da63a63998b6dea414c76 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a7070449b5dc058808eb13013db3d8eab_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a7070449b5dc058808eb13013db3d8eab_icgraph.svg new file mode 100644 index 0000000..9321125 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a7070449b5dc058808eb13013db3d8eab_icgraph.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_files_in_last_commit + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a7070449b5dc058808eb13013db3d8eab_icgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a7070449b5dc058808eb13013db3d8eab_icgraph_org.svg new file mode 100644 index 0000000..20b3424 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a7070449b5dc058808eb13013db3d8eab_icgraph_org.svg @@ -0,0 +1,42 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_files_in_last_commit + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html new file mode 100644 index 0000000..493baa3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify_hook.jira_client.JiraClient Member List
+
+
+ +

This is the complete list of members for penify_hook.jira_client.JiraClient, including all inherited members.

+ + + + + + + + + + + + + + + + +
__init__(self, str jira_url=None, str jira_user=None, str jira_api_token=None)penify_hook.jira_client.JiraClient
add_comment(self, str issue_key, str comment)penify_hook.jira_client.JiraClient
enhance_commit_message(self, str title, str description, List[str] issue_keys)penify_hook.jira_client.JiraClient
extract_issue_keys(self, str text)penify_hook.jira_client.JiraClient
extract_issue_keys_from_branch(self, str branch_name)penify_hook.jira_client.JiraClient
format_commit_message_with_jira_info(self, str commit_title, str commit_description, List[str] issue_keys=None)penify_hook.jira_client.JiraClient
get_commit_context_from_issues(self, List[str] issue_keys)penify_hook.jira_client.JiraClient
get_detailed_issue_context(self, str issue_key)penify_hook.jira_client.JiraClient
get_issue_details(self, str issue_key)penify_hook.jira_client.JiraClient
is_connected(self)penify_hook.jira_client.JiraClient
jira_api_tokenpenify_hook.jira_client.JiraClient
jira_clientpenify_hook.jira_client.JiraClient
jira_urlpenify_hook.jira_client.JiraClient
jira_userpenify_hook.jira_client.JiraClient
update_issue_status(self, str issue_key, str transition_name)penify_hook.jira_client.JiraClient
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html new file mode 100644 index 0000000..e7f532e --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html @@ -0,0 +1,688 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.jira_client.JiraClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
penify_hook.jira_client.JiraClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.jira_client.JiraClient:
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 __init__ (self, str jira_url=None, str jira_user=None, str jira_api_token=None)
 
bool is_connected (self)
 
List[str] extract_issue_keys_from_branch (self, str branch_name)
 
List[str] extract_issue_keys (self, str text)
 
Optional[Dict[str, Any]] get_issue_details (self, str issue_key)
 
bool add_comment (self, str issue_key, str comment)
 
bool update_issue_status (self, str issue_key, str transition_name)
 
tuple format_commit_message_with_jira_info (self, str commit_title, str commit_description, List[str] issue_keys=None)
 
Dict[str, Any] get_detailed_issue_context (self, str issue_key)
 
Dict[str, Any] get_commit_context_from_issues (self, List[str] issue_keys)
 
tuple enhance_commit_message (self, str title, str description, List[str] issue_keys)
 
+ + + + + + + + + +

+Public Attributes

 jira_url = jira_url
 
 jira_user = jira_user
 
 jira_api_token = jira_api_token
 
 jira_client = None
 
+

Detailed Description

+
Client for interacting with JIRA API
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
penify_hook.jira_client.JiraClient.__init__ ( self,
str jira_url = None,
str jira_user = None,
str jira_api_token = None )
+
+
Initialize the JIRA client.
+
+Args:
+    jira_url: Base URL for JIRA instance (e.g., "https://your-domain.atlassian.net")
+    jira_user: JIRA username or email
+    jira_api_token: JIRA API token
+
+
+
+

Member Function Documentation

+ +

◆ add_comment()

+ +
+
+ + + + + + + + + + + + + + + + +
bool penify_hook.jira_client.JiraClient.add_comment ( self,
str issue_key,
str comment )
+
+
Adds a comment to a JIRA issue.
+Here is the call graph for this function:
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ enhance_commit_message()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
tuple penify_hook.jira_client.JiraClient.enhance_commit_message ( self,
str title,
str description,
List[str] issue_keys )
+
+
Enhance a commit message with business and technical context from JIRA issues.
+
+This function first checks if the list of issue keys is empty or if there is no
+connection. If so, it returns the original title and description without
+modification. It then retrieves context information from the specified JIRA
+issues. If the primary issue is missing, it formats the commit message with
+basic JIRA info.  The function enhances the commit title by prefixing it with
+the primary issue key if not already included. It appends a business context
+section to the description, including details like issue type, status,
+priority, sprint, acceptance criteria, and a condensed issue description. If
+comments are available, they are added as technical notes. Finally, related
+issues are listed.
+
+Args:
+    title (str): Original commit title.
+    description (str): Original commit description.
+    issue_keys (List[str]): List of JIRA issue keys to include in the enhanced commit message.
+
+Returns:
+    tuple: A tuple containing the enhanced commit title and description with added
+        context from JIRA issues.
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ extract_issue_keys()

+ +
+
+ + + + + + + + + + + +
List[str] penify_hook.jira_client.JiraClient.extract_issue_keys ( self,
str text )
+
+
Extract unique JIRA issue keys from the given text.
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ extract_issue_keys_from_branch()

+ +
+
+ + + + + + + + + + + +
List[str] penify_hook.jira_client.JiraClient.extract_issue_keys_from_branch ( self,
str branch_name )
+
+
Extracts unique JIRA issue keys from a branch name.
+
+
+ +

◆ format_commit_message_with_jira_info()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
tuple penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info ( self,
str commit_title,
str commit_description,
List[str] issue_keys = None )
+
+
Format commit message with JIRA issue information.
+
+This function updates the provided commit title and description by
+incorporating JIRA issue keys. If no issue keys are supplied, it extracts them
+from the commit title and description. It then formats the commit title to
+include the first issue key if not already present and appends detailed
+information about each issue to the commit description.
+
+Args:
+    commit_title (str): The original commit title.
+    commit_description (str): The original commit description.
+    issue_keys (List[str]?): A list of JIRA issue keys to include in the commit message. If not
+        provided, issue keys will be extracted from both the title and the description.
+
+Returns:
+    tuple: A tuple containing the updated commit title and description with JIRA
+        information included.
+
+Here is the call graph for this function:
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ get_commit_context_from_issues()

+ +
+
+ + + + + + + + + + + +
Dict[str, Any] penify_hook.jira_client.JiraClient.get_commit_context_from_issues ( self,
List[str] issue_keys )
+
+
Gather contextual information from JIRA issues to improve commit messages.
+
+This function processes a list of JIRA issue keys, retrieves detailed context
+for each issue, and aggregates it into a dictionary that can be used to enhance
+commit messages. It first retrieves the primary issue (the first key in the
+list) and then gathers basic details for any related issues. The resulting
+context includes information from both the primary and related issues, along
+with all issue keys.
+
+Args:
+    issue_keys: List of JIRA issue keys to gather information from
+
+Returns:
+    Dict containing business and technical context from the issues
+
+Here is the call graph for this function:
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ get_detailed_issue_context()

+ +
+
+ + + + + + + + + + + +
Dict[str, Any] penify_hook.jira_client.JiraClient.get_detailed_issue_context ( self,
str issue_key )
+
+
Retrieve comprehensive details about a JIRA issue including context for better
+commit messages.
+
+This function fetches detailed information from a specified JIRA issue and
+constructs a dictionary containing various context fields such as the issue
+summary, description, type, status, priority, comments, URL, and additional
+custom fields like acceptance criteria and sprint information. It handles
+errors by logging appropriate warnings or errors.
+
+Args:
+    issue_key (str): The JIRA issue key (e.g., "PROJECT-123").
+
+Returns:
+    Dict[str, Any]: A dictionary containing business and technical context from the issue.
+
+Here is the call graph for this function:
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ get_issue_details()

+ +
+
+ + + + + + + + + + + +
Optional[Dict[str, Any]] penify_hook.jira_client.JiraClient.get_issue_details ( self,
str issue_key )
+
+
Retrieve details of a JIRA issue based on its key.
+
+This function fetches detailed information about a specified JIRA issue using
+the provided issue key. It first checks if the JIRA client is connected; if
+not, it logs a warning and returns `None`. If connected, it attempts to
+retrieve the issue from the JIRA server. On success, it constructs and returns
+a dictionary containing various details such as the issue's key, summary,
+status, description, assignee, reporter, type, priority, and URL. Errors during
+this process are logged, and `None` is returned.
+
+Args:
+    issue_key (str): The JIRA issue key (e.g., "PROJECT-123").
+
+Here is the call graph for this function:
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ is_connected()

+ +
+
+ + + + + + + +
bool penify_hook.jira_client.JiraClient.is_connected ( self)
+
+
Check if the JIRA client is connected.
+Here is the caller graph for this function:
+
+
+
+ +
+
+ +

◆ update_issue_status()

+ +
+
+ + + + + + + + + + + + + + + + +
bool penify_hook.jira_client.JiraClient.update_issue_status ( self,
str issue_key,
str transition_name )
+
+
Update the status of a JIRA issue.
+
+This method checks if the JIRA client is connected, retrieves available
+transitions for the given issue, finds the transition ID by name, and updates
+the issue's status accordingly. If any step fails or the specified transition
+is not found, appropriate logs are generated, and False is returned.
+
+Args:
+    issue_key (str): The key of the JIRA issue to be updated.
+    transition_name (str): The name of the desired transition.
+
+Returns:
+    bool: True if the status was successfully updated, False otherwise.
+
+Here is the call graph for this function:
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ jira_api_token

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_api_token = jira_api_token
+
+ +
+
+ +

◆ jira_client

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_client = None
+
+ +
+
+ +

◆ jira_url

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_url = jira_url
+
+ +
+
+ +

◆ jira_user

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_user = jira_user
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js new file mode 100644 index 0000000..d376d88 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js @@ -0,0 +1,18 @@ +var classpenify__hook_1_1jira__client_1_1JiraClient = +[ + [ "__init__", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a3a6914654fd59e0cef96159143a52355", null ], + [ "add_comment", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1", null ], + [ "enhance_commit_message", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760", null ], + [ "extract_issue_keys", "classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7", null ], + [ "extract_issue_keys_from_branch", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c", null ], + [ "format_commit_message_with_jira_info", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23", null ], + [ "get_commit_context_from_issues", "classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd", null ], + [ "get_detailed_issue_context", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746", null ], + [ "get_issue_details", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a", null ], + [ "is_connected", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8", null ], + [ "update_issue_status", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826", null ], + [ "jira_api_token", "classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9", null ], + [ "jira_client", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6", null ], + [ "jira_url", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197", null ], + [ "jira_user", "classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map new file mode 100644 index 0000000..cdaefc2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 new file mode 100644 index 0000000..0c1111c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 @@ -0,0 +1 @@ +cb6abffe2776ef8b917dcf9ccbfe13d9 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg new file mode 100644 index 0000000..362789b --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg @@ -0,0 +1,86 @@ + + + + + + + + + + + + +penify_hook.jira_client.JiraClient + + +Node1 + + +penify_hook.jira_client. +JiraClient ++ +jira_url ++ +jira_user ++ +jira_api_token ++ +jira_client ++ +__init__() ++ +is_connected() ++ +extract_issue_keys +_from_branch() ++ +extract_issue_keys() ++ +get_issue_details() ++ +add_comment() ++ +update_issue_status() ++ +format_commit_message +_with_jira_info() ++ +get_detailed_issue +_context() ++ +get_commit_context +_from_issues() ++ +enhance_commit_message() + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph_org.svg new file mode 100644 index 0000000..f2e6d7e --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph_org.svg @@ -0,0 +1,60 @@ + + + + + + +penify_hook.jira_client.JiraClient + + +Node1 + + +penify_hook.jira_client. +JiraClient ++ +jira_url ++ +jira_user ++ +jira_api_token ++ +jira_client ++ +__init__() ++ +is_connected() ++ +extract_issue_keys +_from_branch() ++ +extract_issue_keys() ++ +get_issue_details() ++ +add_comment() ++ +update_issue_status() ++ +format_commit_message +_with_jira_info() ++ +get_detailed_issue +_context() ++ +get_commit_context +_from_issues() ++ +enhance_commit_message() + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map new file mode 100644 index 0000000..af0a43a --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 new file mode 100644 index 0000000..87c42b9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 @@ -0,0 +1 @@ +717d5801960370f08b353ff800782e04 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg new file mode 100644 index 0000000..076cc77 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.is_connected + + +Node1 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node1->Node8 + + + + + + + + +Node2->Node2 + + + + + + + + +Node4->Node3 + + + + + + + + +Node5->Node3 + + + + + + + + +Node6->Node5 + + + + + + + + +Node7->Node4 + + + + + + + + +Node7->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg new file mode 100644 index 0000000..81bda1a --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg @@ -0,0 +1,214 @@ + + + + + + +penify_hook.jira_client.JiraClient.is_connected + + +Node1 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node1->Node8 + + + + + + + + +Node2->Node2 + + + + + + + + +Node4->Node3 + + + + + + + + +Node5->Node3 + + + + + + + + +Node6->Node5 + + + + + + + + +Node7->Node4 + + + + + + + + +Node7->Node5 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map new file mode 100644 index 0000000..333928f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 new file mode 100644 index 0000000..da6010d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 @@ -0,0 +1 @@ +418490b7d72a19f4b66a9d571f00a405 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg new file mode 100644 index 0000000..574eb14 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node4 + + + + + + + + +Node3->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg new file mode 100644 index 0000000..2d1925e --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg @@ -0,0 +1,89 @@ + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node4 + + + + + + + + +Node3->Node4 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map new file mode 100644 index 0000000..fc7a580 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 new file mode 100644 index 0000000..31affd1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 @@ -0,0 +1 @@ +64b10c681d95ce3a7d9a088dee97f2fa \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg new file mode 100644 index 0000000..83e0ee7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph_org.svg new file mode 100644 index 0000000..230fdc6 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph_org.svg @@ -0,0 +1,43 @@ + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map new file mode 100644 index 0000000..3ea65f8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 new file mode 100644 index 0000000..4243138 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 @@ -0,0 +1 @@ +dde2ac2af40342b31ee669cca048b1d5 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg new file mode 100644 index 0000000..3985971 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph_org.svg new file mode 100644 index 0000000..4e8bb0b --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map new file mode 100644 index 0000000..1bd6647 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 new file mode 100644 index 0000000..031a22f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 @@ -0,0 +1 @@ +6c661a2fda40fd56a413ec2fa08a59b0 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg new file mode 100644 index 0000000..1b00d64 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node4 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + + + + +Node4->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg new file mode 100644 index 0000000..4d81f52 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg @@ -0,0 +1,91 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node4 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + + + + +Node4->Node3 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map new file mode 100644 index 0000000..42dd982 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 new file mode 100644 index 0000000..8120387 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 @@ -0,0 +1 @@ +5ddc66300fa5b7ead562ae1458f5a2d1 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg new file mode 100644 index 0000000..eb63ff5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.enhance_commit_message + + +Node1 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node6 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2->Node4 + + + + + + + + +Node2->Node5 + + + + + + + + +Node4->Node5 + + + + + + + + +Node6->Node4 + + + + + + + + +Node6->Node5 + + + + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node6->Node7 + + + + + + + + +Node7->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg new file mode 100644 index 0000000..74ddb79 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg @@ -0,0 +1,185 @@ + + + + + + +penify_hook.jira_client.JiraClient.enhance_commit_message + + +Node1 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node6 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2->Node4 + + + + + + + + +Node2->Node5 + + + + + + + + +Node4->Node5 + + + + + + + + +Node6->Node4 + + + + + + + + +Node6->Node5 + + + + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node6->Node7 + + + + + + + + +Node7->Node5 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map new file mode 100644 index 0000000..68f5855 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 new file mode 100644 index 0000000..4872206 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 @@ -0,0 +1 @@ +2516741eaa318777630ef1a3c4503bec \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg new file mode 100644 index 0000000..2230ab2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.add_comment + + +Node1 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node1 + + + + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph_org.svg new file mode 100644 index 0000000..31d4e73 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph_org.svg @@ -0,0 +1,50 @@ + + + + + + +penify_hook.jira_client.JiraClient.add_comment + + +Node1 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node1 + + + + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map new file mode 100644 index 0000000..c3693f6 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 new file mode 100644 index 0000000..5a0d146 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 @@ -0,0 +1 @@ +383e070712c31e89209aa7b1e1122f61 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg new file mode 100644 index 0000000..bc05031 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.add_comment + + +Node1 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph_org.svg new file mode 100644 index 0000000..93a2839 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph_org.svg @@ -0,0 +1,31 @@ + + + + + + +penify_hook.jira_client.JiraClient.add_comment + + +Node1 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map new file mode 100644 index 0000000..3c585f2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 new file mode 100644 index 0000000..e170f1a --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 @@ -0,0 +1 @@ +63a3882ce41ba6db173cea3a6a69cc12 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg new file mode 100644 index 0000000..16e6732 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.get_detailed_issue_context + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph_org.svg new file mode 100644 index 0000000..b662d76 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph_org.svg @@ -0,0 +1,42 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_detailed_issue_context + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map new file mode 100644 index 0000000..4f6db46 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 new file mode 100644 index 0000000..76f9aba --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 @@ -0,0 +1 @@ +7b753bb07d4e9d56f0a95d651e44ff1d \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg new file mode 100644 index 0000000..a2078d9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg @@ -0,0 +1,89 @@ + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.get_detailed_issue_context + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph_org.svg new file mode 100644 index 0000000..4521658 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph_org.svg @@ -0,0 +1,63 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_detailed_issue_context + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map new file mode 100644 index 0000000..894ec8a --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 new file mode 100644 index 0000000..9d11f10 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 @@ -0,0 +1 @@ +efdd957df986904623f97d9b11661563 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg new file mode 100644 index 0000000..df89180 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.update_issue_status + + +Node1 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph_org.svg new file mode 100644 index 0000000..424d967 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph_org.svg @@ -0,0 +1,42 @@ + + + + + + +penify_hook.jira_client.JiraClient.update_issue_status + + +Node1 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map new file mode 100644 index 0000000..7520eef --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 new file mode 100644 index 0000000..6901a15 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 @@ -0,0 +1 @@ +1e99adb62e67060686dd8813dd04b0a1 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg new file mode 100644 index 0000000..67bc403 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg new file mode 100644 index 0000000..08aba67 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map new file mode 100644 index 0000000..8ed21fe --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 new file mode 100644 index 0000000..b7398a5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 @@ -0,0 +1 @@ +1ffa67f807985b455093a76176bbf0a2 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg new file mode 100644 index 0000000..1f184f1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg @@ -0,0 +1,125 @@ + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.get_commit_context_from_issues + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node4 + + + + + + + + +Node2->Node3 + + + + + + + + +Node4->Node3 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph_org.svg new file mode 100644 index 0000000..0757634 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph_org.svg @@ -0,0 +1,99 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_commit_context_from_issues + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node4 + + + + + + + + +Node2->Node3 + + + + + + + + +Node4->Node3 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map new file mode 100644 index 0000000..85570b3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 new file mode 100644 index 0000000..d4c3c7e --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 @@ -0,0 +1 @@ +689439215ff383b255572760a7c9eb3c \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg new file mode 100644 index 0000000..69ca8a8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.get_commit_context_from_issues + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph_org.svg new file mode 100644 index 0000000..4bba78f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph_org.svg @@ -0,0 +1,43 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_commit_context_from_issues + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html new file mode 100644 index 0000000..808d9d7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify_hook.llm_client.LLMClient Member List
+
+
+ +

This is the complete list of members for penify_hook.llm_client.LLMClient, including all inherited members.

+ + + + + + +
__init__(self, str model=None, str api_base=None, str api_key=None)penify_hook.llm_client.LLMClient
_litellmpenify_hook.llm_client.LLMClientprotected
generate_commit_summary(self, str diff, str message, bool generate_description, Dict repo_details, Dict jira_context=None)penify_hook.llm_client.LLMClient
litellm(self)penify_hook.llm_client.LLMClient
modelpenify_hook.llm_client.LLMClient
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html new file mode 100644 index 0000000..fe629ec --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html @@ -0,0 +1,344 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.llm_client.LLMClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
penify_hook.llm_client.LLMClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.llm_client.LLMClient:
+
+
+
+ + + + + + + + +

+Public Member Functions

 __init__ (self, str model=None, str api_base=None, str api_key=None)
 
 litellm (self)
 
Dict generate_commit_summary (self, str diff, str message, bool generate_description, Dict repo_details, Dict jira_context=None)
 
+ + + +

+Public Attributes

 model = model
 
+ + + +

+Protected Attributes

 _litellm = None
 
+

Detailed Description

+
Client for interacting with LLM models using LiteLLM.
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
penify_hook.llm_client.LLMClient.__init__ ( self,
str model = None,
str api_base = None,
str api_key = None )
+
+
Initialize the LLM client.
+
+Args:
+    model: LLM model to use (e.g., "gpt-4", "ollama/llama2", etc.)
+    api_base: Base URL for API requests (e.g., "http://localhost:11434" for Ollama)
+    api_key: API key for the LLM service
+
+
+
+

Member Function Documentation

+ +

◆ generate_commit_summary()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Dict penify_hook.llm_client.LLMClient.generate_commit_summary ( self,
str diff,
str message,
bool generate_description,
Dict repo_details,
Dict jira_context = None )
+
+
Generate a concise and descriptive commit summary based on Git diff, user
+instructions, repository details, and optional JIRA context.
+
+This function constructs a prompt for an LLM to produce a commit title and, if
+requested, a detailed description. The summary adheres to Semantic Commit
+Messages guidelines. If JIRA context is provided, it enriches the prompt with
+relevant issue information.
+
+Args:
+    diff (str): Git diff of changes.
+    message (str): User-provided commit message or instructions.
+    generate_description (bool): Flag indicating whether to include a detailed description in the summary.
+    repo_details (Dict): Details about the repository.
+    jira_context (Dict?): Optional JIRA issue context to enhance the summary.
+
+Returns:
+    Dict: A dictionary containing the title and description for the commit. If
+        `generate_description` is False, the 'description' key may be absent.
+
+Raises:
+    ValueError: If the LLM model is not configured.
+
+Here is the call graph for this function:
+
+
+
+ +
+
+ +

◆ litellm()

+ +
+
+ + + + + + + +
penify_hook.llm_client.LLMClient.litellm ( self)
+
+
Returns the litellm module, loading it if necessary.
+Here is the caller graph for this function:
+
+
+
+ +
+
+

Member Data Documentation

+ +

◆ _litellm

+ +
+
+ + + + + +
+ + + + +
penify_hook.llm_client.LLMClient._litellm = None
+
+protected
+
+ +
+
+ +

◆ model

+ +
+
+ + + + +
penify_hook.llm_client.LLMClient.model = model
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.js b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.js new file mode 100644 index 0000000..46b5f69 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.js @@ -0,0 +1,8 @@ +var classpenify__hook_1_1llm__client_1_1LLMClient = +[ + [ "__init__", "classpenify__hook_1_1llm__client_1_1LLMClient.html#a699a5be4411f5847fcb0a170281ab14b", null ], + [ "generate_commit_summary", "classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000", null ], + [ "litellm", "classpenify__hook_1_1llm__client_1_1LLMClient.html#aa646fddc43ecd633d2c358d58dd4df24", null ], + [ "_litellm", "classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362", null ], + [ "model", "classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.map new file mode 100644 index 0000000..0799e07 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 new file mode 100644 index 0000000..32e431a --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 @@ -0,0 +1 @@ +f5a85cb1914200227761fbafb29a028d \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg new file mode 100644 index 0000000..c17cfa7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + +penify_hook.llm_client.LLMClient + + +Node1 + + +penify_hook.llm_client.LLMClient ++ +model +# +_litellm ++ +__init__() ++ +litellm() ++ +generate_commit_summary() + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph_org.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph_org.svg new file mode 100644 index 0000000..e539abe --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph_org.svg @@ -0,0 +1,35 @@ + + + + + + +penify_hook.llm_client.LLMClient + + +Node1 + + +penify_hook.llm_client.LLMClient ++ +model +# +_litellm ++ +__init__() ++ +litellm() ++ +generate_commit_summary() + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map new file mode 100644 index 0000000..4ef0528 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 new file mode 100644 index 0000000..01de6eb --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 @@ -0,0 +1 @@ +34b0fee7d75710e4a00c53f6fd9aa8be \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg new file mode 100644 index 0000000..8396724 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + +penify_hook.llm_client.LLMClient.generate_commit_summary + + +Node1 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node2 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph_org.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph_org.svg new file mode 100644 index 0000000..a18f3b8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph_org.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.llm_client.LLMClient.generate_commit_summary + + +Node1 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node2 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_aa646fddc43ecd633d2c358d58dd4df24_icgraph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_aa646fddc43ecd633d2c358d58dd4df24_icgraph.map new file mode 100644 index 0000000..8619272 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_aa646fddc43ecd633d2c358d58dd4df24_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_aa646fddc43ecd633d2c358d58dd4df24_icgraph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_aa646fddc43ecd633d2c358d58dd4df24_icgraph.md5 new file mode 100644 index 0000000..ab0c9e0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_aa646fddc43ecd633d2c358d58dd4df24_icgraph.md5 @@ -0,0 +1 @@ +5b5c51cbf1bd107a0995dd55219fc8f0 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_aa646fddc43ecd633d2c358d58dd4df24_icgraph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_aa646fddc43ecd633d2c358d58dd4df24_icgraph.svg new file mode 100644 index 0000000..9ee6551 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_aa646fddc43ecd633d2c358d58dd4df24_icgraph.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + +penify_hook.llm_client.LLMClient.litellm + + +Node1 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node2 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_aa646fddc43ecd633d2c358d58dd4df24_icgraph_org.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_aa646fddc43ecd633d2c358d58dd4df24_icgraph_org.svg new file mode 100644 index 0000000..4d765df --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_aa646fddc43ecd633d2c358d58dd4df24_icgraph_org.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.llm_client.LLMClient.litellm + + +Node1 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node2 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html new file mode 100644 index 0000000..8fc2701 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.utils.GitRepoNotFoundError Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify_hook.utils.GitRepoNotFoundError Class Reference
+
+
+
+Inheritance diagram for penify_hook.utils.GitRepoNotFoundError:
+
+
+
+
+Collaboration diagram for penify_hook.utils.GitRepoNotFoundError:
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map new file mode 100644 index 0000000..22a6cb3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 new file mode 100644 index 0000000..671ea14 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 @@ -0,0 +1 @@ +a12e925b7b00d944f3725fa4235987da \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg new file mode 100644 index 0000000..d92e280 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + +penify_hook.utils.GitRepoNotFoundError + + +Node1 + + +penify_hook.utils.GitRepo +NotFoundError +  +  + + + + + + + + +Node2 + + +Exception +  +  + + + + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph_org.svg b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph_org.svg new file mode 100644 index 0000000..4b075ca --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph_org.svg @@ -0,0 +1,50 @@ + + + + + + +penify_hook.utils.GitRepoNotFoundError + + +Node1 + + +penify_hook.utils.GitRepo +NotFoundError +  +  + + + + + + + + +Node2 + + +Exception +  +  + + + + + + + + +Node2->Node1 + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map new file mode 100644 index 0000000..22a6cb3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 new file mode 100644 index 0000000..671ea14 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 @@ -0,0 +1 @@ +a12e925b7b00d944f3725fa4235987da \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg new file mode 100644 index 0000000..d92e280 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg @@ -0,0 +1,76 @@ + + + + + + + + + + + + +penify_hook.utils.GitRepoNotFoundError + + +Node1 + + +penify_hook.utils.GitRepo +NotFoundError +  +  + + + + + + + + +Node2 + + +Exception +  +  + + + + + + + + +Node2->Node1 + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph_org.svg b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph_org.svg new file mode 100644 index 0000000..4b075ca --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph_org.svg @@ -0,0 +1,50 @@ + + + + + + +penify_hook.utils.GitRepoNotFoundError + + +Node1 + + +penify_hook.utils.GitRepo +NotFoundError +  +  + + + + + + + + +Node2 + + +Exception +  +  + + + + + + + + +Node2->Node1 + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html new file mode 100644 index 0000000..6eb08d0 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
tests.test_commit_commands.TestCommitCommands Member List
+
+
+ +

This is the complete list of members for tests.test_commit_commands.TestCommitCommands, including all inherited members.

+ + + + + + + + + + + + + +
mock_api_client(self)tests.test_commit_commands.TestCommitCommands
mock_commit_doc_gen(self)tests.test_commit_commands.TestCommitCommands
mock_git_folder_search(self)tests.test_commit_commands.TestCommitCommands
mock_jira_client(self)tests.test_commit_commands.TestCommitCommands
mock_llm_client(self)tests.test_commit_commands.TestCommitCommands
mock_print_functions(self)tests.test_commit_commands.TestCommitCommands
test_commit_code_error_handling(self, mock_print, mock_exit, mock_git_folder_search, mock_doc_gen, mock_api_client)tests.test_commit_commands.TestCommitCommands
test_commit_code_with_jira_client(self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_jira_client, mock_llm_client, mock_api_client)tests.test_commit_commands.TestCommitCommands
test_commit_code_with_jira_connection_failure(self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_jira_client, mock_api_client)tests.test_commit_commands.TestCommitCommands
test_commit_code_with_llm_client(self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_llm_client, mock_api_client)tests.test_commit_commands.TestCommitCommands
test_handle_commit(self, mock_print_info, mock_commit_code, mock_get_token, mock_get_llm_config, mock_get_jira_config)tests.test_commit_commands.TestCommitCommands
test_setup_commit_parser(self)tests.test_commit_commands.TestCommitCommands
+
+ + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html new file mode 100644 index 0000000..c26258b --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html @@ -0,0 +1,699 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_commit_commands.TestCommitCommands Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
tests.test_commit_commands.TestCommitCommands Class Reference
+
+
+
+Collaboration diagram for tests.test_commit_commands.TestCommitCommands:
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 mock_api_client (self)
 
 mock_llm_client (self)
 
 mock_jira_client (self)
 
 mock_commit_doc_gen (self)
 
 mock_git_folder_search (self)
 
 mock_print_functions (self)
 
 test_commit_code_with_llm_client (self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_llm_client, mock_api_client)
 
 test_commit_code_with_jira_client (self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_jira_client, mock_llm_client, mock_api_client)
 
 test_commit_code_with_jira_connection_failure (self, mock_error, mock_warning, mock_info, mock_git_folder_search, mock_doc_gen, mock_jira_client, mock_api_client)
 
 test_commit_code_error_handling (self, mock_print, mock_exit, mock_git_folder_search, mock_doc_gen, mock_api_client)
 
 test_setup_commit_parser (self)
 
 test_handle_commit (self, mock_print_info, mock_commit_code, mock_get_token, mock_get_llm_config, mock_get_jira_config)
 
+

Member Function Documentation

+ +

◆ mock_api_client()

+ +
+
+ + + + + + + +
tests.test_commit_commands.TestCommitCommands.mock_api_client ( self)
+
+
Mocks an instance of APIClient using unittest.mock.
+
+This function creates a mock object for APIClient and yields it along
+with the mocked instance. It is useful for testing purposes where real
+API calls should be avoided.
+
+Yields:
+    tuple: A tuple containing the mock of APIClient and the mocked instance of
+        APIClient.
+
+
+
+ +

◆ mock_commit_doc_gen()

+ +
+
+ + + + + + + +
tests.test_commit_commands.TestCommitCommands.mock_commit_doc_gen ( self)
+
+
Mocks the CommitDocGenHook class and returns a MagicMock instance.
+
+This function uses the `patch` decorator from the `unittest.mock` module
+to create a mock of the `CommitDocGenHook` class. It then sets up this
+mock to return a new `MagicMock` instance when invoked. The function
+yields both the mock object and the mocked instance, allowing for easy
+testing of functions that rely on `CommitDocGenHook`.
+
+Returns:
+    tuple: A tuple containing two elements:
+        - mock (patch): The patch object used to mock the `CommitDocGenHook`
+        class.
+        - doc_gen_instance (MagicMock): The mocked instance of
+        `CommitDocGenHook`.
+
+
+
+ +

◆ mock_git_folder_search()

+ +
+
+ + + + + + + +
tests.test_commit_commands.TestCommitCommands.mock_git_folder_search ( self)
+
+
Mock the `recursive_search_git_folder` function to return a predefined
+git folder path.
+
+This function uses the `patch` decorator from the `unittest.mock` module
+to intercept calls to `penify_hook.utils.recursive_search_git_folder`.
+When called, it will return '/mock/git/folder' instead of performing an
+actual search. This is useful for testing purposes where you need a
+consistent response without interacting with the file system.
+
+Yields:
+    MagicMock: A mock object that simulates the `recursive_search_git_folder` function.
+
+
+
+ +

◆ mock_jira_client()

+ +
+
+ + + + + + + +
tests.test_commit_commands.TestCommitCommands.mock_jira_client ( self)
+
+
Create a mock JIRA client for testing purposes.
+
+This function yields a tuple containing a mock JIRA client instance and
+its `is_connected` method. The mock client is configured to simulate an
+active connection. This is useful for unit tests that require
+interaction with a JIRA client without making actual network calls.
+
+Yields:
+    tuple: A tuple containing the mocked JIRA client instance and its
+        `is_connected` method.
+
+
+
+ +

◆ mock_llm_client()

+ +
+
+ + + + + + + +
tests.test_commit_commands.TestCommitCommands.mock_llm_client ( self)
+
+
Mock an instance of LLMClient for testing purposes.
+
+This function yields a mock object representing an instance of
+LLMClient, which can be used to simulate interactions with a language
+model during testing. The mock is patched to replace the actual
+LLMClient class from the penify_hook module.
+
+Yields:
+    tuple: A tuple containing two elements:
+        - mock (MagicMock): The mock object for LLMClient.
+        - llm_client_instance (MagicMock): An instance of the mocked LLMClient.
+
+
+
+ +

◆ mock_print_functions()

+ +
+
+ + + + + + + +
tests.test_commit_commands.TestCommitCommands.mock_print_functions ( self)
+
+
Mocks the print functions from `penify_hook.ui_utils` for testing
+purposes.
+
+This function uses Python's `unittest.mock.patch` to replace the actual
+print functions (`print`, `print_warning`, and `print_error`) with mock
+objects. These mock objects can be used in tests to capture calls made
+to these print functions without actually printing anything.
+
+Yields:
+    tuple: A tuple containing three mock objects corresponding to `print_info`,
+        `print_warning`,
+        and `print_error`.
+
+
+
+ +

◆ test_commit_code_error_handling()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tests.test_commit_commands.TestCommitCommands.test_commit_code_error_handling ( self,
mock_print,
mock_exit,
mock_git_folder_search,
mock_doc_gen,
mock_api_client )
+
+
Test the error handling in the test_commit_code function.
+
+This function sets up mocks to simulate exceptions and test the error
+handling of the commit_code function. It verifies that the function
+correctly prints an error message and exits with a status code of 1 when
+an exception occurs during documentation generation.
+
+Args:
+    mock_print (MagicMock): Mock for the print function, used to verify error message output.
+    mock_exit (MagicMock): Mock for the sys.exit function, used to verify exit behavior.
+    mock_git_folder_search (MagicMock): Mock for the git_folder_search function, returning a mock Git folder
+        path.
+    mock_doc_gen (MagicMock): Mock for the doc_gen function, simulating an exception during
+        documentation generation.
+    mock_api_client (MagicMock): Mock for the API client class, not directly used but referenced in the
+        function signature.
+
+
+
+ +

◆ test_commit_code_with_jira_client()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_client ( self,
mock_error,
mock_warning,
mock_info,
mock_git_folder_search,
mock_doc_gen,
mock_jira_client,
mock_llm_client,
mock_api_client )
+
+
Test committing code using a JIRA client.
+
+This function tests the commit_code function with various parameters,
+including API and JIRA credentials. It sets up mock objects for
+dependencies such as the JIRA client, LLM client, and doc generator to
+simulate the behavior of the real classes. The function then calls
+commit_code and verifies that the JIRA client and doc generator are
+called with the correct parameters.
+
+Args:
+    mock_error (MagicMock): A MagicMock object for simulating error logging.
+    mock_warning (MagicMock): A MagicMock object for simulating warning logging.
+    mock_info (MagicMock): A MagicMock object for simulating info logging.
+    mock_git_folder_search (MagicMock): A MagicMock object for simulating the git folder search function.
+    mock_doc_gen (MagicMock): A MagicMock object for simulating the doc generator function.
+    mock_jira_client (MagicMock): A MagicMock object for simulating the JIRA client class.
+    mock_llm_client (MagicMock): A MagicMock object for simulating the LLM client class.
+    mock_api_client (MagicMock): A MagicMock object for simulating the API client class.
+
+
+
+ +

◆ test_commit_code_with_jira_connection_failure()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_connection_failure ( self,
mock_error,
mock_warning,
mock_info,
mock_git_folder_search,
mock_doc_gen,
mock_jira_client,
mock_api_client )
+
+
Test the commit_code function when JIRA connection fails.
+
+This function tests the scenario where the JIRA connection fails during
+a code commit. It sets up various mocks to simulate different components
+of the system and then calls the `commit_code` function with specific
+parameters. The function is expected to handle the JIRA connection
+failure gracefully by logging an appropriate warning.
+
+Args:
+    mock_error (MagicMock): Mock for error logging.
+    mock_warning (MagicMock): Mock for warning logging.
+    mock_info (MagicMock): Mock for info logging.
+    mock_git_folder_search (MagicMock): Mock for searching the Git folder.
+    mock_doc_gen (MagicMock): Mock for generating documentation.
+    mock_jira_client (MagicMock): Mock for creating a JIRA client.
+    mock_api_client (MagicMock): Mock for creating an API client.
+
+
+
+ +

◆ test_commit_code_with_llm_client()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tests.test_commit_commands.TestCommitCommands.test_commit_code_with_llm_client ( self,
mock_error,
mock_warning,
mock_info,
mock_git_folder_search,
mock_doc_gen,
mock_llm_client,
mock_api_client )
+
+
Test committing code using an LLM client.
+
+This function sets up mock objects for various components and then calls
+the `commit_code` function with specified parameters. It verifies that
+the correct mocks are created and called with the appropriate arguments.
+
+Args:
+    mock_error (MagicMock): Mock object for error handling.
+    mock_warning (MagicMock): Mock object for warning logging.
+    mock_info (MagicMock): Mock object for info logging.
+    mock_git_folder_search (MagicMock): Mock object to simulate git folder search.
+    mock_doc_gen (MagicMock): Mock object for document generation.
+    mock_llm_client (MagicMock): Mock object for LLM client interaction.
+    mock_api_client (MagicMock): Mock object for API client interaction.
+
+
+
+ +

◆ test_handle_commit()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
tests.test_commit_commands.TestCommitCommands.test_handle_commit ( self,
mock_print_info,
mock_commit_code,
mock_get_token,
mock_get_llm_config,
mock_get_jira_config )
+
+
Test the handle_commit function with various mock objects.
+
+This function sets up mocks for retrieving LLM configuration, JIRA
+configuration, and commit code. It then creates an argument object and
+calls the handle_commit function. Finally, it verifies that the mock
+functions were called with the expected arguments.
+
+Args:
+    mock_print_info (MagicMock): Mock object for printing information.
+    mock_commit_code (MagicMock): Mock object for committing code.
+    mock_get_token (MagicMock): Mock object for retrieving API token.
+    mock_get_llm_config (MagicMock): Mock object for retrieving LLM configuration.
+    mock_get_jira_config (MagicMock): Mock object for retrieving JIRA configuration.
+
+
+
+ +

◆ test_setup_commit_parser()

+ +
+
+ + + + + + + +
tests.test_commit_commands.TestCommitCommands.test_setup_commit_parser ( self)
+
+
Set up the argument parser for the commit command.
+
+This function configures an argument parser to handle various options
+for committing changes. It adds three arguments: - '-m' or '--message':
+An optional argument to specify a contextual commit message with a
+default value of "N/A". - '-e' or '--terminal': A boolean flag to open
+an edit terminal before committing. - '-d' or '--description': A boolean
+flag that, when set to False, indicates the generation of a commit
+message with title and description.
+
+Args:
+    parser (MagicMock): The argument parser to be configured.
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js new file mode 100644 index 0000000..1d00e21 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js @@ -0,0 +1,15 @@ +var classtests_1_1test__commit__commands_1_1TestCommitCommands = +[ + [ "mock_api_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a7f9beb5fdd122ed9a39dd0751934d661", null ], + [ "mock_commit_doc_gen", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4e7b42caad38d0f9162c7b490720a3b7", null ], + [ "mock_git_folder_search", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a71bfa48c9a521febb5c279cff113fbf5", null ], + [ "mock_jira_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43b8dd6adb507ef30604cd790940b881", null ], + [ "mock_llm_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af8f0277ac27f0e9d0a0e4bc6fcd77107", null ], + [ "mock_print_functions", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a65132bfab05d287af9eb380b73d332ab", null ], + [ "test_commit_code_error_handling", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a8288fd5a830273e48732231df0421658", null ], + [ "test_commit_code_with_jira_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a02319d7a366df3950c8c151dd7821a93", null ], + [ "test_commit_code_with_jira_connection_failure", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ae8066d6f07122a6be89b05ddbb5bb07b", null ], + [ "test_commit_code_with_llm_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a70225e655e0ca64868d71e3c9389a218", null ], + [ "test_handle_commit", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#adc5d95c15793c4bc698a62147aab2f7a", null ], + [ "test_setup_commit_parser", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a820f1f6ac060eb4b33903e1e8a3318fe", null ] +]; \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map new file mode 100644 index 0000000..3516f53 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 new file mode 100644 index 0000000..18b99dc --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 @@ -0,0 +1 @@ +71c96ed0780aa2849585edbd23265cd5 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg new file mode 100644 index 0000000..979fc86 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg @@ -0,0 +1,80 @@ + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands +  ++ +mock_api_client() ++ +mock_llm_client() ++ +mock_jira_client() ++ +mock_commit_doc_gen() ++ +mock_git_folder_search() ++ +mock_print_functions() ++ +test_commit_code_with +_llm_client() ++ +test_commit_code_with +_jira_client() ++ +test_commit_code_with +_jira_connection_failure() ++ +test_commit_code_error +_handling() ++ +test_setup_commit_parser() ++ +test_handle_commit() + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph_org.svg new file mode 100644 index 0000000..34b111b --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph_org.svg @@ -0,0 +1,54 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands +  ++ +mock_api_client() ++ +mock_llm_client() ++ +mock_jira_client() ++ +mock_commit_doc_gen() ++ +mock_git_folder_search() ++ +mock_print_functions() ++ +test_commit_code_with +_llm_client() ++ +test_commit_code_with +_jira_client() ++ +test_commit_code_with +_jira_connection_failure() ++ +test_commit_code_error +_handling() ++ +test_setup_commit_parser() ++ +test_handle_commit() + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html new file mode 100644 index 0000000..7b7ef75 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
tests.test_config_commands.TestConfigCommands Member List
+
+
+ +

This is the complete list of members for tests.test_config_commands.TestConfigCommands, including all inherited members.

+ + + + + + + + + + + + + +
test_get_jira_config_exists(self, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_get_llm_config_empty(self, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_get_llm_config_exists(self, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_get_llm_config_invalid_json(self, mock_print, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_get_penify_config_existing_dir(self, mock_file_open, mock_makedirs, mock_path, mock_git_folder)tests.test_config_commands.TestConfigCommands
test_get_penify_config_new_dir(self, mock_file_open, mock_makedirs, mock_path, mock_git_folder)tests.test_config_commands.TestConfigCommands
test_get_token_from_config(self, mock_file_open, mock_path, mock_getenv)tests.test_config_commands.TestConfigCommands
test_get_token_from_env(self, mock_file_open, mock_path, mock_getenv)tests.test_config_commands.TestConfigCommands
test_get_token_not_found(self, mock_file_open, mock_path, mock_getenv)tests.test_config_commands.TestConfigCommands
test_save_jira_config_success(self, mock_print, mock_json_dump, mock_file_open, mock_path)tests.test_config_commands.TestConfigCommands
test_save_llm_config_failure(self, mock_print, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
test_save_llm_config_success(self, mock_print, mock_json_dump, mock_file_open, mock_get_config)tests.test_config_commands.TestConfigCommands
+
+ + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html new file mode 100644 index 0000000..e2676cf --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html @@ -0,0 +1,718 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_config_commands.TestConfigCommands Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
tests.test_config_commands.TestConfigCommands Class Reference
+
+
+
+Collaboration diagram for tests.test_config_commands.TestConfigCommands:
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 test_get_penify_config_existing_dir (self, mock_file_open, mock_makedirs, mock_path, mock_git_folder)
 
 test_get_penify_config_new_dir (self, mock_file_open, mock_makedirs, mock_path, mock_git_folder)
 
 test_get_llm_config_exists (self, mock_file_open, mock_get_config)
 
 test_get_llm_config_empty (self, mock_file_open, mock_get_config)
 
 test_get_llm_config_invalid_json (self, mock_print, mock_file_open, mock_get_config)
 
 test_get_jira_config_exists (self, mock_file_open, mock_get_config)
 
 test_save_llm_config_success (self, mock_print, mock_json_dump, mock_file_open, mock_get_config)
 
 test_save_llm_config_failure (self, mock_print, mock_file_open, mock_get_config)
 
 test_save_jira_config_success (self, mock_print, mock_json_dump, mock_file_open, mock_path)
 
 test_get_token_from_env (self, mock_file_open, mock_path, mock_getenv)
 
 test_get_token_from_config (self, mock_file_open, mock_path, mock_getenv)
 
 test_get_token_not_found (self, mock_file_open, mock_path, mock_getenv)
 
+

Member Function Documentation

+ +

◆ test_get_jira_config_exists()

+ +
+
+ + + + + + + + + + + + + + + + +
tests.test_config_commands.TestConfigCommands.test_get_jira_config_exists ( self,
mock_file_open,
mock_get_config )
+
+
Test that get_jira_config returns the correct JIRA configuration when
+the configuration file exists.
+
+It sets up a mock for the configuration file to simulate its existence
+and verifies that the function reads from the correct file and returns
+the expected JIRA configuration dictionary. Additionally, it checks that
+the mock file open is called with the appropriate arguments.
+
+Args:
+    mock_file_open (MagicMock): A mock for the `open` function.
+    mock_get_config (MagicMock): A mock for the `get_config` function, which is expected to return a mock
+        configuration file object.
+
+Returns:
+    None: This test function does not explicitly return anything. Its assertions
+        serve as the verification of its correctness.
+
+
+
+ +

◆ test_get_llm_config_empty()

+ +
+
+ + + + + + + + + + + + + + + + +
tests.test_config_commands.TestConfigCommands.test_get_llm_config_empty ( self,
mock_file_open,
mock_get_config )
+
+
Test the behavior of get_llm_config when called with an empty
+configuration file.
+
+This function sets up a mock configuration file that exists but returns
+no content. It then calls the `get_llm_config` function and asserts that
+it returns an empty dictionary and that the file open method was called
+exactly once with the correct arguments.
+
+Args:
+    mock_file_open (MagicMock): A MagicMock object simulating the built-in open function.
+    mock_get_config (MagicMock): A MagicMock object simulating the get_config function.
+
+
+
+ +

◆ test_get_llm_config_exists()

+ +
+
+ + + + + + + + + + + + + + + + +
tests.test_config_commands.TestConfigCommands.test_get_llm_config_exists ( self,
mock_file_open,
mock_get_config )
+
+
Test the get_llm_config function when the configuration file exists.
+
+This function sets up a mock configuration file that exists and returns
+it when called. It then calls the get_llm_config function and asserts
+that it returns the correct configuration dictionary. Additionally, it
+checks that the mock_file_open function was called with the correct
+arguments.
+
+Args:
+    mock_file_open (MagicMock): A mock for the open() function.
+    mock_get_config (MagicMock): A mock for the get_config() function.
+
+
+
+ +

◆ test_get_llm_config_invalid_json()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
tests.test_config_commands.TestConfigCommands.test_get_llm_config_invalid_json ( self,
mock_print,
mock_file_open,
mock_get_config )
+
+
Test function to verify the behavior of get_llm_config when reading an
+invalid JSON file.
+
+It sets up a mock configuration file that exists but contains invalid
+JSON. The function is expected to handle this gracefully by printing an
+error message and returning an empty dictionary.
+
+Args:
+    mock_print (MagicMock): Mock for the print function.
+    mock_file_open (MagicMock): Mock for the open function.
+    mock_get_config (MagicMock): Mock for the get_config function, which returns the mock configuration
+        file.
+
+
+
+ +

◆ test_get_penify_config_existing_dir()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
tests.test_config_commands.TestConfigCommands.test_get_penify_config_existing_dir ( self,
mock_file_open,
mock_makedirs,
mock_path,
mock_git_folder )
+
+
Test the get_penify_config function when the .penify config directory
+exists.
+
+It should not create a new directory and assert that all mocked
+functions were called correctly.
+
+Args:
+    mock_file_open (MagicMock): A MagicMock object simulating the open() function.
+    mock_makedirs (MagicMock): A MagicMock object simulating the os.makedirs() function.
+    mock_path (MagicMock): A MagicMock object simulating the Path class from pathlib module.
+    mock_git_folder (MagicMock): A MagicMock object simulating the git_folder_search() function.
+
+
+
+ +

◆ test_get_penify_config_new_dir()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
tests.test_config_commands.TestConfigCommands.test_get_penify_config_new_dir ( self,
mock_file_open,
mock_makedirs,
mock_path,
mock_git_folder )
+
+
Test the behavior of get_penify_config when the .penify directory does
+not exist.
+
+This function mocks various system calls to simulate a scenario where
+the .penify directory is not present. It then asserts that the
+appropriate actions are taken to create the directory and write an empty
+JSON file.
+
+Args:
+    mock_file_open (MagicMock): A MagicMock object simulating the `open` function.
+    mock_makedirs (MagicMock): A MagicMock object simulating the `os.makedirs` function.
+    mock_path (MagicMock): A MagicMock object simulating the `Path` class from `pathlib`.
+    mock_git_folder (MagicMock): A MagicMock object simulating a git folder search function.
+
+
+
+ +

◆ test_get_token_from_config()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
tests.test_config_commands.TestConfigCommands.test_get_token_from_config ( self,
mock_file_open,
mock_path,
mock_getenv )
+
+
Test retrieving a token from the configuration.
+
+This function sets up mocks for environment variables and configuration
+files, calls the `get_token` function, and asserts its behavior. It
+verifies that when the environment variable is not found, the function
+reads a token from a configuration file located in the user's home
+directory.
+
+Args:
+    mock_file_open (MagicMock): A mock for the `open` function.
+    mock_path (MagicMock): A mock for the `pathlib.Path` class.
+    mock_getenv (MagicMock): A mock for the `os.getenv` function.
+
+
+
+ +

◆ test_get_token_from_env()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
tests.test_config_commands.TestConfigCommands.test_get_token_from_env ( self,
mock_file_open,
mock_path,
mock_getenv )
+
+
Test retrieving a token from the environment variable.
+
+This function tests the behavior of `get_token` when an environment
+variable is set. It verifies that if the 'PENIFY_API_TOKEN' environment
+variable exists, the function returns its value without attempting to
+read a file.
+
+Args:
+    mock_file_open (MagicMock): A MagicMock object for simulating file operations.
+    mock_path (MagicMock): A MagicMock object for simulating path operations.
+    mock_getenv (MagicMock): A MagicMock object for simulating environment variable retrieval.
+
+
+
+ +

◆ test_get_token_not_found()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
tests.test_config_commands.TestConfigCommands.test_get_token_not_found ( self,
mock_file_open,
mock_path,
mock_getenv )
+
+
Test the get_token function when the API token environment variable is
+not found.
+
+This function tests the scenario where the `PENIFY_API_TOKEN`
+environment variable is not set. It mocks the environment variable to
+return `None`, and verifies that the function returns `None`. The test
+also checks that the environment variable is accessed once and that a
+file open operation is attempted on a configuration file located in the
+user's home directory.
+
+Args:
+    mock_file_open (MagicMock): Mock for the built-in `open` function.
+    mock_path (MagicMock): Mock for the `pathlib.Path` module.
+    mock_getenv (MagicMock): Mock for the `os.getenv` function.
+
+Returns:
+    None: The function does not return anything; it asserts conditions to verify
+        correctness.
+
+
+
+ +

◆ test_save_jira_config_success()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
tests.test_config_commands.TestConfigCommands.test_save_jira_config_success ( self,
mock_print,
mock_json_dump,
mock_file_open,
mock_path )
+
+
Test the save_jira_config function to ensure it saves JIRA configuration
+successfully.
+
+This function sets up mocks for various dependencies and tests the
+functionality of saving a JIRA configuration. It asserts that the
+function returns `True`, the JSON dump is called with the correct
+configuration, and the print statement contains the expected message.
+
+Args:
+    mock_print (MagicMock): Mock for the print function.
+    mock_json_dump (MagicMock): Mock for the json.dump function.
+    mock_file_open (MagicMock): Mock for the open function.
+    mock_path (MagicMock): Mock for the path module.
+
+
+
+ +

◆ test_save_llm_config_failure()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
tests.test_config_commands.TestConfigCommands.test_save_llm_config_failure ( self,
mock_print,
mock_file_open,
mock_get_config )
+
+
Test function to verify that the save_llm_config function returns False
+and prints an error message when it fails to save the LLM configuration
+due to a permission error.
+
+It sets up a mock configuration file that exists and calls the
+save_llm_config function with valid parameters. The function is expected
+to return False and print "Error saving LLM configuration: Permission
+denied" in case of a failure.
+
+Args:
+    self (TestLLMConfig): An instance of the test class.
+    mock_print (MagicMock): A MagicMock object representing the print function, which will be used
+        to assert that it was called with the expected error message.
+    mock_file_open (MagicMock): A MagicMock object representing the open function, which is not used in
+        this test but is included as a parameter for completeness.
+    mock_get_config (MagicMock): A MagicMock object representing the get_config function, which will be
+        used to return the mock configuration file.
+
+
+
+ +

◆ test_save_llm_config_success()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
tests.test_config_commands.TestConfigCommands.test_save_llm_config_success ( self,
mock_print,
mock_json_dump,
mock_file_open,
mock_get_config )
+
+
Test the save_llm_config function successfully.
+
+This function tests that the save_llm_config function correctly saves an
+LLM configuration and handles various mock objects and side effects. It
+ensures that the function returns True upon successful execution, writes
+the expected configuration to a file, and prints a confirmation message.
+
+Args:
+    mock_print (MagicMock): A mock object for the print function.
+    mock_json_dump (MagicMock): A mock object for json.dump.
+    mock_file_open (MagicMock): A mock object for file opening.
+    mock_get_config (MagicMock): A mock object to return a configuration file mock.
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js new file mode 100644 index 0000000..1f30423 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js @@ -0,0 +1,15 @@ +var classtests_1_1test__config__commands_1_1TestConfigCommands = +[ + [ "test_get_jira_config_exists", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a153e6f218be2f42581be6895a14a4e85", null ], + [ "test_get_llm_config_empty", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a29cdcf995761e77c9ff8c93e49eff541", null ], + [ "test_get_llm_config_exists", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd6ebd022b24b111df7cabdab4e1b6db", null ], + [ "test_get_llm_config_invalid_json", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a06d58f1b9188f2486f7e424aea40d0bd", null ], + [ "test_get_penify_config_existing_dir", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#ae9c0ef56734f17892b7ac115e488bac4", null ], + [ "test_get_penify_config_new_dir", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a335a57c003a8d797a5457c4d1c60420e", null ], + [ "test_get_token_from_config", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#ac2890b010d859d53629d9bea6a72b9c0", null ], + [ "test_get_token_from_env", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#af30db6b96dcf9e6143d6a8f5241f5be1", null ], + [ "test_get_token_not_found", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a1548cea068b4305d5a1d3ad5fb1bc25a", null ], + [ "test_save_jira_config_success", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a060996b8323f4cfd629c77b4e2605f50", null ], + [ "test_save_llm_config_failure", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2ccb8ee5c161fcf49a04404a1658100b", null ], + [ "test_save_llm_config_success", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2411d025a057beb8a2f2a6431559e64f", null ] +]; \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map new file mode 100644 index 0000000..147384e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 new file mode 100644 index 0000000..6d969f9 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 @@ -0,0 +1 @@ +43afd25a19ba833341fc30c910e840f8 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg new file mode 100644 index 0000000..57cb02f --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands + + +Node1 + + +tests.test_config_commands. +TestConfigCommands +  ++ +test_get_penify_config +_existing_dir() ++ +test_get_penify_config +_new_dir() ++ +test_get_llm_config +_exists() ++ +test_get_llm_config +_empty() ++ +test_get_llm_config +_invalid_json() ++ +test_get_jira_config +_exists() ++ +test_save_llm_config +_success() ++ +test_save_llm_config +_failure() ++ +test_save_jira_config +_success() ++ +test_get_token_from +_env() ++ +test_get_token_from +_config() ++ +test_get_token_not +_found() + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph_org.svg new file mode 100644 index 0000000..db1925c --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands + + +Node1 + + +tests.test_config_commands. +TestConfigCommands +  ++ +test_get_penify_config +_existing_dir() ++ +test_get_penify_config +_new_dir() ++ +test_get_llm_config +_exists() ++ +test_get_llm_config +_empty() ++ +test_get_llm_config +_invalid_json() ++ +test_get_jira_config +_exists() ++ +test_save_llm_config +_success() ++ +test_save_llm_config +_failure() ++ +test_save_jira_config +_success() ++ +test_get_token_from +_env() ++ +test_get_token_from +_config() ++ +test_get_token_not +_found() + + + + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html new file mode 100644 index 0000000..9403d6c --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
tests.test_web_config.TestWebConfig Member List
+
+
+ +

This is the complete list of members for tests.test_web_config.TestWebConfig, including all inherited members.

+ + + +
test_config_jira_web_server_setup(self, mock_resource_filename, mock_server, mock_webbrowser)tests.test_web_config.TestWebConfig
test_config_llm_web_server_setup(self, mock_resource_filename, mock_server, mock_webbrowser)tests.test_web_config.TestWebConfig
+
+ + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html new file mode 100644 index 0000000..a1d6a25 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html @@ -0,0 +1,251 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_web_config.TestWebConfig Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
tests.test_web_config.TestWebConfig Class Reference
+
+
+
+Collaboration diagram for tests.test_web_config.TestWebConfig:
+
+
+
+ + + + + + +

+Public Member Functions

 test_config_llm_web_server_setup (self, mock_resource_filename, mock_server, mock_webbrowser)
 
 test_config_jira_web_server_setup (self, mock_resource_filename, mock_server, mock_webbrowser)
 
+

Member Function Documentation

+ +

◆ test_config_jira_web_server_setup()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
tests.test_web_config.TestWebConfig.test_config_jira_web_server_setup ( self,
mock_resource_filename,
mock_server,
mock_webbrowser )
+
+
Test the configuration and setup of a JIRA web server.
+
+This function tests the entire process of setting up a JIRA web server,
+including mocking necessary resources, configuring the server to shut
+down after handling one request, and verifying that the web browser is
+opened with the correct URL. The function uses several mocks to simulate
+external dependencies such as resource files, servers, and web browsers.
+
+Args:
+    mock_resource_filename (MagicMock): A MagicMock object for simulating the `resource_filename` function.
+    mock_server (MagicMock): A MagicMock object for simulating the server setup.
+    mock_webbrowser (MagicMock): A MagicMock object for simulating the web browser opening.
+
+
+
+ +

◆ test_config_llm_web_server_setup()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + +
tests.test_web_config.TestWebConfig.test_config_llm_web_server_setup ( self,
mock_resource_filename,
mock_server,
mock_webbrowser )
+
+
Set up and test the web server configuration for an LLM (Large Language
+Model) web interface.
+
+This function configures a mock web server for testing purposes,
+including setting up resource filenames, mocking server behavior, and
+verifying that the web browser is opened and the server starts
+correctly. The function uses various mocks to simulate external
+dependencies such as `resource_filename` and `server`.
+
+Args:
+    mock_resource_filename (MagicMock): A MagicMock object simulating the `resource_filename` function.
+    mock_server (MagicMock): A MagicMock object simulating the context manager for the web server.
+    mock_webbrowser (MagicMock): A MagicMock object simulating the `webbrowser` module.
+
+
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js new file mode 100644 index 0000000..10f3ae1 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js @@ -0,0 +1,5 @@ +var classtests_1_1test__web__config_1_1TestWebConfig = +[ + [ "test_config_jira_web_server_setup", "classtests_1_1test__web__config_1_1TestWebConfig.html#a63789aa9bfafe1a16b1f462174c53f6b", null ], + [ "test_config_llm_web_server_setup", "classtests_1_1test__web__config_1_1TestWebConfig.html#a881cb29c7d44f302fb961f496a20776d", null ] +]; \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map new file mode 100644 index 0000000..5debbc3 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 new file mode 100644 index 0000000..f63151a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 @@ -0,0 +1 @@ +99b279c5b453f20fef555416a5139c9b \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg new file mode 100644 index 0000000..b623549 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg @@ -0,0 +1,58 @@ + + + + + + + + + + + + +tests.test_web_config.TestWebConfig + + +Node1 + + +tests.test_web_config.Test +WebConfig +  ++ +test_config_llm_web +_server_setup() ++ +test_config_jira_web +_server_setup() + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph_org.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph_org.svg new file mode 100644 index 0000000..dab4d66 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph_org.svg @@ -0,0 +1,32 @@ + + + + + + +tests.test_web_config.TestWebConfig + + +Node1 + + +tests.test_web_config.Test +WebConfig +  ++ +test_config_llm_web +_server_setup() ++ +test_config_jira_web +_server_setup() + + + + + + + + diff --git a/docs/html/clipboard.js b/docs/html/clipboard.js new file mode 100644 index 0000000..9da9f3c --- /dev/null +++ b/docs/html/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +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. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/docs/html/closed.png b/docs/html/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/docs/html/closed.png differ diff --git a/docs/html/commit-commands_8md.html b/docs/html/commit-commands_8md.html new file mode 100644 index 0000000..c8e2871 --- /dev/null +++ b/docs/html/commit-commands_8md.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs/commit-commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs/commit-commands.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/commit__analyzer_8py.html b/docs/html/commit__analyzer_8py.html new file mode 100644 index 0000000..d351ad6 --- /dev/null +++ b/docs/html/commit__analyzer_8py.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/commit_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
commit_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.commit_analyzer.CommitDocGenHook
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commit_analyzer
 
+
+
+ + + + + diff --git a/docs/html/commit__analyzer_8py.js b/docs/html/commit__analyzer_8py.js new file mode 100644 index 0000000..d7c51ca --- /dev/null +++ b/docs/html/commit__analyzer_8py.js @@ -0,0 +1,4 @@ +var commit__analyzer_8py = +[ + [ "penify_hook.commit_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/commit__commands_8py.html b/docs/html/commit__commands_8py.html new file mode 100644 index 0000000..9287fc4 --- /dev/null +++ b/docs/html/commit__commands_8py.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/commands/commit_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
commit_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.commit_commands
 
+ + + + + + + +

+Functions

 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)
 
 penify_hook.commands.commit_commands.setup_commit_parser (parser)
 
 penify_hook.commands.commit_commands.handle_commit (args)
 
+
+
+ + + + + diff --git a/docs/html/commit__commands_8py.js b/docs/html/commit__commands_8py.js new file mode 100644 index 0000000..e63b07e --- /dev/null +++ b/docs/html/commit__commands_8py.js @@ -0,0 +1,6 @@ +var commit__commands_8py = +[ + [ "penify_hook.commands.commit_commands.commit_code", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a4360ebdd6821c714f9db99f8d447c1b6", null ], + [ "penify_hook.commands.commit_commands.handle_commit", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a7a856c3961f5f8914e58485644572076", null ], + [ "penify_hook.commands.commit_commands.setup_commit_parser", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a80d37e58f2dc4356ed99a54ac75b1db1", null ] +]; \ No newline at end of file diff --git a/docs/html/config-commands_8md.html b/docs/html/config-commands_8md.html new file mode 100644 index 0000000..b5a5aa7 --- /dev/null +++ b/docs/html/config-commands_8md.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs/config-commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs/config-commands.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/config__command_8py.html b/docs/html/config__command_8py.html new file mode 100644 index 0000000..8086f81 --- /dev/null +++ b/docs/html/config__command_8py.html @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/config_command.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
config_command.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.config_command
 
+ + + + + +

+Functions

 penify_hook.config_command.setup_config_parser (parent_parser)
 
 penify_hook.config_command.handle_config (args)
 
+
+
+ + + + + diff --git a/docs/html/config__command_8py.js b/docs/html/config__command_8py.js new file mode 100644 index 0000000..41554a2 --- /dev/null +++ b/docs/html/config__command_8py.js @@ -0,0 +1,5 @@ +var config__command_8py = +[ + [ "penify_hook.config_command.handle_config", "namespacepenify__hook_1_1config__command.html#aed769bb2e478b09003696b616edd04c5", null ], + [ "penify_hook.config_command.setup_config_parser", "namespacepenify__hook_1_1config__command.html#ad711074006b3c5d4a1cc73ef38dcf0ba", null ] +]; \ No newline at end of file diff --git a/docs/html/config__commands_8py.html b/docs/html/config__commands_8py.html new file mode 100644 index 0000000..0d2a715 --- /dev/null +++ b/docs/html/config__commands_8py.html @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/commands/config_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
config_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.config_commands
 
+ + + + + + + + + + + + + + + + + + + + + +

+Functions

None penify_hook.commands.config_commands.load_env_files ()
 
Path penify_hook.commands.config_commands.get_penify_config ()
 
Any penify_hook.commands.config_commands.get_env_var_or_default (str env_var, Any default=None)
 
 penify_hook.commands.config_commands.save_llm_config (model, api_base, api_key)
 
 penify_hook.commands.config_commands.save_jira_config (url, username, api_token)
 
Dict[str, str] penify_hook.commands.config_commands.get_llm_config ()
 
Dict[str, str] penify_hook.commands.config_commands.get_jira_config ()
 
 penify_hook.commands.config_commands.config_llm_web ()
 
 penify_hook.commands.config_commands.config_jira_web ()
 
Optional[str] penify_hook.commands.config_commands.get_token ()
 
+ + + + + +

+Variables

bool penify_hook.commands.config_commands.DOTENV_AVAILABLE = True
 
str penify_hook.commands.config_commands.path = "/":
 
+
+
+ + + + + diff --git a/docs/html/config__commands_8py.js b/docs/html/config__commands_8py.js new file mode 100644 index 0000000..24e7120 --- /dev/null +++ b/docs/html/config__commands_8py.js @@ -0,0 +1,15 @@ +var config__commands_8py = +[ + [ "penify_hook.commands.config_commands.config_jira_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#ad64a80de6cfdbed6d5d2fe582902bf13", null ], + [ "penify_hook.commands.config_commands.config_llm_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#a1fc3edef1f016d4cfd3b116602ceda62", null ], + [ "penify_hook.commands.config_commands.get_env_var_or_default", "namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87", null ], + [ "penify_hook.commands.config_commands.get_jira_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2", null ], + [ "penify_hook.commands.config_commands.get_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0", null ], + [ "penify_hook.commands.config_commands.get_penify_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20", null ], + [ "penify_hook.commands.config_commands.get_token", "namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812", null ], + [ "penify_hook.commands.config_commands.load_env_files", "namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae", null ], + [ "penify_hook.commands.config_commands.save_jira_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a0459710e44183890121dc3013cb6f374", null ], + [ "penify_hook.commands.config_commands.save_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#ab24827423ec7e9a71a03639fb16e4cd4", null ], + [ "penify_hook.commands.config_commands.DOTENV_AVAILABLE", "namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67", null ], + [ "penify_hook.commands.config_commands.path", "namespacepenify__hook_1_1commands_1_1config__commands.html#a79fceaf7882b9bcf1075a24262c5d7e2", null ] +]; \ No newline at end of file diff --git a/docs/html/conftest_8py.html b/docs/html/conftest_8py.html new file mode 100644 index 0000000..e149847 --- /dev/null +++ b/docs/html/conftest_8py.html @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/tests/conftest.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
conftest.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  tests
 
namespace  tests.conftest
 
+
+
+ + + + + diff --git a/docs/html/constants_8py.html b/docs/html/constants_8py.html new file mode 100644 index 0000000..866bb11 --- /dev/null +++ b/docs/html/constants_8py.html @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/constants.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
constants.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.constants
 
+ + + + + +

+Variables

str penify_hook.constants.API_URL = 'http://localhost:8000/api'
 
str penify_hook.constants.DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
 
+
+
+ + + + + diff --git a/docs/html/constants_8py.js b/docs/html/constants_8py.js new file mode 100644 index 0000000..f38739d --- /dev/null +++ b/docs/html/constants_8py.js @@ -0,0 +1,5 @@ +var constants_8py = +[ + [ "penify_hook.constants.API_URL", "namespacepenify__hook_1_1constants.html#a846767f047a1319005bc95395330ab34", null ], + [ "penify_hook.constants.DASHBOARD_URL", "namespacepenify__hook_1_1constants.html#ae4a03ab3b19d60436c72484b313079c8", null ] +]; \ No newline at end of file diff --git a/docs/html/cookie.js b/docs/html/cookie.js new file mode 100644 index 0000000..53ad21d --- /dev/null +++ b/docs/html/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/docs/html/detailed-usage_8md.html b/docs/html/detailed-usage_8md.html new file mode 100644 index 0000000..5a60cf9 --- /dev/null +++ b/docs/html/detailed-usage_8md.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs/detailed-usage.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs/detailed-usage.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html new file mode 100644 index 0000000..b55bf9c --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/tests Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
tests Directory Reference
+
+
+
+Directory dependency graph for tests:
+
+
+
+ + + + + + + + + + + + + + +

+Files

 __init__.py
 
 conftest.py
 
 test_commit_commands.py
 
 test_config_commands.py
 
 test_doc_commands.py
 
 test_web_config.py
 
+
+
+ + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js new file mode 100644 index 0000000..176f804 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js @@ -0,0 +1,9 @@ +var dir_063e2d5fe58a131099a7fe4200cca78c = +[ + [ "__init__.py", "tests_2____init_____8py.html", null ], + [ "conftest.py", "conftest_8py.html", null ], + [ "test_commit_commands.py", "test__commit__commands_8py.html", "test__commit__commands_8py" ], + [ "test_config_commands.py", "test__config__commands_8py.html", "test__config__commands_8py" ], + [ "test_doc_commands.py", "test__doc__commands_8py.html", "test__doc__commands_8py" ], + [ "test_web_config.py", "test__web__config_8py.html", "test__web__config_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map new file mode 100644 index 0000000..166f772 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 new file mode 100644 index 0000000..7f5e588 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 @@ -0,0 +1 @@ +3fb24d19583edf6a05bd511233ba1a61 \ No newline at end of file diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg new file mode 100644 index 0000000..002099e --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + +/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/tests + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + + +dir_063e2d5fe58a131099a7fe4200cca78c + + +tests + + + + + + + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep_org.svg b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep_org.svg new file mode 100644 index 0000000..cf04bae --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep_org.svg @@ -0,0 +1,29 @@ + + + + + + +/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/tests + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + + +dir_063e2d5fe58a131099a7fe4200cca78c + + +tests + + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623.html b/docs/html/dir_1648a057408aae8db85b8e3797335623.html new file mode 100644 index 0000000..cd434fe --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
docs Directory Reference
+
+
+
+Directory dependency graph for docs:
+
+
+
+
+
+ + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map new file mode 100644 index 0000000..4578f4b --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 new file mode 100644 index 0000000..cb71a35 --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 @@ -0,0 +1 @@ +61882bb30c8438a03cf0f2a62ae26682 \ No newline at end of file diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg new file mode 100644 index 0000000..db00c5c --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + +/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + + +dir_1648a057408aae8db85b8e3797335623 + + +docs + + + + + + + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep_org.svg b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep_org.svg new file mode 100644 index 0000000..ed47a20 --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep_org.svg @@ -0,0 +1,29 @@ + + + + + + +/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + + +dir_1648a057408aae8db85b8e3797335623 + + +docs + + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html new file mode 100644 index 0000000..f36d40d --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/commands Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
commands Directory Reference
+
+
+
+Directory dependency graph for commands:
+
+
+
+ + + + + + + + + + + + + + +

+Files

 __init__.py
 
 auth_commands.py
 
 commit_commands.py
 
 config_commands.py
 
 doc_commands.py
 
 hook_commands.py
 
+
+
+ + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js new file mode 100644 index 0000000..94925e7 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js @@ -0,0 +1,9 @@ +var dir_624fa2a8bce97f0444ac5cca335d4e23 = +[ + [ "__init__.py", "penify__hook_2commands_2____init_____8py.html", null ], + [ "auth_commands.py", "auth__commands_8py.html", "auth__commands_8py" ], + [ "commit_commands.py", "commit__commands_8py.html", "commit__commands_8py" ], + [ "config_commands.py", "config__commands_8py.html", "config__commands_8py" ], + [ "doc_commands.py", "doc__commands_8py.html", "doc__commands_8py" ], + [ "hook_commands.py", "hook__commands_8py.html", "hook__commands_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map new file mode 100644 index 0000000..9ad4b43 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 new file mode 100644 index 0000000..2cebf96 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 @@ -0,0 +1 @@ +41a294ab55fcdda342b177a7d632b623 \ No newline at end of file diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg new file mode 100644 index 0000000..c5bc6ee --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg @@ -0,0 +1,55 @@ + + + + + + + + + + + + +/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/commands + +clusterdir_f88c3381c1861b3f7ca1f3d63cf244b5 + + +penify_hook + + + + + +dir_624fa2a8bce97f0444ac5cca335d4e23 + + +commands + + + + + + + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep_org.svg b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep_org.svg new file mode 100644 index 0000000..2cacf57 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep_org.svg @@ -0,0 +1,29 @@ + + + + + + +/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/commands + +clusterdir_f88c3381c1861b3f7ca1f3d63cf244b5 + + +penify_hook + + + + + +dir_624fa2a8bce97f0444ac5cca335d4e23 + + +commands + + + + + diff --git a/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html new file mode 100644 index 0000000..4474a6b --- /dev/null +++ b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify-cli Directory Reference
+
+
+ + + + + + + + +

+Directories

 docs
 
 penify_hook
 
 tests
 
+ + + +

+Files

 setup.py
 
+

Detailed Description

+

Tests Coverage

+

A CLI tool to generate smart commit messages, code documentation, and more.

+

+Features

+ +

+Installation

+

Install from PyPI:

+
pip install penify
+

+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:

+

+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:

+
penify login
+

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:

+

+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:

+

+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:

+
    +
  1. Clone the repository:
    git clone https://github.com/SingularityX-ai/penify-cli.git
    +
  2. +
  3. Install the package in editable mode:
    pip install -e .
    +
  4. +
+

+Running Tests

+
pytest
+

+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/dir_b3b22d2ab7966b65f6b237e3231b41be.js b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js new file mode 100644 index 0000000..f7aa196 --- /dev/null +++ b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js @@ -0,0 +1,7 @@ +var dir_b3b22d2ab7966b65f6b237e3231b41be = +[ + [ "docs", "dir_1648a057408aae8db85b8e3797335623.html", null ], + [ "penify_hook", "dir_f88c3381c1861b3f7ca1f3d63cf244b5.html", "dir_f88c3381c1861b3f7ca1f3d63cf244b5" ], + [ "tests", "dir_063e2d5fe58a131099a7fe4200cca78c.html", "dir_063e2d5fe58a131099a7fe4200cca78c" ], + [ "setup.py", "setup_8py.html", "setup_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html new file mode 100644 index 0000000..29539a2 --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify_hook Directory Reference
+
+
+
+Directory dependency graph for penify_hook:
+
+
+
+ + + + +

+Directories

 commands
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

 __init__.py
 
 api_client.py
 
 base_analyzer.py
 
 commit_analyzer.py
 
 config_command.py
 
 constants.py
 
 file_analyzer.py
 
 folder_analyzer.py
 
 git_analyzer.py
 
 jira_client.py
 
 llm_client.py
 
 login_command.py
 
 main.py
 
 ui_utils.py
 
 utils.py
 
+
+
+ + + + + diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.js b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.js new file mode 100644 index 0000000..1be563a --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.js @@ -0,0 +1,19 @@ +var dir_f88c3381c1861b3f7ca1f3d63cf244b5 = +[ + [ "commands", "dir_624fa2a8bce97f0444ac5cca335d4e23.html", "dir_624fa2a8bce97f0444ac5cca335d4e23" ], + [ "__init__.py", "penify__hook_2____init_____8py.html", null ], + [ "api_client.py", "api__client_8py.html", "api__client_8py" ], + [ "base_analyzer.py", "base__analyzer_8py.html", "base__analyzer_8py" ], + [ "commit_analyzer.py", "commit__analyzer_8py.html", "commit__analyzer_8py" ], + [ "config_command.py", "config__command_8py.html", "config__command_8py" ], + [ "constants.py", "constants_8py.html", "constants_8py" ], + [ "file_analyzer.py", "file__analyzer_8py.html", "file__analyzer_8py" ], + [ "folder_analyzer.py", "folder__analyzer_8py.html", "folder__analyzer_8py" ], + [ "git_analyzer.py", "git__analyzer_8py.html", "git__analyzer_8py" ], + [ "jira_client.py", "jira__client_8py.html", "jira__client_8py" ], + [ "llm_client.py", "llm__client_8py.html", "llm__client_8py" ], + [ "login_command.py", "login__command_8py.html", "login__command_8py" ], + [ "main.py", "main_8py.html", "main_8py" ], + [ "ui_utils.py", "ui__utils_8py.html", "ui__utils_8py" ], + [ "utils.py", "utils_8py.html", "utils_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map new file mode 100644 index 0000000..fe220c5 --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 new file mode 100644 index 0000000..d0041bc --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 @@ -0,0 +1 @@ +bc85087cd42eec3bd3238e7d044ae1bb \ No newline at end of file diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg new file mode 100644 index 0000000..b797414 --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + +clusterdir_f88c3381c1861b3f7ca1f3d63cf244b5 + + + + + + + +dir_f88c3381c1861b3f7ca1f3d63cf244b5 +penify_hook + + + +dir_624fa2a8bce97f0444ac5cca335d4e23 + + +commands + + + + + + + + + + diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep_org.svg b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep_org.svg new file mode 100644 index 0000000..2026e9f --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep_org.svg @@ -0,0 +1,41 @@ + + + + + + +/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + +clusterdir_f88c3381c1861b3f7ca1f3d63cf244b5 + + + + + + + +dir_f88c3381c1861b3f7ca1f3d63cf244b5 +penify_hook + + + +dir_624fa2a8bce97f0444ac5cca335d4e23 + + +commands + + + + + diff --git a/docs/html/doc.svg b/docs/html/doc.svg new file mode 100644 index 0000000..0b928a5 --- /dev/null +++ b/docs/html/doc.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/html/doc__commands_8md.html b/docs/html/doc__commands_8md.html new file mode 100644 index 0000000..b298725 --- /dev/null +++ b/docs/html/doc__commands_8md.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs/doc_commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs/doc_commands.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/doc__commands_8py.html b/docs/html/doc__commands_8py.html new file mode 100644 index 0000000..9221684 --- /dev/null +++ b/docs/html/doc__commands_8py.html @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/commands/doc_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
doc_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.doc_commands
 
+ + + + + + + +

+Functions

 penify_hook.commands.doc_commands.generate_doc (api_url, token, location=None)
 
 penify_hook.commands.doc_commands.setup_docgen_parser (parser)
 
 penify_hook.commands.doc_commands.handle_docgen (args)
 
+ + + +

+Variables

str penify_hook.commands.doc_commands.docgen_description
 
+
+
+ + + + + diff --git a/docs/html/doc__commands_8py.js b/docs/html/doc__commands_8py.js new file mode 100644 index 0000000..4767b3a --- /dev/null +++ b/docs/html/doc__commands_8py.js @@ -0,0 +1,7 @@ +var doc__commands_8py = +[ + [ "penify_hook.commands.doc_commands.generate_doc", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a0db2cb8c0446d85dc4e7d34b3929dad7", null ], + [ "penify_hook.commands.doc_commands.handle_docgen", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a41d631e51b0533b7d8dc780eea52e1cc", null ], + [ "penify_hook.commands.doc_commands.setup_docgen_parser", "namespacepenify__hook_1_1commands_1_1doc__commands.html#abf64cb941e49af02798f5ff1b56139c6", null ], + [ "penify_hook.commands.doc_commands.docgen_description", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a6dd45546559198f9f79caccd030d3588", null ] +]; \ No newline at end of file diff --git a/docs/html/docd.svg b/docs/html/docd.svg new file mode 100644 index 0000000..ac18b27 --- /dev/null +++ b/docs/html/docd.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/html/doxygen-awesome-darkmode-toggle.js b/docs/html/doxygen-awesome-darkmode-toggle.js new file mode 100644 index 0000000..40fe2d3 --- /dev/null +++ b/docs/html/doxygen-awesome-darkmode-toggle.js @@ -0,0 +1,157 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +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. + +*/ + +class DoxygenAwesomeDarkModeToggle extends HTMLElement { + // SVG icons from https://fonts.google.com/icons + // Licensed under the Apache 2.0 license: + // https://www.apache.org/licenses/LICENSE-2.0.html + static lightModeIcon = `` + static darkModeIcon = `` + static title = "Toggle Light/Dark Mode" + + static prefersLightModeInDarkModeKey = "prefers-light-mode-in-dark-mode" + static prefersDarkModeInLightModeKey = "prefers-dark-mode-in-light-mode" + + static _staticConstructor = function() { + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.userPreference) + // Update the color scheme when the browsers preference changes + // without user interaction on the website. + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged() + }) + // Update the color scheme when the tab is made visible again. + // It is possible that the appearance was changed in another tab + // while this tab was in the background. + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + DoxygenAwesomeDarkModeToggle.onSystemPreferenceChanged() + } + }); + }() + + static init() { + $(function() { + $(document).ready(function() { + const toggleButton = document.createElement('doxygen-awesome-dark-mode-toggle') + toggleButton.title = DoxygenAwesomeDarkModeToggle.title + toggleButton.updateIcon() + + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + toggleButton.updateIcon() + }) + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + toggleButton.updateIcon() + } + }); + + $(document).ready(function(){ + document.getElementById("MSearchBox").parentNode.appendChild(toggleButton) + }) + $(window).resize(function(){ + document.getElementById("MSearchBox").parentNode.appendChild(toggleButton) + }) + }) + }) + } + + constructor() { + super(); + this.onclick=this.toggleDarkMode + } + + /** + * @returns `true` for dark-mode, `false` for light-mode system preference + */ + static get systemPreference() { + return window.matchMedia('(prefers-color-scheme: dark)').matches + } + + /** + * @returns `true` for dark-mode, `false` for light-mode user preference + */ + static get userPreference() { + return (!DoxygenAwesomeDarkModeToggle.systemPreference && localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey)) || + (DoxygenAwesomeDarkModeToggle.systemPreference && !localStorage.getItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey)) + } + + static set userPreference(userPreference) { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = userPreference + if(!userPreference) { + if(DoxygenAwesomeDarkModeToggle.systemPreference) { + localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey, true) + } else { + localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey) + } + } else { + if(!DoxygenAwesomeDarkModeToggle.systemPreference) { + localStorage.setItem(DoxygenAwesomeDarkModeToggle.prefersDarkModeInLightModeKey, true) + } else { + localStorage.removeItem(DoxygenAwesomeDarkModeToggle.prefersLightModeInDarkModeKey) + } + } + DoxygenAwesomeDarkModeToggle.onUserPreferenceChanged() + } + + static enableDarkMode(enable) { + if(enable) { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = true + document.documentElement.classList.add("dark-mode") + document.documentElement.classList.remove("light-mode") + } else { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = false + document.documentElement.classList.remove("dark-mode") + document.documentElement.classList.add("light-mode") + } + } + + static onSystemPreferenceChanged() { + DoxygenAwesomeDarkModeToggle.darkModeEnabled = DoxygenAwesomeDarkModeToggle.userPreference + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled) + } + + static onUserPreferenceChanged() { + DoxygenAwesomeDarkModeToggle.enableDarkMode(DoxygenAwesomeDarkModeToggle.darkModeEnabled) + } + + toggleDarkMode() { + DoxygenAwesomeDarkModeToggle.userPreference = !DoxygenAwesomeDarkModeToggle.userPreference + this.updateIcon() + } + + updateIcon() { + if(DoxygenAwesomeDarkModeToggle.darkModeEnabled) { + this.innerHTML = DoxygenAwesomeDarkModeToggle.darkModeIcon + } else { + this.innerHTML = DoxygenAwesomeDarkModeToggle.lightModeIcon + } + } +} + +customElements.define("doxygen-awesome-dark-mode-toggle", DoxygenAwesomeDarkModeToggle); diff --git a/docs/html/doxygen-awesome-fragment-copy-button.js b/docs/html/doxygen-awesome-fragment-copy-button.js new file mode 100644 index 0000000..86c16fd --- /dev/null +++ b/docs/html/doxygen-awesome-fragment-copy-button.js @@ -0,0 +1,85 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2022 - 2023 jothepro + +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. + +*/ + +class DoxygenAwesomeFragmentCopyButton extends HTMLElement { + constructor() { + super(); + this.onclick=this.copyContent + } + static title = "Copy to clipboard" + static copyIcon = `` + static successIcon = `` + static successDuration = 980 + static init() { + $(function() { + $(document).ready(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const fragmentWrapper = document.createElement("div") + fragmentWrapper.className = "doxygen-awesome-fragment-wrapper" + const fragmentCopyButton = document.createElement("doxygen-awesome-fragment-copy-button") + fragmentCopyButton.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon + fragmentCopyButton.title = DoxygenAwesomeFragmentCopyButton.title + + fragment.parentNode.replaceChild(fragmentWrapper, fragment) + fragmentWrapper.appendChild(fragment) + fragmentWrapper.appendChild(fragmentCopyButton) + + } + } + }) + }) + } + + + copyContent() { + const content = this.previousSibling.cloneNode(true) + // filter out line number from file listings + content.querySelectorAll(".lineno, .ttc").forEach((node) => { + node.remove() + }) + let textContent = content.textContent + // remove trailing newlines that appear in file listings + let numberOfTrailingNewlines = 0 + while(textContent.charAt(textContent.length - (numberOfTrailingNewlines + 1)) == '\n') { + numberOfTrailingNewlines++; + } + textContent = textContent.substring(0, textContent.length - numberOfTrailingNewlines) + navigator.clipboard.writeText(textContent); + this.classList.add("success") + this.innerHTML = DoxygenAwesomeFragmentCopyButton.successIcon + window.setTimeout(() => { + this.classList.remove("success") + this.innerHTML = DoxygenAwesomeFragmentCopyButton.copyIcon + }, DoxygenAwesomeFragmentCopyButton.successDuration); + } +} + +customElements.define("doxygen-awesome-fragment-copy-button", DoxygenAwesomeFragmentCopyButton) diff --git a/docs/html/doxygen-awesome-interactive-toc.js b/docs/html/doxygen-awesome-interactive-toc.js new file mode 100644 index 0000000..20a9669 --- /dev/null +++ b/docs/html/doxygen-awesome-interactive-toc.js @@ -0,0 +1,81 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2022 - 2023 jothepro + +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. + +*/ + +class DoxygenAwesomeInteractiveToc { + static topOffset = 38 + static hideMobileMenu = true + static headers = [] + + static init() { + window.addEventListener("load", () => { + let toc = document.querySelector(".contents > .toc") + if(toc) { + toc.classList.add("interactive") + if(!DoxygenAwesomeInteractiveToc.hideMobileMenu) { + toc.classList.add("open") + } + document.querySelector(".contents > .toc > h3")?.addEventListener("click", () => { + if(toc.classList.contains("open")) { + toc.classList.remove("open") + } else { + toc.classList.add("open") + } + }) + + document.querySelectorAll(".contents > .toc > ul a").forEach((node) => { + let id = node.getAttribute("href").substring(1) + DoxygenAwesomeInteractiveToc.headers.push({ + node: node, + headerNode: document.getElementById(id) + }) + + document.getElementById("doc-content")?.addEventListener("scroll", () => { + DoxygenAwesomeInteractiveToc.update() + }) + }) + DoxygenAwesomeInteractiveToc.update() + } + }) + } + + static update() { + let active = DoxygenAwesomeInteractiveToc.headers[0]?.node + DoxygenAwesomeInteractiveToc.headers.forEach((header) => { + let position = header.headerNode.getBoundingClientRect().top + header.node.classList.remove("active") + header.node.classList.remove("aboveActive") + if(position < DoxygenAwesomeInteractiveToc.topOffset) { + active = header.node + active?.classList.add("aboveActive") + } + }) + active?.classList.add("active") + active?.classList.remove("aboveActive") + } +} \ No newline at end of file diff --git a/docs/html/doxygen-awesome-paragraph-link.js b/docs/html/doxygen-awesome-paragraph-link.js new file mode 100644 index 0000000..e53d132 --- /dev/null +++ b/docs/html/doxygen-awesome-paragraph-link.js @@ -0,0 +1,51 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2022 - 2023 jothepro + +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. + +*/ + +class DoxygenAwesomeParagraphLink { + // Icon from https://fonts.google.com/icons + // Licensed under the Apache 2.0 license: + // https://www.apache.org/licenses/LICENSE-2.0.html + static icon = `` + static title = "Permanent Link" + static init() { + $(function() { + $(document).ready(function() { + document.querySelectorAll(".contents a.anchor[id], .contents .groupheader > a[id]").forEach((node) => { + let anchorlink = document.createElement("a") + anchorlink.setAttribute("href", `#${node.getAttribute("id")}`) + anchorlink.setAttribute("title", DoxygenAwesomeParagraphLink.title) + anchorlink.classList.add("anchorlink") + node.classList.add("anchor") + anchorlink.innerHTML = DoxygenAwesomeParagraphLink.icon + node.parentElement.appendChild(anchorlink) + }) + }) + }) + } +} diff --git a/docs/html/doxygen-awesome-sidebar-only-darkmode-toggle.css b/docs/html/doxygen-awesome-sidebar-only-darkmode-toggle.css new file mode 100644 index 0000000..d207446 --- /dev/null +++ b/docs/html/doxygen-awesome-sidebar-only-darkmode-toggle.css @@ -0,0 +1,40 @@ + +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +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. + +*/ + +@media screen and (min-width: 768px) { + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - var(--searchbar-height) - 1px); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 66px - var(--searchbar-height)); + } +} diff --git a/docs/html/doxygen-awesome-sidebar-only.css b/docs/html/doxygen-awesome-sidebar-only.css new file mode 100644 index 0000000..853f6d6 --- /dev/null +++ b/docs/html/doxygen-awesome-sidebar-only.css @@ -0,0 +1,116 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +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. + + */ + +html { + /* side nav width. MUST be = `TREEVIEW_WIDTH`. + * Make sure it is wide enough to contain the page title (logo + title + version) + */ + --side-nav-fixed-width: 335px; + --menu-display: none; + + --top-height: 120px; + --toc-sticky-top: -25px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 25px); +} + +#projectname { + white-space: nowrap; +} + + +@media screen and (min-width: 768px) { + html { + --searchbar-background: var(--page-background-color); + } + + #side-nav { + min-width: var(--side-nav-fixed-width); + max-width: var(--side-nav-fixed-width); + top: var(--top-height); + overflow: visible; + } + + #nav-tree, #side-nav { + height: calc(100vh - var(--top-height)) !important; + } + + #nav-tree { + padding: 0; + } + + #top { + display: block; + border-bottom: none; + height: var(--top-height); + margin-bottom: calc(0px - var(--top-height)); + max-width: var(--side-nav-fixed-width); + overflow: hidden; + background: var(--side-nav-background); + } + #main-nav { + float: left; + padding-right: 0; + } + + .ui-resizable-handle { + cursor: default; + width: 1px !important; + background: var(--separator-color); + box-shadow: 0 calc(-2 * var(--top-height)) 0 0 var(--separator-color); + } + + #nav-path { + position: fixed; + right: 0; + left: var(--side-nav-fixed-width); + bottom: 0; + width: auto; + } + + #doc-content { + height: calc(100vh - 31px) !important; + padding-bottom: calc(3 * var(--spacing-large)); + padding-top: calc(var(--top-height) - 80px); + box-sizing: border-box; + margin-left: var(--side-nav-fixed-width) !important; + } + + #MSearchBox { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium))); + } + + #MSearchField { + width: calc(var(--side-nav-fixed-width) - calc(2 * var(--spacing-medium)) - 65px); + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: auto; + } +} diff --git a/docs/html/doxygen-awesome-tabs.js b/docs/html/doxygen-awesome-tabs.js new file mode 100644 index 0000000..06dfd3d --- /dev/null +++ b/docs/html/doxygen-awesome-tabs.js @@ -0,0 +1,90 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2023 jothepro + +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. + +*/ + +class DoxygenAwesomeTabs { + + static init() { + window.addEventListener("load", () => { + document.querySelectorAll(".tabbed:not(:empty)").forEach((tabbed, tabbedIndex) => { + let tabLinkList = [] + tabbed.querySelectorAll(":scope > ul > li").forEach((tab, tabIndex) => { + tab.id = "tab_" + tabbedIndex + "_" + tabIndex + let header = tab.querySelector(".tab-title") + let tabLink = document.createElement("button") + tabLink.classList.add("tab-button") + tabLink.appendChild(header) + header.title = header.textContent + tabLink.addEventListener("click", () => { + tabbed.querySelectorAll(":scope > ul > li").forEach((tab) => { + tab.classList.remove("selected") + }) + tabLinkList.forEach((tabLink) => { + tabLink.classList.remove("active") + }) + tab.classList.add("selected") + tabLink.classList.add("active") + }) + tabLinkList.push(tabLink) + if(tabIndex == 0) { + tab.classList.add("selected") + tabLink.classList.add("active") + } + }) + let tabsOverview = document.createElement("div") + tabsOverview.classList.add("tabs-overview") + let tabsOverviewContainer = document.createElement("div") + tabsOverviewContainer.classList.add("tabs-overview-container") + tabLinkList.forEach((tabLink) => { + tabsOverview.appendChild(tabLink) + }) + tabsOverviewContainer.appendChild(tabsOverview) + tabbed.before(tabsOverviewContainer) + + function resize() { + let maxTabHeight = 0 + tabbed.querySelectorAll(":scope > ul > li").forEach((tab, tabIndex) => { + let visibility = tab.style.display + tab.style.display = "block" + maxTabHeight = Math.max(tab.offsetHeight, maxTabHeight) + tab.style.display = visibility + }) + tabbed.style.height = `${maxTabHeight + 10}px` + } + + resize() + new ResizeObserver(resize).observe(tabbed) + }) + }) + + } + + static resize(tabbed) { + + } +} \ No newline at end of file diff --git a/docs/html/doxygen-awesome.css b/docs/html/doxygen-awesome.css new file mode 100644 index 0000000..a44945b --- /dev/null +++ b/docs/html/doxygen-awesome.css @@ -0,0 +1,2675 @@ +/** + +Doxygen Awesome +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2023 jothepro + +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. + +*/ + +html { + /* primary theme color. This will affect the entire websites color scheme: links, arrows, labels, ... */ + --primary-color: #1779c4; + --primary-dark-color: #335c80; + --primary-light-color: #70b1e9; + + /* page base colors */ + --page-background-color: #ffffff; + --page-foreground-color: #2f4153; + --page-secondary-foreground-color: #6f7e8e; + + /* color for all separators on the website: hr, borders, ... */ + --separator-color: #dedede; + + /* border radius for all rounded components. Will affect many components, like dropdowns, memitems, codeblocks, ... */ + --border-radius-large: 8px; + --border-radius-small: 4px; + --border-radius-medium: 6px; + + /* default spacings. Most components reference these values for spacing, to provide uniform spacing on the page. */ + --spacing-small: 5px; + --spacing-medium: 10px; + --spacing-large: 16px; + + /* default box shadow used for raising an element above the normal content. Used in dropdowns, search result, ... */ + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); + + --odd-color: rgba(0,0,0,.028); + + /* font-families. will affect all text on the website + * font-family: the normal font for text, headlines, menus + * font-family-monospace: used for preformatted text in memtitle, code, fragments + */ + --font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif; + --font-family-monospace: ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace; + + /* font sizes */ + --page-font-size: 15.6px; + --navigation-font-size: 14.4px; + --toc-font-size: 13.4px; + --code-font-size: 14px; /* affects code, fragment */ + --title-font-size: 22px; + + /* content text properties. These only affect the page content, not the navigation or any other ui elements */ + --content-line-height: 27px; + /* The content is centered and constraint in it's width. To make the content fill the whole page, set the variable to auto.*/ + --content-maxwidth: 1050px; + --table-line-height: 24px; + --toc-sticky-top: var(--spacing-medium); + --toc-width: 200px; + --toc-max-height: calc(100vh - 2 * var(--spacing-medium) - 85px); + + /* colors for various content boxes: @warning, @note, @deprecated @bug */ + --warning-color: #faf3d8; + --warning-color-dark: #f3a600; + --warning-color-darker: #5f4204; + --note-color: #e4f3ff; + --note-color-dark: #1879C4; + --note-color-darker: #274a5c; + --todo-color: #e4dafd; + --todo-color-dark: #5b2bdd; + --todo-color-darker: #2a0d72; + --deprecated-color: #ecf0f3; + --deprecated-color-dark: #5b6269; + --deprecated-color-darker: #43454a; + --bug-color: #f8d1cc; + --bug-color-dark: #b61825; + --bug-color-darker: #75070f; + --invariant-color: #d8f1e3; + --invariant-color-dark: #44b86f; + --invariant-color-darker: #265532; + + /* blockquote colors */ + --blockquote-background: #f8f9fa; + --blockquote-foreground: #636568; + + /* table colors */ + --tablehead-background: #f1f1f1; + --tablehead-foreground: var(--page-foreground-color); + + /* menu-display: block | none + * Visibility of the top navigation on screens >= 768px. On smaller screen the menu is always visible. + * `GENERATE_TREEVIEW` MUST be enabled! + */ + --menu-display: block; + + --menu-focus-foreground: var(--page-background-color); + --menu-focus-background: var(--primary-color); + --menu-selected-background: rgba(0,0,0,.05); + + + --header-background: var(--page-background-color); + --header-foreground: var(--page-foreground-color); + + /* searchbar colors */ + --searchbar-background: var(--side-nav-background); + --searchbar-foreground: var(--page-foreground-color); + + /* searchbar size + * (`searchbar-width` is only applied on screens >= 768px. + * on smaller screens the searchbar will always fill the entire screen width) */ + --searchbar-height: 33px; + --searchbar-width: 210px; + --searchbar-border-radius: var(--searchbar-height); + + /* code block colors */ + --code-background: #f5f5f5; + --code-foreground: var(--page-foreground-color); + + /* fragment colors */ + --fragment-background: #F8F9FA; + --fragment-foreground: #37474F; + --fragment-keyword: #bb6bb2; + --fragment-keywordtype: #8258b3; + --fragment-keywordflow: #d67c3b; + --fragment-token: #438a59; + --fragment-comment: #969696; + --fragment-link: #5383d6; + --fragment-preprocessor: #46aaa5; + --fragment-linenumber-color: #797979; + --fragment-linenumber-background: #f4f4f5; + --fragment-linenumber-border: #e3e5e7; + --fragment-lineheight: 20px; + + /* sidebar navigation (treeview) colors */ + --side-nav-background: #fbfbfb; + --side-nav-foreground: var(--page-foreground-color); + --side-nav-arrow-opacity: 0; + --side-nav-arrow-hover-opacity: 0.9; + + --toc-background: var(--side-nav-background); + --toc-foreground: var(--side-nav-foreground); + + /* height of an item in any tree / collapsible table */ + --tree-item-height: 30px; + + --memname-font-size: var(--code-font-size); + --memtitle-font-size: 18px; + + --webkit-scrollbar-size: 7px; + --webkit-scrollbar-padding: 4px; + --webkit-scrollbar-color: var(--separator-color); + + --animation-duration: .12s +} + +@media screen and (max-width: 767px) { + html { + --page-font-size: 16px; + --navigation-font-size: 16px; + --toc-font-size: 15px; + --code-font-size: 15px; /* affects code, fragment */ + --title-font-size: 22px; + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.35); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; + } +} + +/* dark mode variables are defined twice, to support both the dark-mode without and with doxygen-awesome-darkmode-toggle.js */ +html.dark-mode { + color-scheme: dark; + + --primary-color: #1982d2; + --primary-dark-color: #86a9c4; + --primary-light-color: #4779ac; + + --box-shadow: 0 2px 8px 0 rgba(0,0,0,.30); + + --odd-color: rgba(100,100,100,.06); + + --menu-selected-background: rgba(0,0,0,.4); + + --page-background-color: #1C1D1F; + --page-foreground-color: #d2dbde; + --page-secondary-foreground-color: #859399; + --separator-color: #38393b; + --side-nav-background: #252628; + + --code-background: #2a2c2f; + + --tablehead-background: #2a2c2f; + + --blockquote-background: #222325; + --blockquote-foreground: #7e8c92; + + --warning-color: #3b2e04; + --warning-color-dark: #f1b602; + --warning-color-darker: #ceb670; + --note-color: #163750; + --note-color-dark: #1982D2; + --note-color-darker: #dcf0fa; + --todo-color: #2a2536; + --todo-color-dark: #7661b3; + --todo-color-darker: #ae9ed6; + --deprecated-color: #2e323b; + --deprecated-color-dark: #738396; + --deprecated-color-darker: #abb0bd; + --bug-color: #2e1917; + --bug-color-dark: #ad2617; + --bug-color-darker: #f5b1aa; + --invariant-color: #303a35; + --invariant-color-dark: #76ce96; + --invariant-color-darker: #cceed5; + + --fragment-background: #282c34; + --fragment-foreground: #dbe4eb; + --fragment-keyword: #cc99cd; + --fragment-keywordtype: #ab99cd; + --fragment-keywordflow: #e08000; + --fragment-token: #7ec699; + --fragment-comment: #999999; + --fragment-link: #98c0e3; + --fragment-preprocessor: #65cabe; + --fragment-linenumber-color: #cccccc; + --fragment-linenumber-background: #35393c; + --fragment-linenumber-border: #1f1f1f; +} + +body { + color: var(--page-foreground-color); + background-color: var(--page-background-color); + font-size: var(--page-font-size); +} + +body, table, div, p, dl, #nav-tree .label, .title, +.sm-dox a, .sm-dox a:hover, .sm-dox a:focus, #projectname, +.SelectItem, #MSearchField, .navpath li.navelem a, +.navpath li.navelem a:hover, p.reference, p.definition, div.toc li, div.toc h3 { + font-family: var(--font-family); +} + +h1, h2, h3, h4, h5 { + margin-top: 1em; + font-weight: 600; + line-height: initial; +} + +p, div, table, dl, p.reference, p.definition { + font-size: var(--page-font-size); +} + +p.reference, p.definition { + color: var(--page-secondary-foreground-color); +} + +a:link, a:visited, a:hover, a:focus, a:active { + color: var(--primary-color) !important; + font-weight: 500; + background: none; +} + +a.anchor { + scroll-margin-top: var(--spacing-large); + display: block; +} + +/* + Title and top navigation + */ + +#top { + background: var(--header-background); + border-bottom: 1px solid var(--separator-color); +} + +@media screen and (min-width: 768px) { + #top { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + } +} + +#main-nav { + flex-grow: 5; + padding: var(--spacing-small) var(--spacing-medium); +} + +#titlearea { + width: auto; + padding: var(--spacing-medium) var(--spacing-large); + background: none; + color: var(--header-foreground); + border-bottom: none; +} + +@media screen and (max-width: 767px) { + #titlearea { + padding-bottom: var(--spacing-small); + } +} + +#titlearea table tbody tr { + height: auto !important; +} + +#projectname { + font-size: var(--title-font-size); + font-weight: 600; +} + +#projectnumber { + font-family: inherit; + font-size: 60%; +} + +#projectbrief { + font-family: inherit; + font-size: 80%; +} + +#projectlogo { + vertical-align: middle; +} + +#projectlogo img { + max-height: calc(var(--title-font-size) * 2); + margin-right: var(--spacing-small); +} + +.sm-dox, .tabs, .tabs2, .tabs3 { + background: none; + padding: 0; +} + +.tabs, .tabs2, .tabs3 { + border-bottom: 1px solid var(--separator-color); + margin-bottom: -1px; +} + +.main-menu-btn-icon, .main-menu-btn-icon:before, .main-menu-btn-icon:after { + background: var(--page-secondary-foreground-color); +} + +@media screen and (max-width: 767px) { + .sm-dox a span.sub-arrow { + background: var(--code-background); + } + + #main-menu a.has-submenu span.sub-arrow { + color: var(--page-secondary-foreground-color); + border-radius: var(--border-radius-medium); + } + + #main-menu a.has-submenu:hover span.sub-arrow { + color: var(--page-foreground-color); + } +} + +@media screen and (min-width: 768px) { + .sm-dox li, .tablist li { + display: var(--menu-display); + } + + .sm-dox a span.sub-arrow { + border-color: var(--header-foreground) transparent transparent transparent; + } + + .sm-dox a:hover span.sub-arrow { + border-color: var(--menu-focus-foreground) transparent transparent transparent; + } + + .sm-dox ul a span.sub-arrow { + border-color: transparent transparent transparent var(--page-foreground-color); + } + + .sm-dox ul a:hover span.sub-arrow { + border-color: transparent transparent transparent var(--menu-focus-foreground); + } +} + +.sm-dox ul { + background: var(--page-background-color); + box-shadow: var(--box-shadow); + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium) !important; + padding: var(--spacing-small); + animation: ease-out 150ms slideInMenu; +} + +@keyframes slideInMenu { + from { + opacity: 0; + transform: translate(0px, -2px); + } + + to { + opacity: 1; + transform: translate(0px, 0px); + } +} + +.sm-dox ul a { + color: var(--page-foreground-color) !important; + background: var(--page-background-color); + font-size: var(--navigation-font-size); +} + +.sm-dox>li>ul:after { + border-bottom-color: var(--page-background-color) !important; +} + +.sm-dox>li>ul:before { + border-bottom-color: var(--separator-color) !important; +} + +.sm-dox ul a:hover, .sm-dox ul a:active, .sm-dox ul a:focus { + font-size: var(--navigation-font-size) !important; + color: var(--menu-focus-foreground) !important; + text-shadow: none; + background-color: var(--menu-focus-background); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a, .sm-dox a:focus, .tablist li, .tablist li a, .tablist li.current a { + text-shadow: none; + background: transparent; + background-image: none !important; + color: var(--header-foreground) !important; + font-weight: normal; + font-size: var(--navigation-font-size); + border-radius: var(--border-radius-small) !important; +} + +.sm-dox a:focus { + outline: auto; +} + +.sm-dox a:hover, .sm-dox a:active, .tablist li a:hover { + text-shadow: none; + font-weight: normal; + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; + border-radius: var(--border-radius-small) !important; + font-size: var(--navigation-font-size); +} + +.tablist li.current { + border-radius: var(--border-radius-small); + background: var(--menu-selected-background); +} + +.tablist li { + margin: var(--spacing-small) 0 var(--spacing-small) var(--spacing-small); +} + +.tablist a { + padding: 0 var(--spacing-large); +} + + +/* + Search box + */ + +#MSearchBox { + height: var(--searchbar-height); + background: var(--searchbar-background); + border-radius: var(--searchbar-border-radius); + border: 1px solid var(--separator-color); + overflow: hidden; + width: var(--searchbar-width); + position: relative; + box-shadow: none; + display: block; + margin-top: 0; +} + +/* until Doxygen 1.9.4 */ +.left img#MSearchSelect { + left: 0; + user-select: none; + padding-left: 8px; +} + +/* Doxygen 1.9.5 */ +.left span#MSearchSelect { + left: 0; + user-select: none; + margin-left: 8px; + padding: 0; +} + +.left #MSearchSelect[src$=".png"] { + padding-left: 0 +} + +.SelectionMark { + user-select: none; +} + +.tabs .left #MSearchSelect { + padding-left: 0; +} + +.tabs #MSearchBox { + position: absolute; + right: var(--spacing-medium); +} + +@media screen and (max-width: 767px) { + .tabs #MSearchBox { + position: relative; + right: 0; + margin-left: var(--spacing-medium); + margin-top: 0; + } +} + +#MSearchSelectWindow, #MSearchResultsWindow { + z-index: 9999; +} + +#MSearchBox.MSearchBoxActive { + border-color: var(--primary-color); + box-shadow: inset 0 0 0 1px var(--primary-color); +} + +#main-menu > li:last-child { + margin-right: 0; +} + +@media screen and (max-width: 767px) { + #main-menu > li:last-child { + height: 50px; + } +} + +#MSearchField { + font-size: var(--navigation-font-size); + height: calc(var(--searchbar-height) - 2px); + background: transparent; + width: calc(var(--searchbar-width) - 64px); +} + +.MSearchBoxActive #MSearchField { + color: var(--searchbar-foreground); +} + +#MSearchSelect { + top: calc(calc(var(--searchbar-height) / 2) - 11px); +} + +#MSearchBox span.left, #MSearchBox span.right { + background: none; + background-image: none; +} + +#MSearchBox span.right { + padding-top: calc(calc(var(--searchbar-height) / 2) - 12px); + position: absolute; + right: var(--spacing-small); +} + +.tabs #MSearchBox span.right { + top: calc(calc(var(--searchbar-height) / 2) - 12px); +} + +@keyframes slideInSearchResults { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } +} + +#MSearchResultsWindow { + left: auto !important; + right: var(--spacing-medium); + border-radius: var(--border-radius-large); + border: 1px solid var(--separator-color); + transform: translate(0, 20px); + box-shadow: var(--box-shadow); + animation: ease-out 280ms slideInSearchResults; + background: var(--page-background-color); +} + +iframe#MSearchResults { + margin: 4px; +} + +iframe { + color-scheme: normal; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) iframe#MSearchResults { + filter: invert() hue-rotate(180deg); + } +} + +html.dark-mode iframe#MSearchResults { + filter: invert() hue-rotate(180deg); +} + +#MSearchResults .SRPage { + background-color: transparent; +} + +#MSearchResults .SRPage .SREntry { + font-size: 10pt; + padding: var(--spacing-small) var(--spacing-medium); +} + +#MSearchSelectWindow { + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + box-shadow: var(--box-shadow); + background: var(--page-background-color); + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); +} + +#MSearchSelectWindow a.SelectItem { + font-size: var(--navigation-font-size); + line-height: var(--content-line-height); + margin: 0 var(--spacing-small); + border-radius: var(--border-radius-small); + color: var(--page-foreground-color) !important; + font-weight: normal; +} + +#MSearchSelectWindow a.SelectItem:hover { + background: var(--menu-focus-background); + color: var(--menu-focus-foreground) !important; +} + +@media screen and (max-width: 767px) { + #MSearchBox { + margin-top: var(--spacing-medium); + margin-bottom: var(--spacing-medium); + width: calc(100vw - 30px); + } + + #main-menu > li:last-child { + float: none !important; + } + + #MSearchField { + width: calc(100vw - 110px); + } + + @keyframes slideInSearchResultsMobile { + from { + opacity: 0; + transform: translate(0, 15px); + } + + to { + opacity: 1; + transform: translate(0, 20px); + } + } + + #MSearchResultsWindow { + left: var(--spacing-medium) !important; + right: var(--spacing-medium); + overflow: auto; + transform: translate(0, 20px); + animation: ease-out 280ms slideInSearchResultsMobile; + width: auto !important; + } + + /* + * Overwrites for fixing the searchbox on mobile in doxygen 1.9.2 + */ + label.main-menu-btn ~ #searchBoxPos1 { + top: 3px !important; + right: 6px !important; + left: 45px; + display: flex; + } + + label.main-menu-btn ~ #searchBoxPos1 > #MSearchBox { + margin-top: 0; + margin-bottom: 0; + flex-grow: 2; + float: left; + } +} + +/* + Tree view + */ + +#side-nav { + padding: 0 !important; + background: var(--side-nav-background); + min-width: 8px; + max-width: 50vw; +} + +@media screen and (max-width: 767px) { + #side-nav { + display: none; + } + + #doc-content { + margin-left: 0 !important; + } +} + +#nav-tree { + background: transparent; + margin-right: 1px; +} + +#nav-tree .label { + font-size: var(--navigation-font-size); +} + +#nav-tree .item { + height: var(--tree-item-height); + line-height: var(--tree-item-height); +} + +#nav-tree .item > a:focus { + outline: none; +} + +#nav-sync { + bottom: 12px; + right: 12px; + top: auto !important; + user-select: none; +} + +#nav-tree .selected { + text-shadow: none; + background-image: none; + background-color: transparent; + position: relative; +} + +#nav-tree .selected::after { + content: ""; + position: absolute; + top: 1px; + bottom: 1px; + left: 0; + width: 4px; + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + background: var(--primary-color); +} + + +#nav-tree a { + color: var(--side-nav-foreground) !important; + font-weight: normal; +} + +#nav-tree a:focus { + outline-style: auto; +} + +#nav-tree .arrow { + opacity: var(--side-nav-arrow-opacity); + background: none; +} + +.arrow { + color: inherit; + cursor: pointer; + font-size: 45%; + vertical-align: middle; + margin-right: 2px; + font-family: serif; + height: auto; + text-align: right; +} + +#nav-tree div.item:hover .arrow, #nav-tree a:focus .arrow { + opacity: var(--side-nav-arrow-hover-opacity); +} + +#nav-tree .selected a { + color: var(--primary-color) !important; + font-weight: bolder; + font-weight: 600; +} + +.ui-resizable-e { + width: 4px; + background: transparent; + box-shadow: inset -1px 0 0 0 var(--separator-color); +} + +/* + Contents + */ + +div.header { + border-bottom: 1px solid var(--separator-color); + background-color: var(--page-background-color); + background-image: none; +} + +@media screen and (min-width: 1000px) { + #doc-content > div > div.contents, + .PageDoc > div.contents { + display: flex; + flex-direction: row-reverse; + flex-wrap: nowrap; + align-items: flex-start; + } + + div.contents .textblock { + min-width: 200px; + flex-grow: 1; + } +} + +div.contents, div.header .title, div.header .summary { + max-width: var(--content-maxwidth); +} + +div.contents, div.header .title { + line-height: initial; + margin: calc(var(--spacing-medium) + .2em) auto var(--spacing-medium) auto; +} + +div.header .summary { + margin: var(--spacing-medium) auto 0 auto; +} + +div.headertitle { + padding: 0; +} + +div.header .title { + font-weight: 600; + font-size: 225%; + padding: var(--spacing-medium) var(--spacing-large); + word-break: break-word; +} + +div.header .summary { + width: auto; + display: block; + float: none; + padding: 0 var(--spacing-large); +} + +td.memSeparator { + border-color: var(--separator-color); +} + +span.mlabel { + background: var(--primary-color); + border: none; + padding: 4px 9px; + border-radius: 12px; + margin-right: var(--spacing-medium); +} + +span.mlabel:last-of-type { + margin-right: 2px; +} + +div.contents { + padding: 0 var(--spacing-large); +} + +div.contents p, div.contents li { + line-height: var(--content-line-height); +} + +div.contents div.dyncontent { + margin: var(--spacing-medium) 0; +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) div.contents div.dyncontent img, + html:not(.light-mode) div.contents center img, + html:not(.light-mode) div.contents > table img, + html:not(.light-mode) div.contents div.dyncontent iframe, + html:not(.light-mode) div.contents center iframe, + html:not(.light-mode) div.contents table iframe, + html:not(.light-mode) div.contents .dotgraph iframe { + filter: brightness(89%) hue-rotate(180deg) invert(); + } +} + +html.dark-mode div.contents div.dyncontent img, +html.dark-mode div.contents center img, +html.dark-mode div.contents > table img, +html.dark-mode div.contents div.dyncontent iframe, +html.dark-mode div.contents center iframe, +html.dark-mode div.contents table iframe, +html.dark-mode div.contents .dotgraph iframe + { + filter: brightness(89%) hue-rotate(180deg) invert(); +} + +h2.groupheader { + border-bottom: 0px; + color: var(--page-foreground-color); + box-shadow: + 100px 0 var(--page-background-color), + -100px 0 var(--page-background-color), + 100px 0.75px var(--separator-color), + -100px 0.75px var(--separator-color), + 500px 0 var(--page-background-color), + -500px 0 var(--page-background-color), + 500px 0.75px var(--separator-color), + -500px 0.75px var(--separator-color), + 900px 0 var(--page-background-color), + -900px 0 var(--page-background-color), + 900px 0.75px var(--separator-color), + -900px 0.75px var(--separator-color), + 1400px 0 var(--page-background-color), + -1400px 0 var(--page-background-color), + 1400px 0.75px var(--separator-color), + -1400px 0.75px var(--separator-color), + 1900px 0 var(--page-background-color), + -1900px 0 var(--page-background-color), + 1900px 0.75px var(--separator-color), + -1900px 0.75px var(--separator-color); +} + +blockquote { + margin: 0 var(--spacing-medium) 0 var(--spacing-medium); + padding: var(--spacing-small) var(--spacing-large); + background: var(--blockquote-background); + color: var(--blockquote-foreground); + border-left: 0; + overflow: visible; + border-radius: var(--border-radius-medium); + overflow: visible; + position: relative; +} + +blockquote::before, blockquote::after { + font-weight: bold; + font-family: serif; + font-size: 360%; + opacity: .15; + position: absolute; +} + +blockquote::before { + content: "“"; + left: -10px; + top: 4px; +} + +blockquote::after { + content: "”"; + right: -8px; + bottom: -25px; +} + +blockquote p { + margin: var(--spacing-small) 0 var(--spacing-medium) 0; +} +.paramname { + font-weight: 600; + color: var(--primary-dark-color); +} + +.paramname > code { + border: 0; +} + +table.params .paramname { + font-weight: 600; + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + padding-right: var(--spacing-small); + line-height: var(--table-line-height); +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px var(--primary-light-color); +} + +.alphachar a { + color: var(--page-foreground-color); +} + +.dotgraph { + max-width: 100%; + overflow-x: scroll; +} + +.dotgraph .caption { + position: sticky; + left: 0; +} + +/* Wrap Graphviz graphs with the `interactive_dotgraph` class if `INTERACTIVE_SVG = YES` */ +.interactive_dotgraph .dotgraph iframe { + max-width: 100%; +} + +/* + Table of Contents + */ + +div.contents .toc { + max-height: var(--toc-max-height); + min-width: var(--toc-width); + border: 0; + border-left: 1px solid var(--separator-color); + border-radius: 0; + background-color: transparent; + box-shadow: none; + position: sticky; + top: var(--toc-sticky-top); + padding: 0 var(--spacing-large); + margin: var(--spacing-small) 0 var(--spacing-large) var(--spacing-large); +} + +div.toc h3 { + color: var(--toc-foreground); + font-size: var(--navigation-font-size); + margin: var(--spacing-large) 0 var(--spacing-medium) 0; +} + +div.toc li { + padding: 0; + background: none; + line-height: var(--toc-font-size); + margin: var(--toc-font-size) 0 0 0; +} + +div.toc li::before { + display: none; +} + +div.toc ul { + margin-top: 0 +} + +div.toc li a { + font-size: var(--toc-font-size); + color: var(--page-foreground-color) !important; + text-decoration: none; +} + +div.toc li a:hover, div.toc li a.active { + color: var(--primary-color) !important; +} + +div.toc li a.aboveActive { + color: var(--page-secondary-foreground-color) !important; +} + + +@media screen and (max-width: 999px) { + div.contents .toc { + max-height: 45vh; + float: none; + width: auto; + margin: 0 0 var(--spacing-medium) 0; + position: relative; + top: 0; + position: relative; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + background-color: var(--toc-background); + box-shadow: var(--box-shadow); + } + + div.contents .toc.interactive { + max-height: calc(var(--navigation-font-size) + 2 * var(--spacing-large)); + overflow: hidden; + } + + div.contents .toc > h3 { + -webkit-tap-highlight-color: transparent; + cursor: pointer; + position: sticky; + top: 0; + background-color: var(--toc-background); + margin: 0; + padding: var(--spacing-large) 0; + display: block; + } + + div.contents .toc.interactive > h3::before { + content: ""; + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + display: inline-block; + margin-right: var(--spacing-small); + margin-bottom: calc(var(--navigation-font-size) / 4); + transform: rotate(-90deg); + transition: transform var(--animation-duration) ease-out; + } + + div.contents .toc.interactive.open > h3::before { + transform: rotate(0deg); + } + + div.contents .toc.interactive.open { + max-height: 45vh; + overflow: auto; + transition: max-height 0.2s ease-in-out; + } + + div.contents .toc a, div.contents .toc a.active { + color: var(--primary-color) !important; + } + + div.contents .toc a:hover { + text-decoration: underline; + } +} + +/* + Code & Fragments + */ + +code, div.fragment, pre.fragment { + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + overflow: hidden; +} + +code { + display: inline; + background: var(--code-background); + color: var(--code-foreground); + padding: 2px 6px; +} + +div.fragment, pre.fragment { + margin: var(--spacing-medium) 0; + padding: calc(var(--spacing-large) - (var(--spacing-large) / 6)) var(--spacing-large); + background: var(--fragment-background); + color: var(--fragment-foreground); + overflow-x: auto; +} + +@media screen and (max-width: 767px) { + div.fragment, pre.fragment { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + border-right: 0; + } + + .contents > div.fragment, + .textblock > div.fragment, + .textblock > pre.fragment, + .textblock > .tabbed > ul > li > div.fragment, + .textblock > .tabbed > ul > li > pre.fragment, + .contents > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .doxygen-awesome-fragment-wrapper > pre.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > div.fragment, + .textblock > .tabbed > ul > li > .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + border-radius: 0; + border-left: 0; + } + + .textblock li > .fragment, + .textblock li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-large)); + } + + .memdoc li > .fragment, + .memdoc li > .doxygen-awesome-fragment-wrapper > .fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + } + + .textblock ul, .memdoc ul { + overflow: initial; + } + + .memdoc > div.fragment, + .memdoc > pre.fragment, + dl dd > div.fragment, + dl dd pre.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > div.fragment, + .memdoc > .doxygen-awesome-fragment-wrapper > pre.fragment, + dl dd > .doxygen-awesome-fragment-wrapper > div.fragment, + dl dd .doxygen-awesome-fragment-wrapper > pre.fragment { + margin: var(--spacing-medium) calc(0px - var(--spacing-medium)); + border-radius: 0; + border-left: 0; + } +} + +code, code a, pre.fragment, div.fragment, div.fragment .line, div.fragment span, div.fragment .line a, div.fragment .line span { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size) !important; +} + +div.line:after { + margin-right: var(--spacing-medium); +} + +div.fragment .line, pre.fragment { + white-space: pre; + word-wrap: initial; + line-height: var(--fragment-lineheight); +} + +div.fragment span.keyword { + color: var(--fragment-keyword); +} + +div.fragment span.keywordtype { + color: var(--fragment-keywordtype); +} + +div.fragment span.keywordflow { + color: var(--fragment-keywordflow); +} + +div.fragment span.stringliteral { + color: var(--fragment-token) +} + +div.fragment span.comment { + color: var(--fragment-comment); +} + +div.fragment a.code { + color: var(--fragment-link) !important; +} + +div.fragment span.preprocessor { + color: var(--fragment-preprocessor); +} + +div.fragment span.lineno { + display: inline-block; + width: 27px; + border-right: none; + background: var(--fragment-linenumber-background); + color: var(--fragment-linenumber-color); +} + +div.fragment span.lineno a { + background: none; + color: var(--fragment-link) !important; +} + +div.fragment > .line:first-child .lineno { + box-shadow: -999999px 0px 0 999999px var(--fragment-linenumber-background), -999998px 0px 0 999999px var(--fragment-linenumber-border); + background-color: var(--fragment-linenumber-background) !important; +} + +div.line { + border-radius: var(--border-radius-small); +} + +div.line.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +/* + dl warning, attention, note, deprecated, bug, ... + */ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.note, dl.deprecated, dl.bug, dl.invariant, dl.pre, dl.post, dl.todo, dl.remark { + padding: var(--spacing-medium); + margin: var(--spacing-medium) 0; + color: var(--page-background-color); + overflow: hidden; + margin-left: 0; + border-radius: var(--border-radius-small); +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention { + background: var(--warning-color); + border-left: 8px solid var(--warning-color-dark); + color: var(--warning-color-darker); +} + +dl.warning dt, dl.attention dt { + color: var(--warning-color-dark); +} + +dl.note, dl.remark { + background: var(--note-color); + border-left: 8px solid var(--note-color-dark); + color: var(--note-color-darker); +} + +dl.note dt, dl.remark dt { + color: var(--note-color-dark); +} + +dl.todo { + background: var(--todo-color); + border-left: 8px solid var(--todo-color-dark); + color: var(--todo-color-darker); +} + +dl.todo dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug dt a { + color: var(--todo-color-dark) !important; +} + +dl.bug { + background: var(--bug-color); + border-left: 8px solid var(--bug-color-dark); + color: var(--bug-color-darker); +} + +dl.bug dt a { + color: var(--bug-color-dark) !important; +} + +dl.deprecated { + background: var(--deprecated-color); + border-left: 8px solid var(--deprecated-color-dark); + color: var(--deprecated-color-darker); +} + +dl.deprecated dt a { + color: var(--deprecated-color-dark) !important; +} + +dl.section dd, dl.bug dd, dl.deprecated dd, dl.todo dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color); + border-left: 8px solid var(--invariant-color-dark); + color: var(--invariant-color-darker); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-dark); +} + +/* + memitem + */ + +div.memdoc, div.memproto, h2.memtitle { + box-shadow: none; + background-image: none; + border: none; +} + +div.memdoc { + padding: 0 var(--spacing-medium); + background: var(--page-background-color); +} + +h2.memtitle, div.memitem { + border: 1px solid var(--separator-color); + box-shadow: var(--box-shadow); +} + +h2.memtitle { + box-shadow: 0px var(--spacing-medium) 0 -1px var(--fragment-background), var(--box-shadow); +} + +div.memitem { + transition: none; +} + +div.memproto, h2.memtitle { + background: var(--fragment-background); +} + +h2.memtitle { + font-weight: 500; + font-size: var(--memtitle-font-size); + font-family: var(--font-family-monospace); + border-bottom: none; + border-top-left-radius: var(--border-radius-medium); + border-top-right-radius: var(--border-radius-medium); + word-break: break-all; + position: relative; +} + +h2.memtitle:after { + content: ""; + display: block; + background: var(--fragment-background); + height: var(--spacing-medium); + bottom: calc(0px - var(--spacing-medium)); + left: 0; + right: -14px; + position: absolute; + border-top-right-radius: var(--border-radius-medium); +} + +h2.memtitle > span.permalink { + font-size: inherit; +} + +h2.memtitle > span.permalink > a { + text-decoration: none; + padding-left: 3px; + margin-right: -4px; + user-select: none; + display: inline-block; + margin-top: -6px; +} + +h2.memtitle > span.permalink > a:hover { + color: var(--primary-dark-color) !important; +} + +a:target + h2.memtitle, a:target + h2.memtitle + div.memitem { + border-color: var(--primary-light-color); +} + +div.memitem { + border-top-right-radius: var(--border-radius-medium); + border-bottom-right-radius: var(--border-radius-medium); + border-bottom-left-radius: var(--border-radius-medium); + overflow: hidden; + display: block !important; +} + +div.memdoc { + border-radius: 0; +} + +div.memproto { + border-radius: 0 var(--border-radius-small) 0 0; + overflow: auto; + border-bottom: 1px solid var(--separator-color); + padding: var(--spacing-medium); + margin-bottom: -1px; +} + +div.memtitle { + border-top-right-radius: var(--border-radius-medium); + border-top-left-radius: var(--border-radius-medium); +} + +div.memproto table.memname { + font-family: var(--font-family-monospace); + color: var(--page-foreground-color); + font-size: var(--memname-font-size); + text-shadow: none; +} + +div.memproto div.memtemplate { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--memname-font-size); + margin-left: 2px; + text-shadow: none; +} + +table.mlabels, table.mlabels > tbody { + display: block; +} + +td.mlabels-left { + width: auto; +} + +td.mlabels-right { + margin-top: 3px; + position: sticky; + left: 0; +} + +table.mlabels > tbody > tr:first-child { + display: flex; + justify-content: space-between; + flex-wrap: wrap; +} + +.memname, .memitem span.mlabels { + margin: 0 +} + +/* + reflist + */ + +dl.reflist { + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-medium); + border: 1px solid var(--separator-color); + overflow: hidden; + padding: 0; +} + + +dl.reflist dt, dl.reflist dd { + box-shadow: none; + text-shadow: none; + background-image: none; + border: none; + padding: 12px; +} + + +dl.reflist dt { + font-weight: 500; + border-radius: 0; + background: var(--code-background); + border-bottom: 1px solid var(--separator-color); + color: var(--page-foreground-color) +} + + +dl.reflist dd { + background: none; +} + +/* + Table + */ + +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname), +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: inline-block; + max-width: 100%; +} + +.contents > table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname):not(.classindex) { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); +} + +table.fieldtable, +table.markdownTable tbody, +table.doxtable tbody { + border: none; + margin: var(--spacing-medium) 0; + box-shadow: 0 0 0 1px var(--separator-color); + border-radius: var(--border-radius-small); +} + +table.markdownTable, table.doxtable, table.fieldtable { + padding: 1px; +} + +table.doxtable caption { + display: block; +} + +table.fieldtable { + border-collapse: collapse; + width: 100%; +} + +th.markdownTableHeadLeft, +th.markdownTableHeadRight, +th.markdownTableHeadCenter, +th.markdownTableHeadNone, +table.doxtable th { + background: var(--tablehead-background); + color: var(--tablehead-foreground); + font-weight: 600; + font-size: var(--page-font-size); +} + +th.markdownTableHeadLeft:first-child, +th.markdownTableHeadRight:first-child, +th.markdownTableHeadCenter:first-child, +th.markdownTableHeadNone:first-child, +table.doxtable tr th:first-child { + border-top-left-radius: var(--border-radius-small); +} + +th.markdownTableHeadLeft:last-child, +th.markdownTableHeadRight:last-child, +th.markdownTableHeadCenter:last-child, +th.markdownTableHeadNone:last-child, +table.doxtable tr th:last-child { + border-top-right-radius: var(--border-radius-small); +} + +table.markdownTable td, +table.markdownTable th, +table.fieldtable td, +table.fieldtable th, +table.doxtable td, +table.doxtable th { + border: 1px solid var(--separator-color); + padding: var(--spacing-small) var(--spacing-medium); +} + +table.markdownTable td:last-child, +table.markdownTable th:last-child, +table.fieldtable td:last-child, +table.fieldtable th:last-child, +table.doxtable td:last-child, +table.doxtable th:last-child { + border-right: none; +} + +table.markdownTable td:first-child, +table.markdownTable th:first-child, +table.fieldtable td:first-child, +table.fieldtable th:first-child, +table.doxtable td:first-child, +table.doxtable th:first-child { + border-left: none; +} + +table.markdownTable tr:first-child td, +table.markdownTable tr:first-child th, +table.fieldtable tr:first-child td, +table.fieldtable tr:first-child th, +table.doxtable tr:first-child td, +table.doxtable tr:first-child th { + border-top: none; +} + +table.markdownTable tr:last-child td, +table.markdownTable tr:last-child th, +table.fieldtable tr:last-child td, +table.fieldtable tr:last-child th, +table.doxtable tr:last-child td, +table.doxtable tr:last-child th { + border-bottom: none; +} + +table.markdownTable tr, table.doxtable tr { + border-bottom: 1px solid var(--separator-color); +} + +table.markdownTable tr:last-child, table.doxtable tr:last-child { + border-bottom: none; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) { + display: block; +} + +.full_width_table table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody { + display: table; + width: 100%; +} + +table.fieldtable th { + font-size: var(--page-font-size); + font-weight: 600; + background-image: none; + background-color: var(--tablehead-background); + color: var(--tablehead-foreground); +} + +table.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fielddoc, .fieldtable th { + border-bottom: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); +} + +table.fieldtable tr:last-child td:first-child { + border-bottom-left-radius: var(--border-radius-small); +} + +table.fieldtable tr:last-child td:last-child { + border-bottom-right-radius: var(--border-radius-small); +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: var(--primary-light-color); + box-shadow: none; +} + +table.memberdecls { + display: block; + -webkit-tap-highlight-color: transparent; +} + +table.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); +} + +table.memberdecls tr[class^='memitem'] .memTemplParams { + font-family: var(--font-family-monospace); + font-size: var(--code-font-size); + color: var(--primary-dark-color); + white-space: normal; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memItemRight, +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight, +table.memberdecls .memTemplParams { + transition: none; + padding-top: var(--spacing-small); + padding-bottom: var(--spacing-small); + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + background-color: var(--fragment-background); +} + +table.memberdecls .memTemplItemLeft, +table.memberdecls .memTemplItemRight { + padding-top: 2px; +} + +table.memberdecls .memTemplParams { + border-bottom: 0; + border-left: 1px solid var(--separator-color); + border-right: 1px solid var(--separator-color); + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + padding-bottom: var(--spacing-small); +} + +table.memberdecls .memTemplItemLeft { + border-radius: 0 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + border-top: 0; +} + +table.memberdecls .memTemplItemRight { + border-radius: 0 0 var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-left: 0; + border-top: 0; +} + +table.memberdecls .memItemLeft { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); + border-left: 1px solid var(--separator-color); + padding-left: var(--spacing-medium); + padding-right: 0; +} + +table.memberdecls .memItemRight { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; + border-right: 1px solid var(--separator-color); + padding-right: var(--spacing-medium); + padding-left: 0; + +} + +table.memberdecls .mdescLeft, table.memberdecls .mdescRight { + background: none; + color: var(--page-foreground-color); + padding: var(--spacing-small) 0; +} + +table.memberdecls .memItemLeft, +table.memberdecls .memTemplItemLeft { + padding-right: var(--spacing-medium); +} + +table.memberdecls .memSeparator { + background: var(--page-background-color); + height: var(--spacing-large); + border: 0; + transition: none; +} + +table.memberdecls .groupheader { + margin-bottom: var(--spacing-large); +} + +table.memberdecls .inherit_header td { + padding: 0 0 var(--spacing-medium) 0; + text-indent: -12px; + color: var(--page-secondary-foreground-color); +} + +table.memberdecls img[src="closed.png"], +table.memberdecls img[src="open.png"], +div.dynheader img[src="open.png"], +div.dynheader img[src="closed.png"] { + width: 0; + height: 0; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 5px solid var(--primary-color); + margin-top: 8px; + display: block; + float: left; + margin-left: -10px; + transition: transform var(--animation-duration) ease-out; +} + +table.memberdecls img { + margin-right: 10px; +} + +table.memberdecls img[src="closed.png"], +div.dynheader img[src="closed.png"] { + transform: rotate(-90deg); + +} + +.compoundTemplParams { + font-family: var(--font-family-monospace); + color: var(--primary-dark-color); + font-size: var(--code-font-size); +} + +@media screen and (max-width: 767px) { + + table.memberdecls .memItemLeft, + table.memberdecls .memItemRight, + table.memberdecls .mdescLeft, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemLeft, + table.memberdecls .memTemplItemRight, + table.memberdecls .memTemplParams { + display: block; + text-align: left; + padding-left: var(--spacing-large); + margin: 0 calc(0px - var(--spacing-large)) 0 calc(0px - var(--spacing-large)); + border-right: none; + border-left: none; + border-radius: 0; + white-space: normal; + } + + table.memberdecls .memItemLeft, + table.memberdecls .mdescLeft, + table.memberdecls .memTemplItemLeft { + border-bottom: 0; + padding-bottom: 0; + } + + table.memberdecls .memTemplItemLeft { + padding-top: 0; + } + + table.memberdecls .mdescLeft { + margin-bottom: calc(0px - var(--page-font-size)); + } + + table.memberdecls .memItemRight, + table.memberdecls .mdescRight, + table.memberdecls .memTemplItemRight { + border-top: 0; + padding-top: 0; + padding-right: var(--spacing-large); + overflow-x: auto; + } + + table.memberdecls tr[class^='memitem']:not(.inherit) { + display: block; + width: calc(100vw - 2 * var(--spacing-large)); + } + + table.memberdecls .mdescRight { + color: var(--page-foreground-color); + } + + table.memberdecls tr.inherit { + visibility: hidden; + } + + table.memberdecls tr[style="display: table-row;"] { + display: block !important; + visibility: visible; + width: calc(100vw - 2 * var(--spacing-large)); + animation: fade .5s; + } + + @keyframes fade { + 0% { + opacity: 0; + max-height: 0; + } + + 100% { + opacity: 1; + max-height: 200px; + } + } +} + + +/* + Horizontal Rule + */ + +hr { + margin-top: var(--spacing-large); + margin-bottom: var(--spacing-large); + height: 1px; + background-color: var(--separator-color); + border: 0; +} + +.contents hr { + box-shadow: 100px 0 0 var(--separator-color), + -100px 0 0 var(--separator-color), + 500px 0 0 var(--separator-color), + -500px 0 0 var(--separator-color), + 1500px 0 0 var(--separator-color), + -1500px 0 0 var(--separator-color), + 2000px 0 0 var(--separator-color), + -2000px 0 0 var(--separator-color); +} + +.contents img, .contents .center, .contents center, .contents div.image object { + max-width: 100%; + overflow: auto; +} + +@media screen and (max-width: 767px) { + .contents .dyncontent > .center, .contents > center { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + max-width: calc(100% + 2 * var(--spacing-large)); + } +} + +/* + Directories + */ +div.directory { + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + width: auto; +} + +table.directory { + font-family: var(--font-family); + font-size: var(--page-font-size); + font-weight: normal; + width: 100%; +} + +table.directory td.entry, table.directory td.desc { + padding: calc(var(--spacing-small) / 2) var(--spacing-small); + line-height: var(--table-line-height); +} + +table.directory tr.even td:last-child { + border-radius: 0 var(--border-radius-small) var(--border-radius-small) 0; +} + +table.directory tr.even td:first-child { + border-radius: var(--border-radius-small) 0 0 var(--border-radius-small); +} + +table.directory tr.even:last-child td:last-child { + border-radius: 0 var(--border-radius-small) 0 0; +} + +table.directory tr.even:last-child td:first-child { + border-radius: var(--border-radius-small) 0 0 0; +} + +table.directory td.desc { + min-width: 250px; +} + +table.directory tr.even { + background-color: var(--odd-color); +} + +table.directory tr.odd { + background-color: transparent; +} + +.icona { + width: auto; + height: auto; + margin: 0 var(--spacing-small); +} + +.icon { + background: var(--primary-color); + border-radius: var(--border-radius-small); + font-size: var(--page-font-size); + padding: calc(var(--page-font-size) / 5); + line-height: var(--page-font-size); + transform: scale(0.8); + height: auto; + width: var(--page-font-size); + user-select: none; +} + +.iconfopen, .icondoc, .iconfclosed { + background-position: center; + margin-bottom: 0; + height: var(--table-line-height); +} + +.icondoc { + filter: saturate(0.2); +} + +@media screen and (max-width: 767px) { + div.directory { + margin-left: calc(0px - var(--spacing-large)); + margin-right: calc(0px - var(--spacing-large)); + } +} + +@media (prefers-color-scheme: dark) { + html:not(.light-mode) .iconfopen, html:not(.light-mode) .iconfclosed { + filter: hue-rotate(180deg) invert(); + } +} + +html.dark-mode .iconfopen, html.dark-mode .iconfclosed { + filter: hue-rotate(180deg) invert(); +} + +/* + Class list + */ + +.classindex dl.odd { + background: var(--odd-color); + border-radius: var(--border-radius-small); +} + +.classindex dl.even { + background-color: transparent; +} + +/* + Class Index Doxygen 1.8 +*/ + +table.classindex { + margin-left: 0; + margin-right: 0; + width: 100%; +} + +table.classindex table div.ah { + background-image: none; + background-color: initial; + border-color: var(--separator-color); + color: var(--page-foreground-color); + box-shadow: var(--box-shadow); + border-radius: var(--border-radius-large); + padding: var(--spacing-small); +} + +div.qindex { + background-color: var(--odd-color); + border-radius: var(--border-radius-small); + border: 1px solid var(--separator-color); + padding: var(--spacing-small) 0; +} + +/* + Footer and nav-path + */ + +#nav-path { + width: 100%; +} + +#nav-path ul { + background-image: none; + background: var(--page-background-color); + border: none; + border-top: 1px solid var(--separator-color); + border-bottom: 1px solid var(--separator-color); + border-bottom: 0; + box-shadow: 0 0.75px 0 var(--separator-color); + font-size: var(--navigation-font-size); +} + +img.footer { + width: 60px; +} + +.navpath li.footer { + color: var(--page-secondary-foreground-color); +} + +address.footer { + color: var(--page-secondary-foreground-color); + margin-bottom: var(--spacing-large); +} + +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; +} + +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--primary-color) !important; +} + +.navpath li.navelem b { + color: var(--primary-dark-color); + font-weight: 500; +} + +li.navelem { + padding: 0; + margin-left: -8px; +} + +li.navelem:first-child { + margin-left: var(--spacing-large); +} + +li.navelem:first-child:before { + display: none; +} + +#nav-path li.navelem:after { + content: ''; + border: 5px solid var(--page-background-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(4.2); + z-index: 10; + margin-left: 6px; +} + +#nav-path li.navelem:before { + content: ''; + border: 5px solid var(--separator-color); + border-bottom-color: transparent; + border-right-color: transparent; + border-top-color: transparent; + transform: translateY(-1px) scaleY(3.2); + margin-right: var(--spacing-small); +} + +.navpath li.navelem a:hover { + color: var(--primary-color); +} + +/* + Scrollbars for Webkit +*/ + +#nav-tree::-webkit-scrollbar, +div.fragment::-webkit-scrollbar, +pre.fragment::-webkit-scrollbar, +div.memproto::-webkit-scrollbar, +.contents center::-webkit-scrollbar, +.contents .center::-webkit-scrollbar, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar, +div.contents .toc::-webkit-scrollbar, +.contents .dotgraph::-webkit-scrollbar, +.contents .tabs-overview-container::-webkit-scrollbar { + background: transparent; + width: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + height: calc(var(--webkit-scrollbar-size) + var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); +} + +#nav-tree::-webkit-scrollbar-thumb, +div.fragment::-webkit-scrollbar-thumb, +pre.fragment::-webkit-scrollbar-thumb, +div.memproto::-webkit-scrollbar-thumb, +.contents center::-webkit-scrollbar-thumb, +.contents .center::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-thumb, +div.contents .toc::-webkit-scrollbar-thumb, +.contents .dotgraph::-webkit-scrollbar-thumb, +.contents .tabs-overview-container::-webkit-scrollbar-thumb { + background-color: transparent; + border: var(--webkit-scrollbar-padding) solid transparent; + border-radius: calc(var(--webkit-scrollbar-padding) + var(--webkit-scrollbar-padding)); + background-clip: padding-box; +} + +#nav-tree:hover::-webkit-scrollbar-thumb, +div.fragment:hover::-webkit-scrollbar-thumb, +pre.fragment:hover::-webkit-scrollbar-thumb, +div.memproto:hover::-webkit-scrollbar-thumb, +.contents center:hover::-webkit-scrollbar-thumb, +.contents .center:hover::-webkit-scrollbar-thumb, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody:hover::-webkit-scrollbar-thumb, +div.contents .toc:hover::-webkit-scrollbar-thumb, +.contents .dotgraph:hover::-webkit-scrollbar-thumb, +.contents .tabs-overview-container:hover::-webkit-scrollbar-thumb { + background-color: var(--webkit-scrollbar-color); +} + +#nav-tree::-webkit-scrollbar-track, +div.fragment::-webkit-scrollbar-track, +pre.fragment::-webkit-scrollbar-track, +div.memproto::-webkit-scrollbar-track, +.contents center::-webkit-scrollbar-track, +.contents .center::-webkit-scrollbar-track, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody::-webkit-scrollbar-track, +div.contents .toc::-webkit-scrollbar-track, +.contents .dotgraph::-webkit-scrollbar-track, +.contents .tabs-overview-container::-webkit-scrollbar-track { + background: transparent; +} + +#nav-tree::-webkit-scrollbar-corner { + background-color: var(--side-nav-background); +} + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc { + overflow-x: auto; + overflow-x: overlay; +} + +#nav-tree { + overflow-x: auto; + overflow-y: auto; + overflow-y: overlay; +} + +/* + Scrollbars for Firefox +*/ + +#nav-tree, +div.fragment, +pre.fragment, +div.memproto, +.contents center, +.contents .center, +.contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, +div.contents .toc, +.contents .dotgraph, +.contents .tabs-overview-container { + scrollbar-width: thin; +} + +/* + Optional Dark mode toggle button +*/ + +doxygen-awesome-dark-mode-toggle { + display: inline-block; + margin: 0 0 0 var(--spacing-small); + padding: 0; + width: var(--searchbar-height); + height: var(--searchbar-height); + background: none; + border: none; + border-radius: var(--searchbar-height); + vertical-align: middle; + text-align: center; + line-height: var(--searchbar-height); + font-size: 22px; + display: flex; + align-items: center; + justify-content: center; + user-select: none; + cursor: pointer; +} + +doxygen-awesome-dark-mode-toggle > svg { + transition: transform var(--animation-duration) ease-in-out; +} + +doxygen-awesome-dark-mode-toggle:active > svg { + transform: scale(.5); +} + +doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.03); +} + +html.dark-mode doxygen-awesome-dark-mode-toggle:hover { + background-color: rgba(0,0,0,.18); +} + +/* + Optional fragment copy button +*/ +.doxygen-awesome-fragment-wrapper { + position: relative; +} + +doxygen-awesome-fragment-copy-button { + opacity: 0; + background: var(--fragment-background); + width: 28px; + height: 28px; + position: absolute; + right: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + top: calc(var(--spacing-large) - (var(--spacing-large) / 2.5)); + border: 1px solid var(--fragment-foreground); + cursor: pointer; + border-radius: var(--border-radius-small); + display: flex; + justify-content: center; + align-items: center; +} + +.doxygen-awesome-fragment-wrapper:hover doxygen-awesome-fragment-copy-button, doxygen-awesome-fragment-copy-button.success { + opacity: .28; +} + +doxygen-awesome-fragment-copy-button:hover, doxygen-awesome-fragment-copy-button.success { + opacity: 1 !important; +} + +doxygen-awesome-fragment-copy-button:active:not([class~=success]) svg { + transform: scale(.91); +} + +doxygen-awesome-fragment-copy-button svg { + fill: var(--fragment-foreground); + width: 18px; + height: 18px; +} + +doxygen-awesome-fragment-copy-button.success svg { + fill: rgb(14, 168, 14); +} + +doxygen-awesome-fragment-copy-button.success { + border-color: rgb(14, 168, 14); +} + +@media screen and (max-width: 767px) { + .textblock > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .textblock li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc li > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + .memdoc > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button, + dl dd > .doxygen-awesome-fragment-wrapper > doxygen-awesome-fragment-copy-button { + right: 0; + } +} + +/* + Optional paragraph link button +*/ + +a.anchorlink { + font-size: 90%; + margin-left: var(--spacing-small); + color: var(--page-foreground-color) !important; + text-decoration: none; + opacity: .15; + display: none; + transition: opacity var(--animation-duration) ease-in-out, color var(--animation-duration) ease-in-out; +} + +a.anchorlink svg { + fill: var(--page-foreground-color); +} + +h3 a.anchorlink svg, h4 a.anchorlink svg { + margin-bottom: -3px; + margin-top: -4px; +} + +a.anchorlink:hover { + opacity: .45; +} + +h2:hover a.anchorlink, h1:hover a.anchorlink, h3:hover a.anchorlink, h4:hover a.anchorlink { + display: inline-block; +} + +/* + Optional tab feature +*/ + +.tabbed > ul { + padding-inline-start: 0px; + margin: 0; + padding: var(--spacing-small) 0; +} + +.tabbed > ul > li { + display: none; +} + +.tabbed > ul > li.selected { + display: block; +} + +.tabs-overview-container { + overflow-x: auto; + display: block; + overflow-y: visible; +} + +.tabs-overview { + border-bottom: 1px solid var(--separator-color); + display: flex; + flex-direction: row; +} + +@media screen and (max-width: 767px) { + .tabs-overview-container { + margin: 0 calc(0px - var(--spacing-large)); + } + .tabs-overview { + padding: 0 var(--spacing-large) + } +} + +.tabs-overview button.tab-button { + color: var(--page-foreground-color); + margin: 0; + border: none; + background: transparent; + padding: calc(var(--spacing-large) / 2) 0; + display: inline-block; + font-size: var(--page-font-size); + cursor: pointer; + box-shadow: 0 1px 0 0 var(--separator-color); + position: relative; + + -webkit-tap-highlight-color: transparent; +} + +.tabs-overview button.tab-button .tab-title::before { + display: block; + content: attr(title); + font-weight: 600; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.tabs-overview button.tab-button .tab-title { + float: left; + white-space: nowrap; + font-weight: normal; + padding: calc(var(--spacing-large) / 2) var(--spacing-large); + border-radius: var(--border-radius-medium); + transition: background-color var(--animation-duration) ease-in-out, font-weight var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button:not(:last-child) .tab-title { + box-shadow: 8px 0 0 -7px var(--separator-color); +} + +.tabs-overview button.tab-button:hover .tab-title { + background: var(--separator-color); + box-shadow: none; +} + +.tabs-overview button.tab-button.active .tab-title { + font-weight: 600; +} + +.tabs-overview button.tab-button::after { + content: ''; + display: block; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 0; + width: 0%; + margin: 0 auto; + border-radius: var(--border-radius-small) var(--border-radius-small) 0 0; + background-color: var(--primary-color); + transition: width var(--animation-duration) ease-in-out, height var(--animation-duration) ease-in-out; +} + +.tabs-overview button.tab-button.active::after { + width: 100%; + box-sizing: border-box; + height: 3px; +} + + +/* + Navigation Buttons +*/ + +.section_buttons:not(:empty) { + margin-top: calc(var(--spacing-large) * 3); +} + +.section_buttons table.markdownTable { + display: block; + width: 100%; +} + +.section_buttons table.markdownTable tbody { + display: table !important; + width: 100%; + box-shadow: none; + border-spacing: 10px; +} + +.section_buttons table.markdownTable td { + padding: 0; +} + +.section_buttons table.markdownTable th { + display: none; +} + +.section_buttons table.markdownTable tr.markdownTableHead { + border: none; +} + +.section_buttons tr th, .section_buttons tr td { + background: none; + border: none; + padding: var(--spacing-large) 0 var(--spacing-small); +} + +.section_buttons a { + display: inline-block; + border: 1px solid var(--separator-color); + border-radius: var(--border-radius-medium); + color: var(--page-secondary-foreground-color) !important; + text-decoration: none; + transition: color var(--animation-duration) ease-in-out, background-color var(--animation-duration) ease-in-out; +} + +.section_buttons a:hover { + color: var(--page-foreground-color) !important; + background-color: var(--odd-color); +} + +.section_buttons tr td.markdownTableBodyLeft a { + padding: var(--spacing-medium) var(--spacing-large) var(--spacing-medium) calc(var(--spacing-large) / 2); +} + +.section_buttons tr td.markdownTableBodyRight a { + padding: var(--spacing-medium) calc(var(--spacing-large) / 2) var(--spacing-medium) var(--spacing-large); +} + +.section_buttons tr td.markdownTableBodyLeft a::before, +.section_buttons tr td.markdownTableBodyRight a::after { + color: var(--page-secondary-foreground-color) !important; + display: inline-block; + transition: color .08s ease-in-out, transform .09s ease-in-out; +} + +.section_buttons tr td.markdownTableBodyLeft a::before { + content: '〈'; + padding-right: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyRight a::after { + content: '〉'; + padding-left: var(--spacing-large); +} + + +.section_buttons tr td.markdownTableBodyLeft a:hover::before { + color: var(--page-foreground-color) !important; + transform: translateX(-3px); +} + +.section_buttons tr td.markdownTableBodyRight a:hover::after { + color: var(--page-foreground-color) !important; + transform: translateX(3px); +} + +@media screen and (max-width: 450px) { + .section_buttons a { + width: 100%; + box-sizing: border-box; + } + + .section_buttons tr td:nth-of-type(1).markdownTableBodyLeft a { + border-radius: var(--border-radius-medium) 0 0 var(--border-radius-medium); + border-right: none; + } + + .section_buttons tr td:nth-of-type(2).markdownTableBodyRight a { + border-radius: 0 var(--border-radius-medium) var(--border-radius-medium) 0; + } +} diff --git a/docs/html/doxygen.css b/docs/html/doxygen.css new file mode 100644 index 0000000..90fba19 --- /dev/null +++ b/docs/html/doxygen.css @@ -0,0 +1,1849 @@ +/* The standard CSS for doxygen 1.13.2*/ + +body { + background-color: white; + color: black; +} + +body, table, div, p, dl { + font-weight: 400; + font-size: 14px; + font-family: Roboto,sans-serif; + line-height: 22px; +} + +/* @group Heading Levels */ + +.title { + font-family: Roboto,sans-serif; + line-height: 28px; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h1.groupheader { + font-size: 150%; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.even { + background-color: white; +} + +.classindex dl.odd { + background-color: #F8F9FC; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); +} + +a:hover > span.arrow { + text-decoration: none; + background : #F9FAFC; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul.check { + list-style:none; + text-indent: -16px; + padding-left: 38px; +} +li.unchecked:before { + content: "\2610\A0"; +} +li.checked:before { + content: "\2611\A0"; +} + +ol { + text-indent: 0px; +} + +ul { + text-indent: 0px; + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid #C4CFE5; + border-radius: 4px; + background-color: #FBFCFD; + color: black; +} + +pre.fragment { + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: hidden; + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid black; + border-radius: 4px; +} + +.fragment:hover .clipboard, .clipboard.success { + opacity: .4; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: #2EC82E; +} + +.clipboard.success { + border-color: #2EC82E; +} + +div.line { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.2; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + +span.fold { + margin-left: 5px; + margin-right: 1px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; + display: inline-block; + width: 12px; + height: 12px; + background-repeat:no-repeat; + background-position:center; +} + +span.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #00FF00; + color: black; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a, span.lineno a:visited { + color: #4665A2; + background-color: #D8D8D8; +} + +span.lineno a:hover { + color: #4665A2; + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +p.formulaDsp { + text-align: center; +} + +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; + width: 104px; +} + +.compoundTemplParams { + color: #4665A2; + font-size: 80%; + line-height: 120%; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000; +} + +span.keywordtype { + color: #604020; +} + +span.keywordflow { + color: #E08000; +} + +span.comment { + color: #800000; +} + +span.preprocessor { + color: #806020; +} + +span.stringliteral { + color: #002080; +} + +span.charliteral { + color: #008080; +} + +span.xmlcdata { + color: black; +} + +span.vhdldigit { + color: #FF00FF; +} + +span.vhdlchar { + color: #000000; +} + +span.vhdlkeyword { + color: #700070; +} + +span.vhdllogic { + color: #FF0000; +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #2D4068; +} + +th.dirtab { + background-color: #374F7F; + color: #FFFFFF; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; +} + +.overload { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: white; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; +} + +.paramname { + white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; +} + +.paramname em { + color: #602020; + font-style: normal; + margin-right: 1px; +} + +.paramname .paramdefval { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.odd { + padding-left: 6px; + background-color: #F8F9FC; +} + +.directory tr.even { + padding-left: 6px; + background-color: white; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial,Helvetica; + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.svg'); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.svg'); + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.svg'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fieldinit { + padding-top: 3px; + text-align: right; +} + + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image: url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image: url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#283A5D; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color: #2A3D61; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image: url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* + +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention, dl.important { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +*/ + +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; +} + +dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; +} + +dl.section dd { + margin-bottom: 2px; +} + +dl.warning, dl.attention, dl.important { + background: #f8d1cc; + border-left: 8px solid #b61825; + color: #75070f; +} + +dl.warning dt, dl.attention dt, dl.important dt { + color: #b61825; +} + +dl.note, dl.remark { + background: #faf3d8; + border-left: 8px solid #f3a600; + color: #5f4204; +} + +dl.note dt, dl.remark dt { + color: #f3a600; +} + +dl.todo { + background: #e4f3ff; + border-left: 8px solid #1879C4; + color: #274a5c; +} + +dl.todo dt { + color: #1879C4; +} + +dl.test { + background: #e8e8ff; + border-left: 8px solid #3939C4; + color: #1a1a5c; +} + +dl.test dt { + color: #3939C4; +} + +dl.bug dt a { + color: #5b2bdd !important; +} + +dl.bug { + background: #e4dafd; + border-left: 8px solid #5b2bdd; + color: #2a0d72; +} + +dl.bug dt a { + color: #5b2bdd !important; +} + +dl.deprecated { + background: #ecf0f3; + border-left: 8px solid #5b6269; + color: #43454a; +} + +dl.deprecated dt a { + color: #5b6269 !important; +} + +dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, +dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, +dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + +dl.invariant, dl.pre, dl.post { + background: #d8f1e3; + border-left: 8px solid #44b86f; + color: #265532; +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: #44b86f; +} + + +#projectrow +{ + height: 56px; +} + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; + padding-left: 0.5em; +} + +#projectname +{ + font-size: 200%; + font-family: Tahoma,Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#side-nav #projectname +{ + font-size: 130%; +} + +#projectbrief +{ + font-size: 90%; + font-family: Tahoma,Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font-size: 50%; + font-family: 50% Tahoma,Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; + background-color: white; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("data:image/svg+xml;utf8,&%238595;") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Verdana,'DejaVu Sans',Geneva,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li[class^='level'] { + margin-left: 15px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.empty { + background-image: none; + margin-top: 0px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +span.obfuscator { + display: none; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + /*white-space: nowrap;*/ + color: black; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip a { + color: #4665A2; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: Roboto,sans-serif; + line-height: 16px; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: white; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: gray; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: white; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: gray; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: gray; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: gray; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: gray; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: gray; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +tt, code, kbd +{ + display: inline-block; +} +tt, code, kbd +{ + vertical-align: top; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + diff --git a/docs/html/doxygen.svg b/docs/html/doxygen.svg new file mode 100644 index 0000000..79a7635 --- /dev/null +++ b/docs/html/doxygen.svg @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/doxygen_crawl.html b/docs/html/doxygen_crawl.html new file mode 100644 index 0000000..5fbdbf7 --- /dev/null +++ b/docs/html/doxygen_crawl.html @@ -0,0 +1,447 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js new file mode 100644 index 0000000..3cc426a --- /dev/null +++ b/docs/html/dynsections.js @@ -0,0 +1,198 @@ +/* + @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 toggleVisibility(linkObj) { + return dynsection.toggleVisibility(linkObj); +} + +let dynsection = { + + // helper function + updateStripes : function() { + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); + }, + + toggleVisibility : function(linkObj) { + const base = $(linkObj).attr('id'); + const summary = $('#'+base+'-summary'); + const content = $('#'+base+'-content'); + const trigger = $('#'+base+'-trigger'); + const src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; + }, + + toggleLevel : function(level) { + $('table.directory tr').each(function() { + const l = this.id.split('_').length-1; + const i = $('#img'+this.id.substring(3)); + const a = $('#arr'+this.id.substring(3)); + if (l'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').css('background-image',codefold.plusImg[relPath]); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; +/* @license-end */ diff --git a/docs/html/example-workflows_8md.html b/docs/html/example-workflows_8md.html new file mode 100644 index 0000000..7b1b2de --- /dev/null +++ b/docs/html/example-workflows_8md.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs/example-workflows.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
/app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs/example-workflows.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/file__analyzer_8py.html b/docs/html/file__analyzer_8py.html new file mode 100644 index 0000000..23c8e9c --- /dev/null +++ b/docs/html/file__analyzer_8py.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/file_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
file_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.file_analyzer.FileAnalyzerGenHook
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.file_analyzer
 
+ + + +

+Variables

 penify_hook.file_analyzer.logger = logging.getLogger(__name__)
 
+
+
+ + + + + diff --git a/docs/html/file__analyzer_8py.js b/docs/html/file__analyzer_8py.js new file mode 100644 index 0000000..5890a99 --- /dev/null +++ b/docs/html/file__analyzer_8py.js @@ -0,0 +1,5 @@ +var file__analyzer_8py = +[ + [ "penify_hook.file_analyzer.FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook" ], + [ "penify_hook.file_analyzer.logger", "namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828", null ] +]; \ No newline at end of file diff --git a/docs/html/files.html b/docs/html/files.html new file mode 100644 index 0000000..332d17f --- /dev/null +++ b/docs/html/files.html @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + +penify-cli: File List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
+
+ + + + + diff --git a/docs/html/files_dup.js b/docs/html/files_dup.js new file mode 100644 index 0000000..dd5a1a9 --- /dev/null +++ b/docs/html/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "penify-cli", "dir_b3b22d2ab7966b65f6b237e3231b41be.html", "dir_b3b22d2ab7966b65f6b237e3231b41be" ] +]; \ No newline at end of file diff --git a/docs/html/folder__analyzer_8py.html b/docs/html/folder__analyzer_8py.html new file mode 100644 index 0000000..893e4f1 --- /dev/null +++ b/docs/html/folder__analyzer_8py.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/folder_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
folder_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.folder_analyzer.FolderAnalyzerGenHook
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.folder_analyzer
 
+
+
+ + + + + diff --git a/docs/html/folder__analyzer_8py.js b/docs/html/folder__analyzer_8py.js new file mode 100644 index 0000000..f51e8e5 --- /dev/null +++ b/docs/html/folder__analyzer_8py.js @@ -0,0 +1,4 @@ +var folder__analyzer_8py = +[ + [ "penify_hook.folder_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/folderclosed.svg b/docs/html/folderclosed.svg new file mode 100644 index 0000000..b04bed2 --- /dev/null +++ b/docs/html/folderclosed.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/html/folderclosedd.svg b/docs/html/folderclosedd.svg new file mode 100644 index 0000000..52f0166 --- /dev/null +++ b/docs/html/folderclosedd.svg @@ -0,0 +1,11 @@ + + + + + + + + + + diff --git a/docs/html/folderopen.svg b/docs/html/folderopen.svg new file mode 100644 index 0000000..f6896dd --- /dev/null +++ b/docs/html/folderopen.svg @@ -0,0 +1,17 @@ + + + + + + + + + + diff --git a/docs/html/folderopend.svg b/docs/html/folderopend.svg new file mode 100644 index 0000000..2d1f06e --- /dev/null +++ b/docs/html/folderopend.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + diff --git a/docs/html/functions.html b/docs/html/functions.html new file mode 100644 index 0000000..5b5a3ec --- /dev/null +++ b/docs/html/functions.html @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- _ -

+ + +

- a -

+ + +

- b -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- j -

+ + +

- l -

+ + +

- m -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+
+ + + + + diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html new file mode 100644 index 0000000..4959e6d --- /dev/null +++ b/docs/html/functions_func.html @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members - Functions + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all functions with links to the classes they belong to:
+ +

- _ -

+ + +

- a -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+
+ + + + + diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html new file mode 100644 index 0000000..a644568 --- /dev/null +++ b/docs/html/functions_vars.html @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members - Variables + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all variables with links to the classes they belong to:
+
+
+ + + + + diff --git a/docs/html/git__analyzer_8py.html b/docs/html/git__analyzer_8py.html new file mode 100644 index 0000000..a39d0a6 --- /dev/null +++ b/docs/html/git__analyzer_8py.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/git_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
git_analyzer.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.git_analyzer.GitDocGenHook
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.git_analyzer
 
+ + + +

+Variables

 penify_hook.git_analyzer.logger = logging.getLogger(__name__)
 
+
+
+ + + + + diff --git a/docs/html/git__analyzer_8py.js b/docs/html/git__analyzer_8py.js new file mode 100644 index 0000000..5aa8368 --- /dev/null +++ b/docs/html/git__analyzer_8py.js @@ -0,0 +1,5 @@ +var git__analyzer_8py = +[ + [ "penify_hook.git_analyzer.GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook" ], + [ "penify_hook.git_analyzer.logger", "namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a", null ] +]; \ No newline at end of file diff --git a/docs/html/graph_legend.html b/docs/html/graph_legend.html new file mode 100644 index 0000000..c2bcfdd --- /dev/null +++ b/docs/html/graph_legend.html @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Graph Legend + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+ +

The arrows have the following meaning:

+ +
+
+ + + + + diff --git a/docs/html/graph_legend.md5 b/docs/html/graph_legend.md5 new file mode 100644 index 0000000..34a71d6 --- /dev/null +++ b/docs/html/graph_legend.md5 @@ -0,0 +1 @@ +238bc3d95adc1929b3259d0c39010ed6 \ No newline at end of file diff --git a/docs/html/graph_legend.svg b/docs/html/graph_legend.svg new file mode 100644 index 0000000..f90d1bf --- /dev/null +++ b/docs/html/graph_legend.svg @@ -0,0 +1,167 @@ + + + + + + +Graph Legend + + +Node9 + + +Inherited + + + + + +Node10 + + +PublicBase + + + + + +Node10->Node9 + + + + + + + + +Node11 + + +Truncated + + + + + +Node11->Node10 + + + + + + + + +Node13 + + +ProtectedBase + + + + + +Node13->Node9 + + + + + + + + +Node14 + + +PrivateBase + + + + + +Node14->Node9 + + + + + + + + +Node15 + + +Undocumented + + + + + +Node15->Node9 + + + + + + + + +Node16 + + +Templ< int > + + + + + +Node16->Node9 + + + + + + + + +Node17 + + +Templ< T > + + + + + +Node17->Node16 + + + + + +< int > + + + +Node18 + + +Used + + + + + +Node18->Node9 + + + + + +m_usedClass + + + diff --git a/docs/html/hierarchy.html b/docs/html/hierarchy.html new file mode 100644 index 0000000..c5a32d8 --- /dev/null +++ b/docs/html/hierarchy.html @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
+
+ + + + + diff --git a/docs/html/hierarchy.js b/docs/html/hierarchy.js new file mode 100644 index 0000000..6af7a4f --- /dev/null +++ b/docs/html/hierarchy.js @@ -0,0 +1,18 @@ +var hierarchy = +[ + [ "penify_hook.api_client.APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", null ], + [ "penify_hook.base_analyzer.BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", [ + [ "penify_hook.commit_analyzer.CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", null ], + [ "penify_hook.file_analyzer.FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", null ], + [ "penify_hook.folder_analyzer.FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", null ], + [ "penify_hook.git_analyzer.GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", null ] + ] ], + [ "Exception", "classException.html", [ + [ "penify_hook.utils.GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ] + ] ], + [ "penify_hook.jira_client.JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", null ], + [ "penify_hook.llm_client.LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", null ], + [ "tests.test_commit_commands.TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", null ], + [ "tests.test_config_commands.TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", null ], + [ "tests.test_web_config.TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", null ] +]; \ No newline at end of file diff --git a/docs/html/hook__commands_8py.html b/docs/html/hook__commands_8py.html new file mode 100644 index 0000000..4cf626d --- /dev/null +++ b/docs/html/hook__commands_8py.html @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/commands/hook_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
hook_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commands
 
namespace  penify_hook.commands.hook_commands
 
+ + + + + +

+Functions

 penify_hook.commands.hook_commands.install_git_hook (location, token)
 
 penify_hook.commands.hook_commands.uninstall_git_hook (location)
 
+ + + + + +

+Variables

str penify_hook.commands.hook_commands.HOOK_FILENAME = "post-commit"
 
str penify_hook.commands.hook_commands.HOOK_TEMPLATE
 
+
+
+ + + + + diff --git a/docs/html/hook__commands_8py.js b/docs/html/hook__commands_8py.js new file mode 100644 index 0000000..d8d8532 --- /dev/null +++ b/docs/html/hook__commands_8py.js @@ -0,0 +1,7 @@ +var hook__commands_8py = +[ + [ "penify_hook.commands.hook_commands.install_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a093a68d1ec1b0da8ba8ab12a447fd135", null ], + [ "penify_hook.commands.hook_commands.uninstall_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a1b2b3ffff51d19300a0b7ea785678443", null ], + [ "penify_hook.commands.hook_commands.HOOK_FILENAME", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a978b976442fbf28c29c8d0f889bfae9c", null ], + [ "penify_hook.commands.hook_commands.HOOK_TEMPLATE", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a51fc390518d967f2a1e21280d7ea781b", null ] +]; \ No newline at end of file diff --git a/docs/html/index.html b/docs/html/index.html new file mode 100644 index 0000000..074bbd9 --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Main Page + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify-cli Documentation
+
+
+ +
+
+ + + + + diff --git a/docs/html/inherit_graph_0.map b/docs/html/inherit_graph_0.map new file mode 100644 index 0000000..406384b --- /dev/null +++ b/docs/html/inherit_graph_0.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/inherit_graph_0.md5 b/docs/html/inherit_graph_0.md5 new file mode 100644 index 0000000..ea96ec0 --- /dev/null +++ b/docs/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +3eb6427f44b1f537abaa72acbefc02c8 \ No newline at end of file diff --git a/docs/html/inherit_graph_0.svg b/docs/html/inherit_graph_0.svg new file mode 100644 index 0000000..44609dd --- /dev/null +++ b/docs/html/inherit_graph_0.svg @@ -0,0 +1,40 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +Exception + + + + + +Node1 + + +penify_hook.utils.GitRepo +NotFoundError + + + + + +Node0->Node1 + + + + + + + + diff --git a/docs/html/inherit_graph_1.map b/docs/html/inherit_graph_1.map new file mode 100644 index 0000000..a3a551d --- /dev/null +++ b/docs/html/inherit_graph_1.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_1.md5 b/docs/html/inherit_graph_1.md5 new file mode 100644 index 0000000..f27860d --- /dev/null +++ b/docs/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +30ab7e0f934acf6ce02c608f7b130af8 \ No newline at end of file diff --git a/docs/html/inherit_graph_1.svg b/docs/html/inherit_graph_1.svg new file mode 100644 index 0000000..9381d53 --- /dev/null +++ b/docs/html/inherit_graph_1.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +penify_hook.api_client.APIClient + + + + + diff --git a/docs/html/inherit_graph_2.map b/docs/html/inherit_graph_2.map new file mode 100644 index 0000000..5adb40c --- /dev/null +++ b/docs/html/inherit_graph_2.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/inherit_graph_2.md5 b/docs/html/inherit_graph_2.md5 new file mode 100644 index 0000000..c36e284 --- /dev/null +++ b/docs/html/inherit_graph_2.md5 @@ -0,0 +1 @@ +874705f4d60bd6db03044e05449f2c1a \ No newline at end of file diff --git a/docs/html/inherit_graph_2.svg b/docs/html/inherit_graph_2.svg new file mode 100644 index 0000000..21b60f3 --- /dev/null +++ b/docs/html/inherit_graph_2.svg @@ -0,0 +1,98 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +penify_hook.base_analyzer. +BaseAnalyzer + + + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook + + + + + +Node0->Node1 + + + + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + + + + + +Node0->Node2 + + + + + + + + +Node3 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + + + + + +Node0->Node3 + + + + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook + + + + + +Node0->Node4 + + + + + + + + diff --git a/docs/html/inherit_graph_3.map b/docs/html/inherit_graph_3.map new file mode 100644 index 0000000..69418a3 --- /dev/null +++ b/docs/html/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_3.md5 b/docs/html/inherit_graph_3.md5 new file mode 100644 index 0000000..bf0a2c8 --- /dev/null +++ b/docs/html/inherit_graph_3.md5 @@ -0,0 +1 @@ +af6bb0b4f75102cbee5ca7be41f73a3a \ No newline at end of file diff --git a/docs/html/inherit_graph_3.svg b/docs/html/inherit_graph_3.svg new file mode 100644 index 0000000..ea65e68 --- /dev/null +++ b/docs/html/inherit_graph_3.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +penify_hook.jira_client. +JiraClient + + + + + diff --git a/docs/html/inherit_graph_4.map b/docs/html/inherit_graph_4.map new file mode 100644 index 0000000..030b056 --- /dev/null +++ b/docs/html/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_4.md5 b/docs/html/inherit_graph_4.md5 new file mode 100644 index 0000000..ffe5e19 --- /dev/null +++ b/docs/html/inherit_graph_4.md5 @@ -0,0 +1 @@ +889026fbb54979a4167ba59a47d79890 \ No newline at end of file diff --git a/docs/html/inherit_graph_4.svg b/docs/html/inherit_graph_4.svg new file mode 100644 index 0000000..1f83fb0 --- /dev/null +++ b/docs/html/inherit_graph_4.svg @@ -0,0 +1,21 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +penify_hook.llm_client.LLMClient + + + + + diff --git a/docs/html/inherit_graph_5.map b/docs/html/inherit_graph_5.map new file mode 100644 index 0000000..c211868 --- /dev/null +++ b/docs/html/inherit_graph_5.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_5.md5 b/docs/html/inherit_graph_5.md5 new file mode 100644 index 0000000..9ad4789 --- /dev/null +++ b/docs/html/inherit_graph_5.md5 @@ -0,0 +1 @@ +70fd9fd520f30c258462f2b03b683a94 \ No newline at end of file diff --git a/docs/html/inherit_graph_5.svg b/docs/html/inherit_graph_5.svg new file mode 100644 index 0000000..aab0886 --- /dev/null +++ b/docs/html/inherit_graph_5.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +tests.test_commit_commands. +TestCommitCommands + + + + + diff --git a/docs/html/inherit_graph_6.map b/docs/html/inherit_graph_6.map new file mode 100644 index 0000000..6e6be2f --- /dev/null +++ b/docs/html/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_6.md5 b/docs/html/inherit_graph_6.md5 new file mode 100644 index 0000000..da0026d --- /dev/null +++ b/docs/html/inherit_graph_6.md5 @@ -0,0 +1 @@ +50eefd0e039ff697d7ac30f0ea20cb79 \ No newline at end of file diff --git a/docs/html/inherit_graph_6.svg b/docs/html/inherit_graph_6.svg new file mode 100644 index 0000000..fddd160 --- /dev/null +++ b/docs/html/inherit_graph_6.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +tests.test_config_commands. +TestConfigCommands + + + + + diff --git a/docs/html/inherit_graph_7.map b/docs/html/inherit_graph_7.map new file mode 100644 index 0000000..31cf321 --- /dev/null +++ b/docs/html/inherit_graph_7.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_7.md5 b/docs/html/inherit_graph_7.md5 new file mode 100644 index 0000000..ac4cccf --- /dev/null +++ b/docs/html/inherit_graph_7.md5 @@ -0,0 +1 @@ +3b375f5c24cefc177dd2f4d4819b5727 \ No newline at end of file diff --git a/docs/html/inherit_graph_7.svg b/docs/html/inherit_graph_7.svg new file mode 100644 index 0000000..541f678 --- /dev/null +++ b/docs/html/inherit_graph_7.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + +Node0 + + +tests.test_web_config.Test +WebConfig + + + + + diff --git a/docs/html/inherits.html b/docs/html/inherits.html new file mode 100644 index 0000000..0ceb0f5 --- /dev/null +++ b/docs/html/inherits.html @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+ + + + + + + + + +
+
+
+ + + + + diff --git a/docs/html/jira__client_8py.html b/docs/html/jira__client_8py.html new file mode 100644 index 0000000..ae3b9d7 --- /dev/null +++ b/docs/html/jira__client_8py.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/jira_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
jira_client.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.jira_client.JiraClient
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.jira_client
 
+ + + +

+Variables

bool penify_hook.jira_client.JIRA_AVAILABLE = True
 
+
+
+ + + + + diff --git a/docs/html/jira__client_8py.js b/docs/html/jira__client_8py.js new file mode 100644 index 0000000..f2f0342 --- /dev/null +++ b/docs/html/jira__client_8py.js @@ -0,0 +1,5 @@ +var jira__client_8py = +[ + [ "penify_hook.jira_client.JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", "classpenify__hook_1_1jira__client_1_1JiraClient" ], + [ "penify_hook.jira_client.JIRA_AVAILABLE", "namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2", null ] +]; \ No newline at end of file diff --git a/docs/html/jquery.js b/docs/html/jquery.js new file mode 100644 index 0000000..875ada7 --- /dev/null +++ b/docs/html/jquery.js @@ -0,0 +1,204 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e} +var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp( +"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType +}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c +)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){ +return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll( +":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id") +)&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push( +"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test( +a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null, +null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne +).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for( +var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n; +return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0, +r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r] +,C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each( +function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r, +"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})} +),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each( +"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t +){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t +]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i}, +getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within, +s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},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;n").css({overflow:"hidden",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,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),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(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t +).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(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),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".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=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split( +","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add( +this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{ +width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(), +!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),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=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height +,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-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")];e<4;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;e").css({overflow:"hidden"}),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:++e.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;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e, +i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,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}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left +)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e +){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0), +i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth( +)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e, +function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0 +]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=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"},$}); diff --git a/docs/html/llm__client_8py.html b/docs/html/llm__client_8py.html new file mode 100644 index 0000000..7052743 --- /dev/null +++ b/docs/html/llm__client_8py.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/llm_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
llm_client.py File Reference
+
+
+ + + + +

+Classes

class  penify_hook.llm_client.LLMClient
 
+ + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.llm_client
 
+
+
+ + + + + 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..483d790 --- /dev/null +++ b/docs/html/login__command_8py.html @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/login_command.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
login_command.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.login_command
 
+ + + + + +

+Functions

 penify_hook.login_command.setup_login_parser (parser)
 
 penify_hook.login_command.handle_login (args)
 
+
+
+ + + + + diff --git a/docs/html/login__command_8py.js b/docs/html/login__command_8py.js new file mode 100644 index 0000000..f2fc81c --- /dev/null +++ b/docs/html/login__command_8py.js @@ -0,0 +1,5 @@ +var login__command_8py = +[ + [ "penify_hook.login_command.handle_login", "namespacepenify__hook_1_1login__command.html#a13cdb8c8488b958ce536660a27521411", null ], + [ "penify_hook.login_command.setup_login_parser", "namespacepenify__hook_1_1login__command.html#ae787794b007f320b4480aff0b9767235", 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..0ad7ac6 --- /dev/null +++ b/docs/html/main_8py.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/main.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
main.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.main
 
+ + + +

+Functions

 penify_hook.main.main ()
 
+
+
+ + + + + diff --git a/docs/html/main_8py.js b/docs/html/main_8py.js new file mode 100644 index 0000000..fac2812 --- /dev/null +++ b/docs/html/main_8py.js @@ -0,0 +1,4 @@ +var main_8py = +[ + [ "penify_hook.main.main", "namespacepenify__hook_1_1main.html#a245db84b8309d570226b2e147e18b5eb", null ] +]; \ No newline at end of file diff --git a/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html b/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html new file mode 100644 index 0000000..527bb2f --- /dev/null +++ b/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Commit Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Penify CLI - Commit Commands
+
+
+

+

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

+
penify commit
+

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

+

+-m, --message

+

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.

+

+-e, --terminal

+

Open an editor to review and edit the generated commit message before committing:

+
penify commit -e
+

This opens your default Git editor with the generated message for review.

+

+-d, --description

+

Generate a detailed commit message with both title and description:

+
penify commit -d
+

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

+
penify commit -d -e
+

+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:

+
    +
  1. Detect JIRA issue references in your changes
  2. +
  3. Fetch issue details from your JIRA instance
  4. +
  5. Include issue information in the commit message
  6. +
  7. Format the commit message according to JIRA's smart commit format
  8. +
+

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:

+
    +
  1. You must have configured either:
      +
    • Local LLM via penify config llm, OR
    • +
    • Logged in via penify login
    • +
    +
  2. +
  3. For JIRA enhancement (optional):
      +
    • Configure JIRA via penify config jira
    • +
    +
  4. +
+

+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

+
    +
  1. "No LLM model or API token provided"
      +
    • Run penify config llm to configure a local LLM, or
    • +
    • Run penify login to authenticate with Penify
    • +
    +
  2. +
  3. "Failed to connect to JIRA"
      +
    • Check your JIRA configuration with cat ~/.penify
    • +
    • Verify your network connection
    • +
    • Ensure your JIRA credentials are valid
    • +
    +
  4. +
  5. "Error initializing LLM client"
      +
    • Verify your LLM configuration settings
    • +
    • Ensure the LLM API is accessible
    • +
    +
  6. +
+
+
+
+ + + + + diff --git a/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html b/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html new file mode 100644 index 0000000..0ba592c --- /dev/null +++ b/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Configuration Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Penify CLI - Configuration Commands
+
+
+

+

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:

+
    +
  1. Model: The LLM model to use (e.g., gpt-3.5-turbo)
  2. +
  3. API Base URL: The endpoint URL for your LLM API (e.g., https://api.openai.com/v1)
  4. +
  5. API Key: Your authentication key for the LLM API
  6. +
+

+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:

+
    +
  1. JIRA URL: Your JIRA instance URL (e.g., https://yourcompany.atlassian.net)
  2. +
  3. Username: Your JIRA username (typically your email)
  4. +
  5. API Token: Your JIRA API token
  6. +
+

+Creating a JIRA API Token

+
    +
  1. Log in to https://id.atlassian.com/manage-profile/security/api-tokens
  2. +
  3. Click "Create API token"
  4. +
  5. Give it a name (e.g., "Penify CLI")
  6. +
  7. Copy the generated token and paste it into the configuration
  8. +
+

+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:

+
    +
  1. Project-specific: .penify/config.json in the Git repository root
  2. +
  3. User-specific: ~/.penify/config.json in your home directory
  4. +
+

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:

    +
  1. Using a project-specific .penify/config.json with shared settings
  2. +
  3. Excluding API keys from shared configuration
  4. +
  5. Using environment variables for sensitive credentials
  6. +
+

+Troubleshooting

+

+Common Issues

+
    +
  1. "Error reading configuration file"
      +
    • Check if the file exists: ls -la ~/.penify
    • +
    • Ensure it contains valid JSON: cat ~/.penify/config.json
    • +
    +
  2. +
  3. "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
    • +
    +
  4. +
  5. "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
    • +
    +
  6. +
+
+
+
+ + + + + diff --git a/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html b/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html new file mode 100644 index 0000000..de2780e --- /dev/null +++ b/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Detailed Usage Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Penify CLI - Detailed Usage Guide
+
+
+

+

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:

+
    +
  1. Opens your default web browser
  2. +
  3. Redirects you to Penify's login page
  4. +
  5. Captures the authentication token after successful login
  6. +
  7. Saves the token in ~/.penify file
  8. +
+

+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

+
    +
  1. Environment variable PENIFY_API_TOKEN (highest priority)
  2. +
  3. Token in ~/.penify file
  4. +
+

+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

+
    +
  1. Current Git Diff: Default behavior, documents only changed files
  2. +
  3. Specific File: Pass a file path with -l path/to/file.py
  4. +
  5. Entire Folder: Pass a folder path with -l path/to/folder
  6. +
+

+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:

+
    +
  1. Set PENIFY_API_TOKEN as an environment variable
  2. +
  3. Run commands without requiring interactive login
  4. +
+

+Remote Repository Documentation

+

Generate documentation for an entire repository:

+
git clone https://github.com/user/repo
+
cd repo
+
penify docgen -l .
+

+Troubleshooting

+

+Common Issues

+
    +
  1. API Key Errors: Ensure you've run penify login or set PENIFY_API_TOKEN
  2. +
  3. LLM Configuration: Check your LLM settings with cat ~/.penify
  4. +
  5. JIRA Integration: Verify JIRA credentials in your configuration
  6. +
+

+Logs

+

For more detailed logs, you can set the environment variable:

+
export PENIFY_DEBUG=1
+

+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__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html b/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html new file mode 100644 index 0000000..bf19377 --- /dev/null +++ b/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html @@ -0,0 +1,378 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Documentation Generation Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Penify CLI - Documentation Generation Commands
+
+
+

+

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

+
penify docgen
+

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

+

+-l, --location

+

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

+

+install-hook

+

Install a Git post-commit hook to automatically generate documentation:

+
penify docgen install-hook
+

+uninstall-hook

+

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:

+
    +
  1. Creates a post-commit hook script in the .git/hooks directory
  2. +
  3. Makes the script executable
  4. +
  5. Configures the hook to run penify docgen after each commit
  6. +
+

+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

+
    +
  1. Edit the .git/hooks/post-commit file
  2. +
  3. Add additional options to the penify docgen command
  4. +
  5. Add other commands to run after commit
  6. +
+

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

+
    +
  1. "Authentication required"
      +
    • Run penify login before using documentation features
    • +
    • Check your API token with cat ~/.penify
    • +
    +
  2. +
  3. "Permission denied when installing hook"
      +
    • Check Git repository permissions
    • +
    • Try running with sudo (if appropriate for your environment)
    • +
    • Ensure the .git/hooks directory exists
    • +
    +
  4. +
  5. "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
    • +
    +
  6. +
  7. "File or directory not found"
      +
    • Verify the path provided to the -l option
    • +
    • Ensure you're running the command from the correct directory
    • +
    +
  8. +
  9. "Hook uninstallation failed"
      +
    • Check permissions on the .git/hooks directory
    • +
    • Try manual removal: rm .git/hooks/post-commit
    • +
    +
  10. +
+

+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__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html b/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html new file mode 100644 index 0000000..14daf11 --- /dev/null +++ b/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI Example Workflows + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Penify CLI Example Workflows
+
+
+

+

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:

+
penify config llm
+

Configure your JIRA integration for enhanced commit messages:

+
penify config jira
+

+Daily Workflow

+
    +
  1. Make your code changes as usual
  2. +
  3. When ready to commit, use Penify to generate a smart commit message:
  4. +
+
penify commit
+
    +
  1. Review and confirm the generated commit message
  2. +
  3. Git commit and push as usual
  4. +
+

+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:

+
penify login
+

Install the Git hook for automatic documentation generation:

+
penify docgen install-hook
+

+Daily Workflow

+
    +
  1. Make your code changes as usual
  2. +
  3. Commit your changes
  4. +
  5. Documentation is automatically generated for changed files
  6. +
  7. Review the generated documentation
  8. +
+

+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:

+
penify login
+

+Workflow

+
    +
  1. Before submitting a PR, generate documentation for changed files:
  2. +
+
penify docgen
+
    +
  1. Include the generated documentation in your PR
  2. +
  3. Reviewers can better understand your changes with the AI-generated explanations
  4. +
+

+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:

+
penify docgen -l .
+

+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/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html b/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html new file mode 100644 index 0000000..0a6fba0 --- /dev/null +++ b/docs/html/md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html @@ -0,0 +1,291 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify-cli-documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
penify-cli-documentation
+
+
+

+autotoc_md123

+

layout: doc title: Streamline Git Commits and Code Documentation with Penify-CLI's Automated Generation description: Discover how Penify-CLI automates both Git commit messages and code documentation, with Jira integration and flexible options. Save time, improve repository clarity, and boost productivity with this detailed guide to usage and best practices. keywords: Penify-CLI, Git commit messages, code documentation, Jira integration, automated documentation, version control, repository management, developer productivity

+

+author: Suman Sauarbh

+

+Penify CLI Documentation

+

Penify CLI is a powerful tool for enhancing your development workflow with AI-powered features like commit message generation, code documentation, and JIRA integration.

+

+Installation

+
pip install penify
+

+Getting Started

+

After installation, you can check the version of Penify CLI:

+
penify --version
+

+Commands Overview

+
    +
  • commit: Generate smart commit messages using local-LLM
  • +
  • config: Configure local-LLM and JIRA settings
  • +
  • login: Log in to Penify to use advanced features
  • +
  • docgen: Generate code documentation for Git diffs, files, or folders
  • +
+

+Detailed Command Documentation

+

+Commit Command

+

The commit command generates intelligent commit messages using local LLM models or Penify services.

+

+Usage:

+
penify commit [options]
+

+Options:

+
    +
  • -m, --message TEXT: Provide context for the commit message generation
  • +
  • -e, --terminal: Open an editor to modify the generated commit message before applying it
  • +
  • -d, --description: Generate a detailed commit message with both title and description
  • +
+

+Examples:

+

Basic usage:

penify commit
+

Provide context for better results:

penify commit -m "Fixed the login button"
+

Generate a detailed commit message and open editor:

penify commit -e -d
+

+Requirements:

+
    +
  • Either a local LLM configuration (via penify config llm) or Penify login
  • +
  • For JIRA integration, configure JIRA settings (via penify config jira)
  • +
+
+

+Config Command

+

The config command helps you configure local LLM settings and JIRA integration for enhanced commit messages.

+

+Usage:

+
penify config [subcommand]
+

+Subcommands:

+
    +
  • llm: Configure local Large Language Model settings
  • +
  • jira: Configure JIRA integration settings
  • +
+

+Examples:

+

Configure local LLM:

penify config llm
+

This opens a web interface to configure:

+

Configure JIRA integration:

penify config jira
+

This opens a web interface to configure:

+
+

+Login Command

+

The login command authenticates you with Penify for advanced features like code documentation generation.

+

+Usage:

+
penify login
+

+What happens:

+
    +
  1. A browser window opens to the Penify login page
  2. +
  3. After successful login, your API key is automatically saved
  4. +
  5. The tool is now authorized to use Penify's advanced features
  6. +
+

+Example:

+
penify login
+

+

+Docgen Command

+

The docgen command generates documentation for your code using Penify's AI services.

+

+Usage:

+
penify docgen [options] [subcommand]
+

+Options:

+
    +
  • -l, --location PATH: Path to a specific file or folder to document (default: current working directory)
  • +
+

+Subcommands:

+
    +
  • install-hook: Install a Git post-commit hook to automatically generate documentation
  • +
  • uninstall-hook: Remove the Git post-commit hook
  • +
+

+Examples:

+

Document current Git diff:

penify docgen
+

Document a specific file:

penify docgen -l src/main.py
+

Document an entire folder:

penify docgen -l src/components
+

Install the Git hook for automatic documentation:

penify docgen install-hook
+

Uninstall the Git hook:

penify docgen uninstall-hook
+

+Requirements:

+
    +
  • Requires login to Penify (penify login)
  • +
+

+Configuration Files

+

Penify CLI stores configuration in the following locations:

+
    +
  • Global configuration: ~/.penify
  • +
  • Project-specific configuration: .penify in your Git repository root
  • +
+

+Environment Variables

+
    +
  • PENIFY_API_TOKEN: Can be used to provide the API token instead of logging in
  • +
+

+Troubleshooting

+

If you encounter issues:

+
    +
  1. Check your configuration with cat ~/.penify
  2. +
  3. Verify network connectivity to API endpoints
  4. +
  5. Ensure your API keys and tokens are valid
  6. +
  7. For JIRA integration issues, verify your JIRA credentials
  8. +
+

+Additional Resources

+

For more information, visit the Penify Documentation.

+
+
+
+ + + + + diff --git a/docs/html/menu.js b/docs/html/menu.js new file mode 100644 index 0000000..0fd1e99 --- /dev/null +++ b/docs/html/menu.js @@ -0,0 +1,134 @@ +/* + @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,treeview) { + function makeTree(data,relPath) { + let result=''; + if ('children' in data) { + result+='
    '; + for (let i in data.children) { + let url; + const 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; + } + let searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + const $mainMenuState = $('#main-menu-state'); + let prevWidth = 0; + if ($mainMenuState.length) { + const initResizableIfExists = function() { + if (typeof initResizable==='function') initResizable(treeview); + } + // animate mobile menu + $mainMenuState.change(function() { + const $menu = $('#main-menu'); + let options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = () => $menu.css('display', 'block'); + $menu.hide().slideDown(options); + } else { + options['complete'] = () => $menu.css('display', 'none'); + $menu.show().slideUp(options); + } + }); + // set default menu visibility + const resetState = function() { + const $menu = $('#main-menu'); + const newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + 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/minus.svg b/docs/html/minus.svg new file mode 100644 index 0000000..f70d0c1 --- /dev/null +++ b/docs/html/minus.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/minusd.svg b/docs/html/minusd.svg new file mode 100644 index 0000000..5f8e879 --- /dev/null +++ b/docs/html/minusd.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacemembers.html b/docs/html/namespacemembers.html new file mode 100644 index 0000000..25466ae --- /dev/null +++ b/docs/html/namespacemembers.html @@ -0,0 +1,303 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    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..a2b9e39 --- /dev/null +++ b/docs/html/namespacemembers_func.html @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace functions with links to the namespace documentation for each function:
    + +

    - 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..c73078c --- /dev/null +++ b/docs/html/namespacemembers_vars.html @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all namespace variables with links to the namespace documentation for each variable:
    + +

    - a -

    + + +

    - c -

      +
    • classifiers : setup
    • +
    + + +

    - 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..2153c85 --- /dev/null +++ b/docs/html/namespacepenify__hook.html @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Namespaces

    namespace  api_client
     
    namespace  base_analyzer
     
    namespace  commands
     
    namespace  commit_analyzer
     
    namespace  config_command
     
    namespace  constants
     
    namespace  file_analyzer
     
    namespace  folder_analyzer
     
    namespace  git_analyzer
     
    namespace  jira_client
     
    namespace  llm_client
     
    namespace  login_command
     
    namespace  main
     
    namespace  ui_utils
     
    namespace  utils
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook.js b/docs/html/namespacepenify__hook.js new file mode 100644 index 0000000..d2d0a36 --- /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#aed769bb2e478b09003696b616edd04c5", null ], + [ "setup_config_parser", "namespacepenify__hook_1_1config__command.html#ad711074006b3c5d4a1cc73ef38dcf0ba", null ] + ] ], + [ "constants", "namespacepenify__hook_1_1constants.html", [ + [ "API_URL", "namespacepenify__hook_1_1constants.html#a846767f047a1319005bc95395330ab34", null ], + [ "DASHBOARD_URL", "namespacepenify__hook_1_1constants.html#ae4a03ab3b19d60436c72484b313079c8", 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#a13cdb8c8488b958ce536660a27521411", null ], + [ "setup_login_parser", "namespacepenify__hook_1_1login__command.html#ae787794b007f320b4480aff0b9767235", null ] + ] ], + [ "main", "namespacepenify__hook_1_1main.html", [ + [ "main", "namespacepenify__hook_1_1main.html#a245db84b8309d570226b2e147e18b5eb", null ] + ] ], + [ "ui_utils", "namespacepenify__hook_1_1ui__utils.html", [ + [ "create_progress_bar", "namespacepenify__hook_1_1ui__utils.html#aae4493a3c0c62d3d3cec0e4c96f4fca5", null ], + [ "create_stage_progress_bar", "namespacepenify__hook_1_1ui__utils.html#a583e3b1ec7b75f08653a9f6cfb897405", null ], + [ "format_error", "namespacepenify__hook_1_1ui__utils.html#acee226ee36d43076ed54dade970dc0ca", null ], + [ "format_file_path", "namespacepenify__hook_1_1ui__utils.html#a9de53cca2e23a993884797e523337e41", null ], + [ "format_highlight", "namespacepenify__hook_1_1ui__utils.html#a60f4c14003953f6e4b51ce5512c728d7", null ], + [ "format_info", "namespacepenify__hook_1_1ui__utils.html#aa0c6826668b45c778d864f5ae741e1b2", null ], + [ "format_success", "namespacepenify__hook_1_1ui__utils.html#a56ca95113c53214d848659a52a099f5e", null ], + [ "format_warning", "namespacepenify__hook_1_1ui__utils.html#a81190fd240641e2c83f6a047490e7797", null ], + [ "print_error", "namespacepenify__hook_1_1ui__utils.html#a35b79a7837fd654ad8f0cdb4e6e87598", null ], + [ "print_info", "namespacepenify__hook_1_1ui__utils.html#a3cee29e999fa3c812725cb98f24aae4c", null ], + [ "print_processing", "namespacepenify__hook_1_1ui__utils.html#ad4f7cab36c3b1f09507654b119d45bfb", null ], + [ "print_status", "namespacepenify__hook_1_1ui__utils.html#a65594c876dabfceb83d9b0ce9d0d65e7", null ], + [ "print_success", "namespacepenify__hook_1_1ui__utils.html#a9bff909b9e155a344597f69a0530754b", null ], + [ "print_warning", "namespacepenify__hook_1_1ui__utils.html#a73f112b02d36b74c88a3ce3ed1458b45", null ], + [ "update_stage", "namespacepenify__hook_1_1ui__utils.html#ad8be9c5a2708c211a651e2b3dfb54bcd", 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#ae941d124e4d3aa294314d73fb47c6432", 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#ad7cc8eaf7a660ff195f4366d792ab155", null ], + [ "SUCCESS_COLOR", "namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4", null ], + [ "SUCCESS_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a7d3cc992aaeb0a01c536c9a48e801ff3", null ], + [ "WARNING_COLOR", "namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff", null ], + [ "WARNING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a9ee7a42eeca5b12429cb97bf89007be8", 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..f41d894 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1api__client.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.api_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.api_client Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  APIClient
     
    +
    +
    + + + + + 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..e84378e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1base__analyzer.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.base_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.base_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  BaseAnalyzer
     
    +
    +
    + + + + + 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..01d2467 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.commands Namespace Reference
    +
    +
    + + + + + + + + + + + + +

    +Namespaces

    namespace  auth_commands
     
    namespace  commit_commands
     
    namespace  config_commands
     
    namespace  doc_commands
     
    namespace  hook_commands
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands.js b/docs/html/namespacepenify__hook_1_1commands.js new file mode 100644 index 0000000..7050064 --- /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#a1eb69ebcc475060011476a65cbffd7f6", null ], + [ "save_credentials", "namespacepenify__hook_1_1commands_1_1auth__commands.html#a68a2119363481a0001ad6190329c863b", null ] + ] ], + [ "commit_commands", "namespacepenify__hook_1_1commands_1_1commit__commands.html", [ + [ "commit_code", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a4360ebdd6821c714f9db99f8d447c1b6", null ], + [ "handle_commit", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a7a856c3961f5f8914e58485644572076", null ], + [ "setup_commit_parser", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a80d37e58f2dc4356ed99a54ac75b1db1", null ] + ] ], + [ "config_commands", "namespacepenify__hook_1_1commands_1_1config__commands.html", [ + [ "config_jira_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#ad64a80de6cfdbed6d5d2fe582902bf13", null ], + [ "config_llm_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#a1fc3edef1f016d4cfd3b116602ceda62", 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#a0459710e44183890121dc3013cb6f374", null ], + [ "save_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#ab24827423ec7e9a71a03639fb16e4cd4", null ], + [ "DOTENV_AVAILABLE", "namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67", null ], + [ "path", "namespacepenify__hook_1_1commands_1_1config__commands.html#a79fceaf7882b9bcf1075a24262c5d7e2", null ] + ] ], + [ "doc_commands", "namespacepenify__hook_1_1commands_1_1doc__commands.html", [ + [ "generate_doc", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a0db2cb8c0446d85dc4e7d34b3929dad7", null ], + [ "handle_docgen", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a41d631e51b0533b7d8dc780eea52e1cc", null ], + [ "setup_docgen_parser", "namespacepenify__hook_1_1commands_1_1doc__commands.html#abf64cb941e49af02798f5ff1b56139c6", null ], + [ "docgen_description", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a6dd45546559198f9f79caccd030d3588", null ] + ] ], + [ "hook_commands", "namespacepenify__hook_1_1commands_1_1hook__commands.html", [ + [ "install_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a093a68d1ec1b0da8ba8ab12a447fd135", null ], + [ "uninstall_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a1b2b3ffff51d19300a0b7ea785678443", null ], + [ "HOOK_FILENAME", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a978b976442fbf28c29c8d0f889bfae9c", null ], + [ "HOOK_TEMPLATE", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a51fc390518d967f2a1e21280d7ea781b", 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..ced04f6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.auth_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.commands.auth_commands Namespace Reference
    +
    +
    + + + + + + +

    +Functions

     save_credentials (api_key)
     
     login (api_url, dashboard_url)
     
    +

    Function Documentation

    + +

    ◆ login()

    + +
    +
    + + + + + + + + + + + +
    penify_hook.commands.auth_commands.login ( api_url,
    dashboard_url )
    +
    +
    Open the login page in a web browser and capture the token via redirect.
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ save_credentials()

    + +
    +
    + + + + + + + +
    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.
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a1eb69ebcc475060011476a65cbffd7f6_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a1eb69ebcc475060011476a65cbffd7f6_cgraph.map new file mode 100644 index 0000000..bc1917f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a1eb69ebcc475060011476a65cbffd7f6_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a1eb69ebcc475060011476a65cbffd7f6_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a1eb69ebcc475060011476a65cbffd7f6_cgraph.md5 new file mode 100644 index 0000000..b8a526f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a1eb69ebcc475060011476a65cbffd7f6_cgraph.md5 @@ -0,0 +1 @@ +df121ab8f8f1f8c9b8beb1b8f46035c9 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a1eb69ebcc475060011476a65cbffd7f6_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a1eb69ebcc475060011476a65cbffd7f6_cgraph.svg new file mode 100644 index 0000000..ee497a1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a1eb69ebcc475060011476a65cbffd7f6_cgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +penify_hook.commands.auth_commands.login + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a1eb69ebcc475060011476a65cbffd7f6_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a1eb69ebcc475060011476a65cbffd7f6_cgraph_org.svg new file mode 100644 index 0000000..cdb13f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a1eb69ebcc475060011476a65cbffd7f6_cgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.commands.auth_commands.login + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a68a2119363481a0001ad6190329c863b_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a68a2119363481a0001ad6190329c863b_icgraph.map new file mode 100644 index 0000000..05977aa --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a68a2119363481a0001ad6190329c863b_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a68a2119363481a0001ad6190329c863b_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a68a2119363481a0001ad6190329c863b_icgraph.md5 new file mode 100644 index 0000000..bec8676 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a68a2119363481a0001ad6190329c863b_icgraph.md5 @@ -0,0 +1 @@ +0c95eca14e69906c865588ce720ae68c \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a68a2119363481a0001ad6190329c863b_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a68a2119363481a0001ad6190329c863b_icgraph.svg new file mode 100644 index 0000000..50d22ec --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a68a2119363481a0001ad6190329c863b_icgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +penify_hook.commands.auth_commands.save_credentials + + +Node1 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a68a2119363481a0001ad6190329c863b_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a68a2119363481a0001ad6190329c863b_icgraph_org.svg new file mode 100644 index 0000000..45dba64 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a68a2119363481a0001ad6190329c863b_icgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.commands.auth_commands.save_credentials + + +Node1 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + + + + 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..5d613c4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.commit_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.commands.commit_commands Namespace Reference
    +
    +
    + + + + + + + + +

    +Functions

     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)
     
     setup_commit_parser (parser)
     
     handle_commit (args)
     
    +

    Function Documentation

    + +

    ◆ commit_code()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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.
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ handle_commit()

    + +
    +
    + + + + + + + +
    penify_hook.commands.commit_commands.handle_commit ( args)
    +
    +
    Handle commit functionality by processing arguments and invoking the
    +appropriate commands.
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ setup_commit_parser()

    + +
    +
    + + + + + + + +
    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_a4360ebdd6821c714f9db99f8d447c1b6_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a4360ebdd6821c714f9db99f8d447c1b6_icgraph.map new file mode 100644 index 0000000..ffe9a57 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a4360ebdd6821c714f9db99f8d447c1b6_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a4360ebdd6821c714f9db99f8d447c1b6_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a4360ebdd6821c714f9db99f8d447c1b6_icgraph.md5 new file mode 100644 index 0000000..b2168e4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a4360ebdd6821c714f9db99f8d447c1b6_icgraph.md5 @@ -0,0 +1 @@ +a87fe683676275b5b9b302cacf7113c9 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a4360ebdd6821c714f9db99f8d447c1b6_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a4360ebdd6821c714f9db99f8d447c1b6_icgraph.svg new file mode 100644 index 0000000..1d06beb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a4360ebdd6821c714f9db99f8d447c1b6_icgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +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 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a4360ebdd6821c714f9db99f8d447c1b6_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a4360ebdd6821c714f9db99f8d447c1b6_icgraph_org.svg new file mode 100644 index 0000000..388d136 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a4360ebdd6821c714f9db99f8d447c1b6_icgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +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 + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a7a856c3961f5f8914e58485644572076_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a7a856c3961f5f8914e58485644572076_cgraph.map new file mode 100644 index 0000000..03cd05a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a7a856c3961f5f8914e58485644572076_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a7a856c3961f5f8914e58485644572076_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a7a856c3961f5f8914e58485644572076_cgraph.md5 new file mode 100644 index 0000000..f54ff3c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a7a856c3961f5f8914e58485644572076_cgraph.md5 @@ -0,0 +1 @@ +1a444c8182e2ab10bd621bcdd7a97129 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a7a856c3961f5f8914e58485644572076_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a7a856c3961f5f8914e58485644572076_cgraph.svg new file mode 100644 index 0000000..eb0dcc4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a7a856c3961f5f8914e58485644572076_cgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +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 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a7a856c3961f5f8914e58485644572076_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a7a856c3961f5f8914e58485644572076_cgraph_org.svg new file mode 100644 index 0000000..7737e2f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a7a856c3961f5f8914e58485644572076_cgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +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 + + + + + + + + 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..a94dd7a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html @@ -0,0 +1,500 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.config_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.commands.config_commands Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    None load_env_files ()
     
    Path get_penify_config ()
     
    Any get_env_var_or_default (str env_var, Any default=None)
     
     save_llm_config (model, api_base, api_key)
     
     save_jira_config (url, username, api_token)
     
    Dict[str, str] get_llm_config ()
     
    Dict[str, str] get_jira_config ()
     
     config_llm_web ()
     
     config_jira_web ()
     
    Optional[str] get_token ()
     
    + + + + + +

    +Variables

    bool DOTENV_AVAILABLE = True
     
    str path = "/":
     
    +

    Function Documentation

    + +

    ◆ config_jira_web()

    + +
    +
    + + + + + + + +
    penify_hook.commands.config_commands.config_jira_web ()
    +
    +
    Starts a web server for configuring JIRA settings.
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ config_llm_web()

    + +
    +
    + + + + + + + +
    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.
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ get_jira_config()

    + +
    +
    + + + + + + + +
    Dict[str, str] penify_hook.commands.config_commands.get_jira_config ()
    +
    +
    Retrieve JIRA configuration from environment variables.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ get_llm_config()

    + +
    +
    + + + + + + + +
    Dict[str, str] penify_hook.commands.config_commands.get_llm_config ()
    +
    +
    Retrieve LLM configuration from environment variables.
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ 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.
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ 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.
    +
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ 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.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ save_jira_config()

    + +
    +
    + + + + + + + + + + + + + + + + +
    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.
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ save_llm_config()

    + +
    +
    + + + + + + + + + + + + + + + + +
    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.
    +
    +
    +
    +

    Variable Documentation

    + +

    ◆ DOTENV_AVAILABLE

    + +
    +
    + + + + +
    bool penify_hook.commands.config_commands.DOTENV_AVAILABLE = True
    +
    + +
    +
    + +

    ◆ path

    + +
    +
    + + + + +
    str penify_hook.commands.config_commands.path = "/":
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a0459710e44183890121dc3013cb6f374_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a0459710e44183890121dc3013cb6f374_icgraph.map new file mode 100644 index 0000000..4bb2bfd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a0459710e44183890121dc3013cb6f374_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a0459710e44183890121dc3013cb6f374_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a0459710e44183890121dc3013cb6f374_icgraph.md5 new file mode 100644 index 0000000..6283b41 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a0459710e44183890121dc3013cb6f374_icgraph.md5 @@ -0,0 +1 @@ +9bae164ffcfdbd7d2561af59ebd200f4 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a0459710e44183890121dc3013cb6f374_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a0459710e44183890121dc3013cb6f374_icgraph.svg new file mode 100644 index 0000000..b03ff99 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a0459710e44183890121dc3013cb6f374_icgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +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 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a0459710e44183890121dc3013cb6f374_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a0459710e44183890121dc3013cb6f374_icgraph_org.svg new file mode 100644 index 0000000..f22e981 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a0459710e44183890121dc3013cb6f374_icgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +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 + + + + + + + + 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..debb1c6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + 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..5da8c0b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 @@ -0,0 +1 @@ +7fdb615e9f5308ecd3e5fa498551935b \ 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..051697d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg @@ -0,0 +1,96 @@ + + + + + + + + + + + + +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 + + + + + + + + + + + + + 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..83113ab --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg @@ -0,0 +1,70 @@ + + + + + + +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 + + + + + + + + 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..2f2fb21 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map @@ -0,0 +1,5 @@ + + + + + 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..eeb199e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 @@ -0,0 +1 @@ +ea0a5e6f435c6a7671d7bfc3bf0650ab \ 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..8c23edf --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +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 + + + + + + + + + + + + + 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..bdb538e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +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 + + + + + + + + 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..bc13337 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + 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..95b75fa --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 @@ -0,0 +1 @@ +9d37c64efeb0e64618f9f0dd5ab88ea7 \ 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..543911e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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 + + + + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node5 + + + + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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..e64712b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg @@ -0,0 +1,99 @@ + + + + + + +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 + + + + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node5 + + + + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->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..a45a2e3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + 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..dc6ebb4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 @@ -0,0 +1 @@ +62a8d5fb002f1fe17ac8f4fcc3136681 \ 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..2463268 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + +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 + + + + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node4 + + + + + + + + +Node4->Node4 + + + + + + + + + + + + + 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..ca576fa --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg @@ -0,0 +1,89 @@ + + + + + + +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 + + + + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node4 + + + + + + + + +Node4->Node4 + + + + + + + + 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..d607a9f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + 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..09d6307 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 @@ -0,0 +1 @@ +be40687575d18b019d656fb483e65768 \ 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..4e6ac15 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg @@ -0,0 +1,96 @@ + + + + + + + + + + + + +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 + + + + + + + + + + + + + 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..fc4febe --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg @@ -0,0 +1,70 @@ + + + + + + +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 + + + + + + + + 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..b9bb19c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map @@ -0,0 +1,5 @@ + + + + + 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..0cd2655 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 @@ -0,0 +1 @@ +df0b168a9e4b36e7d852b9c65e80709e \ 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..aab8334 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +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 + + + + + + + + + + + + + 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..b59f434 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +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 + + + + + + + + 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..f86c5a0 --- /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..7bf3519 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 @@ -0,0 +1 @@ +8c645913e8cff12571c79649a78d06bd \ 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..6e9d5b9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + +penify_hook.commands.config_commands.load_env_files + + +Node1 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node1 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph_org.svg new file mode 100644 index 0000000..b75919f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph_org.svg @@ -0,0 +1,31 @@ + + + + + + +penify_hook.commands.config_commands.load_env_files + + +Node1 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node1 + + + + + + + + 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..fa3ee3a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + 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..f2b4329 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 @@ -0,0 +1 @@ +e99355e8e4f7aa3a3c39859f2c6c54cd \ 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..e5396a3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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 + + + + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node5 + + + + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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..af0bbf7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg @@ -0,0 +1,107 @@ + + + + + + +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 + + + + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node5 + + + + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ad64a80de6cfdbed6d5d2fe582902bf13_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ad64a80de6cfdbed6d5d2fe582902bf13_cgraph.map new file mode 100644 index 0000000..69d3fb5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ad64a80de6cfdbed6d5d2fe582902bf13_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ad64a80de6cfdbed6d5d2fe582902bf13_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ad64a80de6cfdbed6d5d2fe582902bf13_cgraph.md5 new file mode 100644 index 0000000..f524413 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ad64a80de6cfdbed6d5d2fe582902bf13_cgraph.md5 @@ -0,0 +1 @@ +6d91ab0a314de630848fab3f24910dc1 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ad64a80de6cfdbed6d5d2fe582902bf13_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ad64a80de6cfdbed6d5d2fe582902bf13_cgraph.svg new file mode 100644 index 0000000..1dc4493 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ad64a80de6cfdbed6d5d2fe582902bf13_cgraph.svg @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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 + + + + + + + + +Node5 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node5 + + + + + + + + +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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ad64a80de6cfdbed6d5d2fe582902bf13_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ad64a80de6cfdbed6d5d2fe582902bf13_cgraph_org.svg new file mode 100644 index 0000000..961450e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ad64a80de6cfdbed6d5d2fe582902bf13_cgraph_org.svg @@ -0,0 +1,108 @@ + + + + + + +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 + + + + + + + + +Node5 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node5 + + + + + + + + +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 + + + + + + + + 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..e684051 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.doc_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.commands.doc_commands Namespace Reference
    +
    +
    + + + + + + + + +

    +Functions

     generate_doc (api_url, token, location=None)
     
     setup_docgen_parser (parser)
     
     handle_docgen (args)
     
    + + + +

    +Variables

    str docgen_description
     
    +

    Function Documentation

    + +

    ◆ generate_doc()

    + +
    +
    + + + + + + + + + + + + + + + + +
    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.
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ handle_docgen()

    + +
    +
    + + + + + + + +
    penify_hook.commands.doc_commands.handle_docgen ( args)
    +
    +
    Handle document generation and hook management based on subcommands.
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ setup_docgen_parser()

    + +
    +
    + + + + + + + +
    penify_hook.commands.doc_commands.setup_docgen_parser ( parser)
    +
    +
    Configure a parser for generating documentation using Git commands.
    +
    +
    +

    Variable Documentation

    + +

    ◆ docgen_description

    + +
    +
    + + + + +
    str penify_hook.commands.doc_commands.docgen_description
    +
    +Initial value:
    1= """Generate code documentation using Penify.
    +
    2
    +
    3This command requires you to be logged in to your Penify account.
    +
    4You 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_a0db2cb8c0446d85dc4e7d34b3929dad7_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a0db2cb8c0446d85dc4e7d34b3929dad7_icgraph.map new file mode 100644 index 0000000..76b237e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a0db2cb8c0446d85dc4e7d34b3929dad7_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a0db2cb8c0446d85dc4e7d34b3929dad7_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a0db2cb8c0446d85dc4e7d34b3929dad7_icgraph.md5 new file mode 100644 index 0000000..52e920a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a0db2cb8c0446d85dc4e7d34b3929dad7_icgraph.md5 @@ -0,0 +1 @@ +9deb41e37ce70184ff07fb37d0aeeac4 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a0db2cb8c0446d85dc4e7d34b3929dad7_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a0db2cb8c0446d85dc4e7d34b3929dad7_icgraph.svg new file mode 100644 index 0000000..91be21e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a0db2cb8c0446d85dc4e7d34b3929dad7_icgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +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 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a0db2cb8c0446d85dc4e7d34b3929dad7_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a0db2cb8c0446d85dc4e7d34b3929dad7_icgraph_org.svg new file mode 100644 index 0000000..5f5636a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a0db2cb8c0446d85dc4e7d34b3929dad7_icgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +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 + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a41d631e51b0533b7d8dc780eea52e1cc_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a41d631e51b0533b7d8dc780eea52e1cc_cgraph.map new file mode 100644 index 0000000..13879b6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a41d631e51b0533b7d8dc780eea52e1cc_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a41d631e51b0533b7d8dc780eea52e1cc_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a41d631e51b0533b7d8dc780eea52e1cc_cgraph.md5 new file mode 100644 index 0000000..2c8b8ee --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a41d631e51b0533b7d8dc780eea52e1cc_cgraph.md5 @@ -0,0 +1 @@ +77112aad7e68837a8925bfc05a598e2b \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a41d631e51b0533b7d8dc780eea52e1cc_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a41d631e51b0533b7d8dc780eea52e1cc_cgraph.svg new file mode 100644 index 0000000..faebae1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a41d631e51b0533b7d8dc780eea52e1cc_cgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +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 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a41d631e51b0533b7d8dc780eea52e1cc_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a41d631e51b0533b7d8dc780eea52e1cc_cgraph_org.svg new file mode 100644 index 0000000..cf7deef --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a41d631e51b0533b7d8dc780eea52e1cc_cgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +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 + + + + + + + + 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..21b2da5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html @@ -0,0 +1,236 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.hook_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.commands.hook_commands Namespace Reference
    +
    +
    + + + + + + +

    +Functions

     install_git_hook (location, token)
     
     uninstall_git_hook (location)
     
    + + + + + +

    +Variables

    str HOOK_FILENAME = "post-commit"
     
    str HOOK_TEMPLATE
     
    +

    Function Documentation

    + +

    ◆ install_git_hook()

    + +
    +
    + + + + + + + + + + + +
    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()

    + +
    +
    + + + + + + + +
    penify_hook.commands.hook_commands.uninstall_git_hook ( location)
    +
    +
    Uninstalls the post-commit hook from the specified location.
    +
    +
    +

    Variable Documentation

    + +

    ◆ HOOK_FILENAME

    + +
    +
    + + + + +
    str penify_hook.commands.hook_commands.HOOK_FILENAME = "post-commit"
    +
    + +
    +
    + +

    ◆ HOOK_TEMPLATE

    + +
    +
    + + + + +
    str 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
    +
    5penify docgen -gf {git_folder_path} -t {token}
    +
    6"""
    +
    +
    +
    +
    +
    + + + + + 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..656ded5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commit__analyzer.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commit_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.commit_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  CommitDocGenHook
     
    +
    +
    + + + + + 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..b18cbc9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command.html @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.config_command Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.config_command Namespace Reference
    +
    +
    + + + + + + +

    +Functions

     setup_config_parser (parent_parser)
     
     handle_config (args)
     
    +

    Function Documentation

    + +

    ◆ handle_config()

    + +
    +
    + + + + + + + +
    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()

    + +
    +
    + + + + + + + +
    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_1constants.html b/docs/html/namespacepenify__hook_1_1constants.html new file mode 100644 index 0000000..3613dee --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1constants.html @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.constants Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.constants Namespace Reference
    +
    +
    + + + + + + +

    +Variables

    str API_URL = 'http://localhost:8000/api'
     
    str DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
     
    +

    Variable Documentation

    + +

    ◆ API_URL

    + +
    +
    + + + + +
    str penify_hook.constants.API_URL = 'http://localhost:8000/api'
    +
    + +
    +
    + +

    ◆ DASHBOARD_URL

    + +
    +
    + + + + +
    str 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..415d06c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1file__analyzer.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.file_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.file_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  FileAnalyzerGenHook
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Variable Documentation

    + +

    ◆ 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..3fb1c2c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1folder__analyzer.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.folder_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.folder_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  FolderAnalyzerGenHook
     
    +
    +
    + + + + + 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..f174d70 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1git__analyzer.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.git_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.git_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  GitDocGenHook
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Variable Documentation

    + +

    ◆ 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..93ea595 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1jira__client.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.jira_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.jira_client Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  JiraClient
     
    + + + +

    +Variables

    bool JIRA_AVAILABLE = True
     
    +

    Variable Documentation

    + +

    ◆ 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..0cb9837 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1llm__client.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.llm_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.llm_client Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  LLMClient
     
    +
    +
    + + + + + 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..65c03fc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.login_command Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.login_command Namespace Reference
    +
    +
    + + + + + + +

    +Functions

     setup_login_parser (parser)
     
     handle_login (args)
     
    +

    Function Documentation

    + +

    ◆ handle_login()

    + +
    +
    + + + + + + + +
    penify_hook.login_command.handle_login ( args)
    +
    +
    Initiates a user login process using predefined constants and the `login`
    +function.
    +
    +
    + +

    ◆ setup_login_parser()

    + +
    +
    + + + + + + + +
    penify_hook.login_command.setup_login_parser ( parser)
    +
    +
    Set up command-line arguments for login.
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main.html b/docs/html/namespacepenify__hook_1_1main.html new file mode 100644 index 0000000..75b3de6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main.html @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.main Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.main Namespace Reference
    +
    +
    + + + + +

    +Functions

     main ()
     
    +

    Function Documentation

    + +

    ◆ main()

    + +
    +
    + + + + + + + +
    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.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_cgraph.map b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_cgraph.map new file mode 100644 index 0000000..442158b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_cgraph.md5 b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_cgraph.md5 new file mode 100644 index 0000000..e85ed31 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_cgraph.md5 @@ -0,0 +1 @@ +a4f96dd63f317a83c69771f984b80132 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_cgraph.svg b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_cgraph.svg new file mode 100644 index 0000000..f67ffbe --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_cgraph.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + +penify_hook.main.main + + +Node1 + + +penify_hook.main.main + + + + + +Node1->Node1 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_cgraph_org.svg new file mode 100644 index 0000000..7e1139c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_cgraph_org.svg @@ -0,0 +1,30 @@ + + + + + + +penify_hook.main.main + + +Node1 + + +penify_hook.main.main + + + + + +Node1->Node1 + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_icgraph.map b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_icgraph.map new file mode 100644 index 0000000..fcb431b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_icgraph.md5 b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_icgraph.md5 new file mode 100644 index 0000000..e5dd16d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_icgraph.md5 @@ -0,0 +1 @@ +29c740851881b222377ae665d281c00f \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_icgraph.svg b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_icgraph.svg new file mode 100644 index 0000000..681c657 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_icgraph.svg @@ -0,0 +1,56 @@ + + + + + + + + + + + + +penify_hook.main.main + + +Node1 + + +penify_hook.main.main + + + + + +Node1->Node1 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_icgraph_org.svg new file mode 100644 index 0000000..26cf71b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a245db84b8309d570226b2e147e18b5eb_icgraph_org.svg @@ -0,0 +1,30 @@ + + + + + + +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..a992f95 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils.html @@ -0,0 +1,703 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.ui_utils Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.ui_utils Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

     format_info (message)
     
     format_success (message)
     
     format_warning (message)
     
     format_error (message)
     
     format_highlight (message)
     
     format_file_path (file_path)
     
     print_info (message)
     
     print_success (message)
     
     print_warning (message)
     
     print_error (message)
     
     print_processing (file_path)
     
     print_status (status, message)
     
     create_progress_bar (total, desc="Processing", unit="item")
     
     create_stage_progress_bar (stages, desc="Processing")
     
     update_stage (pbar, stage_name)
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

     autoreset
     
     INFO_COLOR = Fore.CYAN
     
     SUCCESS_COLOR = Fore.GREEN
     
     WARNING_COLOR = Fore.YELLOW
     
     ERROR_COLOR = Fore.RED
     
     HIGHLIGHT_COLOR = Fore.BLUE
     
     NEUTRAL_COLOR = Fore.WHITE
     
    str SUCCESS_SYMBOL = "✓"
     
    str WARNING_SYMBOL = "○"
     
    str ERROR_SYMBOL = "✗"
     
    str PROCESSING_SYMBOL = "⟳"
     
    +

    Detailed Description

    +
    UI utilities for Penify CLI.
    +
    +This module provides utility functions for consistent UI formatting,
    +colored output, and progress indicators across the Penify CLI application.
    +

    Function Documentation

    + +

    ◆ create_progress_bar()

    + +
    +
    + + + + + + + + + + + + + + + + +
    penify_hook.ui_utils.create_progress_bar ( total,
    desc = "Processing",
    unit = "item" )
    +
    +
    Create a tqdm progress bar with consistent styling.
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ create_stage_progress_bar()

    + +
    +
    + + + + + + + + + + + +
    penify_hook.ui_utils.create_stage_progress_bar ( stages,
    desc = "Processing" )
    +
    +
    Create a tqdm progress bar for processing stages with consistent styling.
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ format_error()

    + +
    +
    + + + + + + + +
    penify_hook.ui_utils.format_error ( message)
    +
    +
    Format an error message with the specified error color.
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ format_file_path()

    + +
    +
    + + + + + + + +
    penify_hook.ui_utils.format_file_path ( file_path)
    +
    +
    Format a file path with a warning color.
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ format_highlight()

    + +
    +
    + + + + + + + +
    penify_hook.ui_utils.format_highlight ( message)
    +
    +
    Format a highlighted message with appropriate color.
    +
    +
    + +

    ◆ format_info()

    + +
    +
    + + + + + + + +
    penify_hook.ui_utils.format_info ( message)
    +
    +
    Format an informational message with appropriate color.
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ format_success()

    + +
    +
    + + + + + + + +
    penify_hook.ui_utils.format_success ( message)
    +
    +
    Formats a success message with green color and reset style.
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ format_warning()

    + +
    +
    + + + + + + + +
    penify_hook.ui_utils.format_warning ( message)
    +
    +
    Format a warning message with appropriate color.
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ print_error()

    + +
    +
    + + + + + + + +
    penify_hook.ui_utils.print_error ( message)
    +
    +
    Print an error message with appropriate formatting.
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ print_info()

    + +
    +
    + + + + + + + +
    penify_hook.ui_utils.print_info ( message)
    +
    +
    Prints an informational message with formatting.
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ print_processing()

    + +
    +
    + + + + + + + +
    penify_hook.ui_utils.print_processing ( file_path)
    +
    +
    Print a processing message for a specified file.
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ print_status()

    + +
    +
    + + + + + + + + + + + +
    penify_hook.ui_utils.print_status ( status,
    message )
    +
    +
    Print a status message with an appropriate symbol.
    +
    +
    + +

    ◆ print_success()

    + +
    +
    + + + + + + + +
    penify_hook.ui_utils.print_success ( message)
    +
    +
    Prints a formatted success message.
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ print_warning()

    + +
    +
    + + + + + + + +
    penify_hook.ui_utils.print_warning ( message)
    +
    +
    Prints a warning message with formatted output.
    +Here is the call graph for this function:
    +
    +
    +
    + +
    +
    + +

    ◆ update_stage()

    + +
    +
    + + + + + + + + + + + +
    penify_hook.ui_utils.update_stage ( pbar,
    stage_name )
    +
    +
    Update the progress bar with a new stage name.
    +
    +
    +

    Variable Documentation

    + +

    ◆ autoreset

    + +
    +
    + + + + +
    penify_hook.ui_utils.autoreset
    +
    + +
    +
    + +

    ◆ ERROR_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.ERROR_COLOR = Fore.RED
    +
    + +
    +
    + +

    ◆ ERROR_SYMBOL

    + +
    +
    + + + + +
    str 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

    + +
    +
    + + + + +
    str penify_hook.ui_utils.PROCESSING_SYMBOL = "⟳"
    +
    + +
    +
    + +

    ◆ SUCCESS_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.SUCCESS_COLOR = Fore.GREEN
    +
    + +
    +
    + +

    ◆ SUCCESS_SYMBOL

    + +
    +
    + + + + +
    str penify_hook.ui_utils.SUCCESS_SYMBOL = "✓"
    +
    + +
    +
    + +

    ◆ WARNING_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.WARNING_COLOR = Fore.YELLOW
    +
    + +
    +
    + +

    ◆ WARNING_SYMBOL

    + +
    +
    + + + + +
    str penify_hook.ui_utils.WARNING_SYMBOL = "○"
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a35b79a7837fd654ad8f0cdb4e6e87598_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a35b79a7837fd654ad8f0cdb4e6e87598_cgraph.map new file mode 100644 index 0000000..c3c3e95 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a35b79a7837fd654ad8f0cdb4e6e87598_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a35b79a7837fd654ad8f0cdb4e6e87598_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a35b79a7837fd654ad8f0cdb4e6e87598_cgraph.md5 new file mode 100644 index 0000000..e761ea5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a35b79a7837fd654ad8f0cdb4e6e87598_cgraph.md5 @@ -0,0 +1 @@ +3c38bcd27919dc8de91ac54f38458e66 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a35b79a7837fd654ad8f0cdb4e6e87598_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a35b79a7837fd654ad8f0cdb4e6e87598_cgraph.svg new file mode 100644 index 0000000..4ec0e0e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a35b79a7837fd654ad8f0cdb4e6e87598_cgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +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_a35b79a7837fd654ad8f0cdb4e6e87598_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a35b79a7837fd654ad8f0cdb4e6e87598_cgraph_org.svg new file mode 100644 index 0000000..ad1d744 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a35b79a7837fd654ad8f0cdb4e6e87598_cgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +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_a3cee29e999fa3c812725cb98f24aae4c_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a3cee29e999fa3c812725cb98f24aae4c_cgraph.map new file mode 100644 index 0000000..c08f35c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3cee29e999fa3c812725cb98f24aae4c_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3cee29e999fa3c812725cb98f24aae4c_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a3cee29e999fa3c812725cb98f24aae4c_cgraph.md5 new file mode 100644 index 0000000..8ba8f00 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3cee29e999fa3c812725cb98f24aae4c_cgraph.md5 @@ -0,0 +1 @@ +a173588dc3c74cb84d6500d69570dae9 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3cee29e999fa3c812725cb98f24aae4c_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a3cee29e999fa3c812725cb98f24aae4c_cgraph.svg new file mode 100644 index 0000000..d133232 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3cee29e999fa3c812725cb98f24aae4c_cgraph.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + +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_a3cee29e999fa3c812725cb98f24aae4c_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a3cee29e999fa3c812725cb98f24aae4c_cgraph_org.svg new file mode 100644 index 0000000..01e761e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3cee29e999fa3c812725cb98f24aae4c_cgraph_org.svg @@ -0,0 +1,39 @@ + + + + + + +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_a56ca95113c53214d848659a52a099f5e_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a56ca95113c53214d848659a52a099f5e_icgraph.map new file mode 100644 index 0000000..ccf59bb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a56ca95113c53214d848659a52a099f5e_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a56ca95113c53214d848659a52a099f5e_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a56ca95113c53214d848659a52a099f5e_icgraph.md5 new file mode 100644 index 0000000..9885692 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a56ca95113c53214d848659a52a099f5e_icgraph.md5 @@ -0,0 +1 @@ +a6edbcf33d875fc9e8ec2114278fdbe7 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a56ca95113c53214d848659a52a099f5e_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a56ca95113c53214d848659a52a099f5e_icgraph.svg new file mode 100644 index 0000000..1d590a5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a56ca95113c53214d848659a52a099f5e_icgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +penify_hook.ui_utils.format_success + + +Node1 + + +penify_hook.ui_utils.format +_success + + + + + +Node2 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a56ca95113c53214d848659a52a099f5e_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a56ca95113c53214d848659a52a099f5e_icgraph_org.svg new file mode 100644 index 0000000..5516d4a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a56ca95113c53214d848659a52a099f5e_icgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.ui_utils.format_success + + +Node1 + + +penify_hook.ui_utils.format +_success + + + + + +Node2 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a583e3b1ec7b75f08653a9f6cfb897405_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a583e3b1ec7b75f08653a9f6cfb897405_cgraph.map new file mode 100644 index 0000000..543f29f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a583e3b1ec7b75f08653a9f6cfb897405_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a583e3b1ec7b75f08653a9f6cfb897405_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a583e3b1ec7b75f08653a9f6cfb897405_cgraph.md5 new file mode 100644 index 0000000..cd71f48 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a583e3b1ec7b75f08653a9f6cfb897405_cgraph.md5 @@ -0,0 +1 @@ +3fe8e64656feb94d8d766a06e0eeffa6 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a583e3b1ec7b75f08653a9f6cfb897405_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a583e3b1ec7b75f08653a9f6cfb897405_cgraph.svg new file mode 100644 index 0000000..6312e92 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a583e3b1ec7b75f08653a9f6cfb897405_cgraph.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + +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_a583e3b1ec7b75f08653a9f6cfb897405_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a583e3b1ec7b75f08653a9f6cfb897405_cgraph_org.svg new file mode 100644 index 0000000..e6c1519 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a583e3b1ec7b75f08653a9f6cfb897405_cgraph_org.svg @@ -0,0 +1,40 @@ + + + + + + +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_a73f112b02d36b74c88a3ce3ed1458b45_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a73f112b02d36b74c88a3ce3ed1458b45_cgraph.map new file mode 100644 index 0000000..91f8d4f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a73f112b02d36b74c88a3ce3ed1458b45_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a73f112b02d36b74c88a3ce3ed1458b45_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a73f112b02d36b74c88a3ce3ed1458b45_cgraph.md5 new file mode 100644 index 0000000..a2351bb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a73f112b02d36b74c88a3ce3ed1458b45_cgraph.md5 @@ -0,0 +1 @@ +19018aa36c614d275a0b9fa78d6c4a06 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a73f112b02d36b74c88a3ce3ed1458b45_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a73f112b02d36b74c88a3ce3ed1458b45_cgraph.svg new file mode 100644 index 0000000..ecee302 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a73f112b02d36b74c88a3ce3ed1458b45_cgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +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_a73f112b02d36b74c88a3ce3ed1458b45_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a73f112b02d36b74c88a3ce3ed1458b45_cgraph_org.svg new file mode 100644 index 0000000..be1fc4d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a73f112b02d36b74c88a3ce3ed1458b45_cgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +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_a81190fd240641e2c83f6a047490e7797_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a81190fd240641e2c83f6a047490e7797_icgraph.map new file mode 100644 index 0000000..099c7ce --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a81190fd240641e2c83f6a047490e7797_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a81190fd240641e2c83f6a047490e7797_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a81190fd240641e2c83f6a047490e7797_icgraph.md5 new file mode 100644 index 0000000..4c46648 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a81190fd240641e2c83f6a047490e7797_icgraph.md5 @@ -0,0 +1 @@ +2a1ef2958c91d656bda941549590f8cd \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a81190fd240641e2c83f6a047490e7797_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a81190fd240641e2c83f6a047490e7797_icgraph.svg new file mode 100644 index 0000000..7707f74 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a81190fd240641e2c83f6a047490e7797_icgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +penify_hook.ui_utils.format_warning + + +Node1 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a81190fd240641e2c83f6a047490e7797_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a81190fd240641e2c83f6a047490e7797_icgraph_org.svg new file mode 100644 index 0000000..4b752da --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a81190fd240641e2c83f6a047490e7797_icgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.ui_utils.format_warning + + +Node1 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a9bff909b9e155a344597f69a0530754b_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a9bff909b9e155a344597f69a0530754b_cgraph.map new file mode 100644 index 0000000..fdbf33d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a9bff909b9e155a344597f69a0530754b_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a9bff909b9e155a344597f69a0530754b_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a9bff909b9e155a344597f69a0530754b_cgraph.md5 new file mode 100644 index 0000000..e665eeb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a9bff909b9e155a344597f69a0530754b_cgraph.md5 @@ -0,0 +1 @@ +377e2e611961eae29e6e68fec93ccea8 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a9bff909b9e155a344597f69a0530754b_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a9bff909b9e155a344597f69a0530754b_cgraph.svg new file mode 100644 index 0000000..5cdfd3f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a9bff909b9e155a344597f69a0530754b_cgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +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_a9bff909b9e155a344597f69a0530754b_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a9bff909b9e155a344597f69a0530754b_cgraph_org.svg new file mode 100644 index 0000000..3ae0228 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a9bff909b9e155a344597f69a0530754b_cgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +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_a9de53cca2e23a993884797e523337e41_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a9de53cca2e23a993884797e523337e41_icgraph.map new file mode 100644 index 0000000..e4ee6c8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a9de53cca2e23a993884797e523337e41_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a9de53cca2e23a993884797e523337e41_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a9de53cca2e23a993884797e523337e41_icgraph.md5 new file mode 100644 index 0000000..aee70ff --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a9de53cca2e23a993884797e523337e41_icgraph.md5 @@ -0,0 +1 @@ +51b93c94dd1dd7360725bd9ecdcd049a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a9de53cca2e23a993884797e523337e41_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a9de53cca2e23a993884797e523337e41_icgraph.svg new file mode 100644 index 0000000..45c4ff2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a9de53cca2e23a993884797e523337e41_icgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +penify_hook.ui_utils.format_file_path + + +Node1 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node2 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a9de53cca2e23a993884797e523337e41_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a9de53cca2e23a993884797e523337e41_icgraph_org.svg new file mode 100644 index 0000000..2192485 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a9de53cca2e23a993884797e523337e41_icgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.ui_utils.format_file_path + + +Node1 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node2 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa0c6826668b45c778d864f5ae741e1b2_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_aa0c6826668b45c778d864f5ae741e1b2_icgraph.map new file mode 100644 index 0000000..04fbb0d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa0c6826668b45c778d864f5ae741e1b2_icgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa0c6826668b45c778d864f5ae741e1b2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_aa0c6826668b45c778d864f5ae741e1b2_icgraph.md5 new file mode 100644 index 0000000..0d61e2e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa0c6826668b45c778d864f5ae741e1b2_icgraph.md5 @@ -0,0 +1 @@ +9da14a7b18d0c9bbc2b0ae0b579a4359 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa0c6826668b45c778d864f5ae741e1b2_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_aa0c6826668b45c778d864f5ae741e1b2_icgraph.svg new file mode 100644 index 0000000..6f610ce --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa0c6826668b45c778d864f5ae741e1b2_icgraph.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + +penify_hook.ui_utils.format_info + + +Node1 + + +penify_hook.ui_utils.format_info + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node4 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa0c6826668b45c778d864f5ae741e1b2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_aa0c6826668b45c778d864f5ae741e1b2_icgraph_org.svg new file mode 100644 index 0000000..909152f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa0c6826668b45c778d864f5ae741e1b2_icgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.ui_utils.format_info + + +Node1 + + +penify_hook.ui_utils.format_info + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node4 + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aae4493a3c0c62d3d3cec0e4c96f4fca5_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_aae4493a3c0c62d3d3cec0e4c96f4fca5_cgraph.map new file mode 100644 index 0000000..6ddca67 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aae4493a3c0c62d3d3cec0e4c96f4fca5_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aae4493a3c0c62d3d3cec0e4c96f4fca5_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_aae4493a3c0c62d3d3cec0e4c96f4fca5_cgraph.md5 new file mode 100644 index 0000000..7d116e5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aae4493a3c0c62d3d3cec0e4c96f4fca5_cgraph.md5 @@ -0,0 +1 @@ +bf2e3a9ea057ecb4eef1c7637a63ec2d \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aae4493a3c0c62d3d3cec0e4c96f4fca5_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_aae4493a3c0c62d3d3cec0e4c96f4fca5_cgraph.svg new file mode 100644 index 0000000..1a28fe1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aae4493a3c0c62d3d3cec0e4c96f4fca5_cgraph.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + +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_aae4493a3c0c62d3d3cec0e4c96f4fca5_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_aae4493a3c0c62d3d3cec0e4c96f4fca5_cgraph_org.svg new file mode 100644 index 0000000..fd2e0d6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aae4493a3c0c62d3d3cec0e4c96f4fca5_cgraph_org.svg @@ -0,0 +1,40 @@ + + + + + + +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_acee226ee36d43076ed54dade970dc0ca_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_acee226ee36d43076ed54dade970dc0ca_icgraph.map new file mode 100644 index 0000000..acc2a8e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_acee226ee36d43076ed54dade970dc0ca_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_acee226ee36d43076ed54dade970dc0ca_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_acee226ee36d43076ed54dade970dc0ca_icgraph.md5 new file mode 100644 index 0000000..1310349 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_acee226ee36d43076ed54dade970dc0ca_icgraph.md5 @@ -0,0 +1 @@ +e2867090c80f81524dcd514523e0702a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_acee226ee36d43076ed54dade970dc0ca_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_acee226ee36d43076ed54dade970dc0ca_icgraph.svg new file mode 100644 index 0000000..f5afa3e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_acee226ee36d43076ed54dade970dc0ca_icgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +penify_hook.ui_utils.format_error + + +Node1 + + +penify_hook.ui_utils.format +_error + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_acee226ee36d43076ed54dade970dc0ca_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_acee226ee36d43076ed54dade970dc0ca_icgraph_org.svg new file mode 100644 index 0000000..6759115 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_acee226ee36d43076ed54dade970dc0ca_icgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.ui_utils.format_error + + +Node1 + + +penify_hook.ui_utils.format +_error + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_ad4f7cab36c3b1f09507654b119d45bfb_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_ad4f7cab36c3b1f09507654b119d45bfb_cgraph.map new file mode 100644 index 0000000..33581a9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_ad4f7cab36c3b1f09507654b119d45bfb_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_ad4f7cab36c3b1f09507654b119d45bfb_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_ad4f7cab36c3b1f09507654b119d45bfb_cgraph.md5 new file mode 100644 index 0000000..0da04ec --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_ad4f7cab36c3b1f09507654b119d45bfb_cgraph.md5 @@ -0,0 +1 @@ +ce180e2a90aa2b105fddd6414529bb27 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_ad4f7cab36c3b1f09507654b119d45bfb_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_ad4f7cab36c3b1f09507654b119d45bfb_cgraph.svg new file mode 100644 index 0000000..2c10782 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_ad4f7cab36c3b1f09507654b119d45bfb_cgraph.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + +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_ad4f7cab36c3b1f09507654b119d45bfb_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_ad4f7cab36c3b1f09507654b119d45bfb_cgraph_org.svg new file mode 100644 index 0000000..983dc7d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_ad4f7cab36c3b1f09507654b119d45bfb_cgraph_org.svg @@ -0,0 +1,41 @@ + + + + + + +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_1utils.html b/docs/html/namespacepenify__hook_1_1utils.html new file mode 100644 index 0000000..7cc7c4f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils.html @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.utils Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    penify_hook.utils Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  GitRepoNotFoundError
     
    + + + + + + + +

    +Functions

     get_repo_details (Repo repo)
     
     recursive_search_git_folder (folder_path)
     
     find_git_parent (path)
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Function Documentation

    + +

    ◆ find_git_parent()

    + +
    +
    + + + + + + + +
    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()

    + +
    +
    + + + + + + + +
    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()

    + +
    +
    + + + + + + + +
    penify_hook.utils.recursive_search_git_folder ( folder_path)
    +
    +
    Recursively searches for a .git folder starting from the given directory.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ 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..5435ff4 --- /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#a1c80f8c46a793d58ee6fd8674d1de1a2", null ], + [ "get_repo_details", "namespacepenify__hook_1_1utils.html#ab8d9a41a4016850afe6ff086021aaf19", null ], + [ "recursive_search_git_folder", "namespacepenify__hook_1_1utils.html#a9d723ca510c90ac0390819dcae3a800a", null ], + [ "logger", "namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_cgraph.map b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_cgraph.map new file mode 100644 index 0000000..8c6de3d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_cgraph.md5 b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_cgraph.md5 new file mode 100644 index 0000000..eb13324 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_cgraph.md5 @@ -0,0 +1 @@ +a61951c5b4fd274f26e71bcbe190a8cc \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_cgraph.svg b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_cgraph.svg new file mode 100644 index 0000000..0a9ceb7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_cgraph.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + +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_a9d723ca510c90ac0390819dcae3a800a_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_cgraph_org.svg new file mode 100644 index 0000000..41437ef --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_cgraph_org.svg @@ -0,0 +1,31 @@ + + + + + + +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_a9d723ca510c90ac0390819dcae3a800a_icgraph.map b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_icgraph.map new file mode 100644 index 0000000..6bc41f4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_icgraph.md5 new file mode 100644 index 0000000..ff9ef84 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_icgraph.md5 @@ -0,0 +1 @@ +4503fbb4dc37d2af2eaeea5d61541a37 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_icgraph.svg b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_icgraph.svg new file mode 100644 index 0000000..315ad23 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_icgraph.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + +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_a9d723ca510c90ac0390819dcae3a800a_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_icgraph_org.svg new file mode 100644 index 0000000..c72f8f6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a9d723ca510c90ac0390819dcae3a800a_icgraph_org.svg @@ -0,0 +1,31 @@ + + + + + + +penify_hook.utils.recursive_search_git_folder + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + + + + diff --git a/docs/html/namespaces.html b/docs/html/namespaces.html new file mode 100644 index 0000000..326335c --- /dev/null +++ b/docs/html/namespaces.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace List + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Namespace List
    +
    +
    +
    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..344732c --- /dev/null +++ b/docs/html/namespacesetup.html @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + + +penify-cli: setup Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    setup Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

     name
     
     version
     
     packages
     
     install_requires
     
     entry_points
     
     author
     
     author_email
     
     description
     
     long_description
     
     long_description_content_type
     
     url
     
     classifiers
     
     python_requires
     
    +

    Variable Documentation

    + +

    ◆ author

    + +
    +
    + + + + +
    setup.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

    + +
    +
    + + + + +
    setup.name
    +
    + +
    +
    + +

    ◆ packages

    + +
    +
    + + + + +
    setup.packages
    +
    + +
    +
    + +

    ◆ python_requires

    + +
    +
    + + + + +
    setup.python_requires
    +
    + +
    +
    + +

    ◆ url

    + +
    +
    + + + + +
    setup.url
    +
    + +
    +
    + +

    ◆ version

    + +
    +
    + + + + +
    setup.version
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacetests.html b/docs/html/namespacetests.html new file mode 100644 index 0000000..cb317a0 --- /dev/null +++ b/docs/html/namespacetests.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    tests Namespace Reference
    +
    +
    + + + + + + + + + + + + +

    +Namespaces

    namespace  conftest
     
    namespace  test_commit_commands
     
    namespace  test_config_commands
     
    namespace  test_doc_commands
     
    namespace  test_web_config
     
    +
    +
    + + + + + diff --git a/docs/html/namespacetests.js b/docs/html/namespacetests.js new file mode 100644 index 0000000..30e7f6c --- /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#a5fe1bfd9eacf8775c20f9a883fcc10a6", null ], + [ "test_generate_doc_file_location", "namespacetests_1_1test__doc__commands.html#ac12eb3d9839af7f9cfc2da5150ac8a16", null ], + [ "test_generate_doc_folder_location", "namespacetests_1_1test__doc__commands.html#a161b89af34978ec9f4a59a37f374125d", null ], + [ "test_generate_doc_no_location", "namespacetests_1_1test__doc__commands.html#a709237fc294b8309acdaddd29369f15b", null ], + [ "test_generate_doc_with_file_exception", "namespacetests_1_1test__doc__commands.html#a28ffc568a6338124fce4eff50a839f68", null ], + [ "test_generate_doc_with_folder_exception", "namespacetests_1_1test__doc__commands.html#a8f073a1ebba4bf58fa0875f01b372fee", null ], + [ "test_handle_docgen_generate", "namespacetests_1_1test__doc__commands.html#a8adc7be503bd092e118f9454fffbd0d5", null ], + [ "test_handle_docgen_install_hook", "namespacetests_1_1test__doc__commands.html#a278af7079be277ff3eab96e7e8c038b9", null ], + [ "test_handle_docgen_no_token", "namespacetests_1_1test__doc__commands.html#a27e497ab63419dcd4ce066864882aa0c", null ], + [ "test_handle_docgen_uninstall_hook", "namespacetests_1_1test__doc__commands.html#abe2161b459ab5d033d6ba997323c218b", null ], + [ "test_setup_docgen_parser", "namespacetests_1_1test__doc__commands.html#a15204cf3fb17527d46e54316576f2042", 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..6026550 --- /dev/null +++ b/docs/html/namespacetests_1_1conftest.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.conftest Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    tests.conftest Namespace Reference
    +
    +
    +
    +
    + + + + + 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..34eab37 --- /dev/null +++ b/docs/html/namespacetests_1_1test__commit__commands.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_commit_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    tests.test_commit_commands Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  TestCommitCommands
     
    +
    +
    + + + + + 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..237b7d9 --- /dev/null +++ b/docs/html/namespacetests_1_1test__config__commands.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_config_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    tests.test_config_commands Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  TestConfigCommands
     
    +
    +
    + + + + + 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..ae8211a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands.html @@ -0,0 +1,608 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_doc_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    tests.test_doc_commands Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

     test_generate_doc_no_location (mock_getcwd, mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
     test_generate_doc_file_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
     test_generate_doc_folder_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
     test_generate_doc_error_handling (mock_api_client, mock_git_analyzer, mock_exit)
     
     test_setup_docgen_parser ()
     
     test_handle_docgen_install_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
     test_handle_docgen_uninstall_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
     test_handle_docgen_generate (mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
     test_handle_docgen_no_token (mock_exit, mock_get_token)
     
     test_generate_doc_with_file_exception (mock_api_client, mock_getcwd)
     
     test_generate_doc_with_folder_exception (mock_api_client, mock_getcwd)
     
    +

    Function Documentation

    + +

    ◆ test_generate_doc_error_handling()

    + +
    +
    + + + + + + + + + + + + + + + + +
    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()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    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()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    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()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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()

    + +
    +
    + + + + + + + + + + + +
    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()

    + +
    +
    + + + + + + + + + + + +
    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()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + +
    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()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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()

    + +
    +
    + + + + + + + + + + + +
    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()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    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()

    + +
    +
    + + + + + + + +
    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__web__config.html b/docs/html/namespacetests_1_1test__web__config.html new file mode 100644 index 0000000..0f3f848 --- /dev/null +++ b/docs/html/namespacetests_1_1test__web__config.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_web_config Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    tests.test_web_config Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  TestWebConfig
     
    +
    +
    + + + + + 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_fd.png b/docs/html/nav_fd.png new file mode 100644 index 0000000..032fbdd Binary files /dev/null and b/docs/html/nav_fd.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/nav_hd.png b/docs/html/nav_hd.png new file mode 100644 index 0000000..de80f18 Binary files /dev/null and b/docs/html/nav_hd.png differ diff --git a/docs/html/navtree.css b/docs/html/navtree.css new file mode 100644 index 0000000..6b1e5e4 --- /dev/null +++ b/docs/html/navtree.css @@ -0,0 +1,149 @@ +#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: white; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree .selected .arrow { + color: #9CAFD4; + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; +} + +#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:white; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + 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: $width; + 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-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..2d4fa84 --- /dev/null +++ b/docs/html/navtree.js @@ -0,0 +1,483 @@ +/* + @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 initNavTree(toroot,relpath) { + let navTreeSubIndices = []; + const ARROW_DOWN = '▼'; + const ARROW_RIGHT = '►'; + const NAVPATH_COOKIE_NAME = ''+'navpath'; + + const getData = function(varName) { + const i = varName.lastIndexOf('/'); + const n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/-/g,'_')); + } + + const stripPath = function(uri) { + return uri.substring(uri.lastIndexOf('/')+1); + } + + const stripPath2 = function(uri) { + const i = uri.lastIndexOf('/'); + const s = uri.substring(i+1); + const m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; + } + + const hashValue = function() { + return $(location).attr('hash').substring(1).replace(/[^\w-]/g,''); + } + + const hashUrl = function() { + return '#'+hashValue(); + } + + const pathName = function() { + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;()]/g, ''); + } + + const storeLink = function(link) { + if (!$("#nav-sync").hasClass('sync')) { + Cookie.writeSetting(NAVPATH_COOKIE_NAME,link,0); + } + } + + const deleteLink = function() { + Cookie.eraseSetting(NAVPATH_COOKIE_NAME); + } + + const cachedLink = function() { + return Cookie.readSetting(NAVPATH_COOKIE_NAME,''); + } + + const getScript = function(scriptName,func) { + const head = document.getElementsByTagName("head")[0]; + const script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); + } + + const createIndent = function(o,domNode,node) { + let level=-1; + let n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + const imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=ARROW_RIGHT; + 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=ARROW_RIGHT; + node.expanded = false; + } else { + expandNode(o, node, false, true); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + let span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } + } + + let animationInProgress = false; + + const gotoAnchor = function(anchor,aname) { + let pos, docContent = $('#doc-content'); + let ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || ancParent.hasClass('fieldtype') || + ancParent.is(':header')) { + pos = ancParent.offset().top; + } else if (anchor.position()) { + pos = anchor.offset().top; + } + if (pos) { + const dcOffset = docContent.offset().top; + const dcHeight = docContent.height(); + const dcScrHeight = docContent[0].scrollHeight + const dcScrTop = docContent.scrollTop(); + let dist = Math.abs(Math.min(pos-dcOffset,dcScrHeight-dcHeight-dcScrTop)); + animationInProgress = true; + docContent.animate({ + scrollTop: pos + dcScrTop - dcOffset + },Math.max(50,Math.min(500,dist)),function() { + animationInProgress=false; + if (anchor.parent().attr('class')=='memItemLeft') { + let 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 + } + }); + } + } + + const newNode = function(o, po, text, link, childrenData, lastNode) { + const node = { + children : [], + childrenData : childrenData, + depth : po.depth + 1, + relpath : po.relpath, + isLast : lastNode, + li : document.createElement("li"), + parentNode : po, + itemDiv : document.createElement("div"), + labelSpan : document.createElement("span"), + label : document.createTextNode(text), + expanded : false, + childrenUL : null, + getChildrenUL : function() { + if (!this.childrenUL) { + this.childrenUL = document.createElement("ul"); + this.childrenUL.className = "children_ul"; + this.childrenUL.style.display = "none"; + this.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }, + }; + + node.itemDiv.className = "item"; + node.labelSpan.className = "label"; + createIndent(o,node.itemDiv,node); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + const a = document.createElement("a"); + node.labelSpan.appendChild(a); + po.getChildrenUL().appendChild(node.li); + a.appendChild(node.label); + if (link) { + let 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) { + const aname = '#'+link.split('#')[1]; + const srcPage = stripPath(pathName()); + const targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : aname; + a.onclick = function() { + storeLink(link); + aPPar = $(a).parent().parent(); + if (!aPPar.hasClass('selected')) { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + aPPar.addClass('selected'); + aPPar.attr('id','selected'); + } + const anchor = $(aname); + gotoAnchor(anchor,aname); + }; + } else { + a.href = url; + a.onclick = () => storeLink(link); + } + } else if (childrenData != null) { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + return node; + } + + const showRoot = function() { + const headerHeight = $("#top").height(); + const footerHeight = $("#nav-path").height(); + const windowHeight = $(window).height() - headerHeight - footerHeight; + (function() { // retry until we can scroll to the selected item + try { + const navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); + } + + const expandNode = function(o, node, imm, setFocus) { + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + expandNode(o, node, imm, setFocus); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + if (setFocus) { + $(node.expandToggle).focus(); + } + } + } + } + + const glowEffect = function(n,duration) { + n.addClass('glow').delay(duration).queue(function(next) { + $(this).removeClass('glow');next(); + }); + } + + const highlightAnchor = function() { + const aname = hashUrl(); + const anchor = $(aname); + gotoAnchor(anchor,aname); + } + + const selectAndHighlight = function(hash,n) { + let a; + if (hash) { + const 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'); + } + let topOffset=5; + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); + } + + const showNode = function(o, node, index, hash) { + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + const varName = node.childrenData; + getScript(node.relpath+varName,function() { + node.childrenData = getData(varName); + showNode(o,node,index,hash); + }); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = ARROW_DOWN; + node.expanded = true; + const n = node.children[o.breadcrumbs[index]]; + if (index+11 ? '#'+parts[1].replace(/[^\w-]/g,'') : ''; + } + if (hash.match(/^#l\d+$/)) { + const anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + const url=root+hash; + let 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); + } + }); + } + } + + const showSyncOff = function(n,relpath) { + n.html(''); + } + + const showSyncOn = function(n,relpath) { + n.html(''); + } + + const o = { + toroot : toroot, + node : { + childrenData : NAVTREE, + children : [], + childrenUL : document.createElement("ul"), + getChildrenUL : function() { return this.childrenUL }, + li : document.getElementById("nav-tree-contents"), + depth : 0, + relpath : relpath, + expanded : false, + isLast : true, + plus_img : document.createElement("span"), + }, + }; + o.node.li.appendChild(o.node.childrenUL); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = ARROW_RIGHT; + + const navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + + navSync.click(() => { + const 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(); + } + }); + + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + + $(window).bind('hashchange', () => { + if (!animationInProgress) { + if (window.location.hash && window.location.hash.length>1) { + let a; + if ($(location).attr('hash')) { + const clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + + + + + + + + + + + + +penify-cli: Related Pages + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Related 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..60e8854 --- /dev/null +++ b/docs/html/penify-cli-documentation_8md.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs/penify-cli-documentation.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/docs/penify-cli-documentation.md File Reference
    +
    +
    +
    +
    + + + + + 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..edb29bc --- /dev/null +++ b/docs/html/penify__hook_2____init_____8py.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    __init__.py File Reference
    +
    +
    + + + + +

    +Namespaces

    namespace  penify_hook
     
    +
    +
    + + + + + 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..b7239d0 --- /dev/null +++ b/docs/html/penify__hook_2commands_2____init_____8py.html @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/commands/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    __init__.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

    namespace  penify_hook
     
    namespace  penify_hook.commands
     
    +
    +
    + + + + + diff --git a/docs/html/plus.svg b/docs/html/plus.svg new file mode 100644 index 0000000..0752016 --- /dev/null +++ b/docs/html/plus.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/plusd.svg b/docs/html/plusd.svg new file mode 100644 index 0000000..0c65bfe --- /dev/null +++ b/docs/html/plusd.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/resize.js b/docs/html/resize.js new file mode 100644 index 0000000..178d03b --- /dev/null +++ b/docs/html/resize.js @@ -0,0 +1,147 @@ +/* + @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(treeview) { + let sidenav,navtree,content,header,footer,barWidth=6; + const RESIZE_COOKIE_NAME = ''+'width'; + + function resizeWidth() { + const sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(sidenavWidth)+"px"}); + } + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + function restoreWidth(navWidth) { + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + if (typeof page_layout!=='undefined' && page_layout==1) { + footer.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + } + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight(treeview) { + const headerHeight = header.outerHeight(); + const windowHeight = $(window).height(); + let contentHeight; + if (treeview) + { + const footerHeight = footer.outerHeight(); + let 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; + } + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + } + else + { + contentHeight = windowHeight - headerHeight; + } + content.css({height:contentHeight + "px"}); + if (location.hash.slice(1)) { + (document.getElementById(location.hash.slice(1))||document.body).scrollIntoView(); + } + } + + function collapseExpand() { + let newWidth; + if (sidenav.width()>0) { + newWidth=0; + } else { + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + const sidenavWidth = $(sidenav).outerWidth(); + Cookie.writeSetting(RESIZE_COOKIE_NAME,sidenavWidth-barWidth); + } + + header = $("#top"); + content = $("#doc-content"); + footer = $("#nav-path"); + sidenav = $("#side-nav"); + if (!treeview) { +// title = $("#titlearea"); +// titleH = $(title).height(); +// let animating = false; +// content.on("scroll", function() { +// slideOpts = { duration: 200, +// step: function() { +// contentHeight = $(window).height() - header.outerHeight(); +// content.css({ height : contentHeight + "px" }); +// }, +// done: function() { animating=false; } +// }; +// if (content.scrollTop()>titleH && title.css('display')!='none' && !animating) { +// title.slideUp(slideOpts); +// animating=true; +// } else if (content.scrollTop()<=titleH && title.css('display')=='none' && !animating) { +// title.slideDown(slideOpts); +// animating=true; +// } +// }); + } else { + navtree = $("#nav-tree"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + } + $(window).resize(function() { resizeHeight(treeview); }); + if (treeview) + { + const device = navigator.userAgent.toLowerCase(); + const 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; + } + const width = Cookie.readSetting(RESIZE_COOKIE_NAME,250); + if (width) { restoreWidth(width); } else { resizeWidth(); } + } + resizeHeight(treeview); + const url = location.href; + const i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + const _preventDefault = function(evt) { evt.preventDefault(); }; + if (treeview) + { + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + // workaround for firefox + $("body").css({overflow: "hidden"}); + } + $(window).on('load',function() { resizeHeight(treeview); }); +} +/* @license-end */ diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js new file mode 100644 index 0000000..f3a2395 --- /dev/null +++ b/docs/html/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['1_3a_20efficient_20git_20commits_20with_20ai_0',['Workflow 1: Efficient Git Commits with AI',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md104',1,'']]] +]; diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js new file mode 100644 index 0000000..355f80e --- /dev/null +++ b/docs/html/search/all_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['2_3a_20documentation_20generation_20pipeline_0',['Workflow 2: Documentation Generation Pipeline',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md108',1,'']]] +]; diff --git a/docs/html/search/all_10.js b/docs/html/search/all_10.js new file mode 100644 index 0000000..37d8ad6 --- /dev/null +++ b/docs/html/search/all_10.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['l_20location_20tt_0',['<tt>-l, --location</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md67',1,'']]], + ['leads_1',['For Team Leads',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md118',1,'']]], + ['legacy_20code_20understanding_2',['Workflow 5: Legacy Code Understanding',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md121',1,'']]], + ['license_3',['License',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md172',1,'']]], + ['line_20configuration_4',['Command-Line Configuration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md37',1,'']]], + ['list_5fall_5ffiles_5fin_5fdir_5',['list_all_files_in_dir',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a050554646cbc07aef1fbaa748ee4c0fc',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['litellm_6',['litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#aa646fddc43ecd633d2c358d58dd4df24',1,'penify_hook::llm_client::LLMClient']]], + ['llm_7',['Using Local LLM',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md12',1,'']]], + ['llm_20and_20jira_20integration_8',['LLM and JIRA Integration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md11',1,'']]], + ['llm_20configuration_9',['LLM Configuration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md23',1,'LLM Configuration'],['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md168',1,'Local LLM Configuration']]], + ['llm_5fclient_10',['llm_client',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['llm_5fclient_2epy_11',['llm_client.py',['../llm__client_8py.html',1,'']]], + ['llmclient_12',['LLMClient',['../classpenify__hook_1_1llm__client_1_1LLMClient.html',1,'penify_hook::llm_client']]], + ['llms_13',['Supported LLMs',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md25',1,'']]], + ['load_5fenv_5ffiles_14',['load_env_files',['../namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae',1,'penify_hook::commands::config_commands']]], + ['local_15',['Ollama (Local)',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md28',1,'']]], + ['local_20llm_16',['Using Local LLM',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md12',1,'']]], + ['local_20llm_20configuration_17',['Local LLM Configuration',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md168',1,'']]], + ['location_18',['Location',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md55',1,'Custom Hook Location'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md83',1,'Installation Location']]], + ['location_20tt_19',['<tt>-l, --location</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md67',1,'']]], + ['locations_20',['Configuration Locations',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md35',1,'']]], + ['logger_21',['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_22',['Login',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md164',1,'']]], + ['login_23',['login',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#a1eb69ebcc475060011476a65cbffd7f6',1,'penify_hook::commands::auth_commands']]], + ['login_20command_24',['Login Command',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md141',1,'']]], + ['login_20process_25',['Login Process',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md44',1,'']]], + ['login_20required_26',['Advanced Commands (Login required)',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md163',1,'']]], + ['login_20required_27',['Basic Commands (No login required)',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md160',1,'']]], + ['login_5fcommand_2epy_28',['login_command.py',['../login__command_8py.html',1,'']]], + ['logs_29',['Logs',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md61',1,'']]], + ['long_5fdescription_30',['long_description',['../namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde',1,'setup']]], + ['long_5fdescription_5fcontent_5ftype_31',['long_description_content_type',['../namespacesetup.html#a3796ea10c998699d07d391414ff5d720',1,'setup']]] +]; diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js new file mode 100644 index 0000000..ff2ad49 --- /dev/null +++ b/docs/html/search/all_11.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['m_20message_20tt_0',['<tt>-m, --message</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md3',1,'']]], + ['main_1',['main',['../namespacepenify__hook_1_1main.html#a245db84b8309d570226b2e147e18b5eb',1,'penify_hook::main']]], + ['main_2epy_2',['main.py',['../main_8py.html',1,'']]], + ['management_3',['Git Hook Management',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md166',1,'']]], + ['manual_20documentation_4',['Manual Documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md111',1,'']]], + ['manual_20hook_20removal_5',['Manual Hook Removal',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md92',1,'']]], + ['members_6',['Members',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md119',1,'For New Team Members'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md117',1,'Workflow 4: Onboarding New Team Members']]], + ['message_7',['Generate and Edit Full Commit Message',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md9',1,'']]], + ['message_20generation_8',['Commit Message Generation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md48',1,'']]], + ['message_20tt_9',['<tt>-m, --message</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md3',1,'']]], + ['mock_5fapi_5fclient_10',['mock_api_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a7f9beb5fdd122ed9a39dd0751934d661',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fcommit_5fdoc_5fgen_11',['mock_commit_doc_gen',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4e7b42caad38d0f9162c7b490720a3b7',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fgit_5ffolder_5fsearch_12',['mock_git_folder_search',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a71bfa48c9a521febb5c279cff113fbf5',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fjira_5fclient_13',['mock_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43b8dd6adb507ef30604cd790940b881',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fllm_5fclient_14',['mock_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af8f0277ac27f0e9d0a0e4bc6fcd77107',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fprint_5ffunctions_15',['mock_print_functions',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a65132bfab05d287af9eb380b73d332ab',1,'tests::test_commit_commands::TestCommitCommands']]], + ['model_16',['model',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10',1,'penify_hook::llm_client::LLMClient']]], + ['modifying_20hook_20behavior_17',['Modifying Hook Behavior',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md87',1,'']]] +]; diff --git a/docs/html/search/all_12.js b/docs/html/search/all_12.js new file mode 100644 index 0000000..8efe90c --- /dev/null +++ b/docs/html/search/all_12.js @@ -0,0 +1,7 @@ +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']]], + ['new_20team_20members_2',['New Team Members',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md119',1,'For New Team Members'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md117',1,'Workflow 4: Onboarding New Team Members']]], + ['no_20login_20required_3',['Basic Commands (No login required)',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md160',1,'']]] +]; diff --git a/docs/html/search/all_13.js b/docs/html/search/all_13.js new file mode 100644 index 0000000..d2b4600 --- /dev/null +++ b/docs/html/search/all_13.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['of_20contents_0',['of Contents',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md42',1,'Table of Contents'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md64',1,'Table of Contents']]], + ['ollama_20local_1',['Ollama (Local)',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md28',1,'']]], + ['onboarding_20new_20team_20members_2',['Workflow 4: Onboarding New Team Members',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md117',1,'']]], + ['only_20with_20context_3',['Generate Title Only with Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md7',1,'']]], + ['openai_4',['OpenAI',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md29',1,'Azure OpenAI'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md26',1,'OpenAI']]], + ['option_20combinations_5',['Option Combinations',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md6',1,'Option Combinations'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md71',1,'Option Combinations']]], + ['options_6',['Options',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md2',1,'Command Options'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md66',1,'Command Options']]], + ['options_3a_7',['Options:',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md132',1,'Options:'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md148',1,'Options:']]], + ['overview_8',['Overview',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md47',1,'Command Overview'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md128',1,'Commands Overview'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md21',1,'Configuration Overview']]] +]; diff --git a/docs/html/search/all_14.js b/docs/html/search/all_14.js new file mode 100644 index 0000000..9fcea3a --- /dev/null +++ b/docs/html/search/all_14.js @@ -0,0 +1,49 @@ +var searchData= +[ + ['packages_0',['packages',['../namespacesetup.html#aff2375a361fd5865c77bd9aa093be747',1,'setup']]], + ['path_1',['path',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a79fceaf7882b9bcf1075a24262c5d7e2',1,'penify_hook::commands::config_commands']]], + ['penify_20cli_20commit_20commands_2',['Penify CLI - Commit Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html',1,'']]], + ['penify_20cli_20configuration_20commands_3',['Penify CLI - Configuration Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html',1,'']]], + ['penify_20cli_20detailed_20usage_20guide_4',['Penify CLI - Detailed Usage Guide',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html',1,'']]], + ['penify_20cli_20documentation_5',['Penify CLI Documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md125',1,'']]], + ['penify_20cli_20documentation_6',['penify-cli-documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html',1,'']]], + ['penify_20cli_20documentation_20generation_20commands_7',['Penify CLI - Documentation Generation Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html',1,'']]], + ['penify_20cli_20example_20workflows_8',['Penify CLI Example Workflows',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html',1,'']]], + ['penify_2dcli_2ddocumentation_2emd_9',['penify-cli-documentation.md',['../penify-cli-documentation_8md.html',1,'']]], + ['penify_5fhook_10',['penify_hook',['../namespacepenify__hook.html',1,'']]], + ['penify_5fhook_3a_3aapi_5fclient_11',['api_client',['../namespacepenify__hook_1_1api__client.html',1,'penify_hook']]], + ['penify_5fhook_3a_3abase_5fanalyzer_12',['base_analyzer',['../namespacepenify__hook_1_1base__analyzer.html',1,'penify_hook']]], + ['penify_5fhook_3a_3acommands_13',['commands',['../namespacepenify__hook_1_1commands.html',1,'penify_hook']]], + ['penify_5fhook_3a_3acommands_3a_3aauth_5fcommands_14',['auth_commands',['../namespacepenify__hook_1_1commands_1_1auth__commands.html',1,'penify_hook::commands']]], + ['penify_5fhook_3a_3acommands_3a_3acommit_5fcommands_15',['commit_commands',['../namespacepenify__hook_1_1commands_1_1commit__commands.html',1,'penify_hook::commands']]], + ['penify_5fhook_3a_3acommands_3a_3aconfig_5fcommands_16',['config_commands',['../namespacepenify__hook_1_1commands_1_1config__commands.html',1,'penify_hook::commands']]], + ['penify_5fhook_3a_3acommands_3a_3adoc_5fcommands_17',['doc_commands',['../namespacepenify__hook_1_1commands_1_1doc__commands.html',1,'penify_hook::commands']]], + ['penify_5fhook_3a_3acommands_3a_3ahook_5fcommands_18',['hook_commands',['../namespacepenify__hook_1_1commands_1_1hook__commands.html',1,'penify_hook::commands']]], + ['penify_5fhook_3a_3acommit_5fanalyzer_19',['commit_analyzer',['../namespacepenify__hook_1_1commit__analyzer.html',1,'penify_hook']]], + ['penify_5fhook_3a_3aconfig_5fcommand_20',['config_command',['../namespacepenify__hook_1_1config__command.html',1,'penify_hook']]], + ['penify_5fhook_3a_3aconstants_21',['constants',['../namespacepenify__hook_1_1constants.html',1,'penify_hook']]], + ['penify_5fhook_3a_3afile_5fanalyzer_22',['file_analyzer',['../namespacepenify__hook_1_1file__analyzer.html',1,'penify_hook']]], + ['penify_5fhook_3a_3afolder_5fanalyzer_23',['folder_analyzer',['../namespacepenify__hook_1_1folder__analyzer.html',1,'penify_hook']]], + ['penify_5fhook_3a_3agit_5fanalyzer_24',['git_analyzer',['../namespacepenify__hook_1_1git__analyzer.html',1,'penify_hook']]], + ['penify_5fhook_3a_3ajira_5fclient_25',['jira_client',['../namespacepenify__hook_1_1jira__client.html',1,'penify_hook']]], + ['penify_5fhook_3a_3allm_5fclient_26',['llm_client',['../namespacepenify__hook_1_1llm__client.html',1,'penify_hook']]], + ['penify_5fhook_3a_3alogin_5fcommand_27',['login_command',['../namespacepenify__hook_1_1login__command.html',1,'penify_hook']]], + ['penify_5fhook_3a_3amain_28',['main',['../namespacepenify__hook_1_1main.html',1,'penify_hook']]], + ['penify_5fhook_3a_3aui_5futils_29',['ui_utils',['../namespacepenify__hook_1_1ui__utils.html',1,'penify_hook']]], + ['penify_5fhook_3a_3autils_30',['utils',['../namespacepenify__hook_1_1utils.html',1,'penify_hook']]], + ['pipeline_31',['Workflow 2: Documentation Generation Pipeline',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md108',1,'']]], + ['post_20commit_20hook_32',['Post-Commit Hook',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md54',1,'']]], + ['precedence_33',['Token Precedence',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md46',1,'']]], + ['print_5ferror_34',['print_error',['../namespacepenify__hook_1_1ui__utils.html#a35b79a7837fd654ad8f0cdb4e6e87598',1,'penify_hook::ui_utils']]], + ['print_5finfo_35',['print_info',['../namespacepenify__hook_1_1ui__utils.html#a3cee29e999fa3c812725cb98f24aae4c',1,'penify_hook::ui_utils']]], + ['print_5fprocessing_36',['print_processing',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a1b371f1ba909b4fd351c542815f18747',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing()'],['../namespacepenify__hook_1_1ui__utils.html#ad4f7cab36c3b1f09507654b119d45bfb',1,'penify_hook.ui_utils.print_processing(file_path)']]], + ['print_5fstatus_37',['print_status',['../namespacepenify__hook_1_1ui__utils.html#a65594c876dabfceb83d9b0ce9d0d65e7',1,'penify_hook::ui_utils']]], + ['print_5fsuccess_38',['print_success',['../namespacepenify__hook_1_1ui__utils.html#a9bff909b9e155a344597f69a0530754b',1,'penify_hook::ui_utils']]], + ['print_5fwarning_39',['print_warning',['../namespacepenify__hook_1_1ui__utils.html#a73f112b02d36b74c88a3ce3ed1458b45',1,'penify_hook::ui_utils']]], + ['process_40',['Login Process',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md44',1,'']]], + ['process_5ffile_41',['process_file',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#aeb3be324ba517855d6e5cdb684a6efda',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.process_file()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a0fcec06966a3a5ef1df21529a6a3db81',1,'penify_hook.git_analyzer.GitDocGenHook.process_file()']]], + ['process_5fjira_5fintegration_42',['process_jira_integration',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['processing_5fsymbol_43',['PROCESSING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#ad7cc8eaf7a660ff195f4366d792ab155',1,'penify_hook::ui_utils']]], + ['provide_20context_44',['Generate, Edit, and Provide Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md10',1,'']]], + ['python_5frequires_45',['python_requires',['../namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf',1,'setup']]] +]; diff --git a/docs/html/search/all_15.js b/docs/html/search/all_15.js new file mode 100644 index 0000000..84997c7 --- /dev/null +++ b/docs/html/search/all_15.js @@ -0,0 +1,23 @@ +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#a9d723ca510c90ac0390819dcae3a800a',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']]], + ['release_20tags_3',['Documenting Release Tags',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md98',1,'']]], + ['remote_20repository_20documentation_4',['Remote Repository Documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md58',1,'']]], + ['removal_5',['Manual Hook Removal',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md92',1,'']]], + ['repo_6',['repo',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fdetails_7',['repo_details',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5',1,'penify_hook.base_analyzer.BaseAnalyzer.repo_details'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook.commit_analyzer.CommitDocGenHook.repo_details']]], + ['repo_5fpath_8',['repo_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499',1,'penify_hook.base_analyzer.BaseAnalyzer.repo_path'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook.commit_analyzer.CommitDocGenHook.repo_path']]], + ['repository_9',['Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md75',1,'Install Hook in Current Repository'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md76',1,'Install Hook in Specific Repository'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md77',1,'Uninstall Hook from Current Repository'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md78',1,'Uninstall Hook from Specific Repository']]], + ['repository_20documentation_10',['Remote Repository Documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md58',1,'']]], + ['repository_20uninstallation_11',['Specific Repository Uninstallation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md91',1,'']]], + ['required_12',['required',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md163',1,'Advanced Commands (Login required)'],['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md160',1,'Basic Commands (No login required)']]], + ['requirement_13',['Authentication Requirement',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md51',1,'']]], + ['requirements_14',['Requirements',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md14',1,'Configuration Requirements'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md84',1,'Installation Requirements']]], + ['requirements_3a_15',['Requirements:',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md134',1,'Requirements:'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md151',1,'Requirements:']]], + ['resources_16',['Additional Resources',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md155',1,'']]], + ['review_20enhancement_17',['Workflow 3: Code Review Enhancement',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md113',1,'']]], + ['run_18',['run',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a2d0bb9eba04614915fa33a1d7b0b8f03',1,'penify_hook.commit_analyzer.CommitDocGenHook.run()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a503c97b07cb2db1df0d881094dd6bb49',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.run()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53c61ef41d39dd9bb1c8020a94f1dd8d',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.run()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a38fe1e50fc9448d995851d933283b633',1,'penify_hook.git_analyzer.GitDocGenHook.run()']]], + ['running_20tests_19',['Running Tests',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md171',1,'']]] +]; diff --git a/docs/html/search/all_16.js b/docs/html/search/all_16.js new file mode 100644 index 0000000..ad1ceb4 --- /dev/null +++ b/docs/html/search/all_16.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['sauarbh_0',['author: Suman Sauarbh',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md124',1,'']]], + ['save_5fcredentials_1',['save_credentials',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#a68a2119363481a0001ad6190329c863b',1,'penify_hook::commands::auth_commands']]], + ['save_5fjira_5fconfig_2',['save_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a0459710e44183890121dc3013cb6f374',1,'penify_hook::commands::config_commands']]], + ['save_5fllm_5fconfig_3',['save_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ab24827423ec7e9a71a03639fb16e4cd4',1,'penify_hook::commands::config_commands']]], + ['scenarios_4',['Advanced Hook Scenarios',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md88',1,'']]], + ['script_20content_5',['Hook Script Content',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md82',1,'']]], + ['send_5ffile_5ffor_5fdocstring_5fgeneration_6',['send_file_for_docstring_generation',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad6392c5f8e8b5e3394a74979278835bd',1,'penify_hook::api_client::APIClient']]], + ['settings_7',['Settings',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md16',1,'Basic Commit with Default Settings'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md52',1,'Configuration Settings']]], + ['setup_8',['Setup',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md105',1,'Setup'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md109',1,'Setup'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md114',1,'Setup']]], + ['setup_9',['setup',['../namespacesetup.html',1,'']]], + ['setup_2epy_10',['setup.py',['../setup_8py.html',1,'']]], + ['setup_5fcommit_5fparser_11',['setup_commit_parser',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a80d37e58f2dc4356ed99a54ac75b1db1',1,'penify_hook::commands::commit_commands']]], + ['setup_5fconfig_5fparser_12',['setup_config_parser',['../namespacepenify__hook_1_1config__command.html#ad711074006b3c5d4a1cc73ef38dcf0ba',1,'penify_hook::config_command']]], + ['setup_5fdocgen_5fparser_13',['setup_docgen_parser',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#abf64cb941e49af02798f5ff1b56139c6',1,'penify_hook::commands::doc_commands']]], + ['setup_5flogin_5fparser_14',['setup_login_parser',['../namespacepenify__hook_1_1login__command.html#ae787794b007f320b4480aff0b9767235',1,'penify_hook::login_command']]], + ['sharing_20configuration_15',['Sharing Configuration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md38',1,'']]], + ['specific_20file_16',['Generate Documentation for a Specific File',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md73',1,'']]], + ['specific_20repository_17',['Specific Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md76',1,'Install Hook in Specific Repository'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md78',1,'Uninstall Hook from Specific Repository']]], + ['specific_20repository_20uninstallation_18',['Specific Repository Uninstallation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md91',1,'']]], + ['standard_20uninstallation_19',['Standard Uninstallation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md90',1,'']]], + ['started_20',['Getting Started',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md127',1,'']]], + ['storage_21',['API Token Storage',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md45',1,'']]], + ['structure_22',['Structure',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md30',1,'Configuration File Structure'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md34',1,'Configuration File Structure']]], + ['subcommands_23',['Subcommands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md68',1,'']]], + ['subcommands_3a_24',['Subcommands:',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md138',1,'Subcommands:'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md149',1,'Subcommands:']]], + ['success_5fcolor_25',['SUCCESS_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4',1,'penify_hook::ui_utils']]], + ['success_5fsymbol_26',['SUCCESS_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a7d3cc992aaeb0a01c536c9a48e801ff3',1,'penify_hook::ui_utils']]], + ['suman_20sauarbh_27',['author: Suman Sauarbh',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md124',1,'']]], + ['support_28',['Support',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md62',1,'Support'],['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md176',1,'Support']]], + ['supported_20llms_29',['Supported LLMs',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md25',1,'']]], + ['supported_5ffile_5ftypes_30',['supported_file_types',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb',1,'penify_hook.base_analyzer.BaseAnalyzer.supported_file_types'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.supported_file_types'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html',1,'penify_hook.git_analyzer.GitDocGenHook.supported_file_types']]] +]; diff --git a/docs/html/search/all_17.js b/docs/html/search/all_17.js new file mode 100644 index 0000000..1adc4d7 --- /dev/null +++ b/docs/html/search/all_17.js @@ -0,0 +1,66 @@ +var searchData= +[ + ['table_20of_20contents_0',['Table of Contents',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md42',1,'Table of Contents'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md64',1,'Table of Contents']]], + ['tags_1',['Documenting Release Tags',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md98',1,'']]], + ['team_20leads_2',['For Team Leads',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md118',1,'']]], + ['team_20members_3',['Team Members',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md119',1,'For New Team Members'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md117',1,'Workflow 4: Onboarding New Team Members']]], + ['terminal_20tt_4',['<tt>-e, --terminal</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md4',1,'']]], + ['test_5fcommit_5fcode_5ferror_5fhandling_5',['test_commit_code_error_handling',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a8288fd5a830273e48732231df0421658',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fclient_6',['test_commit_code_with_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a02319d7a366df3950c8c151dd7821a93',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fconnection_5ffailure_7',['test_commit_code_with_jira_connection_failure',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ae8066d6f07122a6be89b05ddbb5bb07b',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fllm_5fclient_8',['test_commit_code_with_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a70225e655e0ca64868d71e3c9389a218',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcommands_2epy_9',['test_commit_commands.py',['../test__commit__commands_8py.html',1,'']]], + ['test_5fconfig_5fcommands_2epy_10',['test_config_commands.py',['../test__config__commands_8py.html',1,'']]], + ['test_5fconfig_5fjira_5fweb_5fserver_5fsetup_11',['test_config_jira_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#a63789aa9bfafe1a16b1f462174c53f6b',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fconfig_5fllm_5fweb_5fserver_5fsetup_12',['test_config_llm_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#a881cb29c7d44f302fb961f496a20776d',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fdoc_5fcommands_2epy_13',['test_doc_commands.py',['../test__doc__commands_8py.html',1,'']]], + ['test_5fgenerate_5fdoc_5ferror_5fhandling_14',['test_generate_doc_error_handling',['../namespacetests_1_1test__doc__commands.html#a5fe1bfd9eacf8775c20f9a883fcc10a6',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffile_5flocation_15',['test_generate_doc_file_location',['../namespacetests_1_1test__doc__commands.html#ac12eb3d9839af7f9cfc2da5150ac8a16',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffolder_5flocation_16',['test_generate_doc_folder_location',['../namespacetests_1_1test__doc__commands.html#a161b89af34978ec9f4a59a37f374125d',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fno_5flocation_17',['test_generate_doc_no_location',['../namespacetests_1_1test__doc__commands.html#a709237fc294b8309acdaddd29369f15b',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffile_5fexception_18',['test_generate_doc_with_file_exception',['../namespacetests_1_1test__doc__commands.html#a28ffc568a6338124fce4eff50a839f68',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffolder_5fexception_19',['test_generate_doc_with_folder_exception',['../namespacetests_1_1test__doc__commands.html#a8f073a1ebba4bf58fa0875f01b372fee',1,'tests::test_doc_commands']]], + ['test_5fget_5fjira_5fconfig_5fexists_20',['test_get_jira_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a153e6f218be2f42581be6895a14a4e85',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fempty_21',['test_get_llm_config_empty',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a29cdcf995761e77c9ff8c93e49eff541',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fexists_22',['test_get_llm_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd6ebd022b24b111df7cabdab4e1b6db',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5finvalid_5fjson_23',['test_get_llm_config_invalid_json',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a06d58f1b9188f2486f7e424aea40d0bd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fexisting_5fdir_24',['test_get_penify_config_existing_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#ae9c0ef56734f17892b7ac115e488bac4',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fnew_5fdir_25',['test_get_penify_config_new_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a335a57c003a8d797a5457c4d1c60420e',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fconfig_26',['test_get_token_from_config',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#ac2890b010d859d53629d9bea6a72b9c0',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fenv_27',['test_get_token_from_env',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#af30db6b96dcf9e6143d6a8f5241f5be1',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5fnot_5ffound_28',['test_get_token_not_found',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a1548cea068b4305d5a1d3ad5fb1bc25a',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fhandle_5fcommit_29',['test_handle_commit',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#adc5d95c15793c4bc698a62147aab2f7a',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fhandle_5fdocgen_5fgenerate_30',['test_handle_docgen_generate',['../namespacetests_1_1test__doc__commands.html#a8adc7be503bd092e118f9454fffbd0d5',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5finstall_5fhook_31',['test_handle_docgen_install_hook',['../namespacetests_1_1test__doc__commands.html#a278af7079be277ff3eab96e7e8c038b9',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5fno_5ftoken_32',['test_handle_docgen_no_token',['../namespacetests_1_1test__doc__commands.html#a27e497ab63419dcd4ce066864882aa0c',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5funinstall_5fhook_33',['test_handle_docgen_uninstall_hook',['../namespacetests_1_1test__doc__commands.html#abe2161b459ab5d033d6ba997323c218b',1,'tests::test_doc_commands']]], + ['test_5fsave_5fjira_5fconfig_5fsuccess_34',['test_save_jira_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a060996b8323f4cfd629c77b4e2605f50',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5ffailure_35',['test_save_llm_config_failure',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2ccb8ee5c161fcf49a04404a1658100b',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5fsuccess_36',['test_save_llm_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2411d025a057beb8a2f2a6431559e64f',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsetup_5fcommit_5fparser_37',['test_setup_commit_parser',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a820f1f6ac060eb4b33903e1e8a3318fe',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fsetup_5fdocgen_5fparser_38',['test_setup_docgen_parser',['../namespacetests_1_1test__doc__commands.html#a15204cf3fb17527d46e54316576f2042',1,'tests::test_doc_commands']]], + ['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',['Running Tests',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md171',1,'']]], + ['tests_43',['tests',['../namespacetests.html',1,'']]], + ['tests_3a_3aconftest_44',['conftest',['../namespacetests_1_1conftest.html',1,'tests']]], + ['tests_3a_3atest_5fcommit_5fcommands_45',['test_commit_commands',['../namespacetests_1_1test__commit__commands.html',1,'tests']]], + ['tests_3a_3atest_5fconfig_5fcommands_46',['test_config_commands',['../namespacetests_1_1test__config__commands.html',1,'tests']]], + ['tests_3a_3atest_5fdoc_5fcommands_47',['test_doc_commands',['../namespacetests_1_1test__doc__commands.html',1,'tests']]], + ['tests_3a_3atest_5fweb_5fconfig_48',['test_web_config',['../namespacetests_1_1test__web__config.html',1,'tests']]], + ['testwebconfig_49',['TestWebConfig',['../classtests_1_1test__web__config_1_1TestWebConfig.html',1,'tests::test_web_config']]], + ['title_20and_20description_20with_20context_50',['Generate Title and Description with Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md8',1,'']]], + ['title_20only_20with_20context_51',['Generate Title Only with Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md7',1,'']]], + ['token_52',['Creating a JIRA API Token',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md33',1,'']]], + ['token_20precedence_53',['Token Precedence',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md46',1,'']]], + ['token_20storage_54',['API Token Storage',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md45',1,'']]], + ['troubleshooting_55',['Troubleshooting',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md18',1,'Troubleshooting'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md39',1,'Troubleshooting'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md59',1,'Troubleshooting'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md99',1,'Troubleshooting'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md154',1,'Troubleshooting']]], + ['tt_56',['tt',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md5',1,'<tt>-d, --description</tt>'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md4',1,'<tt>-e, --terminal</tt>'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md67',1,'<tt>-l, --location</tt>'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md3',1,'<tt>-m, --message</tt>'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md69',1,'<tt>install-hook</tt>'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md70',1,'<tt>uninstall-hook</tt>']]], + ['tt_20d_20description_20tt_57',['<tt>-d, --description</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md5',1,'']]], + ['tt_20e_20terminal_20tt_58',['<tt>-e, --terminal</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md4',1,'']]], + ['tt_20install_20hook_20tt_59',['<tt>install-hook</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md69',1,'']]], + ['tt_20l_20location_20tt_60',['<tt>-l, --location</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md67',1,'']]], + ['tt_20m_20message_20tt_61',['<tt>-m, --message</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md3',1,'']]], + ['tt_20uninstall_20hook_20tt_62',['<tt>uninstall-hook</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md70',1,'']]] +]; diff --git a/docs/html/search/all_18.js b/docs/html/search/all_18.js new file mode 100644 index 0000000..73febc9 --- /dev/null +++ b/docs/html/search/all_18.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['ui_5futils_2epy_0',['ui_utils.py',['../ui__utils_8py.html',1,'']]], + ['understanding_1',['Workflow 5: Legacy Code Understanding',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md121',1,'']]], + ['uninstall_20hook_20from_20current_20repository_2',['Uninstall Hook from Current Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md77',1,'']]], + ['uninstall_20hook_20from_20specific_20repository_3',['Uninstall Hook from Specific Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md78',1,'']]], + ['uninstall_20hook_20tt_4',['<tt>uninstall-hook</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md70',1,'']]], + ['uninstall_5fgit_5fhook_5',['uninstall_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a1b2b3ffff51d19300a0b7ea785678443',1,'penify_hook::commands::hook_commands']]], + ['uninstallation_6',['Uninstallation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md89',1,'Hook Uninstallation'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md91',1,'Specific Repository Uninstallation'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md90',1,'Standard Uninstallation'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md93',1,'Verifying Uninstallation']]], + ['update_5fissue_5fstatus_7',['update_issue_status',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826',1,'penify_hook::jira_client::JiraClient']]], + ['update_5fstage_8',['update_stage',['../namespacepenify__hook_1_1ui__utils.html#ad8be9c5a2708c211a651e2b3dfb54bcd',1,'penify_hook::ui_utils']]], + ['url_9',['url',['../namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb',1,'setup']]], + ['usage_10',['Usage',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md1',1,'Basic Usage'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md22',1,'Basic Usage'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md65',1,'Basic Usage'],['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md159',1,'Usage']]], + ['usage_20guide_11',['Penify CLI - Detailed Usage Guide',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html',1,'']]], + ['usage_3a_12',['Usage:',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md131',1,'Usage:'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md137',1,'Usage:'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md142',1,'Usage:'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md147',1,'Usage:']]], + ['use_20cases_13',['Use Cases',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md56',1,'Advanced Use Cases'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md94',1,'Advanced Use Cases'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md50',1,'Use Cases']]], + ['using_20local_20llm_14',['Using Local LLM',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md12',1,'']]], + ['utils_2epy_15',['utils.py',['../utils_8py.html',1,'']]] +]; diff --git a/docs/html/search/all_19.js b/docs/html/search/all_19.js new file mode 100644 index 0000000..7368186 --- /dev/null +++ b/docs/html/search/all_19.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['variables_0',['Variables',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md36',1,'Environment Variables'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md153',1,'Environment Variables']]], + ['verifying_20installation_1',['Verifying Installation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md85',1,'']]], + ['verifying_20uninstallation_2',['Verifying Uninstallation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md93',1,'']]], + ['version_3',['version',['../namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c',1,'setup']]] +]; diff --git a/docs/html/search/all_1a.js b/docs/html/search/all_1a.js new file mode 100644 index 0000000..a30a2ae --- /dev/null +++ b/docs/html/search/all_1a.js @@ -0,0 +1,20 @@ +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#a9ee7a42eeca5b12429cb97bf89007be8',1,'penify_hook::ui_utils']]], + ['web_20interface_2',['Web Interface',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md24',1,'Web Interface'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md32',1,'Web Interface']]], + ['what_20happens_3a_3',['What happens:',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md143',1,'']]], + ['with_20ai_4',['Workflow 1: Efficient Git Commits with AI',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md104',1,'']]], + ['with_20all_20features_5',['Full Workflow with All Features',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md17',1,'']]], + ['with_20context_6',['with Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md8',1,'Generate Title and Description with Context'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md7',1,'Generate Title Only with Context']]], + ['with_20default_20settings_7',['Basic Commit with Default Settings',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md16',1,'']]], + ['work_8',['How Hooks Work',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md81',1,'']]], + ['workflow_9',['Workflow',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md106',1,'Daily Workflow'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md110',1,'Daily Workflow'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md115',1,'Workflow']]], + ['workflow_201_3a_20efficient_20git_20commits_20with_20ai_10',['Workflow 1: Efficient Git Commits with AI',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md104',1,'']]], + ['workflow_202_3a_20documentation_20generation_20pipeline_11',['Workflow 2: Documentation Generation Pipeline',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md108',1,'']]], + ['workflow_203_3a_20code_20review_20enhancement_12',['Workflow 3: Code Review Enhancement',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md113',1,'']]], + ['workflow_204_3a_20onboarding_20new_20team_20members_13',['Workflow 4: Onboarding New Team Members',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md117',1,'']]], + ['workflow_205_3a_20legacy_20code_20understanding_14',['Workflow 5: Legacy Code Understanding',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md121',1,'']]], + ['workflow_20with_20all_20features_15',['Full Workflow with All Features',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md17',1,'']]], + ['workflows_16',['Penify CLI Example Workflows',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html',1,'']]] +]; diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js new file mode 100644 index 0000000..317363a --- /dev/null +++ b/docs/html/search/all_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['3_3a_20code_20review_20enhancement_0',['Workflow 3: Code Review Enhancement',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md113',1,'']]] +]; diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js new file mode 100644 index 0000000..9be3a71 --- /dev/null +++ b/docs/html/search/all_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['4_3a_20onboarding_20new_20team_20members_0',['Workflow 4: Onboarding New Team Members',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md117',1,'']]] +]; diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js new file mode 100644 index 0000000..ca30ba4 --- /dev/null +++ b/docs/html/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['5_3a_20legacy_20code_20understanding_0',['Workflow 5: Legacy Code Understanding',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md121',1,'']]] +]; diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js new file mode 100644 index 0000000..11fbbe3 --- /dev/null +++ b/docs/html/search/all_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_0',['__init__',['../classpenify__hook_1_1api__client_1_1APIClient.html#a8edae83711be6de381c6ec71c7aa2e37',1,'penify_hook.api_client.APIClient.__init__()'],['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa5d7b59e2118c6b229ab59f3ef3b95b5',1,'penify_hook.base_analyzer.BaseAnalyzer.__init__()'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a1fa29d890af3f3770743197e15776778',1,'penify_hook.commit_analyzer.CommitDocGenHook.__init__()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#ad0e39446078e1aeeb5325f3af02de2fb',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a8f7a55b16cab4711eb3a3c3d9eb99344',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a6f94663c0330ae7e6cbb7a8748177c24',1,'penify_hook.git_analyzer.GitDocGenHook.__init__()'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3a6914654fd59e0cef96159143a52355',1,'penify_hook.jira_client.JiraClient.__init__()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a699a5be4411f5847fcb0a170281ab14b',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#a011812b68bf904e3beb051e585eff111',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_6.js b/docs/html/search/all_6.js new file mode 100644 index 0000000..f07e236 --- /dev/null +++ b/docs/html/search/all_6.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['a_20folder_0',['Generate Documentation for a Folder',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md74',1,'']]], + ['a_20jira_20api_20token_1',['Creating a JIRA API Token',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md33',1,'']]], + ['a_20specific_20file_2',['Generate Documentation for a Specific File',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md73',1,'']]], + ['add_5fcomment_3',['add_comment',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1',1,'penify_hook::jira_client::JiraClient']]], + ['additional_20resources_4',['Additional Resources',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md155',1,'']]], + ['advanced_20commands_20login_20required_5',['Advanced Commands (Login required)',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md163',1,'']]], + ['advanced_20hook_20scenarios_6',['Advanced Hook Scenarios',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md88',1,'']]], + ['advanced_20use_20cases_7',['Advanced Use Cases',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md56',1,'Advanced Use Cases'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md94',1,'Advanced Use Cases']]], + ['ai_8',['Workflow 1: Efficient Git Commits with AI',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md104',1,'']]], + ['all_20features_9',['Full Workflow with All Features',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md17',1,'']]], + ['and_20description_20with_20context_10',['Generate Title and Description with Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md8',1,'']]], + ['and_20edit_20full_20commit_20message_11',['Generate and Edit Full Commit Message',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md9',1,'']]], + ['and_20jira_20integration_12',['LLM and JIRA Integration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md11',1,'']]], + ['and_20provide_20context_13',['Generate, Edit, and Provide Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md10',1,'']]], + ['anthropic_14',['Anthropic',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md27',1,'']]], + ['api_20token_15',['Creating a JIRA API Token',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md33',1,'']]], + ['api_20token_20storage_16',['API Token Storage',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md45',1,'']]], + ['api_5fclient_17',['api_client',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['api_5fclient_2epy_18',['api_client.py',['../api__client_8py.html',1,'']]], + ['api_5furl_19',['API_URL',['../namespacepenify__hook_1_1constants.html#a846767f047a1319005bc95395330ab34',1,'penify_hook::constants']]], + ['api_5furl_20',['api_url',['../classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872',1,'penify_hook::api_client::APIClient']]], + ['apiclient_21',['APIClient',['../classpenify__hook_1_1api__client_1_1APIClient.html',1,'penify_hook::api_client']]], + ['auth_5fcommands_2epy_22',['auth_commands.py',['../auth__commands_8py.html',1,'']]], + ['auth_5ftoken_23',['AUTH_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237',1,'penify_hook::api_client::APIClient']]], + ['authentication_24',['Authentication',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md43',1,'Authentication'],['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md167',1,'Authentication']]], + ['authentication_20requirement_25',['Authentication Requirement',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md51',1,'']]], + ['author_26',['Author',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md173',1,'']]], + ['author_27',['author',['../namespacesetup.html#a3a57a4772d418a06835249cbade0d86a',1,'setup']]], + ['author_3a_20suman_20sauarbh_28',['author: Suman Sauarbh',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md124',1,'']]], + ['author_5femail_29',['author_email',['../namespacesetup.html#a5b08034343aa2be607722a8b315f3625',1,'setup']]], + ['autoreset_30',['autoreset',['../namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71',1,'penify_hook::ui_utils']]], + ['azure_20openai_31',['Azure OpenAI',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md29',1,'']]] +]; diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js new file mode 100644 index 0000000..7aba856 --- /dev/null +++ b/docs/html/search/all_7.js @@ -0,0 +1,12 @@ +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']]], + ['basic_20commands_20no_20login_20required_2',['Basic Commands (No login required)',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md160',1,'']]], + ['basic_20commit_20with_20default_20settings_3',['Basic Commit with Default Settings',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md16',1,'']]], + ['basic_20usage_4',['Basic Usage',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md1',1,'Basic Usage'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md22',1,'Basic Usage'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md65',1,'Basic Usage']]], + ['batch_20documentation_5',['Batch Documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md96',1,'']]], + ['bearer_5ftoken_6',['BEARER_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0',1,'penify_hook::api_client::APIClient']]], + ['behavior_7',['Modifying Hook Behavior',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md87',1,'']]], + ['benefits_8',['Benefits',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md107',1,'Benefits'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md112',1,'Benefits'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md116',1,'Benefits'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md120',1,'Benefits'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md122',1,'Benefits']]] +]; diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js new file mode 100644 index 0000000..c9d18b0 --- /dev/null +++ b/docs/html/search/all_8.js @@ -0,0 +1,71 @@ +var searchData= +[ + ['cases_0',['Cases',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md56',1,'Advanced Use Cases'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md94',1,'Advanced Use Cases'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md50',1,'Use Cases']]], + ['cd_20integration_1',['CI/CD Integration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md57',1,'']]], + ['ci_20cd_20integration_2',['CI/CD Integration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md57',1,'']]], + ['classifiers_3',['classifiers',['../namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785',1,'setup']]], + ['cli_20commit_20commands_4',['Penify CLI - Commit Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html',1,'']]], + ['cli_20configuration_20commands_5',['Penify CLI - Configuration Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html',1,'']]], + ['cli_20detailed_20usage_20guide_6',['Penify CLI - Detailed Usage Guide',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html',1,'']]], + ['cli_20documentation_7',['Penify CLI Documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md125',1,'']]], + ['cli_20documentation_8',['penify-cli-documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html',1,'']]], + ['cli_20documentation_20generation_20commands_9',['Penify CLI - Documentation Generation Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html',1,'']]], + ['cli_20example_20workflows_10',['Penify CLI Example Workflows',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html',1,'']]], + ['code_20documentation_20generation_11',['Code Documentation Generation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md49',1,'']]], + ['code_20review_20enhancement_12',['Workflow 3: Code Review Enhancement',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md113',1,'']]], + ['code_20understanding_13',['Workflow 5: Legacy Code Understanding',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md121',1,'']]], + ['combinations_14',['Combinations',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md6',1,'Option Combinations'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md71',1,'Option Combinations']]], + ['command_15',['Command',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md130',1,'Commit Command'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md136',1,'Config Command'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md146',1,'Docgen Command'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md141',1,'Login Command']]], + ['command_20documentation_16',['Detailed Command Documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md129',1,'']]], + ['command_20line_20configuration_17',['Command-Line Configuration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md37',1,'']]], + ['command_20options_18',['Command Options',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md2',1,'Command Options'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md66',1,'Command Options']]], + ['command_20overview_19',['Command Overview',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md47',1,'']]], + ['commands_20',['Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md79',1,'Git Hook Commands'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html',1,'Penify CLI - Commit Commands'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html',1,'Penify CLI - Configuration Commands'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html',1,'Penify CLI - Documentation Generation Commands']]], + ['commands_20login_20required_21',['Advanced Commands (Login required)',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md163',1,'']]], + ['commands_20no_20login_20required_22',['Basic Commands (No login required)',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md160',1,'']]], + ['commands_20overview_23',['Commands Overview',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md128',1,'']]], + ['commit_24',['Commit',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md161',1,'']]], + ['commit_20command_25',['Commit Command',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md130',1,'']]], + ['commit_20commands_26',['Penify CLI - Commit Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html',1,'']]], + ['commit_20hook_27',['Post-Commit Hook',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md54',1,'']]], + ['commit_20message_28',['Generate and Edit Full Commit Message',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md9',1,'']]], + ['commit_20message_20generation_29',['Commit Message Generation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md48',1,'']]], + ['commit_20with_20default_20settings_30',['Basic Commit with Default Settings',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md16',1,'']]], + ['commit_2dcommands_2emd_31',['commit-commands.md',['../commit-commands_8md.html',1,'']]], + ['commit_5fanalyzer_2epy_32',['commit_analyzer.py',['../commit__analyzer_8py.html',1,'']]], + ['commit_5fcode_33',['commit_code',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a4360ebdd6821c714f9db99f8d447c1b6',1,'penify_hook::commands::commit_commands']]], + ['commit_5fcommands_2epy_34',['commit_commands.py',['../commit__commands_8py.html',1,'']]], + ['commitdocgenhook_35',['CommitDocGenHook',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook::commit_analyzer']]], + ['commits_20with_20ai_36',['Workflow 1: Efficient Git Commits with AI',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md104',1,'']]], + ['common_20issues_37',['Common Issues',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md19',1,'Common Issues'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md40',1,'Common Issues'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md60',1,'Common Issues'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md100',1,'Common Issues']]], + ['config_38',['Config',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md162',1,'']]], + ['config_20command_39',['Config Command',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md136',1,'']]], + ['config_2dcommands_2emd_40',['config-commands.md',['../config-commands_8md.html',1,'']]], + ['config_5fcommand_2epy_41',['config_command.py',['../config__command_8py.html',1,'']]], + ['config_5fcommands_2epy_42',['config_commands.py',['../config__commands_8py.html',1,'']]], + ['config_5fjira_5fweb_43',['config_jira_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ad64a80de6cfdbed6d5d2fe582902bf13',1,'penify_hook::commands::config_commands']]], + ['config_5fllm_5fweb_44',['config_llm_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a1fc3edef1f016d4cfd3b116602ceda62',1,'penify_hook::commands::config_commands']]], + ['configuration_45',['Configuration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md37',1,'Command-Line Configuration'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md31',1,'JIRA Configuration'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md23',1,'LLM Configuration'],['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md168',1,'Local LLM Configuration'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md38',1,'Sharing Configuration']]], + ['configuration_20commands_46',['Penify CLI - Configuration Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html',1,'']]], + ['configuration_20file_20structure_47',['Configuration File Structure',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md30',1,'Configuration File Structure'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md34',1,'Configuration File Structure']]], + ['configuration_20files_48',['Configuration Files',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md152',1,'']]], + ['configuration_20locations_49',['Configuration Locations',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md35',1,'']]], + ['configuration_20overview_50',['Configuration Overview',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md21',1,'']]], + ['configuration_20requirements_51',['Configuration Requirements',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md14',1,'']]], + ['configuration_20settings_52',['Configuration Settings',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md52',1,'']]], + ['conftest_2epy_53',['conftest.py',['../conftest_8py.html',1,'']]], + ['constants_2epy_54',['constants.py',['../constants_8py.html',1,'']]], + ['content_55',['Hook Script Content',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md82',1,'']]], + ['contents_56',['Contents',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md42',1,'Table of Contents'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md64',1,'Table of Contents']]], + ['context_57',['Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md8',1,'Generate Title and Description with Context'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md7',1,'Generate Title Only with Context'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md10',1,'Generate, Edit, and Provide Context']]], + ['continuous_20integration_58',['Continuous Integration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md95',1,'']]], + ['contributing_59',['Contributing',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md174',1,'']]], + ['create_5fprogress_5fbar_60',['create_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#aae4493a3c0c62d3d3cec0e4c96f4fca5',1,'penify_hook::ui_utils']]], + ['create_5fstage_5fprogress_5fbar_61',['create_stage_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a583e3b1ec7b75f08653a9f6cfb897405',1,'penify_hook::ui_utils']]], + ['creating_20a_20jira_20api_20token_62',['Creating a JIRA API Token',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md33',1,'']]], + ['current_20git_20diff_63',['Generate Documentation for Current Git Diff',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md72',1,'']]], + ['current_20repository_64',['Current Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md75',1,'Install Hook in Current Repository'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md77',1,'Uninstall Hook from Current Repository']]], + ['custom_20git_20hook_20integration_65',['Custom Git Hook Integration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md97',1,'']]], + ['custom_20hook_20location_66',['Custom Hook Location',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md55',1,'']]], + ['customization_67',['Hook Customization',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md86',1,'']]] +]; diff --git a/docs/html/search/all_9.js b/docs/html/search/all_9.js new file mode 100644 index 0000000..91a9ab6 --- /dev/null +++ b/docs/html/search/all_9.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['d_20description_20tt_0',['<tt>-d, --description</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md5',1,'']]], + ['daily_20workflow_1',['Daily Workflow',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md106',1,'Daily Workflow'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md110',1,'Daily Workflow']]], + ['dashboard_5furl_2',['DASHBOARD_URL',['../namespacepenify__hook_1_1constants.html#ae4a03ab3b19d60436c72484b313079c8',1,'penify_hook::constants']]], + ['debugging_3',['Debugging',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md101',1,'']]], + ['default_20settings_4',['Basic Commit with Default Settings',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md16',1,'']]], + ['description_5',['description',['../namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0',1,'setup']]], + ['description_20tt_6',['<tt>-d, --description</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md5',1,'']]], + ['description_20with_20context_7',['Generate Title and Description with Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md8',1,'']]], + ['detailed_20command_20documentation_8',['Detailed Command Documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md129',1,'']]], + ['detailed_20usage_20guide_9',['Penify CLI - Detailed Usage Guide',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html',1,'']]], + ['detailed_2dusage_2emd_10',['detailed-usage.md',['../detailed-usage_8md.html',1,'']]], + ['development_11',['Development',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md170',1,'']]], + ['diff_12',['Generate Documentation for Current Git Diff',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md72',1,'']]], + ['dir_5fpath_13',['dir_path',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['doc_5fcommands_2emd_14',['doc_commands.md',['../doc__commands_8md.html',1,'']]], + ['doc_5fcommands_2epy_15',['doc_commands.py',['../doc__commands_8py.html',1,'']]], + ['docgen_20command_16',['Docgen Command',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md146',1,'']]], + ['docgen_5fdescription_17',['docgen_description',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a6dd45546559198f9f79caccd030d3588',1,'penify_hook::commands::doc_commands']]], + ['documentation_18',['Documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md96',1,'Batch Documentation'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md129',1,'Detailed Command Documentation'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md111',1,'Manual Documentation'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md125',1,'Penify CLI Documentation'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md58',1,'Remote Repository Documentation']]], + ['documentation_19',['penify-cli-documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html',1,'']]], + ['documentation_20for_20a_20folder_20',['Generate Documentation for a Folder',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md74',1,'']]], + ['documentation_20for_20a_20specific_20file_21',['Generate Documentation for a Specific File',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md73',1,'']]], + ['documentation_20for_20current_20git_20diff_22',['Generate Documentation for Current Git Diff',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md72',1,'']]], + ['documentation_20generation_23',['Documentation Generation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md49',1,'Code Documentation Generation'],['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md165',1,'Documentation Generation']]], + ['documentation_20generation_20commands_24',['Penify CLI - Documentation Generation Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html',1,'']]], + ['documentation_20generation_20pipeline_25',['Workflow 2: Documentation Generation Pipeline',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md108',1,'']]], + ['documenting_20release_20tags_26',['Documenting Release Tags',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md98',1,'']]], + ['dotenv_5favailable_27',['DOTENV_AVAILABLE',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/all_a.js b/docs/html/search/all_a.js new file mode 100644 index 0000000..3794554 --- /dev/null +++ b/docs/html/search/all_a.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['e_20terminal_20tt_0',['<tt>-e, --terminal</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md4',1,'']]], + ['edit_20and_20provide_20context_1',['Generate, Edit, and Provide Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md10',1,'']]], + ['edit_20full_20commit_20message_2',['Generate and Edit Full Commit Message',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md9',1,'']]], + ['efficient_20git_20commits_20with_20ai_3',['Workflow 1: Efficient Git Commits with AI',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md104',1,'']]], + ['enhance_5fcommit_5fmessage_4',['enhance_commit_message',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760',1,'penify_hook::jira_client::JiraClient']]], + ['enhancement_5',['Enhancement',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md13',1,'JIRA Enhancement'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md113',1,'Workflow 3: Code Review Enhancement']]], + ['entry_5fpoints_6',['entry_points',['../namespacesetup.html#ada7058afc98897f073d3f3b8b9157059',1,'setup']]], + ['environment_20variables_7',['Environment Variables',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md36',1,'Environment Variables'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md153',1,'Environment Variables']]], + ['error_5fcolor_8',['ERROR_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe',1,'penify_hook::ui_utils']]], + ['error_5fsymbol_9',['ERROR_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#ae941d124e4d3aa294314d73fb47c6432',1,'penify_hook::ui_utils']]], + ['example_20workflows_10',['Penify CLI Example Workflows',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html',1,'']]], + ['example_2dworkflows_2emd_11',['example-workflows.md',['../example-workflows_8md.html',1,'']]], + ['example_3a_12',['Example:',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md144',1,'']]], + ['examples_13',['Examples',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md15',1,'']]], + ['examples_3a_14',['Examples:',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md133',1,'Examples:'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md139',1,'Examples:'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md150',1,'Examples:']]], + ['exception_15',['Exception',['../classException.html',1,'']]], + ['extract_5fissue_5fkeys_16',['extract_issue_keys',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_5ffrom_5fbranch_17',['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_b.js b/docs/html/search/all_b.js new file mode 100644 index 0000000..9fd359f --- /dev/null +++ b/docs/html/search/all_b.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['features_0',['Features',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md157',1,'Features'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md17',1,'Full Workflow with All Features']]], + ['file_1',['Generate Documentation for a Specific File',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md73',1,'']]], + ['file_20structure_2',['File Structure',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md30',1,'Configuration File Structure'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md34',1,'Configuration File Structure']]], + ['file_5fanalyzer_2epy_3',['file_analyzer.py',['../file__analyzer_8py.html',1,'']]], + ['file_5fpath_4',['file_path',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32',1,'penify_hook::file_analyzer::FileAnalyzerGenHook']]], + ['fileanalyzergenhook_5',['FileAnalyzerGenHook',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html',1,'penify_hook::file_analyzer']]], + ['files_6',['Configuration Files',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md152',1,'']]], + ['find_5fgit_5fparent_7',['find_git_parent',['../namespacepenify__hook_1_1utils.html#a1c80f8c46a793d58ee6fd8674d1de1a2',1,'penify_hook::utils']]], + ['folder_8',['Generate Documentation for a Folder',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md74',1,'']]], + ['folder_5fanalyzer_2epy_9',['folder_analyzer.py',['../folder__analyzer_8py.html',1,'']]], + ['folder_5fpath_10',['folder_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['folderanalyzergenhook_11',['FolderAnalyzerGenHook',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html',1,'penify_hook::folder_analyzer']]], + ['for_20a_20folder_12',['Generate Documentation for a Folder',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md74',1,'']]], + ['for_20a_20specific_20file_13',['Generate Documentation for a Specific File',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md73',1,'']]], + ['for_20current_20git_20diff_14',['Generate Documentation for Current Git Diff',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md72',1,'']]], + ['for_20new_20team_20members_15',['For New Team Members',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md119',1,'']]], + ['for_20team_20leads_16',['For Team Leads',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md118',1,'']]], + ['format_5fcommit_5fmessage_5fwith_5fjira_5finfo_17',['format_commit_message_with_jira_info',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23',1,'penify_hook::jira_client::JiraClient']]], + ['format_5ferror_18',['format_error',['../namespacepenify__hook_1_1ui__utils.html#acee226ee36d43076ed54dade970dc0ca',1,'penify_hook::ui_utils']]], + ['format_5ffile_5fpath_19',['format_file_path',['../namespacepenify__hook_1_1ui__utils.html#a9de53cca2e23a993884797e523337e41',1,'penify_hook::ui_utils']]], + ['format_5fhighlight_20',['format_highlight',['../namespacepenify__hook_1_1ui__utils.html#a60f4c14003953f6e4b51ce5512c728d7',1,'penify_hook::ui_utils']]], + ['format_5finfo_21',['format_info',['../namespacepenify__hook_1_1ui__utils.html#aa0c6826668b45c778d864f5ae741e1b2',1,'penify_hook::ui_utils']]], + ['format_5fsuccess_22',['format_success',['../namespacepenify__hook_1_1ui__utils.html#a56ca95113c53214d848659a52a099f5e',1,'penify_hook::ui_utils']]], + ['format_5fwarning_23',['format_warning',['../namespacepenify__hook_1_1ui__utils.html#a81190fd240641e2c83f6a047490e7797',1,'penify_hook::ui_utils']]], + ['from_20current_20repository_24',['Uninstall Hook from Current Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md77',1,'']]], + ['from_20specific_20repository_25',['Uninstall Hook from Specific Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md78',1,'']]], + ['full_20commit_20message_26',['Generate and Edit Full Commit Message',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md9',1,'']]], + ['full_20workflow_20with_20all_20features_27',['Full Workflow with All Features',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md17',1,'']]] +]; diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js new file mode 100644 index 0000000..1fa4383 --- /dev/null +++ b/docs/html/search/all_c.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['generate_20and_20edit_20full_20commit_20message_0',['Generate and Edit Full Commit Message',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md9',1,'']]], + ['generate_20documentation_20for_20a_20folder_1',['Generate Documentation for a Folder',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md74',1,'']]], + ['generate_20documentation_20for_20a_20specific_20file_2',['Generate Documentation for a Specific File',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md73',1,'']]], + ['generate_20documentation_20for_20current_20git_20diff_3',['Generate Documentation for Current Git Diff',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md72',1,'']]], + ['generate_20edit_20and_20provide_20context_4',['Generate, Edit, and Provide Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md10',1,'']]], + ['generate_20title_20and_20description_20with_20context_5',['Generate Title and Description with Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md8',1,'']]], + ['generate_20title_20only_20with_20context_6',['Generate Title Only with Context',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md7',1,'']]], + ['generate_5fcommit_5fsummary_7',['generate_commit_summary',['../classpenify__hook_1_1api__client_1_1APIClient.html#af0c2fac38629fed60e8440203a1197dd',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_8',['generate_commit_summary_with_llm',['../classpenify__hook_1_1api__client_1_1APIClient.html#a07bc97b2af31662029a24169f285c286',1,'penify_hook::api_client::APIClient']]], + ['generate_5fdoc_9',['generate_doc',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a0db2cb8c0446d85dc4e7d34b3929dad7',1,'penify_hook::commands::doc_commands']]], + ['generation_10',['Generation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md49',1,'Code Documentation Generation'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md48',1,'Commit Message Generation'],['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md165',1,'Documentation Generation']]], + ['generation_20commands_11',['Penify CLI - Documentation Generation Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html',1,'']]], + ['generation_20pipeline_12',['Workflow 2: Documentation Generation Pipeline',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md108',1,'']]], + ['get_5fapi_5fkey_13',['get_api_key',['../classpenify__hook_1_1api__client_1_1APIClient.html#a57a96d5c14128dd8021347f7e72fe12b',1,'penify_hook::api_client::APIClient']]], + ['get_5fcommit_5fcontext_5ffrom_5fissues_14',['get_commit_context_from_issues',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fdetailed_5fissue_5fcontext_15',['get_detailed_issue_context',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fenv_5fvar_5for_5fdefault_16',['get_env_var_or_default',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87',1,'penify_hook::commands::config_commands']]], + ['get_5fissue_5fdetails_17',['get_issue_details',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fjira_5fconfig_18',['get_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2',1,'penify_hook::commands::config_commands']]], + ['get_5fllm_5fconfig_19',['get_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0',1,'penify_hook::commands::config_commands']]], + ['get_5fmodified_5ffiles_5fin_5flast_5fcommit_20',['get_modified_files_in_last_commit',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a7070449b5dc058808eb13013db3d8eab',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fmodified_5flines_21',['get_modified_lines',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a74e36507adc1b1955cc6cc303f3f5328',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fpenify_5fconfig_22',['get_penify_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20',1,'penify_hook::commands::config_commands']]], + ['get_5frepo_5fdetails_23',['get_repo_details',['../namespacepenify__hook_1_1utils.html#ab8d9a41a4016850afe6ff086021aaf19',1,'penify_hook::utils']]], + ['get_5fsummary_24',['get_summary',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['get_5fsupported_5ffile_5ftypes_25',['get_supported_file_types',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402',1,'penify_hook::api_client::APIClient']]], + ['get_5ftoken_26',['get_token',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812',1,'penify_hook::commands::config_commands']]], + ['getting_20help_27',['Getting Help',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md102',1,'']]], + ['getting_20started_28',['Getting Started',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md127',1,'']]], + ['git_20commits_20with_20ai_29',['Workflow 1: Efficient Git Commits with AI',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html#autotoc_md104',1,'']]], + ['git_20diff_30',['Generate Documentation for Current Git Diff',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md72',1,'']]], + ['git_20hook_20commands_31',['Git Hook Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md79',1,'']]], + ['git_20hook_20integration_32',['Custom Git Hook Integration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md97',1,'']]], + ['git_20hook_20management_33',['Git Hook Management',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md166',1,'']]], + ['git_20hooks_34',['Git Hooks',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md53',1,'']]], + ['git_5fanalyzer_2epy_35',['git_analyzer.py',['../git__analyzer_8py.html',1,'']]], + ['gitdocgenhook_36',['GitDocGenHook',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html',1,'penify_hook::git_analyzer']]], + ['gitreponotfounderror_37',['GitRepoNotFoundError',['../classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html',1,'penify_hook::utils']]], + ['guide_38',['Penify CLI - Detailed Usage Guide',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html',1,'']]] +]; diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js new file mode 100644 index 0000000..dde735f --- /dev/null +++ b/docs/html/search/all_d.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['handle_5fcommit_0',['handle_commit',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a7a856c3961f5f8914e58485644572076',1,'penify_hook::commands::commit_commands']]], + ['handle_5fconfig_1',['handle_config',['../namespacepenify__hook_1_1config__command.html#aed769bb2e478b09003696b616edd04c5',1,'penify_hook::config_command']]], + ['handle_5fdocgen_2',['handle_docgen',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a41d631e51b0533b7d8dc780eea52e1cc',1,'penify_hook::commands::doc_commands']]], + ['handle_5flogin_3',['handle_login',['../namespacepenify__hook_1_1login__command.html#a13cdb8c8488b958ce536660a27521411',1,'penify_hook::login_command']]], + ['happens_3a_4',['What happens:',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md143',1,'']]], + ['help_5',['Getting Help',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md102',1,'']]], + ['highlight_5fcolor_6',['HIGHLIGHT_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc',1,'penify_hook::ui_utils']]], + ['hook_7',['Post-Commit Hook',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md54',1,'']]], + ['hook_20behavior_8',['Modifying Hook Behavior',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md87',1,'']]], + ['hook_20commands_9',['Git Hook Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md79',1,'']]], + ['hook_20customization_10',['Hook Customization',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md86',1,'']]], + ['hook_20from_20current_20repository_11',['Uninstall Hook from Current Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md77',1,'']]], + ['hook_20from_20specific_20repository_12',['Uninstall Hook from Specific Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md78',1,'']]], + ['hook_20in_20current_20repository_13',['Install Hook in Current Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md75',1,'']]], + ['hook_20in_20specific_20repository_14',['Install Hook in Specific Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md76',1,'']]], + ['hook_20installation_15',['Hook Installation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md80',1,'']]], + ['hook_20integration_16',['Custom Git Hook Integration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md97',1,'']]], + ['hook_20location_17',['Custom Hook Location',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md55',1,'']]], + ['hook_20management_18',['Git Hook Management',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md166',1,'']]], + ['hook_20removal_19',['Manual Hook Removal',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md92',1,'']]], + ['hook_20scenarios_20',['Advanced Hook Scenarios',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md88',1,'']]], + ['hook_20script_20content_21',['Hook Script Content',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md82',1,'']]], + ['hook_20tt_22',['hook tt',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md69',1,'<tt>install-hook</tt>'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md70',1,'<tt>uninstall-hook</tt>']]], + ['hook_20uninstallation_23',['Hook Uninstallation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md89',1,'']]], + ['hook_5fcommands_2epy_24',['hook_commands.py',['../hook__commands_8py.html',1,'']]], + ['hook_5ffilename_25',['HOOK_FILENAME',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a978b976442fbf28c29c8d0f889bfae9c',1,'penify_hook::commands::hook_commands']]], + ['hook_5ftemplate_26',['HOOK_TEMPLATE',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a51fc390518d967f2a1e21280d7ea781b',1,'penify_hook::commands::hook_commands']]], + ['hooks_27',['Git Hooks',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md53',1,'']]], + ['hooks_20work_28',['How Hooks Work',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md81',1,'']]], + ['how_20hooks_20work_29',['How Hooks Work',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md81',1,'']]] +]; diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js new file mode 100644 index 0000000..f0b70ce --- /dev/null +++ b/docs/html/search/all_e.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['in_20current_20repository_0',['Install Hook in Current Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md75',1,'']]], + ['in_20specific_20repository_1',['Install Hook in Specific Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md76',1,'']]], + ['info_5fcolor_2',['INFO_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c',1,'penify_hook::ui_utils']]], + ['install_20hook_20in_20current_20repository_3',['Install Hook in Current Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md75',1,'']]], + ['install_20hook_20in_20specific_20repository_4',['Install Hook in Specific Repository',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md76',1,'']]], + ['install_20hook_20tt_5',['<tt>install-hook</tt>',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md69',1,'']]], + ['install_5fgit_5fhook_6',['install_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a093a68d1ec1b0da8ba8ab12a447fd135',1,'penify_hook::commands::hook_commands']]], + ['install_5frequires_7',['install_requires',['../namespacesetup.html#abead4f26b530856f858f0d44c7cf2588',1,'setup']]], + ['installation_8',['Installation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md80',1,'Hook Installation'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html#autotoc_md126',1,'Installation'],['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md158',1,'Installation'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md85',1,'Verifying Installation']]], + ['installation_20location_9',['Installation Location',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md83',1,'']]], + ['installation_20requirements_10',['Installation Requirements',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md84',1,'']]], + ['integration_11',['Integration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md57',1,'CI/CD Integration'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md95',1,'Continuous Integration'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md97',1,'Custom Git Hook Integration'],['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md169',1,'JIRA Integration'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md11',1,'LLM and JIRA Integration']]], + ['interface_12',['Interface',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md24',1,'Web Interface'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md32',1,'Web Interface']]], + ['is_5fconnected_13',['is_connected',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8',1,'penify_hook::jira_client::JiraClient']]], + ['issues_14',['Issues',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md19',1,'Common Issues'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md40',1,'Common Issues'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html#autotoc_md60',1,'Common Issues'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html#autotoc_md100',1,'Common Issues'],['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md175',1,'Issues']]] +]; diff --git a/docs/html/search/all_f.js b/docs/html/search/all_f.js new file mode 100644 index 0000000..8ea9d86 --- /dev/null +++ b/docs/html/search/all_f.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['jira_20api_20token_0',['Creating a JIRA API Token',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md33',1,'']]], + ['jira_20configuration_1',['JIRA Configuration',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html#autotoc_md31',1,'']]], + ['jira_20enhancement_2',['JIRA Enhancement',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md13',1,'']]], + ['jira_20integration_3',['JIRA Integration',['..//app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/README.md#autotoc_md169',1,'JIRA Integration'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html#autotoc_md11',1,'LLM and JIRA Integration']]], + ['jira_5fapi_5ftoken_4',['jira_api_token',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5favailable_5',['JIRA_AVAILABLE',['../namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2',1,'penify_hook::jira_client']]], + ['jira_5fclient_6',['jira_client',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ab03214b60248a10bca32597098b0a107',1,'penify_hook.commit_analyzer.CommitDocGenHook.jira_client'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6',1,'penify_hook.jira_client.JiraClient.jira_client']]], + ['jira_5fclient_2epy_7',['jira_client.py',['../jira__client_8py.html',1,'']]], + ['jira_5furl_8',['jira_url',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fuser_9',['jira_user',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c',1,'penify_hook::jira_client::JiraClient']]], + ['jiraclient_10',['JiraClient',['../classpenify__hook_1_1jira__client_1_1JiraClient.html',1,'penify_hook::jira_client']]] +]; 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.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.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.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.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.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.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.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.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..337d6cc --- /dev/null +++ b/docs/html/search/close.svg @@ -0,0 +1,18 @@ + + + + + + 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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.js b/docs/html/search/functions_0.js new file mode 100644 index 0000000..3ed0715 --- /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#a8edae83711be6de381c6ec71c7aa2e37',1,'penify_hook.api_client.APIClient.__init__()'],['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa5d7b59e2118c6b229ab59f3ef3b95b5',1,'penify_hook.base_analyzer.BaseAnalyzer.__init__()'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a1fa29d890af3f3770743197e15776778',1,'penify_hook.commit_analyzer.CommitDocGenHook.__init__()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#ad0e39446078e1aeeb5325f3af02de2fb',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a8f7a55b16cab4711eb3a3c3d9eb99344',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a6f94663c0330ae7e6cbb7a8748177c24',1,'penify_hook.git_analyzer.GitDocGenHook.__init__()'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3a6914654fd59e0cef96159143a52355',1,'penify_hook.jira_client.JiraClient.__init__()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a699a5be4411f5847fcb0a170281ab14b',1,'penify_hook.llm_client.LLMClient.__init__()']]], + ['_5famend_5fcommit_1',['_amend_commit',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a011812b68bf904e3beb051e585eff111',1,'penify_hook::commit_analyzer::CommitDocGenHook']]] +]; 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.js b/docs/html/search/functions_2.js new file mode 100644 index 0000000..1ba8685 --- /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#a4360ebdd6821c714f9db99f8d447c1b6',1,'penify_hook::commands::commit_commands']]], + ['config_5fjira_5fweb_1',['config_jira_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ad64a80de6cfdbed6d5d2fe582902bf13',1,'penify_hook::commands::config_commands']]], + ['config_5fllm_5fweb_2',['config_llm_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a1fc3edef1f016d4cfd3b116602ceda62',1,'penify_hook::commands::config_commands']]], + ['create_5fprogress_5fbar_3',['create_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#aae4493a3c0c62d3d3cec0e4c96f4fca5',1,'penify_hook::ui_utils']]], + ['create_5fstage_5fprogress_5fbar_4',['create_stage_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a583e3b1ec7b75f08653a9f6cfb897405',1,'penify_hook::ui_utils']]] +]; 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.js b/docs/html/search/functions_4.js new file mode 100644 index 0000000..b54d0d5 --- /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#a1c80f8c46a793d58ee6fd8674d1de1a2',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#acee226ee36d43076ed54dade970dc0ca',1,'penify_hook::ui_utils']]], + ['format_5ffile_5fpath_3',['format_file_path',['../namespacepenify__hook_1_1ui__utils.html#a9de53cca2e23a993884797e523337e41',1,'penify_hook::ui_utils']]], + ['format_5fhighlight_4',['format_highlight',['../namespacepenify__hook_1_1ui__utils.html#a60f4c14003953f6e4b51ce5512c728d7',1,'penify_hook::ui_utils']]], + ['format_5finfo_5',['format_info',['../namespacepenify__hook_1_1ui__utils.html#aa0c6826668b45c778d864f5ae741e1b2',1,'penify_hook::ui_utils']]], + ['format_5fsuccess_6',['format_success',['../namespacepenify__hook_1_1ui__utils.html#a56ca95113c53214d848659a52a099f5e',1,'penify_hook::ui_utils']]], + ['format_5fwarning_7',['format_warning',['../namespacepenify__hook_1_1ui__utils.html#a81190fd240641e2c83f6a047490e7797',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/functions_5.js b/docs/html/search/functions_5.js new file mode 100644 index 0000000..d5e79d8 --- /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_1api__client_1_1APIClient.html#af0c2fac38629fed60e8440203a1197dd',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#a07bc97b2af31662029a24169f285c286',1,'penify_hook::api_client::APIClient']]], + ['generate_5fdoc_2',['generate_doc',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a0db2cb8c0446d85dc4e7d34b3929dad7',1,'penify_hook::commands::doc_commands']]], + ['get_5fapi_5fkey_3',['get_api_key',['../classpenify__hook_1_1api__client_1_1APIClient.html#a57a96d5c14128dd8021347f7e72fe12b',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#a7070449b5dc058808eb13013db3d8eab',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fmodified_5flines_11',['get_modified_lines',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a74e36507adc1b1955cc6cc303f3f5328',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#ab8d9a41a4016850afe6ff086021aaf19',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.js b/docs/html/search/functions_6.js new file mode 100644 index 0000000..7ca9744 --- /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#a7a856c3961f5f8914e58485644572076',1,'penify_hook::commands::commit_commands']]], + ['handle_5fconfig_1',['handle_config',['../namespacepenify__hook_1_1config__command.html#aed769bb2e478b09003696b616edd04c5',1,'penify_hook::config_command']]], + ['handle_5fdocgen_2',['handle_docgen',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a41d631e51b0533b7d8dc780eea52e1cc',1,'penify_hook::commands::doc_commands']]], + ['handle_5flogin_3',['handle_login',['../namespacepenify__hook_1_1login__command.html#a13cdb8c8488b958ce536660a27521411',1,'penify_hook::login_command']]] +]; diff --git a/docs/html/search/functions_7.js b/docs/html/search/functions_7.js new file mode 100644 index 0000000..bc56fed --- /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#a093a68d1ec1b0da8ba8ab12a447fd135',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.js b/docs/html/search/functions_8.js new file mode 100644 index 0000000..aefe8a8 --- /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#a050554646cbc07aef1fbaa748ee4c0fc',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['litellm_1',['litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#aa646fddc43ecd633d2c358d58dd4df24',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#a1eb69ebcc475060011476a65cbffd7f6',1,'penify_hook::commands::auth_commands']]] +]; diff --git a/docs/html/search/functions_9.js b/docs/html/search/functions_9.js new file mode 100644 index 0000000..14007e2 --- /dev/null +++ b/docs/html/search/functions_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['main_0',['main',['../namespacepenify__hook_1_1main.html#a245db84b8309d570226b2e147e18b5eb',1,'penify_hook::main']]], + ['mock_5fapi_5fclient_1',['mock_api_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a7f9beb5fdd122ed9a39dd0751934d661',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fcommit_5fdoc_5fgen_2',['mock_commit_doc_gen',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4e7b42caad38d0f9162c7b490720a3b7',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fgit_5ffolder_5fsearch_3',['mock_git_folder_search',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a71bfa48c9a521febb5c279cff113fbf5',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fjira_5fclient_4',['mock_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43b8dd6adb507ef30604cd790940b881',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fllm_5fclient_5',['mock_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af8f0277ac27f0e9d0a0e4bc6fcd77107',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fprint_5ffunctions_6',['mock_print_functions',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a65132bfab05d287af9eb380b73d332ab',1,'tests::test_commit_commands::TestCommitCommands']]] +]; diff --git a/docs/html/search/functions_a.js b/docs/html/search/functions_a.js new file mode 100644 index 0000000..5235d1b --- /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#a35b79a7837fd654ad8f0cdb4e6e87598',1,'penify_hook::ui_utils']]], + ['print_5finfo_1',['print_info',['../namespacepenify__hook_1_1ui__utils.html#a3cee29e999fa3c812725cb98f24aae4c',1,'penify_hook::ui_utils']]], + ['print_5fprocessing_2',['print_processing',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a1b371f1ba909b4fd351c542815f18747',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing()'],['../namespacepenify__hook_1_1ui__utils.html#ad4f7cab36c3b1f09507654b119d45bfb',1,'penify_hook.ui_utils.print_processing(file_path)']]], + ['print_5fstatus_3',['print_status',['../namespacepenify__hook_1_1ui__utils.html#a65594c876dabfceb83d9b0ce9d0d65e7',1,'penify_hook::ui_utils']]], + ['print_5fsuccess_4',['print_success',['../namespacepenify__hook_1_1ui__utils.html#a9bff909b9e155a344597f69a0530754b',1,'penify_hook::ui_utils']]], + ['print_5fwarning_5',['print_warning',['../namespacepenify__hook_1_1ui__utils.html#a73f112b02d36b74c88a3ce3ed1458b45',1,'penify_hook::ui_utils']]], + ['process_5ffile_6',['process_file',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#aeb3be324ba517855d6e5cdb684a6efda',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.process_file()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a0fcec06966a3a5ef1df21529a6a3db81',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.js b/docs/html/search/functions_b.js new file mode 100644 index 0000000..e479d59 --- /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#a9d723ca510c90ac0390819dcae3a800a',1,'penify_hook::utils']]], + ['run_1',['run',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a2d0bb9eba04614915fa33a1d7b0b8f03',1,'penify_hook.commit_analyzer.CommitDocGenHook.run()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a503c97b07cb2db1df0d881094dd6bb49',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.run()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53c61ef41d39dd9bb1c8020a94f1dd8d',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.run()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a38fe1e50fc9448d995851d933283b633',1,'penify_hook.git_analyzer.GitDocGenHook.run()']]] +]; diff --git a/docs/html/search/functions_c.js b/docs/html/search/functions_c.js new file mode 100644 index 0000000..5eaaf97 --- /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#a68a2119363481a0001ad6190329c863b',1,'penify_hook::commands::auth_commands']]], + ['save_5fjira_5fconfig_1',['save_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a0459710e44183890121dc3013cb6f374',1,'penify_hook::commands::config_commands']]], + ['save_5fllm_5fconfig_2',['save_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ab24827423ec7e9a71a03639fb16e4cd4',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#ad6392c5f8e8b5e3394a74979278835bd',1,'penify_hook::api_client::APIClient']]], + ['setup_5fcommit_5fparser_4',['setup_commit_parser',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a80d37e58f2dc4356ed99a54ac75b1db1',1,'penify_hook::commands::commit_commands']]], + ['setup_5fconfig_5fparser_5',['setup_config_parser',['../namespacepenify__hook_1_1config__command.html#ad711074006b3c5d4a1cc73ef38dcf0ba',1,'penify_hook::config_command']]], + ['setup_5fdocgen_5fparser_6',['setup_docgen_parser',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#abf64cb941e49af02798f5ff1b56139c6',1,'penify_hook::commands::doc_commands']]], + ['setup_5flogin_5fparser_7',['setup_login_parser',['../namespacepenify__hook_1_1login__command.html#ae787794b007f320b4480aff0b9767235',1,'penify_hook::login_command']]] +]; diff --git a/docs/html/search/functions_d.js b/docs/html/search/functions_d.js new file mode 100644 index 0000000..5087b19 --- /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#a8288fd5a830273e48732231df0421658',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#a02319d7a366df3950c8c151dd7821a93',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#ae8066d6f07122a6be89b05ddbb5bb07b',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#a70225e655e0ca64868d71e3c9389a218',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#a63789aa9bfafe1a16b1f462174c53f6b',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#a881cb29c7d44f302fb961f496a20776d',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fgenerate_5fdoc_5ferror_5fhandling_6',['test_generate_doc_error_handling',['../namespacetests_1_1test__doc__commands.html#a5fe1bfd9eacf8775c20f9a883fcc10a6',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffile_5flocation_7',['test_generate_doc_file_location',['../namespacetests_1_1test__doc__commands.html#ac12eb3d9839af7f9cfc2da5150ac8a16',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffolder_5flocation_8',['test_generate_doc_folder_location',['../namespacetests_1_1test__doc__commands.html#a161b89af34978ec9f4a59a37f374125d',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fno_5flocation_9',['test_generate_doc_no_location',['../namespacetests_1_1test__doc__commands.html#a709237fc294b8309acdaddd29369f15b',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffile_5fexception_10',['test_generate_doc_with_file_exception',['../namespacetests_1_1test__doc__commands.html#a28ffc568a6338124fce4eff50a839f68',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffolder_5fexception_11',['test_generate_doc_with_folder_exception',['../namespacetests_1_1test__doc__commands.html#a8f073a1ebba4bf58fa0875f01b372fee',1,'tests::test_doc_commands']]], + ['test_5fget_5fjira_5fconfig_5fexists_12',['test_get_jira_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a153e6f218be2f42581be6895a14a4e85',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#a29cdcf995761e77c9ff8c93e49eff541',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#acd6ebd022b24b111df7cabdab4e1b6db',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#a06d58f1b9188f2486f7e424aea40d0bd',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#ae9c0ef56734f17892b7ac115e488bac4',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#a335a57c003a8d797a5457c4d1c60420e',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#ac2890b010d859d53629d9bea6a72b9c0',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#af30db6b96dcf9e6143d6a8f5241f5be1',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#a1548cea068b4305d5a1d3ad5fb1bc25a',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fhandle_5fcommit_21',['test_handle_commit',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#adc5d95c15793c4bc698a62147aab2f7a',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fhandle_5fdocgen_5fgenerate_22',['test_handle_docgen_generate',['../namespacetests_1_1test__doc__commands.html#a8adc7be503bd092e118f9454fffbd0d5',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5finstall_5fhook_23',['test_handle_docgen_install_hook',['../namespacetests_1_1test__doc__commands.html#a278af7079be277ff3eab96e7e8c038b9',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5fno_5ftoken_24',['test_handle_docgen_no_token',['../namespacetests_1_1test__doc__commands.html#a27e497ab63419dcd4ce066864882aa0c',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5funinstall_5fhook_25',['test_handle_docgen_uninstall_hook',['../namespacetests_1_1test__doc__commands.html#abe2161b459ab5d033d6ba997323c218b',1,'tests::test_doc_commands']]], + ['test_5fsave_5fjira_5fconfig_5fsuccess_26',['test_save_jira_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a060996b8323f4cfd629c77b4e2605f50',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#a2ccb8ee5c161fcf49a04404a1658100b',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#a2411d025a057beb8a2f2a6431559e64f',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsetup_5fcommit_5fparser_29',['test_setup_commit_parser',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a820f1f6ac060eb4b33903e1e8a3318fe',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fsetup_5fdocgen_5fparser_30',['test_setup_docgen_parser',['../namespacetests_1_1test__doc__commands.html#a15204cf3fb17527d46e54316576f2042',1,'tests::test_doc_commands']]] +]; diff --git a/docs/html/search/functions_e.js b/docs/html/search/functions_e.js new file mode 100644 index 0000000..eb360f1 --- /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#a1b2b3ffff51d19300a0b7ea785678443',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#ad8be9c5a2708c211a651e2b3dfb54bcd',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/mag.svg b/docs/html/search/mag.svg new file mode 100644 index 0000000..ffb6cf0 --- /dev/null +++ b/docs/html/search/mag.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/html/search/mag_d.svg b/docs/html/search/mag_d.svg new file mode 100644 index 0000000..4122773 --- /dev/null +++ b/docs/html/search/mag_d.svg @@ -0,0 +1,24 @@ + + + + + + + diff --git a/docs/html/search/mag_sel.svg b/docs/html/search/mag_sel.svg new file mode 100644 index 0000000..553dba8 --- /dev/null +++ b/docs/html/search/mag_sel.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/html/search/mag_seld.svg b/docs/html/search/mag_seld.svg new file mode 100644 index 0000000..c906f84 --- /dev/null +++ b/docs/html/search/mag_seld.svg @@ -0,0 +1,31 @@ + + + + + + + + + diff --git a/docs/html/search/namespaces_0.js b/docs/html/search/namespaces_0.js new file mode 100644 index 0000000..22d8699 --- /dev/null +++ b/docs/html/search/namespaces_0.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['penify_5fhook_0',['penify_hook',['../namespacepenify__hook.html',1,'']]], + ['penify_5fhook_3a_3aapi_5fclient_1',['api_client',['../namespacepenify__hook_1_1api__client.html',1,'penify_hook']]], + ['penify_5fhook_3a_3abase_5fanalyzer_2',['base_analyzer',['../namespacepenify__hook_1_1base__analyzer.html',1,'penify_hook']]], + ['penify_5fhook_3a_3acommands_3',['commands',['../namespacepenify__hook_1_1commands.html',1,'penify_hook']]], + ['penify_5fhook_3a_3acommands_3a_3aauth_5fcommands_4',['auth_commands',['../namespacepenify__hook_1_1commands_1_1auth__commands.html',1,'penify_hook::commands']]], + ['penify_5fhook_3a_3acommands_3a_3acommit_5fcommands_5',['commit_commands',['../namespacepenify__hook_1_1commands_1_1commit__commands.html',1,'penify_hook::commands']]], + ['penify_5fhook_3a_3acommands_3a_3aconfig_5fcommands_6',['config_commands',['../namespacepenify__hook_1_1commands_1_1config__commands.html',1,'penify_hook::commands']]], + ['penify_5fhook_3a_3acommands_3a_3adoc_5fcommands_7',['doc_commands',['../namespacepenify__hook_1_1commands_1_1doc__commands.html',1,'penify_hook::commands']]], + ['penify_5fhook_3a_3acommands_3a_3ahook_5fcommands_8',['hook_commands',['../namespacepenify__hook_1_1commands_1_1hook__commands.html',1,'penify_hook::commands']]], + ['penify_5fhook_3a_3acommit_5fanalyzer_9',['commit_analyzer',['../namespacepenify__hook_1_1commit__analyzer.html',1,'penify_hook']]], + ['penify_5fhook_3a_3aconfig_5fcommand_10',['config_command',['../namespacepenify__hook_1_1config__command.html',1,'penify_hook']]], + ['penify_5fhook_3a_3aconstants_11',['constants',['../namespacepenify__hook_1_1constants.html',1,'penify_hook']]], + ['penify_5fhook_3a_3afile_5fanalyzer_12',['file_analyzer',['../namespacepenify__hook_1_1file__analyzer.html',1,'penify_hook']]], + ['penify_5fhook_3a_3afolder_5fanalyzer_13',['folder_analyzer',['../namespacepenify__hook_1_1folder__analyzer.html',1,'penify_hook']]], + ['penify_5fhook_3a_3agit_5fanalyzer_14',['git_analyzer',['../namespacepenify__hook_1_1git__analyzer.html',1,'penify_hook']]], + ['penify_5fhook_3a_3ajira_5fclient_15',['jira_client',['../namespacepenify__hook_1_1jira__client.html',1,'penify_hook']]], + ['penify_5fhook_3a_3allm_5fclient_16',['llm_client',['../namespacepenify__hook_1_1llm__client.html',1,'penify_hook']]], + ['penify_5fhook_3a_3alogin_5fcommand_17',['login_command',['../namespacepenify__hook_1_1login__command.html',1,'penify_hook']]], + ['penify_5fhook_3a_3amain_18',['main',['../namespacepenify__hook_1_1main.html',1,'penify_hook']]], + ['penify_5fhook_3a_3aui_5futils_19',['ui_utils',['../namespacepenify__hook_1_1ui__utils.html',1,'penify_hook']]], + ['penify_5fhook_3a_3autils_20',['utils',['../namespacepenify__hook_1_1utils.html',1,'penify_hook']]] +]; 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.js b/docs/html/search/namespaces_2.js new file mode 100644 index 0000000..3095caf --- /dev/null +++ b/docs/html/search/namespaces_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['tests_0',['tests',['../namespacetests.html',1,'']]], + ['tests_3a_3aconftest_1',['conftest',['../namespacetests_1_1conftest.html',1,'tests']]], + ['tests_3a_3atest_5fcommit_5fcommands_2',['test_commit_commands',['../namespacetests_1_1test__commit__commands.html',1,'tests']]], + ['tests_3a_3atest_5fconfig_5fcommands_3',['test_config_commands',['../namespacetests_1_1test__config__commands.html',1,'tests']]], + ['tests_3a_3atest_5fdoc_5fcommands_4',['test_doc_commands',['../namespacetests_1_1test__doc__commands.html',1,'tests']]], + ['tests_3a_3atest_5fweb_5fconfig_5',['test_web_config',['../namespacetests_1_1test__web__config.html',1,'tests']]] +]; diff --git a/docs/html/search/pages_0.js b/docs/html/search/pages_0.js new file mode 100644 index 0000000..ad90568 --- /dev/null +++ b/docs/html/search/pages_0.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['cli_20commit_20commands_0',['Penify CLI - Commit Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html',1,'']]], + ['cli_20configuration_20commands_1',['Penify CLI - Configuration Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html',1,'']]], + ['cli_20detailed_20usage_20guide_2',['Penify CLI - Detailed Usage Guide',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html',1,'']]], + ['cli_20documentation_3',['penify-cli-documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html',1,'']]], + ['cli_20documentation_20generation_20commands_4',['Penify CLI - Documentation Generation Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html',1,'']]], + ['cli_20example_20workflows_5',['Penify CLI Example Workflows',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html',1,'']]], + ['commands_6',['Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html',1,'Penify CLI - Commit Commands'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html',1,'Penify CLI - Configuration Commands'],['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html',1,'Penify CLI - Documentation Generation Commands']]], + ['commit_20commands_7',['Penify CLI - Commit Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html',1,'']]], + ['configuration_20commands_8',['Penify CLI - Configuration Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html',1,'']]] +]; diff --git a/docs/html/search/pages_1.js b/docs/html/search/pages_1.js new file mode 100644 index 0000000..f314043 --- /dev/null +++ b/docs/html/search/pages_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['detailed_20usage_20guide_0',['Penify CLI - Detailed Usage Guide',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html',1,'']]], + ['documentation_1',['penify-cli-documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html',1,'']]], + ['documentation_20generation_20commands_2',['Penify CLI - Documentation Generation Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html',1,'']]] +]; diff --git a/docs/html/search/pages_2.js b/docs/html/search/pages_2.js new file mode 100644 index 0000000..31052be --- /dev/null +++ b/docs/html/search/pages_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['example_20workflows_0',['Penify CLI Example Workflows',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html',1,'']]] +]; diff --git a/docs/html/search/pages_3.js b/docs/html/search/pages_3.js new file mode 100644 index 0000000..337de9f --- /dev/null +++ b/docs/html/search/pages_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['generation_20commands_0',['Penify CLI - Documentation Generation Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html',1,'']]], + ['guide_1',['Penify CLI - Detailed Usage Guide',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html',1,'']]] +]; diff --git a/docs/html/search/pages_4.js b/docs/html/search/pages_4.js new file mode 100644 index 0000000..13fb42f --- /dev/null +++ b/docs/html/search/pages_4.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['penify_20cli_20commit_20commands_0',['Penify CLI - Commit Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2commit-commands.html',1,'']]], + ['penify_20cli_20configuration_20commands_1',['Penify CLI - Configuration Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2config-commands.html',1,'']]], + ['penify_20cli_20detailed_20usage_20guide_2',['Penify CLI - Detailed Usage Guide',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html',1,'']]], + ['penify_20cli_20documentation_3',['penify-cli-documentation',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2penify-cli-documentation.html',1,'']]], + ['penify_20cli_20documentation_20generation_20commands_4',['Penify CLI - Documentation Generation Commands',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2doc__commands.html',1,'']]], + ['penify_20cli_20example_20workflows_5',['Penify CLI Example Workflows',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html',1,'']]] +]; diff --git a/docs/html/search/pages_5.js b/docs/html/search/pages_5.js new file mode 100644 index 0000000..f27c2e2 --- /dev/null +++ b/docs/html/search/pages_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['usage_20guide_0',['Penify CLI - Detailed Usage Guide',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2detailed-usage.html',1,'']]] +]; diff --git a/docs/html/search/pages_6.js b/docs/html/search/pages_6.js new file mode 100644 index 0000000..9840017 --- /dev/null +++ b/docs/html/search/pages_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['workflows_0',['Penify CLI Example Workflows',['../md__2app_2doc__state_2github__reposRepoArchDocGenContext_2SingularityX-ai_2penify-cli_2docs_2example-workflows.html',1,'']]] +]; diff --git a/docs/html/search/search.css b/docs/html/search/search.css new file mode 100644 index 0000000..d7b0f90 --- /dev/null +++ b/docs/html/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#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 box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + 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; + width: 20px; + height: 19px; + background-image: url('mag_sel.svg'); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: url('mag.svg'); + margin: 0 0 0 0.5em; + padding: 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 { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: black; +} + + + +/*---------------- 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: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: black; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: black; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: white; + 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 black; + background-color: #EEF1F7; + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: #EEF1F7; +} + +.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; + font-size: 8pt; + 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 */ + +.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..666af01 --- /dev/null +++ b/docs/html/search/search.js @@ -0,0 +1,694 @@ +/* + @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 + */ +const SEARCH_COOKIE_NAME = ''+'search_grp'; + +const searchResults = new SearchResults(); + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, extension) { + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + if (!extension || extension == "") { extension = ".html"; } + + function getXPos(item) { + let x = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; + } + + function getYPos(item) { + let y = 0; + if (item.offsetWidth) { + while (item && item!=document.body) { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; + } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.extension = extension; + + // ----------- DOM Elements + + this.DOMSearchField = () => document.getElementById("MSearchField"); + this.DOMSearchSelect = () => document.getElementById("MSearchSelect"); + this.DOMSearchSelectWindow = () => document.getElementById("MSearchSelectWindow"); + this.DOMPopupSearchResults = () => document.getElementById("MSearchResults"); + this.DOMPopupSearchResultsWindow = () => document.getElementById("MSearchResultsWindow"); + this.DOMSearchClose = () => document.getElementById("MSearchClose"); + this.DOMSearchBox = () => document.getElementById("MSearchBox"); + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() { + const searchSelectWindow = this.DOMSearchSelectWindow(); + const searchField = this.DOMSearchSelect(); + + const left = getXPos(searchField); + const top = getYPos(searchField) + searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + + // stop selection hide timer + if (this.hideTimeout) { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() { + this.hideTimeout = setTimeout(this.CloseSelectionWindow.bind(this), + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) { + if (this.keyTimeout) { // kill running timer + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + const e = evt ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) { + if (e.shiftKey==1) { + this.OnSearchSelectShow(); + const win=this.DOMSearchSelectWindow(); + for (let i=0;i do a search + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) { + const 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) { + e.stopPropagation(); + 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 + const searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + const code = searchValue.toLowerCase().charCodeAt(0); + let idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) { // surrogate pair + idxChar = searchValue.substr(0, 2); + } + + let jsFile; + let idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) { + const hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + const loadJS = function(url, impl, loc) { + const scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + const domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + const domSearchBox = this.DOMSearchBox(); + const domPopupSearchResults = this.DOMPopupSearchResults(); + const domSearchClose = this.DOMSearchClose(); + const resultsPath = this.resultsPath; + + const handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + if (idx!=-1) { + searchResults.Search(searchValue); + } else { // no file with search results => force empty search results + searchResults.Search('===='); + } + + if (domPopupSearchResultsWindow.style.display!='block') { + domSearchClose.style.display = 'inline-block'; + let left = getXPos(domSearchBox) + 150; + let top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + const maxWidth = document.body.clientWidth; + const maxHeight = document.body.clientHeight; + let width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + let height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- 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'; + this.searchActive = true; + } else if (!isActive) { // directly remove the panel + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults() { + + function convertToId(search) { + let result = ''; + for (let i=0;i. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) { + const parentElement = document.getElementById(id); + let 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) { + const 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); + + const resultRows = document.getElementsByTagName("div"); + let matches = 0; + + let i = 0; + while (i < resultRows.length) { + const row = resultRows.item(i); + if (row.className == "SRResult") { + let 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) { + let focusItem; + for (;;) { + const 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) { + let focusItem; + for (;;) { + const 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) { + const e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) { // Up + const newIndex = itemIndex-1; + let focusItem = this.NavPrev(newIndex); + if (focusItem) { + let child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') { // children visible + let n=0; + let tmpElem; + for (;;) { // 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 + document.getElementById("MSearchField").focus(); + } + } else if (this.lastKey==40) { // Down + const newIndex = itemIndex+1; + let focusItem; + const item = document.getElementById('Item'+itemIndex); + const 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 + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } else if (this.lastKey==37) { // Left + const item = document.getElementById('Item'+itemIndex); + const elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } else if (this.lastKey==27) { // Escape + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) { + const 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) { + const 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 + const newIndex = childIndex+1; + let 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 + e.stopPropagation(); + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } else if (this.lastKey==13) { // Enter + return true; + } + return false; + } +} + +function createResults(resultsPath) { + + 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); + } + + const results = document.getElementById("SRResults"); + results.innerHTML = ''; + searchData.forEach((elem,index) => { + const id = elem[0]; + const srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + const srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + const srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+index); + setKeyActions(srLink,'return searchResults.Nav(event,'+index+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = elem[1][0]; + srEntry.appendChild(srLink); + if (elem[1].length==2) { // single result + srLink.setAttribute('href',resultsPath+elem[1][1][0]); + srLink.setAttribute('onclick','searchBox.CloseResultsWindow()'); + if (elem[1][1][1]) { + srLink.setAttribute('target','_parent'); + } else { + srLink.setAttribute('target','_blank'); + } + const srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = elem[1][1][2]; + srEntry.appendChild(srScope); + } else { // multiple results + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + const srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (let c=0; c + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/setup.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    setup.py File Reference
    +
    +
    + + + + +

    +Namespaces

    namespace  setup
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

     setup.name
     
     setup.version
     
     setup.packages
     
     setup.install_requires
     
     setup.entry_points
     
     setup.author
     
     setup.author_email
     
     setup.description
     
     setup.long_description
     
     setup.long_description_content_type
     
     setup.url
     
     setup.classifiers
     
     setup.python_requires
     
    +
    +
    + + + + + diff --git a/docs/html/setup_8py.js b/docs/html/setup_8py.js new file mode 100644 index 0000000..ff1aead --- /dev/null +++ b/docs/html/setup_8py.js @@ -0,0 +1,16 @@ +var setup_8py = +[ + [ "setup.author", "namespacesetup.html#a3a57a4772d418a06835249cbade0d86a", null ], + [ "setup.author_email", "namespacesetup.html#a5b08034343aa2be607722a8b315f3625", null ], + [ "setup.classifiers", "namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785", null ], + [ "setup.description", "namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0", null ], + [ "setup.entry_points", "namespacesetup.html#ada7058afc98897f073d3f3b8b9157059", null ], + [ "setup.install_requires", "namespacesetup.html#abead4f26b530856f858f0d44c7cf2588", null ], + [ "setup.long_description", "namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde", null ], + [ "setup.long_description_content_type", "namespacesetup.html#a3796ea10c998699d07d391414ff5d720", null ], + [ "setup.name", "namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f", null ], + [ "setup.packages", "namespacesetup.html#aff2375a361fd5865c77bd9aa093be747", null ], + [ "setup.python_requires", "namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf", null ], + [ "setup.url", "namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb", null ], + [ "setup.version", "namespacesetup.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/splitbard.png b/docs/html/splitbard.png new file mode 100644 index 0000000..8367416 Binary files /dev/null and b/docs/html/splitbard.png differ diff --git a/docs/html/svg.min.js b/docs/html/svg.min.js new file mode 100644 index 0000000..916732f --- /dev/null +++ b/docs/html/svg.min.js @@ -0,0 +1,46 @@ +/*! +* @svgdotjs/svg.js - A lightweight library for manipulating and animating SVG. +* @version 3.1.2 +* https://svgjs.dev/ +* +* @copyright Wout Fierens +* @license MIT +* +* BUILT: Wed Jan 26 2022 23:19:07 GMT+0100 (Mitteleuropäische Normalzeit) +*/var SVG=function(){"use strict";const methods$1={};const names=[];function registerMethods(name,m){if(Array.isArray(name)){for(const _name of name){registerMethods(_name,m)}return}if(typeof name==="object"){for(const _name in name){registerMethods(_name,name[_name])}return}addMethodNames(Object.getOwnPropertyNames(m));methods$1[name]=Object.assign(methods$1[name]||{},m)}function getMethodsFor(name){return methods$1[name]||{}}function getMethodNames(){return[...new Set(names)]}function addMethodNames(_names){names.push(..._names)}function map(array,block){let i;const il=array.length;const result=[];for(i=0;i=0;i--){assignNewId(node.children[i])}if(node.id){node.id=eid(node.nodeName);return node}return node}function extend(modules,methods){let key,i;modules=Array.isArray(modules)?modules:[modules];for(i=modules.length-1;i>=0;i--){for(key in methods){modules[i].prototype[key]=methods[key]}}}function wrapWithAttrCheck(fn){return function(...args){const o=args[args.length-1];if(o&&o.constructor===Object&&!(o instanceof Array)){return fn.apply(this,args.slice(0,-1)).attr(o)}else{return fn.apply(this,args)}}}function siblings(){return this.parent().children()}function position(){return this.parent().index(this)}function next(){return this.siblings()[this.position()+1]}function prev(){return this.siblings()[this.position()-1]}function forward(){const i=this.position();const p=this.parent();p.add(this.remove(),i+1);return this}function backward(){const i=this.position();const p=this.parent();p.add(this.remove(),i?i-1:0);return this}function front(){const p=this.parent();p.add(this.remove());return this}function back(){const p=this.parent();p.add(this.remove(),0);return this}function before(element){element=makeInstance(element);element.remove();const i=this.position();this.parent().add(element,i);return this}function after(element){element=makeInstance(element);element.remove();const i=this.position();this.parent().add(element,i+1);return this}function insertBefore(element){element=makeInstance(element);element.before(this);return this}function insertAfter(element){element=makeInstance(element);element.after(this);return this}registerMethods("Dom",{siblings:siblings,position:position,next:next,prev:prev,forward:forward,backward:backward,front:front,back:back,before:before,after:after,insertBefore:insertBefore,insertAfter:insertAfter});const numberAndUnit=/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i;const hex=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;const rgb=/rgb\((\d+),(\d+),(\d+)\)/;const reference=/(#[a-z_][a-z0-9\-_]*)/i;const transforms=/\)\s*,?\s*/;const whitespace=/\s/g;const isHex=/^#[a-f0-9]{3}$|^#[a-f0-9]{6}$/i;const isRgb=/^rgb\(/;const isBlank=/^(\s+)?$/;const isNumber=/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;const isImage=/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i;const delimiter=/[\s,]+/;const isPathLetter=/[MLHVCSQTAZ]/i;var regex={__proto__:null,numberAndUnit:numberAndUnit,hex:hex,rgb:rgb,reference:reference,transforms:transforms,whitespace:whitespace,isHex:isHex,isRgb:isRgb,isBlank:isBlank,isNumber:isNumber,isImage:isImage,delimiter:delimiter,isPathLetter:isPathLetter};function classes(){const attr=this.attr("class");return attr==null?[]:attr.trim().split(delimiter)}function hasClass(name){return this.classes().indexOf(name)!==-1}function addClass(name){if(!this.hasClass(name)){const array=this.classes();array.push(name);this.attr("class",array.join(" "))}return this}function removeClass(name){if(this.hasClass(name)){this.attr("class",this.classes().filter(function(c){return c!==name}).join(" "))}return this}function toggleClass(name){return this.hasClass(name)?this.removeClass(name):this.addClass(name)}registerMethods("Dom",{classes:classes,hasClass:hasClass,addClass:addClass,removeClass:removeClass,toggleClass:toggleClass});function css(style,val){const ret={};if(arguments.length===0){this.node.style.cssText.split(/\s*;\s*/).filter(function(el){return!!el.length}).forEach(function(el){const t=el.split(/\s*:\s*/);ret[t[0]]=t[1]});return ret}if(arguments.length<2){if(Array.isArray(style)){for(const name of style){const cased=camelCase(name);ret[name]=this.node.style[cased]}return ret}if(typeof style==="string"){return this.node.style[camelCase(style)]}if(typeof style==="object"){for(const name in style){this.node.style[camelCase(name)]=style[name]==null||isBlank.test(style[name])?"":style[name]}}}if(arguments.length===2){this.node.style[camelCase(style)]=val==null||isBlank.test(val)?"":val}return this}function show(){return this.css("display","")}function hide(){return this.css("display","none")}function visible(){return this.css("display")!=="none"}registerMethods("Dom",{css:css,show:show,hide:hide,visible:visible});function data(a,v,r){if(a==null){return this.data(map(filter(this.node.attributes,el=>el.nodeName.indexOf("data-")===0),el=>el.nodeName.slice(5)))}else if(a instanceof Array){const data={};for(const key of a){data[key]=this.data(key)}return data}else if(typeof a==="object"){for(v in a){this.data(v,a[v])}}else if(arguments.length<2){try{return JSON.parse(this.attr("data-"+a))}catch(e){return this.attr("data-"+a)}}else{this.attr("data-"+a,v===null?null:r===true||typeof v==="string"||typeof v==="number"?v:JSON.stringify(v))}return this}registerMethods("Dom",{data:data});function remember(k,v){if(typeof arguments[0]==="object"){for(const key in k){this.remember(key,k[key])}}else if(arguments.length===1){return this.memory()[k]}else{this.memory()[k]=v}return this}function forget(){if(arguments.length===0){this._memory={}}else{for(let i=arguments.length-1;i>=0;i--){delete this.memory()[arguments[i]]}}return this}function memory(){return this._memory=this._memory||{}}registerMethods("Dom",{remember:remember,forget:forget,memory:memory});function sixDigitHex(hex){return hex.length===4?["#",hex.substring(1,2),hex.substring(1,2),hex.substring(2,3),hex.substring(2,3),hex.substring(3,4),hex.substring(3,4)].join(""):hex}function componentHex(component){const integer=Math.round(component);const bounded=Math.max(0,Math.min(255,integer));const hex=bounded.toString(16);return hex.length===1?"0"+hex:hex}function is(object,space){for(let i=space.length;i--;){if(object[space[i]]==null){return false}}return true}function getParameters(a,b){const params=is(a,"rgb")?{_a:a.r,_b:a.g,_c:a.b,_d:0,space:"rgb"}:is(a,"xyz")?{_a:a.x,_b:a.y,_c:a.z,_d:0,space:"xyz"}:is(a,"hsl")?{_a:a.h,_b:a.s,_c:a.l,_d:0,space:"hsl"}:is(a,"lab")?{_a:a.l,_b:a.a,_c:a.b,_d:0,space:"lab"}:is(a,"lch")?{_a:a.l,_b:a.c,_c:a.h,_d:0,space:"lch"}:is(a,"cmyk")?{_a:a.c,_b:a.m,_c:a.y,_d:a.k,space:"cmyk"}:{_a:0,_b:0,_c:0,space:"rgb"};params.space=b||params.space;return params}function cieSpace(space){if(space==="lab"||space==="xyz"||space==="lch"){return true}else{return false}}function hueToRgb(p,q,t){if(t<0)t+=1;if(t>1)t-=1;if(t<1/6)return p+(q-p)*6*t;if(t<1/2)return q;if(t<2/3)return p+(q-p)*(2/3-t)*6;return p}class Color{constructor(...inputs){this.init(...inputs)}static isColor(color){return color&&(color instanceof Color||this.isRgb(color)||this.test(color))}static isRgb(color){return color&&typeof color.r==="number"&&typeof color.g==="number"&&typeof color.b==="number"}static random(mode="vibrant",t,u){const{random,round,sin,PI:pi}=Math;if(mode==="vibrant"){const l=(81-57)*random()+57;const c=(83-45)*random()+45;const h=360*random();const color=new Color(l,c,h,"lch");return color}else if(mode==="sine"){t=t==null?random():t;const r=round(80*sin(2*pi*t/.5+.01)+150);const g=round(50*sin(2*pi*t/.5+4.6)+200);const b=round(100*sin(2*pi*t/.5+2.3)+150);const color=new Color(r,g,b);return color}else if(mode==="pastel"){const l=(94-86)*random()+86;const c=(26-9)*random()+9;const h=360*random();const color=new Color(l,c,h,"lch");return color}else if(mode==="dark"){const l=10+10*random();const c=(125-75)*random()+86;const h=360*random();const color=new Color(l,c,h,"lch");return color}else if(mode==="rgb"){const r=255*random();const g=255*random();const b=255*random();const color=new Color(r,g,b);return color}else if(mode==="lab"){const l=100*random();const a=256*random()-128;const b=256*random()-128;const color=new Color(l,a,b,"lab");return color}else if(mode==="grey"){const grey=255*random();const color=new Color(grey,grey,grey);return color}else{throw new Error("Unsupported random color mode")}}static test(color){return typeof color==="string"&&(isHex.test(color)||isRgb.test(color))}cmyk(){const{_a,_b,_c}=this.rgb();const[r,g,b]=[_a,_b,_c].map(v=>v/255);const k=Math.min(1-r,1-g,1-b);if(k===1){return new Color(0,0,0,1,"cmyk")}const c=(1-r-k)/(1-k);const m=(1-g-k)/(1-k);const y=(1-b-k)/(1-k);const color=new Color(c,m,y,k,"cmyk");return color}hsl(){const{_a,_b,_c}=this.rgb();const[r,g,b]=[_a,_b,_c].map(v=>v/255);const max=Math.max(r,g,b);const min=Math.min(r,g,b);const l=(max+min)/2;const isGrey=max===min;const delta=max-min;const s=isGrey?0:l>.5?delta/(2-max-min):delta/(max+min);const h=isGrey?0:max===r?((g-b)/delta+(gparseInt(v));Object.assign(this,{_a:_a,_b:_b,_c:_c,_d:0,space:"rgb"})}else if(isHex.test(a)){const hexParse=v=>parseInt(v,16);const[,_a,_b,_c]=hex.exec(sixDigitHex(a)).map(hexParse);Object.assign(this,{_a:_a,_b:_b,_c:_c,_d:0,space:"rgb"})}else throw Error("Unsupported string format, can't construct Color")}const{_a,_b,_c,_d}=this;const components=this.space==="rgb"?{r:_a,g:_b,b:_c}:this.space==="xyz"?{x:_a,y:_b,z:_c}:this.space==="hsl"?{h:_a,s:_b,l:_c}:this.space==="lab"?{l:_a,a:_b,b:_c}:this.space==="lch"?{l:_a,c:_b,h:_c}:this.space==="cmyk"?{c:_a,m:_b,y:_c,k:_d}:{};Object.assign(this,components)}lab(){const{x,y,z}=this.xyz();const l=116*y-16;const a=500*(x-y);const b=200*(y-z);const color=new Color(l,a,b,"lab");return color}lch(){const{l,a,b}=this.lab();const c=Math.sqrt(a**2+b**2);let h=180*Math.atan2(b,a)/Math.PI;if(h<0){h*=-1;h=360-h}const color=new Color(l,c,h,"lch");return color}rgb(){if(this.space==="rgb"){return this}else if(cieSpace(this.space)){let{x,y,z}=this;if(this.space==="lab"||this.space==="lch"){let{l,a,b}=this;if(this.space==="lch"){const{c,h}=this;const dToR=Math.PI/180;a=c*Math.cos(dToR*h);b=c*Math.sin(dToR*h)}const yL=(l+16)/116;const xL=a/500+yL;const zL=yL-b/200;const ct=16/116;const mx=.008856;const nm=7.787;x=.95047*(xL**3>mx?xL**3:(xL-ct)/nm);y=1*(yL**3>mx?yL**3:(yL-ct)/nm);z=1.08883*(zL**3>mx?zL**3:(zL-ct)/nm)}const rU=x*3.2406+y*-1.5372+z*-.4986;const gU=x*-.9689+y*1.8758+z*.0415;const bU=x*.0557+y*-.204+z*1.057;const pow=Math.pow;const bd=.0031308;const r=rU>bd?1.055*pow(rU,1/2.4)-.055:12.92*rU;const g=gU>bd?1.055*pow(gU,1/2.4)-.055:12.92*gU;const b=bU>bd?1.055*pow(bU,1/2.4)-.055:12.92*bU;const color=new Color(255*r,255*g,255*b);return color}else if(this.space==="hsl"){let{h,s,l}=this;h/=360;s/=100;l/=100;if(s===0){l*=255;const color=new Color(l,l,l);return color}const q=l<.5?l*(1+s):l+s-l*s;const p=2*l-q;const r=255*hueToRgb(p,q,h+1/3);const g=255*hueToRgb(p,q,h);const b=255*hueToRgb(p,q,h-1/3);const color=new Color(r,g,b);return color}else if(this.space==="cmyk"){const{c,m,y,k}=this;const r=255*(1-Math.min(1,c*(1-k)+k));const g=255*(1-Math.min(1,m*(1-k)+k));const b=255*(1-Math.min(1,y*(1-k)+k));const color=new Color(r,g,b);return color}else{return this}}toArray(){const{_a,_b,_c,_d,space}=this;return[_a,_b,_c,_d,space]}toHex(){const[r,g,b]=this._clamped().map(componentHex);return`#${r}${g}${b}`}toRgb(){const[rV,gV,bV]=this._clamped();const string=`rgb(${rV},${gV},${bV})`;return string}toString(){return this.toHex()}xyz(){const{_a:r255,_b:g255,_c:b255}=this.rgb();const[r,g,b]=[r255,g255,b255].map(v=>v/255);const rL=r>.04045?Math.pow((r+.055)/1.055,2.4):r/12.92;const gL=g>.04045?Math.pow((g+.055)/1.055,2.4):g/12.92;const bL=b>.04045?Math.pow((b+.055)/1.055,2.4):b/12.92;const xU=(rL*.4124+gL*.3576+bL*.1805)/.95047;const yU=(rL*.2126+gL*.7152+bL*.0722)/1;const zU=(rL*.0193+gL*.1192+bL*.9505)/1.08883;const x=xU>.008856?Math.pow(xU,1/3):7.787*xU+16/116;const y=yU>.008856?Math.pow(yU,1/3):7.787*yU+16/116;const z=zU>.008856?Math.pow(zU,1/3):7.787*zU+16/116;const color=new Color(x,y,z,"xyz");return color}_clamped(){const{_a,_b,_c}=this.rgb();const{max,min,round}=Math;const format=v=>max(0,min(round(v),255));return[_a,_b,_c].map(format)}}class Point{constructor(...args){this.init(...args)}clone(){return new Point(this)}init(x,y){const base={x:0,y:0};const source=Array.isArray(x)?{x:x[0],y:x[1]}:typeof x==="object"?{x:x.x,y:x.y}:{x:x,y:y};this.x=source.x==null?base.x:source.x;this.y=source.y==null?base.y:source.y;return this}toArray(){return[this.x,this.y]}transform(m){return this.clone().transformO(m)}transformO(m){if(!Matrix.isMatrixLike(m)){m=new Matrix(m)}const{x,y}=this;this.x=m.a*x+m.c*y+m.e;this.y=m.b*x+m.d*y+m.f;return this}}function point(x,y){return new Point(x,y).transform(this.screenCTM().inverse())}function closeEnough(a,b,threshold){return Math.abs(b-a)<(threshold||1e-6)}class Matrix{constructor(...args){this.init(...args)}static formatTransforms(o){const flipBoth=o.flip==="both"||o.flip===true;const flipX=o.flip&&(flipBoth||o.flip==="x")?-1:1;const flipY=o.flip&&(flipBoth||o.flip==="y")?-1:1;const skewX=o.skew&&o.skew.length?o.skew[0]:isFinite(o.skew)?o.skew:isFinite(o.skewX)?o.skewX:0;const skewY=o.skew&&o.skew.length?o.skew[1]:isFinite(o.skew)?o.skew:isFinite(o.skewY)?o.skewY:0;const scaleX=o.scale&&o.scale.length?o.scale[0]*flipX:isFinite(o.scale)?o.scale*flipX:isFinite(o.scaleX)?o.scaleX*flipX:flipX;const scaleY=o.scale&&o.scale.length?o.scale[1]*flipY:isFinite(o.scale)?o.scale*flipY:isFinite(o.scaleY)?o.scaleY*flipY:flipY;const shear=o.shear||0;const theta=o.rotate||o.theta||0;const origin=new Point(o.origin||o.around||o.ox||o.originX,o.oy||o.originY);const ox=origin.x;const oy=origin.y;const position=new Point(o.position||o.px||o.positionX||NaN,o.py||o.positionY||NaN);const px=position.x;const py=position.y;const translate=new Point(o.translate||o.tx||o.translateX,o.ty||o.translateY);const tx=translate.x;const ty=translate.y;const relative=new Point(o.relative||o.rx||o.relativeX,o.ry||o.relativeY);const rx=relative.x;const ry=relative.y;return{scaleX:scaleX,scaleY:scaleY,skewX:skewX,skewY:skewY,shear:shear,theta:theta,rx:rx,ry:ry,tx:tx,ty:ty,ox:ox,oy:oy,px:px,py:py}}static fromArray(a){return{a:a[0],b:a[1],c:a[2],d:a[3],e:a[4],f:a[5]}}static isMatrixLike(o){return o.a!=null||o.b!=null||o.c!=null||o.d!=null||o.e!=null||o.f!=null}static matrixMultiply(l,r,o){const a=l.a*r.a+l.c*r.b;const b=l.b*r.a+l.d*r.b;const c=l.a*r.c+l.c*r.d;const d=l.b*r.c+l.d*r.d;const e=l.e+l.a*r.e+l.c*r.f;const f=l.f+l.b*r.e+l.d*r.f;o.a=a;o.b=b;o.c=c;o.d=d;o.e=e;o.f=f;return o}around(cx,cy,matrix){return this.clone().aroundO(cx,cy,matrix)}aroundO(cx,cy,matrix){const dx=cx||0;const dy=cy||0;return this.translateO(-dx,-dy).lmultiplyO(matrix).translateO(dx,dy)}clone(){return new Matrix(this)}decompose(cx=0,cy=0){const a=this.a;const b=this.b;const c=this.c;const d=this.d;const e=this.e;const f=this.f;const determinant=a*d-b*c;const ccw=determinant>0?1:-1;const sx=ccw*Math.sqrt(a*a+b*b);const thetaRad=Math.atan2(ccw*b,ccw*a);const theta=180/Math.PI*thetaRad;const ct=Math.cos(thetaRad);const st=Math.sin(thetaRad);const lam=(a*c+b*d)/determinant;const sy=c*sx/(lam*a-b)||d*sx/(lam*b+a);const tx=e-cx+cx*ct*sx+cy*(lam*ct*sx-st*sy);const ty=f-cy+cx*st*sx+cy*(lam*st*sx+ct*sy);return{scaleX:sx,scaleY:sy,shear:lam,rotate:theta,translateX:tx,translateY:ty,originX:cx,originY:cy,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}equals(other){if(other===this)return true;const comp=new Matrix(other);return closeEnough(this.a,comp.a)&&closeEnough(this.b,comp.b)&&closeEnough(this.c,comp.c)&&closeEnough(this.d,comp.d)&&closeEnough(this.e,comp.e)&&closeEnough(this.f,comp.f)}flip(axis,around){return this.clone().flipO(axis,around)}flipO(axis,around){return axis==="x"?this.scaleO(-1,1,around,0):axis==="y"?this.scaleO(1,-1,0,around):this.scaleO(-1,-1,axis,around||axis)}init(source){const base=Matrix.fromArray([1,0,0,1,0,0]);source=source instanceof Element?source.matrixify():typeof source==="string"?Matrix.fromArray(source.split(delimiter).map(parseFloat)):Array.isArray(source)?Matrix.fromArray(source):typeof source==="object"&&Matrix.isMatrixLike(source)?source:typeof source==="object"?(new Matrix).transform(source):arguments.length===6?Matrix.fromArray([].slice.call(arguments)):base;this.a=source.a!=null?source.a:base.a;this.b=source.b!=null?source.b:base.b;this.c=source.c!=null?source.c:base.c;this.d=source.d!=null?source.d:base.d;this.e=source.e!=null?source.e:base.e;this.f=source.f!=null?source.f:base.f;return this}inverse(){return this.clone().inverseO()}inverseO(){const a=this.a;const b=this.b;const c=this.c;const d=this.d;const e=this.e;const f=this.f;const det=a*d-b*c;if(!det)throw new Error("Cannot invert "+this);const na=d/det;const nb=-b/det;const nc=-c/det;const nd=a/det;const ne=-(na*e+nc*f);const nf=-(nb*e+nd*f);this.a=na;this.b=nb;this.c=nc;this.d=nd;this.e=ne;this.f=nf;return this}lmultiply(matrix){return this.clone().lmultiplyO(matrix)}lmultiplyO(matrix){const r=this;const l=matrix instanceof Matrix?matrix:new Matrix(matrix);return Matrix.matrixMultiply(l,r,this)}multiply(matrix){return this.clone().multiplyO(matrix)}multiplyO(matrix){const l=this;const r=matrix instanceof Matrix?matrix:new Matrix(matrix);return Matrix.matrixMultiply(l,r,this)}rotate(r,cx,cy){return this.clone().rotateO(r,cx,cy)}rotateO(r,cx=0,cy=0){r=radians(r);const cos=Math.cos(r);const sin=Math.sin(r);const{a,b,c,d,e,f}=this;this.a=a*cos-b*sin;this.b=b*cos+a*sin;this.c=c*cos-d*sin;this.d=d*cos+c*sin;this.e=e*cos-f*sin+cy*sin-cx*cos+cx;this.f=f*cos+e*sin-cx*sin-cy*cos+cy;return this}scale(x,y,cx,cy){return this.clone().scaleO(...arguments)}scaleO(x,y=x,cx=0,cy=0){if(arguments.length===3){cy=cx;cx=y;y=x}const{a,b,c,d,e,f}=this;this.a=a*x;this.b=b*y;this.c=c*x;this.d=d*y;this.e=e*x-cx*x+cx;this.f=f*y-cy*y+cy;return this}shear(a,cx,cy){return this.clone().shearO(a,cx,cy)}shearO(lx,cx=0,cy=0){const{a,b,c,d,e,f}=this;this.a=a+b*lx;this.c=c+d*lx;this.e=e+f*lx-cy*lx;return this}skew(x,y,cx,cy){return this.clone().skewO(...arguments)}skewO(x,y=x,cx=0,cy=0){if(arguments.length===3){cy=cx;cx=y;y=x}x=radians(x);y=radians(y);const lx=Math.tan(x);const ly=Math.tan(y);const{a,b,c,d,e,f}=this;this.a=a+b*lx;this.b=b+a*ly;this.c=c+d*lx;this.d=d+c*ly;this.e=e+f*lx-cy*lx;this.f=f+e*ly-cx*ly;return this}skewX(x,cx,cy){return this.skew(x,0,cx,cy)}skewY(y,cx,cy){return this.skew(0,y,cx,cy)}toArray(){return[this.a,this.b,this.c,this.d,this.e,this.f]}toString(){return"matrix("+this.a+","+this.b+","+this.c+","+this.d+","+this.e+","+this.f+")"}transform(o){if(Matrix.isMatrixLike(o)){const matrix=new Matrix(o);return matrix.multiplyO(this)}const t=Matrix.formatTransforms(o);const current=this;const{x:ox,y:oy}=new Point(t.ox,t.oy).transform(current);const transformer=(new Matrix).translateO(t.rx,t.ry).lmultiplyO(current).translateO(-ox,-oy).scaleO(t.scaleX,t.scaleY).skewO(t.skewX,t.skewY).shearO(t.shear).rotateO(t.theta).translateO(ox,oy);if(isFinite(t.px)||isFinite(t.py)){const origin=new Point(ox,oy).transform(transformer);const dx=isFinite(t.px)?t.px-origin.x:0;const dy=isFinite(t.py)?t.py-origin.y:0;transformer.translateO(dx,dy)}transformer.translateO(t.tx,t.ty);return transformer}translate(x,y){return this.clone().translateO(x,y)}translateO(x,y){this.e+=x||0;this.f+=y||0;return this}valueOf(){return{a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f}}}function ctm(){return new Matrix(this.node.getCTM())}function screenCTM(){if(typeof this.isRoot==="function"&&!this.isRoot()){const rect=this.rect(1,1);const m=rect.node.getScreenCTM();rect.remove();return new Matrix(m)}return new Matrix(this.node.getScreenCTM())}register(Matrix,"Matrix");function parser(){if(!parser.nodes){const svg=makeInstance().size(2,0);svg.node.style.cssText=["opacity: 0","position: absolute","left: -100%","top: -100%","overflow: hidden"].join(";");svg.attr("focusable","false");svg.attr("aria-hidden","true");const path=svg.path().node;parser.nodes={svg:svg,path:path}}if(!parser.nodes.svg.node.parentNode){const b=globals.document.body||globals.document.documentElement;parser.nodes.svg.addTo(b)}return parser.nodes}function isNulledBox(box){return!box.width&&!box.height&&!box.x&&!box.y}function domContains(node){return node===globals.document||(globals.document.documentElement.contains||function(node){while(node.parentNode){node=node.parentNode}return node===globals.document}).call(globals.document.documentElement,node)}class Box{constructor(...args){this.init(...args)}addOffset(){this.x+=globals.window.pageXOffset;this.y+=globals.window.pageYOffset;return new Box(this)}init(source){const base=[0,0,0,0];source=typeof source==="string"?source.split(delimiter).map(parseFloat):Array.isArray(source)?source:typeof source==="object"?[source.left!=null?source.left:source.x,source.top!=null?source.top:source.y,source.width,source.height]:arguments.length===4?[].slice.call(arguments):base;this.x=source[0]||0;this.y=source[1]||0;this.width=this.w=source[2]||0;this.height=this.h=source[3]||0;this.x2=this.x+this.w;this.y2=this.y+this.h;this.cx=this.x+this.w/2;this.cy=this.y+this.h/2;return this}isNulled(){return isNulledBox(this)}merge(box){const x=Math.min(this.x,box.x);const y=Math.min(this.y,box.y);const width=Math.max(this.x+this.width,box.x+box.width)-x;const height=Math.max(this.y+this.height,box.y+box.height)-y;return new Box(x,y,width,height)}toArray(){return[this.x,this.y,this.width,this.height]}toString(){return this.x+" "+this.y+" "+this.width+" "+this.height}transform(m){if(!(m instanceof Matrix)){m=new Matrix(m)}let xMin=Infinity;let xMax=-Infinity;let yMin=Infinity;let yMax=-Infinity;const pts=[new Point(this.x,this.y),new Point(this.x2,this.y),new Point(this.x,this.y2),new Point(this.x2,this.y2)];pts.forEach(function(p){p=p.transform(m);xMin=Math.min(xMin,p.x);xMax=Math.max(xMax,p.x);yMin=Math.min(yMin,p.y);yMax=Math.max(yMax,p.y)});return new Box(xMin,yMin,xMax-xMin,yMax-yMin)}}function getBox(el,getBBoxFn,retry){let box;try{box=getBBoxFn(el.node);if(isNulledBox(box)&&!domContains(el.node)){throw new Error("Element not in the dom")}}catch(e){box=retry(el)}return box}function bbox(){const getBBox=node=>node.getBBox();const retry=el=>{try{const clone=el.clone().addTo(parser().svg).show();const box=clone.node.getBBox();clone.remove();return box}catch(e){throw new Error(`Getting bbox of element "${el.node.nodeName}" is not possible: ${e.toString()}`)}};const box=getBox(this,getBBox,retry);const bbox=new Box(box);return bbox}function rbox(el){const getRBox=node=>node.getBoundingClientRect();const retry=el=>{throw new Error(`Getting rbox of element "${el.node.nodeName}" is not possible`)};const box=getBox(this,getRBox,retry);const rbox=new Box(box);if(el){return rbox.transform(el.screenCTM().inverseO())}return rbox.addOffset()}function inside(x,y){const box=this.bbox();return x>box.x&&y>box.y&&x{return fnOrMethodName.call(el,el,i,arr)})}else{return this.map(el=>{return el[fnOrMethodName](...args)})}},toArray(){return Array.prototype.concat.apply([],this)}});const reserved=["toArray","constructor","each"];List.extend=function(methods){methods=methods.reduce((obj,name)=>{if(reserved.includes(name))return obj;if(name[0]==="_")return obj;obj[name]=function(...attrs){return this.each(name,...attrs)};return obj},{});extend([List],methods)};function baseFind(query,parent){return new List(map((parent||globals.document).querySelectorAll(query),function(node){return adopt(node)}))}function find(query){return baseFind(query,this.node)}function findOne(query){return adopt(this.node.querySelector(query))}let listenerId=0;const windowEvents={};function getEvents(instance){let n=instance.getEventHolder();if(n===globals.window)n=windowEvents;if(!n.events)n.events={};return n.events}function getEventTarget(instance){return instance.getEventTarget()}function clearEvents(instance){let n=instance.getEventHolder();if(n===globals.window)n=windowEvents;if(n.events)n.events={}}function on(node,events,listener,binding,options){const l=listener.bind(binding||node);const instance=makeInstance(node);const bag=getEvents(instance);const n=getEventTarget(instance);events=Array.isArray(events)?events:events.split(delimiter);if(!listener._svgjsListenerId){listener._svgjsListenerId=++listenerId}events.forEach(function(event){const ev=event.split(".")[0];const ns=event.split(".")[1]||"*";bag[ev]=bag[ev]||{};bag[ev][ns]=bag[ev][ns]||{};bag[ev][ns][listener._svgjsListenerId]=l;n.addEventListener(ev,l,options||false)})}function off(node,events,listener,options){const instance=makeInstance(node);const bag=getEvents(instance);const n=getEventTarget(instance);if(typeof listener==="function"){listener=listener._svgjsListenerId;if(!listener)return}events=Array.isArray(events)?events:(events||"").split(delimiter);events.forEach(function(event){const ev=event&&event.split(".")[0];const ns=event&&event.split(".")[1];let namespace,l;if(listener){if(bag[ev]&&bag[ev][ns||"*"]){n.removeEventListener(ev,bag[ev][ns||"*"][listener],options||false);delete bag[ev][ns||"*"][listener]}}else if(ev&&ns){if(bag[ev]&&bag[ev][ns]){for(l in bag[ev][ns]){off(n,[ev,ns].join("."),l)}delete bag[ev][ns]}}else if(ns){for(event in bag){for(namespace in bag[event]){if(ns===namespace){off(n,[event,ns].join("."))}}}}else if(ev){if(bag[ev]){for(namespace in bag[ev]){off(n,[ev,namespace].join("."))}delete bag[ev]}}else{for(event in bag){off(n,event)}clearEvents(instance)}})}function dispatch(node,event,data,options){const n=getEventTarget(node);if(event instanceof globals.window.Event){n.dispatchEvent(event)}else{event=new globals.window.CustomEvent(event,{detail:data,cancelable:true,...options});n.dispatchEvent(event)}return event}class EventTarget extends Base{addEventListener(){}dispatch(event,data,options){return dispatch(this,event,data,options)}dispatchEvent(event){const bag=this.getEventHolder().events;if(!bag)return true;const events=bag[event.type];for(const i in events){for(const j in events[i]){events[i][j](event)}}return!event.defaultPrevented}fire(event,data,options){this.dispatch(event,data,options);return this}getEventHolder(){return this}getEventTarget(){return this}off(event,listener,options){off(this,event,listener,options);return this}on(event,listener,binding,options){on(this,event,listener,binding,options);return this}removeEventListener(){}}register(EventTarget,"EventTarget");function noop(){}const timeline={duration:400,ease:">",delay:0};const attrs={"fill-opacity":1,"stroke-opacity":1,"stroke-width":0,"stroke-linejoin":"miter","stroke-linecap":"butt",fill:"#000000",stroke:"#000000",opacity:1,x:0,y:0,cx:0,cy:0,width:0,height:0,r:0,rx:0,ry:0,offset:0,"stop-opacity":1,"stop-color":"#000000","text-anchor":"start"};var defaults={__proto__:null,noop:noop,timeline:timeline,attrs:attrs};class SVGArray extends Array{constructor(...args){super(...args);this.init(...args)}clone(){return new this.constructor(this)}init(arr){if(typeof arr==="number")return this;this.length=0;this.push(...this.parse(arr));return this}parse(array=[]){if(array instanceof Array)return array;return array.trim().split(delimiter).map(parseFloat)}toArray(){return Array.prototype.concat.apply([],this)}toSet(){return new Set(this)}toString(){return this.join(" ")}valueOf(){const ret=[];ret.push(...this);return ret}}class SVGNumber{constructor(...args){this.init(...args)}convert(unit){return new SVGNumber(this.value,unit)}divide(number){number=new SVGNumber(number);return new SVGNumber(this/number,this.unit||number.unit)}init(value,unit){unit=Array.isArray(value)?value[1]:unit;value=Array.isArray(value)?value[0]:value;this.value=0;this.unit=unit||"";if(typeof value==="number"){this.value=isNaN(value)?0:!isFinite(value)?value<0?-34e37:+34e37:value}else if(typeof value==="string"){unit=value.match(numberAndUnit);if(unit){this.value=parseFloat(unit[1]);if(unit[5]==="%"){this.value/=100}else if(unit[5]==="s"){this.value*=1e3}this.unit=unit[5]}}else{if(value instanceof SVGNumber){this.value=value.valueOf();this.unit=value.unit}}return this}minus(number){number=new SVGNumber(number);return new SVGNumber(this-number,this.unit||number.unit)}plus(number){number=new SVGNumber(number);return new SVGNumber(this+number,this.unit||number.unit)}times(number){number=new SVGNumber(number);return new SVGNumber(this*number,this.unit||number.unit)}toArray(){return[this.value,this.unit]}toJSON(){return this.toString()}toString(){return(this.unit==="%"?~~(this.value*1e8)/1e6:this.unit==="s"?this.value/1e3:this.value)+this.unit}valueOf(){return this.value}}const hooks=[];function registerAttrHook(fn){hooks.push(fn)}function attr(attr,val,ns){if(attr==null){attr={};val=this.node.attributes;for(const node of val){attr[node.nodeName]=isNumber.test(node.nodeValue)?parseFloat(node.nodeValue):node.nodeValue}return attr}else if(attr instanceof Array){return attr.reduce((last,curr)=>{last[curr]=this.attr(curr);return last},{})}else if(typeof attr==="object"&&attr.constructor===Object){for(val in attr)this.attr(val,attr[val])}else if(val===null){this.node.removeAttribute(attr)}else if(val==null){val=this.node.getAttribute(attr);return val==null?attrs[attr]:isNumber.test(val)?parseFloat(val):val}else{val=hooks.reduce((_val,hook)=>{return hook(attr,_val,this)},val);if(typeof val==="number"){val=new SVGNumber(val)}else if(Color.isColor(val)){val=new Color(val)}else if(val.constructor===Array){val=new SVGArray(val)}if(attr==="leading"){if(this.leading){this.leading(val)}}else{typeof ns==="string"?this.node.setAttributeNS(ns,attr,val.toString()):this.node.setAttribute(attr,val.toString())}if(this.rebuild&&(attr==="font-size"||attr==="x")){this.rebuild()}}return this}class Dom extends EventTarget{constructor(node,attrs){super();this.node=node;this.type=node.nodeName;if(attrs&&node!==attrs){this.attr(attrs)}}add(element,i){element=makeInstance(element);if(element.removeNamespace&&this.node instanceof globals.window.SVGElement){element.removeNamespace()}if(i==null){this.node.appendChild(element.node)}else if(element.node!==this.node.childNodes[i]){this.node.insertBefore(element.node,this.node.childNodes[i])}return this}addTo(parent,i){return makeInstance(parent).put(this,i)}children(){return new List(map(this.node.children,function(node){return adopt(node)}))}clear(){while(this.node.hasChildNodes()){this.node.removeChild(this.node.lastChild)}return this}clone(deep=true){this.writeDataToDom();return new this.constructor(assignNewId(this.node.cloneNode(deep)))}each(block,deep){const children=this.children();let i,il;for(i=0,il=children.length;i=0}html(htmlOrFn,outerHTML){return this.xml(htmlOrFn,outerHTML,html)}id(id){if(typeof id==="undefined"&&!this.node.id){this.node.id=eid(this.type)}return this.attr("id",id)}index(element){return[].slice.call(this.node.childNodes).indexOf(element.node)}last(){return adopt(this.node.lastChild)}matches(selector){const el=this.node;const matcher=el.matches||el.matchesSelector||el.msMatchesSelector||el.mozMatchesSelector||el.webkitMatchesSelector||el.oMatchesSelector||null;return matcher&&matcher.call(el,selector)}parent(type){let parent=this;if(!parent.node.parentNode)return null;parent=adopt(parent.node.parentNode);if(!type)return parent;do{if(typeof type==="string"?parent.matches(type):parent instanceof type)return parent}while(parent=adopt(parent.node.parentNode));return parent}put(element,i){element=makeInstance(element);this.add(element,i);return element}putIn(parent,i){return makeInstance(parent).add(this,i)}remove(){if(this.parent()){this.parent().removeElement(this)}return this}removeElement(element){this.node.removeChild(element.node);return this}replace(element){element=makeInstance(element);if(this.node.parentNode){this.node.parentNode.replaceChild(element.node,this.node)}return element}round(precision=2,map=null){const factor=10**precision;const attrs=this.attr(map);for(const i in attrs){if(typeof attrs[i]==="number"){attrs[i]=Math.round(attrs[i]*factor)/factor}}this.attr(attrs);return this}svg(svgOrFn,outerSVG){return this.xml(svgOrFn,outerSVG,svg)}toString(){return this.id()}words(text){this.node.textContent=text;return this}wrap(node){const parent=this.parent();if(!parent){return this.addTo(node)}const position=parent.index(this);return parent.put(node,position).put(this)}writeDataToDom(){this.each(function(){this.writeDataToDom()});return this}xml(xmlOrFn,outerXML,ns){if(typeof xmlOrFn==="boolean"){ns=outerXML;outerXML=xmlOrFn;xmlOrFn=null}if(xmlOrFn==null||typeof xmlOrFn==="function"){outerXML=outerXML==null?true:outerXML;this.writeDataToDom();let current=this;if(xmlOrFn!=null){current=adopt(current.node.cloneNode(true));if(outerXML){const result=xmlOrFn(current);current=result||current;if(result===false)return""}current.each(function(){const result=xmlOrFn(this);const _this=result||this;if(result===false){this.remove()}else if(result&&this!==_this){this.replace(_this)}},true)}return outerXML?current.node.outerHTML:current.node.innerHTML}outerXML=outerXML==null?false:outerXML;const well=create("wrapper",ns);const fragment=globals.document.createDocumentFragment();well.innerHTML=xmlOrFn;for(let len=well.children.length;len--;){fragment.appendChild(well.firstElementChild)}const parent=this.parent();return outerXML?this.replace(fragment)&&parent:this.add(fragment)}}extend(Dom,{attr:attr,find:find,findOne:findOne});register(Dom,"Dom");class Element extends Dom{constructor(node,attrs){super(node,attrs);this.dom={};this.node.instance=this;if(node.hasAttribute("svgjs:data")){this.setData(JSON.parse(node.getAttribute("svgjs:data"))||{})}}center(x,y){return this.cx(x).cy(y)}cx(x){return x==null?this.x()+this.width()/2:this.x(x-this.width()/2)}cy(y){return y==null?this.y()+this.height()/2:this.y(y-this.height()/2)}defs(){const root=this.root();return root&&root.defs()}dmove(x,y){return this.dx(x).dy(y)}dx(x=0){return this.x(new SVGNumber(x).plus(this.x()))}dy(y=0){return this.y(new SVGNumber(y).plus(this.y()))}getEventHolder(){return this}height(height){return this.attr("height",height)}move(x,y){return this.x(x).y(y)}parents(until=this.root()){const isSelector=typeof until==="string";if(!isSelector){until=makeInstance(until)}const parents=new List;let parent=this;while((parent=parent.parent())&&parent.node!==globals.document&&parent.nodeName!=="#document-fragment"){parents.push(parent);if(!isSelector&&parent.node===until.node){break}if(isSelector&&parent.matches(until)){break}if(parent.node===this.root().node){return null}}return parents}reference(attr){attr=this.attr(attr);if(!attr)return null;const m=(attr+"").match(reference);return m?makeInstance(m[1]):null}root(){const p=this.parent(getClass(root));return p&&p.root()}setData(o){this.dom=o;return this}size(width,height){const p=proportionalSize(this,width,height);return this.width(new SVGNumber(p.width)).height(new SVGNumber(p.height))}width(width){return this.attr("width",width)}writeDataToDom(){this.node.removeAttribute("svgjs:data");if(Object.keys(this.dom).length){this.node.setAttribute("svgjs:data",JSON.stringify(this.dom))}return super.writeDataToDom()}x(x){return this.attr("x",x)}y(y){return this.attr("y",y)}}extend(Element,{bbox:bbox,rbox:rbox,inside:inside,point:point,ctm:ctm,screenCTM:screenCTM});register(Element,"Element");const sugar={stroke:["color","width","opacity","linecap","linejoin","miterlimit","dasharray","dashoffset"],fill:["color","opacity","rule"],prefix:function(t,a){return a==="color"?t:t+"-"+a}};["fill","stroke"].forEach(function(m){const extension={};let i;extension[m]=function(o){if(typeof o==="undefined"){return this.attr(m)}if(typeof o==="string"||o instanceof Color||Color.isRgb(o)||o instanceof Element){this.attr(m,o)}else{for(i=sugar[m].length-1;i>=0;i--){if(o[sugar[m][i]]!=null){this.attr(sugar.prefix(m,sugar[m][i]),o[sugar[m][i]])}}}return this};registerMethods(["Element","Runner"],extension)});registerMethods(["Element","Runner"],{matrix:function(mat,b,c,d,e,f){if(mat==null){return new Matrix(this)}return this.attr("transform",new Matrix(mat,b,c,d,e,f))},rotate:function(angle,cx,cy){return this.transform({rotate:angle,ox:cx,oy:cy},true)},skew:function(x,y,cx,cy){return arguments.length===1||arguments.length===3?this.transform({skew:x,ox:y,oy:cx},true):this.transform({skew:[x,y],ox:cx,oy:cy},true)},shear:function(lam,cx,cy){return this.transform({shear:lam,ox:cx,oy:cy},true)},scale:function(x,y,cx,cy){return arguments.length===1||arguments.length===3?this.transform({scale:x,ox:y,oy:cx},true):this.transform({scale:[x,y],ox:cx,oy:cy},true)},translate:function(x,y){return this.transform({translate:[x,y]},true)},relative:function(x,y){return this.transform({relative:[x,y]},true)},flip:function(direction="both",origin="center"){if("xybothtrue".indexOf(direction)===-1){origin=direction;direction="both"}return this.transform({flip:direction,origin:origin},true)},opacity:function(value){return this.attr("opacity",value)}});registerMethods("radius",{radius:function(x,y=x){const type=(this._element||this).type;return type==="radialGradient"?this.attr("r",new SVGNumber(x)):this.rx(x).ry(y)}});registerMethods("Path",{length:function(){return this.node.getTotalLength()},pointAt:function(length){return new Point(this.node.getPointAtLength(length))}});registerMethods(["Element","Runner"],{font:function(a,v){if(typeof a==="object"){for(v in a)this.font(v,a[v]);return this}return a==="leading"?this.leading(v):a==="anchor"?this.attr("text-anchor",v):a==="size"||a==="family"||a==="weight"||a==="stretch"||a==="variant"||a==="style"?this.attr("font-"+a,v):this.attr(a,v)}});const methods=["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","touchstart","touchmove","touchleave","touchend","touchcancel"].reduce(function(last,event){const fn=function(f){if(f===null){this.off(event)}else{this.on(event,f)}return this};last[event]=fn;return last},{});registerMethods("Element",methods);function untransform(){return this.attr("transform",null)}function matrixify(){const matrix=(this.attr("transform")||"").split(transforms).slice(0,-1).map(function(str){const kv=str.trim().split("(");return[kv[0],kv[1].split(delimiter).map(function(str){return parseFloat(str)})]}).reverse().reduce(function(matrix,transform){if(transform[0]==="matrix"){return matrix.lmultiply(Matrix.fromArray(transform[1]))}return matrix[transform[0]].apply(matrix,transform[1])},new Matrix);return matrix}function toParent(parent,i){if(this===parent)return this;const ctm=this.screenCTM();const pCtm=parent.screenCTM().inverse();this.addTo(parent,i).untransform().transform(pCtm.multiply(ctm));return this}function toRoot(i){return this.toParent(this.root(),i)}function transform(o,relative){if(o==null||typeof o==="string"){const decomposed=new Matrix(this).decompose();return o==null?decomposed:decomposed[o]}if(!Matrix.isMatrixLike(o)){o={...o,origin:getOrigin(o,this)}}const cleanRelative=relative===true?this:relative||false;const result=new Matrix(cleanRelative).transform(o);return this.attr("transform",result)}registerMethods("Element",{untransform:untransform,matrixify:matrixify,toParent:toParent,toRoot:toRoot,transform:transform});class Container extends Element{flatten(parent=this,index){this.each(function(){if(this instanceof Container){return this.flatten().ungroup()}});return this}ungroup(parent=this.parent(),index=parent.index(this)){index=index===-1?parent.children().length:index;this.each(function(i,children){return children[children.length-i-1].toParent(parent,index)});return this.remove()}}register(Container,"Container");class Defs extends Container{constructor(node,attrs=node){super(nodeOrNew("defs",node),attrs)}flatten(){return this}ungroup(){return this}}register(Defs,"Defs");class Shape extends Element{}register(Shape,"Shape");function rx(rx){return this.attr("rx",rx)}function ry(ry){return this.attr("ry",ry)}function x$3(x){return x==null?this.cx()-this.rx():this.cx(x+this.rx())}function y$3(y){return y==null?this.cy()-this.ry():this.cy(y+this.ry())}function cx$1(x){return this.attr("cx",x)}function cy$1(y){return this.attr("cy",y)}function width$2(width){return width==null?this.rx()*2:this.rx(new SVGNumber(width).divide(2))}function height$2(height){return height==null?this.ry()*2:this.ry(new SVGNumber(height).divide(2))}var circled={__proto__:null,rx:rx,ry:ry,x:x$3,y:y$3,cx:cx$1,cy:cy$1,width:width$2,height:height$2};class Ellipse extends Shape{constructor(node,attrs=node){super(nodeOrNew("ellipse",node),attrs)}size(width,height){const p=proportionalSize(this,width,height);return this.rx(new SVGNumber(p.width).divide(2)).ry(new SVGNumber(p.height).divide(2))}}extend(Ellipse,circled);registerMethods("Container",{ellipse:wrapWithAttrCheck(function(width=0,height=width){return this.put(new Ellipse).size(width,height).move(0,0)})});register(Ellipse,"Ellipse");class Fragment extends Dom{constructor(node=globals.document.createDocumentFragment()){super(node)}xml(xmlOrFn,outerXML,ns){if(typeof xmlOrFn==="boolean"){ns=outerXML;outerXML=xmlOrFn;xmlOrFn=null}if(xmlOrFn==null||typeof xmlOrFn==="function"){const wrapper=new Dom(create("wrapper",ns));wrapper.add(this.node.cloneNode(true));return wrapper.xml(false,ns)}return super.xml(xmlOrFn,false,ns)}}register(Fragment,"Fragment");function from(x,y){return(this._element||this).type==="radialGradient"?this.attr({fx:new SVGNumber(x),fy:new SVGNumber(y)}):this.attr({x1:new SVGNumber(x),y1:new SVGNumber(y)})}function to(x,y){return(this._element||this).type==="radialGradient"?this.attr({cx:new SVGNumber(x),cy:new SVGNumber(y)}):this.attr({x2:new SVGNumber(x),y2:new SVGNumber(y)})}var gradiented={__proto__:null,from:from,to:to};class Gradient extends Container{constructor(type,attrs){super(nodeOrNew(type+"Gradient",typeof type==="string"?null:type),attrs)}attr(a,b,c){if(a==="transform")a="gradientTransform";return super.attr(a,b,c)}bbox(){return new Box}targets(){return baseFind('svg [fill*="'+this.id()+'"]')}toString(){return this.url()}update(block){this.clear();if(typeof block==="function"){block.call(this,this)}return this}url(){return'url("#'+this.id()+'")'}}extend(Gradient,gradiented);registerMethods({Container:{gradient(...args){return this.defs().gradient(...args)}},Defs:{gradient:wrapWithAttrCheck(function(type,block){return this.put(new Gradient(type)).update(block)})}});register(Gradient,"Gradient");class Pattern extends Container{constructor(node,attrs=node){super(nodeOrNew("pattern",node),attrs)}attr(a,b,c){if(a==="transform")a="patternTransform";return super.attr(a,b,c)}bbox(){return new Box}targets(){return baseFind('svg [fill*="'+this.id()+'"]')}toString(){return this.url()}update(block){this.clear();if(typeof block==="function"){block.call(this,this)}return this}url(){return'url("#'+this.id()+'")'}}registerMethods({Container:{pattern(...args){return this.defs().pattern(...args)}},Defs:{pattern:wrapWithAttrCheck(function(width,height,block){return this.put(new Pattern).update(block).attr({x:0,y:0,width:width,height:height,patternUnits:"userSpaceOnUse"})})}});register(Pattern,"Pattern");class Image extends Shape{constructor(node,attrs=node){super(nodeOrNew("image",node),attrs)}load(url,callback){if(!url)return this;const img=new globals.window.Image;on(img,"load",function(e){const p=this.parent(Pattern);if(this.width()===0&&this.height()===0){this.size(img.width,img.height)}if(p instanceof Pattern){if(p.width()===0&&p.height()===0){p.size(this.width(),this.height())}}if(typeof callback==="function"){callback.call(this,e)}},this);on(img,"load error",function(){off(img)});return this.attr("href",img.src=url,xlink)}}registerAttrHook(function(attr,val,_this){if(attr==="fill"||attr==="stroke"){if(isImage.test(val)){val=_this.root().defs().image(val)}}if(val instanceof Image){val=_this.root().defs().pattern(0,0,pattern=>{pattern.add(val)})}return val});registerMethods({Container:{image:wrapWithAttrCheck(function(source,callback){return this.put(new Image).size(0,0).load(source,callback)})}});register(Image,"Image");class PointArray extends SVGArray{bbox(){let maxX=-Infinity;let maxY=-Infinity;let minX=Infinity;let minY=Infinity;this.forEach(function(el){maxX=Math.max(el[0],maxX);maxY=Math.max(el[1],maxY);minX=Math.min(el[0],minX);minY=Math.min(el[1],minY)});return new Box(minX,minY,maxX-minX,maxY-minY)}move(x,y){const box=this.bbox();x-=box.x;y-=box.y;if(!isNaN(x)&&!isNaN(y)){for(let i=this.length-1;i>=0;i--){this[i]=[this[i][0]+x,this[i][1]+y]}}return this}parse(array=[0,0]){const points=[];if(array instanceof Array){array=Array.prototype.concat.apply([],array)}else{array=array.trim().split(delimiter).map(parseFloat)}if(array.length%2!==0)array.pop();for(let i=0,len=array.length;i=0;i--){if(box.width)this[i][0]=(this[i][0]-box.x)*width/box.width+box.x;if(box.height)this[i][1]=(this[i][1]-box.y)*height/box.height+box.y}return this}toLine(){return{x1:this[0][0],y1:this[0][1],x2:this[1][0],y2:this[1][1]}}toString(){const array=[];for(let i=0,il=this.length;i":function(pos){return-Math.cos(pos*Math.PI)/2+.5},">":function(pos){return Math.sin(pos*Math.PI/2)},"<":function(pos){return-Math.cos(pos*Math.PI/2)+1},bezier:function(x1,y1,x2,y2){return function(t){if(t<0){if(x1>0){return y1/x1*t}else if(x2>0){return y2/x2*t}else{return 0}}else if(t>1){if(x2<1){return(1-y2)/(1-x2)*t+(y2-x2)/(1-x2)}else if(x1<1){return(1-y1)/(1-x1)*t+(y1-x1)/(1-x1)}else{return 1}}else{return 3*t*(1-t)**2*y1+3*t**2*(1-t)*y2+t**3}}},steps:function(steps,stepPosition="end"){stepPosition=stepPosition.split("-").reverse()[0];let jumps=steps;if(stepPosition==="none"){--jumps}else if(stepPosition==="both"){++jumps}return(t,beforeFlag=false)=>{let step=Math.floor(t*steps);const jumping=t*step%1===0;if(stepPosition==="start"||stepPosition==="both"){++step}if(beforeFlag&&jumping){--step}if(t>=0&&step<0){step=0}if(t<=1&&step>jumps){step=jumps}return step/jumps}}};class Stepper{done(){return false}}class Ease extends Stepper{constructor(fn=timeline.ease){super();this.ease=easing[fn]||fn}step(from,to,pos){if(typeof from!=="number"){return pos<1?from:to}return from+(to-from)*this.ease(pos)}}class Controller extends Stepper{constructor(fn){super();this.stepper=fn}done(c){return c.done}step(current,target,dt,c){return this.stepper(current,target,dt,c)}}function recalculate(){const duration=(this._duration||500)/1e3;const overshoot=this._overshoot||0;const eps=1e-10;const pi=Math.PI;const os=Math.log(overshoot/100+eps);const zeta=-os/Math.sqrt(pi*pi+os*os);const wn=3.9/(zeta*duration);this.d=2*zeta*wn;this.k=wn*wn}class Spring extends Controller{constructor(duration=500,overshoot=0){super();this.duration(duration).overshoot(overshoot)}step(current,target,dt,c){if(typeof current==="string")return current;c.done=dt===Infinity;if(dt===Infinity)return target;if(dt===0)return current;if(dt>100)dt=16;dt/=1e3;const velocity=c.velocity||0;const acceleration=-this.d*velocity-this.k*(current-target);const newPosition=current+velocity*dt+acceleration*dt*dt/2;c.velocity=velocity+acceleration*dt;c.done=Math.abs(target-newPosition)+Math.abs(velocity)<.002;return c.done?target:newPosition}}extend(Spring,{duration:makeSetterGetter("_duration",recalculate),overshoot:makeSetterGetter("_overshoot",recalculate)});class PID extends Controller{constructor(p=.1,i=.01,d=0,windup=1e3){super();this.p(p).i(i).d(d).windup(windup)}step(current,target,dt,c){if(typeof current==="string")return current;c.done=dt===Infinity;if(dt===Infinity)return target;if(dt===0)return current;const p=target-current;let i=(c.integral||0)+p*dt;const d=(p-(c.error||0))/dt;const windup=this._windup;if(windup!==false){i=Math.max(-windup,Math.min(i,windup))}c.error=p;c.integral=i;c.done=Math.abs(p)<.001;return c.done?target:current+(this.P*p+this.I*i+this.D*d)}}extend(PID,{windup:makeSetterGetter("_windup"),p:makeSetterGetter("P"),i:makeSetterGetter("I"),d:makeSetterGetter("D")});const segmentParameters={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};const pathHandlers={M:function(c,p,p0){p.x=p0.x=c[0];p.y=p0.y=c[1];return["M",p.x,p.y]},L:function(c,p){p.x=c[0];p.y=c[1];return["L",c[0],c[1]]},H:function(c,p){p.x=c[0];return["H",c[0]]},V:function(c,p){p.y=c[0];return["V",c[0]]},C:function(c,p){p.x=c[4];p.y=c[5];return["C",c[0],c[1],c[2],c[3],c[4],c[5]]},S:function(c,p){p.x=c[2];p.y=c[3];return["S",c[0],c[1],c[2],c[3]]},Q:function(c,p){p.x=c[2];p.y=c[3];return["Q",c[0],c[1],c[2],c[3]]},T:function(c,p){p.x=c[0];p.y=c[1];return["T",c[0],c[1]]},Z:function(c,p,p0){p.x=p0.x;p.y=p0.y;return["Z"]},A:function(c,p){p.x=c[5];p.y=c[6];return["A",c[0],c[1],c[2],c[3],c[4],c[5],c[6]]}};const mlhvqtcsaz="mlhvqtcsaz".split("");for(let i=0,il=mlhvqtcsaz.length;i=0;i--){l=this[i][0];if(l==="M"||l==="L"||l==="T"){this[i][1]+=x;this[i][2]+=y}else if(l==="H"){this[i][1]+=x}else if(l==="V"){this[i][1]+=y}else if(l==="C"||l==="S"||l==="Q"){this[i][1]+=x;this[i][2]+=y;this[i][3]+=x;this[i][4]+=y;if(l==="C"){this[i][5]+=x;this[i][6]+=y}}else if(l==="A"){this[i][6]+=x;this[i][7]+=y}}}return this}parse(d="M0 0"){if(Array.isArray(d)){d=Array.prototype.concat.apply([],d).toString()}return pathParser(d)}size(width,height){const box=this.bbox();let i,l;box.width=box.width===0?1:box.width;box.height=box.height===0?1:box.height;for(i=this.length-1;i>=0;i--){l=this[i][0];if(l==="M"||l==="L"||l==="T"){this[i][1]=(this[i][1]-box.x)*width/box.width+box.x;this[i][2]=(this[i][2]-box.y)*height/box.height+box.y}else if(l==="H"){this[i][1]=(this[i][1]-box.x)*width/box.width+box.x}else if(l==="V"){this[i][1]=(this[i][1]-box.y)*height/box.height+box.y}else if(l==="C"||l==="S"||l==="Q"){this[i][1]=(this[i][1]-box.x)*width/box.width+box.x;this[i][2]=(this[i][2]-box.y)*height/box.height+box.y;this[i][3]=(this[i][3]-box.x)*width/box.width+box.x;this[i][4]=(this[i][4]-box.y)*height/box.height+box.y;if(l==="C"){this[i][5]=(this[i][5]-box.x)*width/box.width+box.x;this[i][6]=(this[i][6]-box.y)*height/box.height+box.y}}else if(l==="A"){this[i][1]=this[i][1]*width/box.width;this[i][2]=this[i][2]*height/box.height;this[i][6]=(this[i][6]-box.x)*width/box.width+box.x;this[i][7]=(this[i][7]-box.y)*height/box.height+box.y}}return this}toString(){return arrayToString(this)}}const getClassForType=value=>{const type=typeof value;if(type==="number"){return SVGNumber}else if(type==="string"){if(Color.isColor(value)){return Color}else if(delimiter.test(value)){return isPathLetter.test(value)?PathArray:SVGArray}else if(numberAndUnit.test(value)){return SVGNumber}else{return NonMorphable}}else if(morphableTypes.indexOf(value.constructor)>-1){return value.constructor}else if(Array.isArray(value)){return SVGArray}else if(type==="object"){return ObjectBag}else{return NonMorphable}};class Morphable{constructor(stepper){this._stepper=stepper||new Ease("-");this._from=null;this._to=null;this._type=null;this._context=null;this._morphObj=null}at(pos){return this._morphObj.morph(this._from,this._to,pos,this._stepper,this._context)}done(){const complete=this._context.map(this._stepper.done).reduce(function(last,curr){return last&&curr},true);return complete}from(val){if(val==null){return this._from}this._from=this._set(val);return this}stepper(stepper){if(stepper==null)return this._stepper;this._stepper=stepper;return this}to(val){if(val==null){return this._to}this._to=this._set(val);return this}type(type){if(type==null){return this._type}this._type=type;return this}_set(value){if(!this._type){this.type(getClassForType(value))}let result=new this._type(value);if(this._type===Color){result=this._to?result[this._to[4]]():this._from?result[this._from[4]]():result}if(this._type===ObjectBag){result=this._to?result.align(this._to):this._from?result.align(this._from):result}result=result.toConsumable();this._morphObj=this._morphObj||new this._type;this._context=this._context||Array.apply(null,Array(result.length)).map(Object).map(function(o){o.done=true;return o});return result}}class NonMorphable{constructor(...args){this.init(...args)}init(val){val=Array.isArray(val)?val[0]:val;this.value=val;return this}toArray(){return[this.value]}valueOf(){return this.value}}class TransformBag{constructor(...args){this.init(...args)}init(obj){if(Array.isArray(obj)){obj={scaleX:obj[0],scaleY:obj[1],shear:obj[2],rotate:obj[3],translateX:obj[4],translateY:obj[5],originX:obj[6],originY:obj[7]}}Object.assign(this,TransformBag.defaults,obj);return this}toArray(){const v=this;return[v.scaleX,v.scaleY,v.shear,v.rotate,v.translateX,v.translateY,v.originX,v.originY]}}TransformBag.defaults={scaleX:1,scaleY:1,shear:0,rotate:0,translateX:0,translateY:0,originX:0,originY:0};const sortByKey=(a,b)=>{return a[0]b[0]?1:0};class ObjectBag{constructor(...args){this.init(...args)}align(other){const values=this.values;for(let i=0,il=values.length;ilast.concat(curr),[]);return this}toArray(){return this.values}valueOf(){const obj={};const arr=this.values;while(arr.length){const key=arr.shift();const Type=arr.shift();const num=arr.shift();const values=arr.splice(0,num);obj[key]=new Type(values)}return obj}}const morphableTypes=[NonMorphable,TransformBag,ObjectBag];function registerMorphableType(type=[]){morphableTypes.push(...[].concat(type))}function makeMorphable(){extend(morphableTypes,{to(val){return(new Morphable).type(this.constructor).from(this.toArray()).to(val)},fromArray(arr){this.init(arr);return this},toConsumable(){return this.toArray()},morph(from,to,pos,stepper,context){const mapper=function(i,index){return stepper.step(i,to[index],pos,context[index],context)};return this.fromArray(from.map(mapper))}})}class Path extends Shape{constructor(node,attrs=node){super(nodeOrNew("path",node),attrs)}array(){return this._array||(this._array=new PathArray(this.attr("d")))}clear(){delete this._array;return this}height(height){return height==null?this.bbox().height:this.size(this.bbox().width,height)}move(x,y){return this.attr("d",this.array().move(x,y))}plot(d){return d==null?this.array():this.clear().attr("d",typeof d==="string"?d:this._array=new PathArray(d))}size(width,height){const p=proportionalSize(this,width,height);return this.attr("d",this.array().size(p.width,p.height))}width(width){return width==null?this.bbox().width:this.size(width,this.bbox().height)}x(x){return x==null?this.bbox().x:this.move(x,this.bbox().y)}y(y){return y==null?this.bbox().y:this.move(this.bbox().x,y)}}Path.prototype.MorphArray=PathArray;registerMethods({Container:{path:wrapWithAttrCheck(function(d){return this.put(new Path).plot(d||new PathArray)})}});register(Path,"Path");function array(){return this._array||(this._array=new PointArray(this.attr("points")))}function clear(){delete this._array;return this}function move$2(x,y){return this.attr("points",this.array().move(x,y))}function plot(p){return p==null?this.array():this.clear().attr("points",typeof p==="string"?p:this._array=new PointArray(p))}function size$1(width,height){const p=proportionalSize(this,width,height);return this.attr("points",this.array().size(p.width,p.height))}var poly={__proto__:null,array:array,clear:clear,move:move$2,plot:plot,size:size$1};class Polygon extends Shape{constructor(node,attrs=node){super(nodeOrNew("polygon",node),attrs)}}registerMethods({Container:{polygon:wrapWithAttrCheck(function(p){return this.put(new Polygon).plot(p||new PointArray)})}});extend(Polygon,pointed);extend(Polygon,poly);register(Polygon,"Polygon");class Polyline extends Shape{constructor(node,attrs=node){super(nodeOrNew("polyline",node),attrs)}}registerMethods({Container:{polyline:wrapWithAttrCheck(function(p){return this.put(new Polyline).plot(p||new PointArray)})}});extend(Polyline,pointed);extend(Polyline,poly);register(Polyline,"Polyline");class Rect extends Shape{constructor(node,attrs=node){super(nodeOrNew("rect",node),attrs)}}extend(Rect,{rx:rx,ry:ry});registerMethods({Container:{rect:wrapWithAttrCheck(function(width,height){return this.put(new Rect).size(width,height)})}});register(Rect,"Rect");class Queue{constructor(){this._first=null;this._last=null}first(){return this._first&&this._first.value}last(){return this._last&&this._last.value}push(value){const item=typeof value.next!=="undefined"?value:{value:value,next:null,prev:null};if(this._last){item.prev=this._last;this._last.next=item;this._last=item}else{this._last=item;this._first=item}return item}remove(item){if(item.prev)item.prev.next=item.next;if(item.next)item.next.prev=item.prev;if(item===this._last)this._last=item.prev;if(item===this._first)this._first=item.next;item.prev=null;item.next=null}shift(){const remove=this._first;if(!remove)return null;this._first=remove.next;if(this._first)this._first.prev=null;this._last=this._first?this._last:null;return remove.value}}const Animator={nextDraw:null,frames:new Queue,timeouts:new Queue,immediates:new Queue,timer:()=>globals.window.performance||globals.window.Date,transforms:[],frame(fn){const node=Animator.frames.push({run:fn});if(Animator.nextDraw===null){Animator.nextDraw=globals.window.requestAnimationFrame(Animator._draw)}return node},timeout(fn,delay){delay=delay||0;const time=Animator.timer().now()+delay;const node=Animator.timeouts.push({run:fn,time:time});if(Animator.nextDraw===null){Animator.nextDraw=globals.window.requestAnimationFrame(Animator._draw)}return node},immediate(fn){const node=Animator.immediates.push(fn);if(Animator.nextDraw===null){Animator.nextDraw=globals.window.requestAnimationFrame(Animator._draw)}return node},cancelFrame(node){node!=null&&Animator.frames.remove(node)},clearTimeout(node){node!=null&&Animator.timeouts.remove(node)},cancelImmediate(node){node!=null&&Animator.immediates.remove(node)},_draw(now){let nextTimeout=null;const lastTimeout=Animator.timeouts.last();while(nextTimeout=Animator.timeouts.shift()){if(now>=nextTimeout.time){nextTimeout.run()}else{Animator.timeouts.push(nextTimeout)}if(nextTimeout===lastTimeout)break}let nextFrame=null;const lastFrame=Animator.frames.last();while(nextFrame!==lastFrame&&(nextFrame=Animator.frames.shift())){nextFrame.run(now)}let nextImmediate=null;while(nextImmediate=Animator.immediates.shift()){nextImmediate()}Animator.nextDraw=Animator.timeouts.first()||Animator.frames.first()?globals.window.requestAnimationFrame(Animator._draw):null}};const makeSchedule=function(runnerInfo){const start=runnerInfo.start;const duration=runnerInfo.runner.duration();const end=start+duration;return{start:start,duration:duration,end:end,runner:runnerInfo.runner}};const defaultSource=function(){const w=globals.window;return(w.performance||w.Date).now()};class Timeline extends EventTarget{constructor(timeSource=defaultSource){super();this._timeSource=timeSource;this._startTime=0;this._speed=1;this._persist=0;this._nextFrame=null;this._paused=true;this._runners=[];this._runnerIds=[];this._lastRunnerId=-1;this._time=0;this._lastSourceTime=0;this._lastStepTime=0;this._step=this._stepFn.bind(this,false);this._stepImmediate=this._stepFn.bind(this,true)}active(){return!!this._nextFrame}finish(){this.time(this.getEndTimeOfTimeline()+1);return this.pause()}getEndTime(){const lastRunnerInfo=this.getLastRunnerInfo();const lastDuration=lastRunnerInfo?lastRunnerInfo.runner.duration():0;const lastStartTime=lastRunnerInfo?lastRunnerInfo.start:this._time;return lastStartTime+lastDuration}getEndTimeOfTimeline(){const endTimes=this._runners.map(i=>i.start+i.runner.duration());return Math.max(0,...endTimes)}getLastRunnerInfo(){return this.getRunnerInfoById(this._lastRunnerId)}getRunnerInfoById(id){return this._runners[this._runnerIds.indexOf(id)]||null}pause(){this._paused=true;return this._continue()}persist(dtOrForever){if(dtOrForever==null)return this._persist;this._persist=dtOrForever;return this}play(){this._paused=false;return this.updateTime()._continue()}reverse(yes){const currentSpeed=this.speed();if(yes==null)return this.speed(-currentSpeed);const positive=Math.abs(currentSpeed);return this.speed(yes?-positive:positive)}schedule(runner,delay,when){if(runner==null){return this._runners.map(makeSchedule)}let absoluteStartTime=0;const endTime=this.getEndTime();delay=delay||0;if(when==null||when==="last"||when==="after"){absoluteStartTime=endTime}else if(when==="absolute"||when==="start"){absoluteStartTime=delay;delay=0}else if(when==="now"){absoluteStartTime=this._time}else if(when==="relative"){const runnerInfo=this.getRunnerInfoById(runner.id);if(runnerInfo){absoluteStartTime=runnerInfo.start+delay;delay=0}}else if(when==="with-last"){const lastRunnerInfo=this.getLastRunnerInfo();const lastStartTime=lastRunnerInfo?lastRunnerInfo.start:this._time;absoluteStartTime=lastStartTime}else{throw new Error('Invalid value for the "when" parameter')}runner.unschedule();runner.timeline(this);const persist=runner.persist();const runnerInfo={persist:persist===null?this._persist:persist,start:absoluteStartTime+delay,runner:runner};this._lastRunnerId=runner.id;this._runners.push(runnerInfo);this._runners.sort((a,b)=>a.start-b.start);this._runnerIds=this._runners.map(info=>info.runner.id);this.updateTime()._continue();return this}seek(dt){return this.time(this._time+dt)}source(fn){if(fn==null)return this._timeSource;this._timeSource=fn;return this}speed(speed){if(speed==null)return this._speed;this._speed=speed;return this}stop(){this.time(0);return this.pause()}time(time){if(time==null)return this._time;this._time=time;return this._continue(true)}unschedule(runner){const index=this._runnerIds.indexOf(runner.id);if(index<0)return this;this._runners.splice(index,1);this._runnerIds.splice(index,1);runner.timeline(null);return this}updateTime(){if(!this.active()){this._lastSourceTime=this._timeSource()}return this}_continue(immediateStep=false){Animator.cancelFrame(this._nextFrame);this._nextFrame=null;if(immediateStep)return this._stepImmediate();if(this._paused)return this;this._nextFrame=Animator.frame(this._step);return this}_stepFn(immediateStep=false){const time=this._timeSource();let dtSource=time-this._lastSourceTime;if(immediateStep)dtSource=0;const dtTime=this._speed*dtSource+(this._time-this._lastStepTime);this._lastSourceTime=time;if(!immediateStep){this._time+=dtTime;this._time=this._time<0?0:this._time}this._lastStepTime=this._time;this.fire("time",this._time);for(let k=this._runners.length;k--;){const runnerInfo=this._runners[k];const runner=runnerInfo.runner;const dtToStart=this._time-runnerInfo.start;if(dtToStart<=0){runner.reset()}}let runnersLeft=false;for(let i=0,len=this._runners.length;i0){this._continue()}else{this.pause();this.fire("finished")}return this}}registerMethods({Element:{timeline:function(timeline){if(timeline==null){this._timeline=this._timeline||new Timeline;return this._timeline}else{this._timeline=timeline;return this}}}});class Runner extends EventTarget{constructor(options){super();this.id=Runner.id++;options=options==null?timeline.duration:options;options=typeof options==="function"?new Controller(options):options;this._element=null;this._timeline=null;this.done=false;this._queue=[];this._duration=typeof options==="number"&&options;this._isDeclarative=options instanceof Controller;this._stepper=this._isDeclarative?options:new Ease;this._history={};this.enabled=true;this._time=0;this._lastTime=0;this._reseted=true;this.transforms=new Matrix;this.transformId=1;this._haveReversed=false;this._reverse=false;this._loopsDone=0;this._swing=false;this._wait=0;this._times=1;this._frameId=null;this._persist=this._isDeclarative?true:null}static sanitise(duration,delay,when){let times=1;let swing=false;let wait=0;duration=duration||timeline.duration;delay=delay||timeline.delay;when=when||"last";if(typeof duration==="object"&&!(duration instanceof Stepper)){delay=duration.delay||delay;when=duration.when||when;swing=duration.swing||swing;times=duration.times||times;wait=duration.wait||wait;duration=duration.duration||timeline.duration}return{duration:duration,delay:delay,swing:swing,times:times,wait:wait,when:when}}active(enabled){if(enabled==null)return this.enabled;this.enabled=enabled;return this}addTransform(transform,index){this.transforms.lmultiplyO(transform);return this}after(fn){return this.on("finished",fn)}animate(duration,delay,when){const o=Runner.sanitise(duration,delay,when);const runner=new Runner(o.duration);if(this._timeline)runner.timeline(this._timeline);if(this._element)runner.element(this._element);return runner.loop(o).schedule(o.delay,o.when)}clearTransform(){this.transforms=new Matrix;return this}clearTransformsFromQueue(){if(!this.done||!this._timeline||!this._timeline._runnerIds.includes(this.id)){this._queue=this._queue.filter(item=>{return!item.isTransform})}}delay(delay){return this.animate(0,delay)}duration(){return this._times*(this._wait+this._duration)-this._wait}during(fn){return this.queue(null,fn)}ease(fn){this._stepper=new Ease(fn);return this}element(element){if(element==null)return this._element;this._element=element;element._prepareRunner();return this}finish(){return this.step(Infinity)}loop(times,swing,wait){if(typeof times==="object"){swing=times.swing;wait=times.wait;times=times.times}this._times=times||Infinity;this._swing=swing||false;this._wait=wait||0;if(this._times===true){this._times=Infinity}return this}loops(p){const loopDuration=this._duration+this._wait;if(p==null){const loopsDone=Math.floor(this._time/loopDuration);const relativeTime=this._time-loopsDone*loopDuration;const position=relativeTime/this._duration;return Math.min(loopsDone+position,this._times)}const whole=Math.floor(p);const partial=p%1;const time=loopDuration*whole+this._duration*partial;return this.time(time)}persist(dtOrForever){if(dtOrForever==null)return this._persist;this._persist=dtOrForever;return this}position(p){const x=this._time;const d=this._duration;const w=this._wait;const t=this._times;const s=this._swing;const r=this._reverse;let position;if(p==null){const f=function(x){const swinging=s*Math.floor(x%(2*(w+d))/(w+d));const backwards=swinging&&!r||!swinging&&r;const uncliped=Math.pow(-1,backwards)*(x%(w+d))/d+backwards;const clipped=Math.max(Math.min(uncliped,1),0);return clipped};const endTime=t*(w+d)-w;position=x<=0?Math.round(f(1e-5)):x=0;this._lastPosition=position;const duration=this.duration();const justStarted=this._lastTime<=0&&this._time>0;const justFinished=this._lastTime=duration;this._lastTime=this._time;if(justStarted){this.fire("start",this)}const declarative=this._isDeclarative;this.done=!declarative&&!justFinished&&this._time>=duration;this._reseted=false;let converged=false;if(running||declarative){this._initialise(running);this.transforms=new Matrix;converged=this._run(declarative?dt:position);this.fire("step",this)}this.done=this.done||converged&&declarative;if(justFinished){this.fire("finished",this)}return this}time(time){if(time==null){return this._time}const dt=time-this._time;this.step(dt);return this}timeline(timeline){if(typeof timeline==="undefined")return this._timeline;this._timeline=timeline;return this}unschedule(){const timeline=this.timeline();timeline&&timeline.unschedule(this);return this}_initialise(running){if(!running&&!this._isDeclarative)return;for(let i=0,len=this._queue.length;ilast.lmultiplyO(curr);const getRunnerTransform=runner=>runner.transforms;function mergeTransforms(){const runners=this._transformationRunners.runners;const netTransform=runners.map(getRunnerTransform).reduce(lmultiply,new Matrix);this.transform(netTransform);this._transformationRunners.merge();if(this._transformationRunners.length()===1){this._frameId=null}}class RunnerArray{constructor(){this.runners=[];this.ids=[]}add(runner){if(this.runners.includes(runner))return;const id=runner.id+1;this.runners.push(runner);this.ids.push(id);return this}clearBefore(id){const deleteCnt=this.ids.indexOf(id+1)||1;this.ids.splice(0,deleteCnt,0);this.runners.splice(0,deleteCnt,new FakeRunner).forEach(r=>r.clearTransformsFromQueue());return this}edit(id,newRunner){const index=this.ids.indexOf(id+1);this.ids.splice(index,1,id+1);this.runners.splice(index,1,newRunner);return this}getByID(id){return this.runners[this.ids.indexOf(id+1)]}length(){return this.ids.length}merge(){let lastRunner=null;for(let i=0;irunner.id<=current.id).map(getRunnerTransform).reduce(lmultiply,new Matrix)},_addRunner(runner){this._transformationRunners.add(runner);Animator.cancelImmediate(this._frameId);this._frameId=Animator.immediate(mergeTransforms.bind(this))},_prepareRunner(){if(this._frameId==null){this._transformationRunners=(new RunnerArray).add(new FakeRunner(new Matrix(this)))}}}});const difference=(a,b)=>a.filter(x=>!b.includes(x));extend(Runner,{attr(a,v){return this.styleAttr("attr",a,v)},css(s,v){return this.styleAttr("css",s,v)},styleAttr(type,nameOrAttrs,val){if(typeof nameOrAttrs==="string"){return this.styleAttr(type,{[nameOrAttrs]:val})}let attrs=nameOrAttrs;if(this._tryRetarget(type,attrs))return this;let morpher=new Morphable(this._stepper).to(attrs);let keys=Object.keys(attrs);this.queue(function(){morpher=morpher.from(this.element()[type](keys))},function(pos){this.element()[type](morpher.at(pos).valueOf());return morpher.done()},function(newToAttrs){const newKeys=Object.keys(newToAttrs);const differences=difference(newKeys,keys);if(differences.length){const addedFromAttrs=this.element()[type](differences);const oldFromAttrs=new ObjectBag(morpher.from()).valueOf();Object.assign(oldFromAttrs,addedFromAttrs);morpher.from(oldFromAttrs)}const oldToAttrs=new ObjectBag(morpher.to()).valueOf();Object.assign(oldToAttrs,newToAttrs);morpher.to(oldToAttrs);keys=newKeys;attrs=newToAttrs});this._rememberMorpher(type,morpher);return this},zoom(level,point){if(this._tryRetarget("zoom",level,point))return this;let morpher=new Morphable(this._stepper).to(new SVGNumber(level));this.queue(function(){morpher=morpher.from(this.element().zoom())},function(pos){this.element().zoom(morpher.at(pos),point);return morpher.done()},function(newLevel,newPoint){point=newPoint;morpher.to(newLevel)});this._rememberMorpher("zoom",morpher);return this},transform(transforms,relative,affine){relative=transforms.relative||relative;if(this._isDeclarative&&!relative&&this._tryRetarget("transform",transforms)){return this}const isMatrix=Matrix.isMatrixLike(transforms);affine=transforms.affine!=null?transforms.affine:affine!=null?affine:!isMatrix;const morpher=new Morphable(this._stepper).type(affine?TransformBag:Matrix);let origin;let element;let current;let currentAngle;let startTransform;function setup(){element=element||this.element();origin=origin||getOrigin(transforms,element);startTransform=new Matrix(relative?undefined:element);element._addRunner(this);if(!relative){element._clearTransformRunnersBefore(this)}}function run(pos){if(!relative)this.clearTransform();const{x,y}=new Point(origin).transform(element._currentTransform(this));let target=new Matrix({...transforms,origin:[x,y]});let start=this._isDeclarative&¤t?current:startTransform;if(affine){target=target.decompose(x,y);start=start.decompose(x,y);const rTarget=target.rotate;const rCurrent=start.rotate;const possibilities=[rTarget-360,rTarget,rTarget+360];const distances=possibilities.map(a=>Math.abs(a-rCurrent));const shortest=Math.min(...distances);const index=distances.indexOf(shortest);target.rotate=possibilities[index]}if(relative){if(!isMatrix){target.rotate=transforms.rotate||0}if(this._isDeclarative&¤tAngle){start.rotate=currentAngle}}morpher.from(start);morpher.to(target);const affineParameters=morpher.at(pos);currentAngle=affineParameters.rotate;current=new Matrix(affineParameters);this.addTransform(current);element._addRunner(this);return morpher.done()}function retarget(newTransforms){if((newTransforms.origin||"center").toString()!==(transforms.origin||"center").toString()){origin=getOrigin(newTransforms,element)}transforms={...newTransforms,origin:origin}}this.queue(setup,run,retarget,true);this._isDeclarative&&this._rememberMorpher("transform",morpher);return this},x(x,relative){return this._queueNumber("x",x)},y(y){return this._queueNumber("y",y)},dx(x=0){return this._queueNumberDelta("x",x)},dy(y=0){return this._queueNumberDelta("y",y)},dmove(x,y){return this.dx(x).dy(y)},_queueNumberDelta(method,to){to=new SVGNumber(to);if(this._tryRetarget(method,to))return this;const morpher=new Morphable(this._stepper).to(to);let from=null;this.queue(function(){from=this.element()[method]();morpher.from(from);morpher.to(from+to)},function(pos){this.element()[method](morpher.at(pos));return morpher.done()},function(newTo){morpher.to(from+new SVGNumber(newTo))});this._rememberMorpher(method,morpher);return this},_queueObject(method,to){if(this._tryRetarget(method,to))return this;const morpher=new Morphable(this._stepper).to(to);this.queue(function(){morpher.from(this.element()[method]())},function(pos){this.element()[method](morpher.at(pos));return morpher.done()});this._rememberMorpher(method,morpher);return this},_queueNumber(method,value){return this._queueObject(method,new SVGNumber(value))},cx(x){return this._queueNumber("cx",x)},cy(y){return this._queueNumber("cy",y)},move(x,y){return this.x(x).y(y)},center(x,y){return this.cx(x).cy(y)},size(width,height){let box;if(!width||!height){box=this._element.bbox()}if(!width){width=box.width/box.height*height}if(!height){height=box.height/box.width*width}return this.width(width).height(height)},width(width){return this._queueNumber("width",width)},height(height){return this._queueNumber("height",height)},plot(a,b,c,d){if(arguments.length===4){return this.plot([a,b,c,d])}if(this._tryRetarget("plot",a))return this;const morpher=new Morphable(this._stepper).type(this._element.MorphArray).to(a);this.queue(function(){morpher.from(this._element.array())},function(pos){this._element.plot(morpher.at(pos));return morpher.done()});this._rememberMorpher("plot",morpher);return this},leading(value){return this._queueNumber("leading",value)},viewbox(x,y,width,height){return this._queueObject("viewbox",new Box(x,y,width,height))},update(o){if(typeof o!=="object"){return this.update({offset:arguments[0],color:arguments[1],opacity:arguments[2]})}if(o.opacity!=null)this.attr("stop-opacity",o.opacity);if(o.color!=null)this.attr("stop-color",o.color);if(o.offset!=null)this.attr("offset",o.offset);return this}});extend(Runner,{rx:rx,ry:ry,from:from,to:to});register(Runner,"Runner");class Svg extends Container{constructor(node,attrs=node){super(nodeOrNew("svg",node),attrs);this.namespace()}defs(){if(!this.isRoot())return this.root().defs();return adopt(this.node.querySelector("defs"))||this.put(new Defs)}isRoot(){return!this.node.parentNode||!(this.node.parentNode instanceof globals.window.SVGElement)&&this.node.parentNode.nodeName!=="#document-fragment"}namespace(){if(!this.isRoot())return this.root().namespace();return this.attr({xmlns:svg,version:"1.1"}).attr("xmlns:xlink",xlink,xmlns).attr("xmlns:svgjs",svgjs,xmlns)}removeNamespace(){return this.attr({xmlns:null,version:null}).attr("xmlns:xlink",null,xmlns).attr("xmlns:svgjs",null,xmlns)}root(){if(this.isRoot())return this;return super.root()}}registerMethods({Container:{nested:wrapWithAttrCheck(function(){return this.put(new Svg)})}});register(Svg,"Svg",true);class Symbol extends Container{constructor(node,attrs=node){super(nodeOrNew("symbol",node),attrs)}}registerMethods({Container:{symbol:wrapWithAttrCheck(function(){return this.put(new Symbol)})}});register(Symbol,"Symbol");function plain(text){if(this._build===false){this.clear()}this.node.appendChild(globals.document.createTextNode(text));return this}function length(){return this.node.getComputedTextLength()}function x$1(x,box=this.bbox()){if(x==null){return box.x}return this.attr("x",this.attr("x")+x-box.x)}function y$1(y,box=this.bbox()){if(y==null){return box.y}return this.attr("y",this.attr("y")+y-box.y)}function move$1(x,y,box=this.bbox()){return this.x(x,box).y(y,box)}function cx(x,box=this.bbox()){if(x==null){return box.cx}return this.attr("x",this.attr("x")+x-box.cx)}function cy(y,box=this.bbox()){if(y==null){return box.cy}return this.attr("y",this.attr("y")+y-box.cy)}function center(x,y,box=this.bbox()){return this.cx(x,box).cy(y,box)}function ax(x){return this.attr("x",x)}function ay(y){return this.attr("y",y)}function amove(x,y){return this.ax(x).ay(y)}function build(build){this._build=!!build;return this}var textable={__proto__:null,plain:plain,length:length,x:x$1,y:y$1,move:move$1,cx:cx,cy:cy,center:center,ax:ax,ay:ay,amove:amove,build:build};class Text extends Shape{constructor(node,attrs=node){super(nodeOrNew("text",node),attrs);this.dom.leading=new SVGNumber(1.3);this._rebuild=true;this._build=false}leading(value){if(value==null){return this.dom.leading}this.dom.leading=new SVGNumber(value);return this.rebuild()}rebuild(rebuild){if(typeof rebuild==="boolean"){this._rebuild=rebuild}if(this._rebuild){const self=this;let blankLineOffset=0;const leading=this.dom.leading;this.each(function(i){const fontSize=globals.window.getComputedStyle(this.node).getPropertyValue("font-size");const dy=leading*new SVGNumber(fontSize);if(this.dom.newLined){this.attr("x",self.attr("x"));if(this.text()==="\n"){blankLineOffset+=dy}else{this.attr("dy",i?dy+blankLineOffset:0);blankLineOffset=0}}});this.fire("rebuild")}return this}setData(o){this.dom=o;this.dom.leading=new SVGNumber(o.leading||1.3);return this}text(text){if(text===undefined){const children=this.node.childNodes;let firstLine=0;text="";for(let i=0,len=children.length;i{let bbox;try{bbox=child.bbox()}catch(e){return}const m=new Matrix(child);const matrix=m.translate(dx,dy).transform(m.inverse());const p=new Point(bbox.x,bbox.y).transform(matrix);child.move(p.x,p.y)});return this}function dx(dx){return this.dmove(dx,0)}function dy(dy){return this.dmove(0,dy)}function height(height,box=this.bbox()){if(height==null)return box.height;return this.size(box.width,height,box)}function move(x=0,y=0,box=this.bbox()){const dx=x-box.x;const dy=y-box.y;return this.dmove(dx,dy)}function size(width,height,box=this.bbox()){const p=proportionalSize(this,width,height,box);const scaleX=p.width/box.width;const scaleY=p.height/box.height;this.children().forEach((child,i)=>{const o=new Point(box).transform(new Matrix(child).inverse());child.scale(scaleX,scaleY,o.x,o.y)});return this}function width(width,box=this.bbox()){if(width==null)return box.width;return this.size(width,box.height,box)}function x(x,box=this.bbox()){if(x==null)return box.x;return this.move(x,box.y,box)}function y(y,box=this.bbox()){if(y==null)return box.y;return this.move(box.x,y,box)}var containerGeometry={__proto__:null,dmove:dmove,dx:dx,dy:dy,height:height,move:move,size:size,width:width,x:x,y:y};class G extends Container{constructor(node,attrs=node){super(nodeOrNew("g",node),attrs)}}extend(G,containerGeometry);registerMethods({Container:{group:wrapWithAttrCheck(function(){return this.put(new G)})}});register(G,"G");class A extends Container{constructor(node,attrs=node){super(nodeOrNew("a",node),attrs)}target(target){return this.attr("target",target)}to(url){return this.attr("href",url,xlink)}}extend(A,containerGeometry);registerMethods({Container:{link:wrapWithAttrCheck(function(url){return this.put(new A).to(url)})},Element:{unlink(){const link=this.linker();if(!link)return this;const parent=link.parent();if(!parent){return this.remove()}const index=parent.index(link);parent.add(this,index);link.remove();return this},linkTo(url){let link=this.linker();if(!link){link=new A;this.wrap(link)}if(typeof url==="function"){url.call(link,link)}else{link.to(url)}return this},linker(){const link=this.parent();if(link&&link.node.nodeName.toLowerCase()==="a"){return link}return null}}});register(A,"A");class Mask extends Container{constructor(node,attrs=node){super(nodeOrNew("mask",node),attrs)}remove(){this.targets().forEach(function(el){el.unmask()});return super.remove()}targets(){return baseFind('svg [mask*="'+this.id()+'"]')}}registerMethods({Container:{mask:wrapWithAttrCheck(function(){return this.defs().put(new Mask)})},Element:{masker(){return this.reference("mask")},maskWith(element){const masker=element instanceof Mask?element:this.parent().mask().add(element);return this.attr("mask",'url("#'+masker.id()+'")')},unmask(){return this.attr("mask",null)}}});register(Mask,"Mask");class Stop extends Element{constructor(node,attrs=node){super(nodeOrNew("stop",node),attrs)}update(o){if(typeof o==="number"||o instanceof SVGNumber){o={offset:arguments[0],color:arguments[1],opacity:arguments[2]}}if(o.opacity!=null)this.attr("stop-opacity",o.opacity);if(o.color!=null)this.attr("stop-color",o.color);if(o.offset!=null)this.attr("offset",new SVGNumber(o.offset));return this}}registerMethods({Gradient:{stop:function(offset,color,opacity){return this.put(new Stop).update(offset,color,opacity)}}});register(Stop,"Stop");function cssRule(selector,rule){if(!selector)return"";if(!rule)return selector;let ret=selector+"{";for(const i in rule){ret+=unCamelCase(i)+":"+rule[i]+";"}ret+="}";return ret}class Style extends Element{constructor(node,attrs=node){super(nodeOrNew("style",node),attrs)}addText(w=""){this.node.textContent+=w;return this}font(name,src,params={}){return this.rule("@font-face",{fontFamily:name,src:src,...params})}rule(selector,obj){return this.addText(cssRule(selector,obj))}}registerMethods("Dom",{style(selector,obj){return this.put(new Style).rule(selector,obj)},fontface(name,src,params){return this.put(new Style).font(name,src,params)}});register(Style,"Style");class TextPath extends Text{constructor(node,attrs=node){super(nodeOrNew("textPath",node),attrs)}array(){const track=this.track();return track?track.array():null}plot(d){const track=this.track();let pathArray=null;if(track){pathArray=track.plot(d)}return d==null?pathArray:this}track(){return this.reference("href")}}registerMethods({Container:{textPath:wrapWithAttrCheck(function(text,path){if(!(text instanceof Text)){text=this.text(text)}return text.path(path)})},Text:{path:wrapWithAttrCheck(function(track,importNodes=true){const textPath=new TextPath;if(!(track instanceof Path)){track=this.defs().path(track)}textPath.attr("href","#"+track,xlink);let node;if(importNodes){while(node=this.node.firstChild){textPath.node.appendChild(node)}}return this.put(textPath)}),textPath(){return this.findOne("textPath")}},Path:{text:wrapWithAttrCheck(function(text){if(!(text instanceof Text)){text=(new Text).addTo(this.parent()).text(text)}return text.path(this)}),targets(){return baseFind("svg textPath").filter(node=>{return(node.attr("href")||"").includes(this.id())})}}});TextPath.prototype.MorphArray=PathArray;register(TextPath,"TextPath");class Use extends Shape{constructor(node,attrs=node){super(nodeOrNew("use",node),attrs)}use(element,file){return this.attr("href",(file||"")+"#"+element,xlink)}}registerMethods({Container:{use:wrapWithAttrCheck(function(element,file){return this.put(new Use).use(element,file)})}});register(Use,"Use");const SVG$1=makeInstance;extend([Svg,Symbol,Image,Pattern,Marker],getMethodsFor("viewbox"));extend([Line,Polyline,Polygon,Path],getMethodsFor("marker"));extend(Text,getMethodsFor("Text"));extend(Path,getMethodsFor("Path"));extend(Defs,getMethodsFor("Defs"));extend([Text,Tspan],getMethodsFor("Tspan"));extend([Rect,Ellipse,Gradient,Runner],getMethodsFor("radius"));extend(EventTarget,getMethodsFor("EventTarget"));extend(Dom,getMethodsFor("Dom"));extend(Element,getMethodsFor("Element"));extend(Shape,getMethodsFor("Shape"));extend([Container,Fragment],getMethodsFor("Container"));extend(Gradient,getMethodsFor("Gradient"));extend(Runner,getMethodsFor("Runner"));List.extend(getMethodNames());registerMorphableType([SVGNumber,Color,Box,Matrix,SVGArray,PointArray,PathArray,Point]);makeMorphable();var svgMembers={__proto__:null,Morphable:Morphable,registerMorphableType:registerMorphableType,makeMorphable:makeMorphable,TransformBag:TransformBag,ObjectBag:ObjectBag,NonMorphable:NonMorphable,defaults:defaults,utils:utils,namespaces:namespaces,regex:regex,SVG:SVG$1,parser:parser,find:baseFind,getWindow:getWindow,registerWindow:registerWindow,restoreWindow:restoreWindow,saveWindow:saveWindow,withWindow:withWindow,Animator:Animator,Controller:Controller,Ease:Ease,PID:PID,Spring:Spring,easing:easing,Queue:Queue,Runner:Runner,Timeline:Timeline,Array:SVGArray,Box:Box,Color:Color,EventTarget:EventTarget,Matrix:Matrix,Number:SVGNumber,PathArray:PathArray,Point:Point,PointArray:PointArray,List:List,Circle:Circle,ClipPath:ClipPath,Container:Container,Defs:Defs,Dom:Dom,Element:Element,Ellipse:Ellipse,ForeignObject:ForeignObject,Fragment:Fragment,Gradient:Gradient,G:G,A:A,Image:Image,Line:Line,Marker:Marker,Mask:Mask,Path:Path,Pattern:Pattern,Polygon:Polygon,Polyline:Polyline,Rect:Rect,Shape:Shape,Stop:Stop,Style:Style,Svg:Svg,Symbol:Symbol,Text:Text,TextPath:TextPath,Tspan:Tspan,Use:Use,windowEvents:windowEvents,getEvents:getEvents,getEventTarget:getEventTarget,clearEvents:clearEvents,on:on,off:off,dispatch:dispatch,root:root,create:create,makeInstance:makeInstance,nodeOrNew:nodeOrNew,adopt:adopt,mockAdopt:mockAdopt,register:register,getClass:getClass,eid:eid,assignNewId:assignNewId,extend:extend,wrapWithAttrCheck:wrapWithAttrCheck};function SVG(element,isHTML){return makeInstance(element,isHTML)}Object.assign(SVG,svgMembers);return SVG}(); +/*! + @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;function show(){if(window.innerHeight){windowWidth=window.innerWidth;windowHeight=window.innerHeight}else if(document.documentElement.clientWidth){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight}if(!windowWidth||!windowHeight){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/zoomSteps);zoomOutFactor=1/zoomInFactor;var g=svgDoc.getElementById("viewport");try{var bb=g.getBBox();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){}}function init(evt){svgDoc=evt.target.ownerDocument;try{if(top.window&&top.window.registerShow){top.window.registerShow(sectionId,show)}}catch(e){}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)}else{window.addEventListener("DOMMouseScroll",handleMouseWheel,false)}}}window.onresize=function(){if(svgDoc){show()}};function getEventPoint(evt){var p=root.createSVGPoint();p.x=evt.clientX;p.y=evt.clientY;return p}function setCTM(element,matrix){var s="matrix("+matrix.a+","+matrix.b+","+matrix.c+","+matrix.d+","+matrix.e+","+matrix.f+")";element.setAttribute("transform",s)}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("");d.close()}catch(e){alert("Failed to open popup window needed for printing!\n"+e.message)}}function highlightEdges(){var elems=document.getElementsByTagName("g");if(elems){for(var i=0;i g");function findEnclosingG(domEl){let curEl=domEl;while(curEl.nodeName!="g"||curEl.id.substr(0,4)!="Node"){curEl=curEl.parentElement}return curEl}function onMouseOverElem(domEl){let e=SVG(findEnclosingG(domEl.target));walk(s,e=>{if(SVG(e)!=s)SVG(e).attr("data-mouse-over-selected","false")});walk(e,e=>SVG(e).attr("data-mouse-over-selected","true"));let{nodes,edges}=getEdgesAndDistance1Nodes(SVG(e),s);for(let node of nodes){walk(node,e=>SVG(e).attr("data-mouse-over-selected","true"))}for(let edge of edges){walk(edge,e=>SVG(e).attr("data-mouse-over-selected","true"))}}function onMouseOutElem(domEl){let e=SVG(findEnclosingG(domEl.target));walk(s,e=>e.attr("data-mouse-over-selected",null))}let gs=s.find("g[id^=Node]");for(let g of gs){g.on("mouseover",onMouseOverElem);g.on("mouseout",onMouseOutElem)}} diff --git a/docs/html/sync_off.png b/docs/html/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/docs/html/sync_off.png differ diff --git a/docs/html/sync_on.png b/docs/html/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/docs/html/sync_on.png differ diff --git a/docs/html/tab_a.png b/docs/html/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/docs/html/tab_a.png differ diff --git a/docs/html/tab_ad.png b/docs/html/tab_ad.png new file mode 100644 index 0000000..e34850a Binary files /dev/null and b/docs/html/tab_ad.png differ diff --git a/docs/html/tab_b.png b/docs/html/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/docs/html/tab_b.png differ diff --git a/docs/html/tab_bd.png b/docs/html/tab_bd.png new file mode 100644 index 0000000..91c2524 Binary files /dev/null and b/docs/html/tab_bd.png differ diff --git a/docs/html/tab_h.png b/docs/html/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/docs/html/tab_h.png differ diff --git a/docs/html/tab_hd.png b/docs/html/tab_hd.png new file mode 100644 index 0000000..2489273 Binary files /dev/null and b/docs/html/tab_hd.png differ diff --git a/docs/html/tab_s.png b/docs/html/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/docs/html/tab_s.png differ diff --git a/docs/html/tab_sd.png b/docs/html/tab_sd.png new file mode 100644 index 0000000..757a565 Binary files /dev/null and b/docs/html/tab_sd.png differ diff --git a/docs/html/tabs.css b/docs/html/tabs.css new file mode 100644 index 0000000..edbb424 --- /dev/null +++ b/docs/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#364D7C;-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:url('tab_b.png')}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255, 255, 255, 0.9);color:#283A5D;outline:0}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255, 255, 255, 0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:white}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url('tab_b.png');line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url('tab_s.png');background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent white transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:white;-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555555;background-image:none;border:0 !important}.sm-dox ul a:hover{background-image:url('tab_a.png');background-repeat:repeat-x;color:white;text-shadow:0px 1px 1px rgba(0, 0, 0, 1.0)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:white;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url('tab_b.png')}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:white}} diff --git a/docs/html/test__commit__commands_8py.html b/docs/html/test__commit__commands_8py.html new file mode 100644 index 0000000..12128c6 --- /dev/null +++ b/docs/html/test__commit__commands_8py.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/tests/test_commit_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    test_commit_commands.py File Reference
    +
    +
    + + + + +

    +Classes

    class  tests.test_commit_commands.TestCommitCommands
     
    + + + + + +

    +Namespaces

    namespace  tests
     
    namespace  tests.test_commit_commands
     
    +
    +
    + + + + + diff --git a/docs/html/test__commit__commands_8py.js b/docs/html/test__commit__commands_8py.js new file mode 100644 index 0000000..1aa1dc7 --- /dev/null +++ b/docs/html/test__commit__commands_8py.js @@ -0,0 +1,4 @@ +var test__commit__commands_8py = +[ + [ "tests.test_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/test__config__commands_8py.html b/docs/html/test__config__commands_8py.html new file mode 100644 index 0000000..7f565fe --- /dev/null +++ b/docs/html/test__config__commands_8py.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/tests/test_config_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    test_config_commands.py File Reference
    +
    +
    + + + + +

    +Classes

    class  tests.test_config_commands.TestConfigCommands
     
    + + + + + +

    +Namespaces

    namespace  tests
     
    namespace  tests.test_config_commands
     
    +
    +
    + + + + + diff --git a/docs/html/test__config__commands_8py.js b/docs/html/test__config__commands_8py.js new file mode 100644 index 0000000..2eebb0e --- /dev/null +++ b/docs/html/test__config__commands_8py.js @@ -0,0 +1,4 @@ +var test__config__commands_8py = +[ + [ "tests.test_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/test__doc__commands_8py.html b/docs/html/test__doc__commands_8py.html new file mode 100644 index 0000000..b06792b --- /dev/null +++ b/docs/html/test__doc__commands_8py.html @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/tests/test_doc_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    test_doc_commands.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

    namespace  tests
     
    namespace  tests.test_doc_commands
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

     tests.test_doc_commands.test_generate_doc_no_location (mock_getcwd, mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
     tests.test_doc_commands.test_generate_doc_file_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
     tests.test_doc_commands.test_generate_doc_folder_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
     tests.test_doc_commands.test_generate_doc_error_handling (mock_api_client, mock_git_analyzer, mock_exit)
     
     tests.test_doc_commands.test_setup_docgen_parser ()
     
     tests.test_doc_commands.test_handle_docgen_install_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
     tests.test_doc_commands.test_handle_docgen_uninstall_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
     tests.test_doc_commands.test_handle_docgen_generate (mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
     tests.test_doc_commands.test_handle_docgen_no_token (mock_exit, mock_get_token)
     
     tests.test_doc_commands.test_generate_doc_with_file_exception (mock_api_client, mock_getcwd)
     
     tests.test_doc_commands.test_generate_doc_with_folder_exception (mock_api_client, mock_getcwd)
     
    +
    +
    + + + + + diff --git a/docs/html/test__doc__commands_8py.js b/docs/html/test__doc__commands_8py.js new file mode 100644 index 0000000..c68cfaf --- /dev/null +++ b/docs/html/test__doc__commands_8py.js @@ -0,0 +1,14 @@ +var test__doc__commands_8py = +[ + [ "tests.test_doc_commands.test_generate_doc_error_handling", "namespacetests_1_1test__doc__commands.html#a5fe1bfd9eacf8775c20f9a883fcc10a6", null ], + [ "tests.test_doc_commands.test_generate_doc_file_location", "namespacetests_1_1test__doc__commands.html#ac12eb3d9839af7f9cfc2da5150ac8a16", null ], + [ "tests.test_doc_commands.test_generate_doc_folder_location", "namespacetests_1_1test__doc__commands.html#a161b89af34978ec9f4a59a37f374125d", null ], + [ "tests.test_doc_commands.test_generate_doc_no_location", "namespacetests_1_1test__doc__commands.html#a709237fc294b8309acdaddd29369f15b", null ], + [ "tests.test_doc_commands.test_generate_doc_with_file_exception", "namespacetests_1_1test__doc__commands.html#a28ffc568a6338124fce4eff50a839f68", null ], + [ "tests.test_doc_commands.test_generate_doc_with_folder_exception", "namespacetests_1_1test__doc__commands.html#a8f073a1ebba4bf58fa0875f01b372fee", null ], + [ "tests.test_doc_commands.test_handle_docgen_generate", "namespacetests_1_1test__doc__commands.html#a8adc7be503bd092e118f9454fffbd0d5", null ], + [ "tests.test_doc_commands.test_handle_docgen_install_hook", "namespacetests_1_1test__doc__commands.html#a278af7079be277ff3eab96e7e8c038b9", null ], + [ "tests.test_doc_commands.test_handle_docgen_no_token", "namespacetests_1_1test__doc__commands.html#a27e497ab63419dcd4ce066864882aa0c", null ], + [ "tests.test_doc_commands.test_handle_docgen_uninstall_hook", "namespacetests_1_1test__doc__commands.html#abe2161b459ab5d033d6ba997323c218b", null ], + [ "tests.test_doc_commands.test_setup_docgen_parser", "namespacetests_1_1test__doc__commands.html#a15204cf3fb17527d46e54316576f2042", null ] +]; \ No newline at end of file diff --git a/docs/html/test__web__config_8py.html b/docs/html/test__web__config_8py.html new file mode 100644 index 0000000..a94ee0b --- /dev/null +++ b/docs/html/test__web__config_8py.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/tests/test_web_config.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    test_web_config.py File Reference
    +
    +
    + + + + +

    +Classes

    class  tests.test_web_config.TestWebConfig
     
    + + + + + +

    +Namespaces

    namespace  tests
     
    namespace  tests.test_web_config
     
    +
    +
    + + + + + diff --git a/docs/html/test__web__config_8py.js b/docs/html/test__web__config_8py.js new file mode 100644 index 0000000..d691683 --- /dev/null +++ b/docs/html/test__web__config_8py.js @@ -0,0 +1,4 @@ +var test__web__config_8py = +[ + [ "tests.test_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/tests_2____init_____8py.html b/docs/html/tests_2____init_____8py.html new file mode 100644 index 0000000..752c1e5 --- /dev/null +++ b/docs/html/tests_2____init_____8py.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/tests/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    __init__.py File Reference
    +
    +
    + + + + +

    +Namespaces

    namespace  tests
     
    +
    +
    + + + + + diff --git a/docs/html/toggle-alternative-theme.js b/docs/html/toggle-alternative-theme.js new file mode 100644 index 0000000..dc822e1 --- /dev/null +++ b/docs/html/toggle-alternative-theme.js @@ -0,0 +1,11 @@ +let original_theme_active = true; + +function toggle_alternative_theme() { + if(original_theme_active) { + document.documentElement.classList.add("alternative") + original_theme_active = false; + } else { + document.documentElement.classList.remove("alternative") + original_theme_active = true; + } +} \ No newline at end of file diff --git a/docs/html/ui__utils_8py.html b/docs/html/ui__utils_8py.html new file mode 100644 index 0000000..df37193 --- /dev/null +++ b/docs/html/ui__utils_8py.html @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/ui_utils.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    ui_utils.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

    namespace  penify_hook
     
    namespace  penify_hook.ui_utils
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

     penify_hook.ui_utils.format_info (message)
     
     penify_hook.ui_utils.format_success (message)
     
     penify_hook.ui_utils.format_warning (message)
     
     penify_hook.ui_utils.format_error (message)
     
     penify_hook.ui_utils.format_highlight (message)
     
     penify_hook.ui_utils.format_file_path (file_path)
     
     penify_hook.ui_utils.print_info (message)
     
     penify_hook.ui_utils.print_success (message)
     
     penify_hook.ui_utils.print_warning (message)
     
     penify_hook.ui_utils.print_error (message)
     
     penify_hook.ui_utils.print_processing (file_path)
     
     penify_hook.ui_utils.print_status (status, message)
     
     penify_hook.ui_utils.create_progress_bar (total, desc="Processing", unit="item")
     
     penify_hook.ui_utils.create_stage_progress_bar (stages, desc="Processing")
     
     penify_hook.ui_utils.update_stage (pbar, stage_name)
     
    + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

     penify_hook.ui_utils.autoreset
     
     penify_hook.ui_utils.INFO_COLOR = Fore.CYAN
     
     penify_hook.ui_utils.SUCCESS_COLOR = Fore.GREEN
     
     penify_hook.ui_utils.WARNING_COLOR = Fore.YELLOW
     
     penify_hook.ui_utils.ERROR_COLOR = Fore.RED
     
     penify_hook.ui_utils.HIGHLIGHT_COLOR = Fore.BLUE
     
     penify_hook.ui_utils.NEUTRAL_COLOR = Fore.WHITE
     
    str penify_hook.ui_utils.SUCCESS_SYMBOL = "✓"
     
    str penify_hook.ui_utils.WARNING_SYMBOL = "○"
     
    str penify_hook.ui_utils.ERROR_SYMBOL = "✗"
     
    str penify_hook.ui_utils.PROCESSING_SYMBOL = "⟳"
     
    +
    +
    + + + + + diff --git a/docs/html/ui__utils_8py.js b/docs/html/ui__utils_8py.js new file mode 100644 index 0000000..12b6017 --- /dev/null +++ b/docs/html/ui__utils_8py.js @@ -0,0 +1,29 @@ +var ui__utils_8py = +[ + [ "penify_hook.ui_utils.create_progress_bar", "namespacepenify__hook_1_1ui__utils.html#aae4493a3c0c62d3d3cec0e4c96f4fca5", null ], + [ "penify_hook.ui_utils.create_stage_progress_bar", "namespacepenify__hook_1_1ui__utils.html#a583e3b1ec7b75f08653a9f6cfb897405", null ], + [ "penify_hook.ui_utils.format_error", "namespacepenify__hook_1_1ui__utils.html#acee226ee36d43076ed54dade970dc0ca", null ], + [ "penify_hook.ui_utils.format_file_path", "namespacepenify__hook_1_1ui__utils.html#a9de53cca2e23a993884797e523337e41", null ], + [ "penify_hook.ui_utils.format_highlight", "namespacepenify__hook_1_1ui__utils.html#a60f4c14003953f6e4b51ce5512c728d7", null ], + [ "penify_hook.ui_utils.format_info", "namespacepenify__hook_1_1ui__utils.html#aa0c6826668b45c778d864f5ae741e1b2", null ], + [ "penify_hook.ui_utils.format_success", "namespacepenify__hook_1_1ui__utils.html#a56ca95113c53214d848659a52a099f5e", null ], + [ "penify_hook.ui_utils.format_warning", "namespacepenify__hook_1_1ui__utils.html#a81190fd240641e2c83f6a047490e7797", null ], + [ "penify_hook.ui_utils.print_error", "namespacepenify__hook_1_1ui__utils.html#a35b79a7837fd654ad8f0cdb4e6e87598", null ], + [ "penify_hook.ui_utils.print_info", "namespacepenify__hook_1_1ui__utils.html#a3cee29e999fa3c812725cb98f24aae4c", null ], + [ "penify_hook.ui_utils.print_processing", "namespacepenify__hook_1_1ui__utils.html#ad4f7cab36c3b1f09507654b119d45bfb", null ], + [ "penify_hook.ui_utils.print_status", "namespacepenify__hook_1_1ui__utils.html#a65594c876dabfceb83d9b0ce9d0d65e7", null ], + [ "penify_hook.ui_utils.print_success", "namespacepenify__hook_1_1ui__utils.html#a9bff909b9e155a344597f69a0530754b", null ], + [ "penify_hook.ui_utils.print_warning", "namespacepenify__hook_1_1ui__utils.html#a73f112b02d36b74c88a3ce3ed1458b45", null ], + [ "penify_hook.ui_utils.update_stage", "namespacepenify__hook_1_1ui__utils.html#ad8be9c5a2708c211a651e2b3dfb54bcd", null ], + [ "penify_hook.ui_utils.autoreset", "namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71", null ], + [ "penify_hook.ui_utils.ERROR_COLOR", "namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe", null ], + [ "penify_hook.ui_utils.ERROR_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#ae941d124e4d3aa294314d73fb47c6432", null ], + [ "penify_hook.ui_utils.HIGHLIGHT_COLOR", "namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc", null ], + [ "penify_hook.ui_utils.INFO_COLOR", "namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c", null ], + [ "penify_hook.ui_utils.NEUTRAL_COLOR", "namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5", null ], + [ "penify_hook.ui_utils.PROCESSING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#ad7cc8eaf7a660ff195f4366d792ab155", null ], + [ "penify_hook.ui_utils.SUCCESS_COLOR", "namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4", null ], + [ "penify_hook.ui_utils.SUCCESS_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a7d3cc992aaeb0a01c536c9a48e801ff3", null ], + [ "penify_hook.ui_utils.WARNING_COLOR", "namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff", null ], + [ "penify_hook.ui_utils.WARNING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a9ee7a42eeca5b12429cb97bf89007be8", null ] +]; \ No newline at end of file diff --git a/docs/html/utils_8py.html b/docs/html/utils_8py.html new file mode 100644 index 0000000..8142e74 --- /dev/null +++ b/docs/html/utils_8py.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /app/doc_state/github_reposRepoArchDocGenContext/SingularityX-ai/penify-cli/penify_hook/utils.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    utils.py File Reference
    +
    +
    + + + + +

    +Classes

    class  penify_hook.utils.GitRepoNotFoundError
     
    + + + + + +

    +Namespaces

    namespace  penify_hook
     
    namespace  penify_hook.utils
     
    + + + + + + + +

    +Functions

     penify_hook.utils.get_repo_details (Repo repo)
     
     penify_hook.utils.recursive_search_git_folder (folder_path)
     
     penify_hook.utils.find_git_parent (path)
     
    + + + +

    +Variables

     penify_hook.utils.logger = logging.getLogger(__name__)
     
    +
    +
    + + + + + diff --git a/docs/html/utils_8py.js b/docs/html/utils_8py.js new file mode 100644 index 0000000..dd69e0e --- /dev/null +++ b/docs/html/utils_8py.js @@ -0,0 +1,8 @@ +var utils_8py = +[ + [ "penify_hook.utils.GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ], + [ "penify_hook.utils.find_git_parent", "namespacepenify__hook_1_1utils.html#a1c80f8c46a793d58ee6fd8674d1de1a2", null ], + [ "penify_hook.utils.get_repo_details", "namespacepenify__hook_1_1utils.html#ab8d9a41a4016850afe6ff086021aaf19", null ], + [ "penify_hook.utils.recursive_search_git_folder", "namespacepenify__hook_1_1utils.html#a9d723ca510c90ac0390819dcae3a800a", null ], + [ "penify_hook.utils.logger", "namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01", null ] +]; \ No newline at end of file diff --git a/docs/penify-cli-SingularityX-ai-g.tar.gz b/docs/penify-cli-SingularityX-ai-g.tar.gz new file mode 100644 index 0000000..34f3b06 Binary files /dev/null and b/docs/penify-cli-SingularityX-ai-g.tar.gz differ