From e44fc3dc96bf6d05f83254e3963df8d156a45ba1 Mon Sep 17 00:00:00 2001 From: "penify-dev[bot]" <146478655+penify-dev[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 04:03:12 +0000 Subject: [PATCH] Add architecture documentation --- docs/html/README_8md.html | 130 + docs/html/annotated.html | 160 + docs/html/annotated_dup.js | 44 + docs/html/api__client_8py.html | 146 + docs/html/api__client_8py.js | 4 + docs/html/auth__commands_8py.html | 150 + docs/html/auth__commands_8py.js | 5 + docs/html/base__analyzer_8py.html | 146 + docs/html/base__analyzer_8py.js | 4 + docs/html/bc_s.png | Bin 0 -> 676 bytes docs/html/bdwn.png | Bin 0 -> 147 bytes docs/html/classException.html | 145 + docs/html/classException__coll__graph.map | 3 + docs/html/classException__coll__graph.md5 | 1 + docs/html/classException__coll__graph.svg | 26 + docs/html/classException__inherit__graph.map | 4 + docs/html/classException__inherit__graph.md5 | 1 + docs/html/classException__inherit__graph.svg | 46 + docs/html/classes.html | 159 + ...k_1_1api__client_1_1APIClient-members.html | 141 + ...ify__hook_1_1api__client_1_1APIClient.html | 468 +++ ...enify__hook_1_1api__client_1_1APIClient.js | 12 + ...1api__client_1_1APIClient__coll__graph.map | 3 + ...1api__client_1_1APIClient__coll__graph.md5 | 1 + ...1api__client_1_1APIClient__coll__graph.svg | 36 + ...f74798e7d428b4e2f20095287eb2ce_icgraph.map | 4 + ...f74798e7d428b4e2f20095287eb2ce_icgraph.md5 | 1 + ...f74798e7d428b4e2f20095287eb2ce_icgraph.svg | 39 + ...0ada470b897935f9fb372cd0e7e51e3_cgraph.map | 6 + ...0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 | 1 + ...0ada470b897935f9fb372cd0e7e51e3_cgraph.svg | 158 + ...470b897935f9fb372cd0e7e51e3_cgraph_org.svg | 70 + ...ase__analyzer_1_1BaseAnalyzer-members.html | 140 + ...ook_1_1base__analyzer_1_1BaseAnalyzer.html | 308 ++ ..._hook_1_1base__analyzer_1_1BaseAnalyzer.js | 11 + ..._analyzer_1_1BaseAnalyzer__coll__graph.map | 3 + ..._analyzer_1_1BaseAnalyzer__coll__graph.md5 | 1 + ..._analyzer_1_1BaseAnalyzer__coll__graph.svg | 33 + ...alyzer_1_1BaseAnalyzer__inherit__graph.map | 7 + ...alyzer_1_1BaseAnalyzer__inherit__graph.md5 | 1 + ...alyzer_1_1BaseAnalyzer__inherit__graph.svg | 215 ++ ...er_1_1BaseAnalyzer__inherit__graph_org.svg | 127 + ..._analyzer_1_1CommitDocGenHook-members.html | 138 + ...1commit__analyzer_1_1CommitDocGenHook.html | 486 +++ ...1_1commit__analyzer_1_1CommitDocGenHook.js | 9 + ...lyzer_1_1CommitDocGenHook__coll__graph.map | 4 + ...lyzer_1_1CommitDocGenHook__coll__graph.md5 | 1 + ...lyzer_1_1CommitDocGenHook__coll__graph.svg | 57 + ...er_1_1CommitDocGenHook__inherit__graph.map | 4 + ...er_1_1CommitDocGenHook__inherit__graph.md5 | 1 + ...er_1_1CommitDocGenHook__inherit__graph.svg | 57 + ...370a03f7ed9175ef6f81e931a105ea9_cgraph.map | 12 + ...370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 | 1 + ...370a03f7ed9175ef6f81e931a105ea9_cgraph.svg | 268 ++ ...03f7ed9175ef6f81e931a105ea9_cgraph_org.svg | 180 ++ ...496194276441fa2eb2fa014eaab9a37_cgraph.map | 5 + ...496194276441fa2eb2fa014eaab9a37_cgraph.md5 | 1 + ...496194276441fa2eb2fa014eaab9a37_cgraph.svg | 142 + ...94276441fa2eb2fa014eaab9a37_cgraph_org.svg | 54 + ...96194276441fa2eb2fa014eaab9a37_icgraph.map | 4 + ...96194276441fa2eb2fa014eaab9a37_icgraph.md5 | 1 + ...96194276441fa2eb2fa014eaab9a37_icgraph.svg | 40 + ...99c5cbc852a7ec3b412ccb43c274ca_icgraph.map | 4 + ...99c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 | 1 + ...99c5cbc852a7ec3b412ccb43c274ca_icgraph.svg | 40 + ...da13cc121d96342476ccf72b63a007f_cgraph.map | 7 + ...da13cc121d96342476ccf72b63a007f_cgraph.md5 | 1 + ...da13cc121d96342476ccf72b63a007f_cgraph.svg | 174 ++ ...cc121d96342476ccf72b63a007f_cgraph_org.svg | 86 + ...a13cc121d96342476ccf72b63a007f_icgraph.map | 4 + ...a13cc121d96342476ccf72b63a007f_icgraph.md5 | 1 + ...a13cc121d96342476ccf72b63a007f_icgraph.svg | 40 + ...127d86729e226d74dbeb095b008db3e_cgraph.map | 3 + ...127d86729e226d74dbeb095b008db3e_cgraph.md5 | 1 + ...127d86729e226d74dbeb095b008db3e_cgraph.svg | 30 + ...27d86729e226d74dbeb095b008db3e_icgraph.map | 3 + ...27d86729e226d74dbeb095b008db3e_icgraph.md5 | 1 + ...27d86729e226d74dbeb095b008db3e_icgraph.svg | 30 + ...alyzer_1_1FileAnalyzerGenHook-members.html | 137 + ...file__analyzer_1_1FileAnalyzerGenHook.html | 362 +++ ..._1file__analyzer_1_1FileAnalyzerGenHook.js | 8 + ...er_1_1FileAnalyzerGenHook__coll__graph.map | 4 + ...er_1_1FileAnalyzerGenHook__coll__graph.md5 | 1 + ...er_1_1FileAnalyzerGenHook__coll__graph.svg | 56 + ...1_1FileAnalyzerGenHook__inherit__graph.map | 4 + ...1_1FileAnalyzerGenHook__inherit__graph.md5 | 1 + ...1_1FileAnalyzerGenHook__inherit__graph.svg | 56 + ...cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map | 6 + ...cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 | 1 + ...cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg | 159 + ...22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg | 71 + ...c6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map | 5 + ...c6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 | 1 + ...c6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg | 55 + ...f4dffbc432fac3e259d957dd1e187f1_cgraph.map | 14 + ...f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 | 1 + ...f4dffbc432fac3e259d957dd1e187f1_cgraph.svg | 292 ++ ...fbc432fac3e259d957dd1e187f1_cgraph_org.svg | 204 ++ ...ab39391dfb7686f2a2d21a702dd3073_cgraph.map | 4 + ...ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 | 1 + ...ab39391dfb7686f2a2d21a702dd3073_cgraph.svg | 40 + ...yzer_1_1FolderAnalyzerGenHook-members.html | 136 + ...er__analyzer_1_1FolderAnalyzerGenHook.html | 301 ++ ...lder__analyzer_1_1FolderAnalyzerGenHook.js | 7 + ..._1_1FolderAnalyzerGenHook__coll__graph.map | 4 + ..._1_1FolderAnalyzerGenHook__coll__graph.md5 | 1 + ..._1_1FolderAnalyzerGenHook__coll__graph.svg | 55 + ...1FolderAnalyzerGenHook__inherit__graph.map | 4 + ...1FolderAnalyzerGenHook__inherit__graph.md5 | 1 + ...1FolderAnalyzerGenHook__inherit__graph.svg | 55 + ...b845318fc7ac3b607daf26378e19ec_icgraph.map | 4 + ...b845318fc7ac3b607daf26378e19ec_icgraph.md5 | 1 + ...b845318fc7ac3b607daf26378e19ec_icgraph.svg | 41 + ...d189d1b8c773bf710a899eb21fd76cc_cgraph.map | 4 + ...d189d1b8c773bf710a899eb21fd76cc_cgraph.md5 | 1 + ...d189d1b8c773bf710a899eb21fd76cc_cgraph.svg | 41 + ...it__analyzer_1_1GitDocGenHook-members.html | 137 + ...ook_1_1git__analyzer_1_1GitDocGenHook.html | 385 +++ ..._hook_1_1git__analyzer_1_1GitDocGenHook.js | 8 + ...analyzer_1_1GitDocGenHook__coll__graph.map | 4 + ...analyzer_1_1GitDocGenHook__coll__graph.md5 | 1 + ...analyzer_1_1GitDocGenHook__coll__graph.svg | 58 + ...lyzer_1_1GitDocGenHook__inherit__graph.map | 4 + ...lyzer_1_1GitDocGenHook__inherit__graph.md5 | 1 + ...lyzer_1_1GitDocGenHook__inherit__graph.svg | 58 + ...5313caa22b173ce75638f0db08eeb85_cgraph.map | 4 + ...5313caa22b173ce75638f0db08eeb85_cgraph.md5 | 1 + ...5313caa22b173ce75638f0db08eeb85_cgraph.svg | 39 + ...313caa22b173ce75638f0db08eeb85_icgraph.map | 5 + ...313caa22b173ce75638f0db08eeb85_icgraph.md5 | 1 + ...313caa22b173ce75638f0db08eeb85_icgraph.svg | 55 + ...549766100e91eb94b5f1a1d34bf481_icgraph.map | 4 + ...549766100e91eb94b5f1a1d34bf481_icgraph.md5 | 1 + ...549766100e91eb94b5f1a1d34bf481_icgraph.svg | 40 + ...beba14e92d717391a74bb70b1fab0ae_cgraph.map | 18 + ...beba14e92d717391a74bb70b1fab0ae_cgraph.md5 | 1 + ...beba14e92d717391a74bb70b1fab0ae_cgraph.svg | 356 +++ ...14e92d717391a74bb70b1fab0ae_cgraph_org.svg | 268 ++ ...2275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map | 3 + ...2275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 | 1 + ...2275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg | 29 + ...275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map | 3 + ...275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 | 1 + ...275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg | 29 + ...4d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map | 6 + ...4d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 | 1 + ...4d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg | 159 + ...51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg | 71 + ...1_1jira__client_1_1JiraClient-members.html | 147 + ...y__hook_1_1jira__client_1_1JiraClient.html | 774 +++++ ...ify__hook_1_1jira__client_1_1JiraClient.js | 18 + ...ira__client_1_1JiraClient__coll__graph.map | 3 + ...ira__client_1_1JiraClient__coll__graph.md5 | 1 + ...ira__client_1_1JiraClient__coll__graph.svg | 44 + ...d0f9ae006313a21576362d26ac5ec8_icgraph.map | 10 + ...d0f9ae006313a21576362d26ac5ec8_icgraph.md5 | 1 + ...d0f9ae006313a21576362d26ac5ec8_icgraph.svg | 264 ++ ...ae006313a21576362d26ac5ec8_icgraph_org.svg | 176 ++ ...93d6456fe053ef7a7862d5d6851910c_cgraph.map | 5 + ...93d6456fe053ef7a7862d5d6851910c_cgraph.md5 | 1 + ...93d6456fe053ef7a7862d5d6851910c_cgraph.svg | 142 + ...456fe053ef7a7862d5d6851910c_cgraph_org.svg | 54 + ...9ea1149758f7f5212149d357b13cc23_cgraph.map | 6 + ...9ea1149758f7f5212149d357b13cc23_cgraph.md5 | 1 + ...9ea1149758f7f5212149d357b13cc23_cgraph.svg | 166 + ...149758f7f5212149d357b13cc23_cgraph_org.svg | 78 + ...ea1149758f7f5212149d357b13cc23_icgraph.map | 4 + ...ea1149758f7f5212149d357b13cc23_icgraph.md5 | 1 + ...ea1149758f7f5212149d357b13cc23_icgraph.svg | 41 + ...5f6924819084b7c8d268956a784804a_cgraph.map | 4 + ...5f6924819084b7c8d268956a784804a_cgraph.md5 | 1 + ...5f6924819084b7c8d268956a784804a_cgraph.svg | 39 + ...f6924819084b7c8d268956a784804a_icgraph.map | 6 + ...f6924819084b7c8d268956a784804a_icgraph.md5 | 1 + ...f6924819084b7c8d268956a784804a_icgraph.svg | 168 ++ ...4819084b7c8d268956a784804a_icgraph_org.svg | 80 + ...0d2c5a6432aa6f238da0ff65d49a760_cgraph.map | 9 + ...0d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 | 1 + ...0d2c5a6432aa6f238da0ff65d49a760_cgraph.svg | 241 ++ ...5a6432aa6f238da0ff65d49a760_cgraph_org.svg | 153 + ...1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map | 4 + ...1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 | 1 + ...1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg | 45 + ...f374116c64cd5f1492ec7f7e40f9c1_icgraph.map | 3 + ...f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 | 1 + ...f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg | 29 + ...967169a4b7970c67c0947b9ac56f746_cgraph.map | 4 + ...967169a4b7970c67c0947b9ac56f746_cgraph.md5 | 1 + ...967169a4b7970c67c0947b9ac56f746_cgraph.svg | 40 + ...67169a4b7970c67c0947b9ac56f746_icgraph.map | 5 + ...67169a4b7970c67c0947b9ac56f746_icgraph.md5 | 1 + ...67169a4b7970c67c0947b9ac56f746_icgraph.svg | 58 + ...a8837552d37bfd611de23441a240826_cgraph.map | 4 + ...a8837552d37bfd611de23441a240826_cgraph.md5 | 1 + ...a8837552d37bfd611de23441a240826_cgraph.svg | 40 + ...823ad1d3baaedd38039913c3a97fd7_icgraph.map | 5 + ...823ad1d3baaedd38039913c3a97fd7_icgraph.md5 | 1 + ...823ad1d3baaedd38039913c3a97fd7_icgraph.svg | 145 + ...d1d3baaedd38039913c3a97fd7_icgraph_org.svg | 57 + ...b41ce6f13c30b1265d439ddf04bf2cd_cgraph.map | 6 + ...b41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 | 1 + ...b41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg | 85 + ...41ce6f13c30b1265d439ddf04bf2cd_icgraph.map | 4 + ...41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 | 1 + ...41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg | 41 + ...k_1_1llm__client_1_1LLMClient-members.html | 137 + ...ify__hook_1_1llm__client_1_1LLMClient.html | 360 +++ ...enify__hook_1_1llm__client_1_1LLMClient.js | 8 + ...1llm__client_1_1LLMClient__coll__graph.map | 3 + ...1llm__client_1_1LLMClient__coll__graph.md5 | 1 + ...1llm__client_1_1LLMClient__coll__graph.svg | 29 + ...ad3014dac466ee1d8e00306d0cf2000_cgraph.map | 4 + ...ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 | 1 + ...ad3014dac466ee1d8e00306d0cf2000_cgraph.svg | 38 + ...d3014dac466ee1d8e00306d0cf2000_icgraph.map | 4 + ...d3014dac466ee1d8e00306d0cf2000_icgraph.md5 | 1 + ...d3014dac466ee1d8e00306d0cf2000_icgraph.svg | 39 + ...f06658ca922793f879474f2234518e_icgraph.map | 5 + ...f06658ca922793f879474f2234518e_icgraph.md5 | 1 + ...f06658ca922793f879474f2234518e_icgraph.svg | 142 + ...58ca922793f879474f2234518e_icgraph_org.svg | 54 + ...hook_1_1utils_1_1GitRepoNotFoundError.html | 145 + ...s_1_1GitRepoNotFoundError__coll__graph.map | 4 + ...s_1_1GitRepoNotFoundError__coll__graph.md5 | 1 + ...s_1_1GitRepoNotFoundError__coll__graph.svg | 46 + ..._1GitRepoNotFoundError__inherit__graph.map | 4 + ..._1GitRepoNotFoundError__inherit__graph.md5 | 1 + ..._1GitRepoNotFoundError__inherit__graph.svg | 46 + ...ommands_1_1TestCommitCommands-members.html | 144 + ...ommit__commands_1_1TestCommitCommands.html | 791 +++++ ..._commit__commands_1_1TestCommitCommands.js | 15 + ...nds_1_1TestCommitCommands__coll__graph.map | 3 + ...nds_1_1TestCommitCommands__coll__graph.md5 | 1 + ...nds_1_1TestCommitCommands__coll__graph.svg | 42 + ...3c2ff3707124aa48e8eb581106b8691_cgraph.map | 11 + ...3c2ff3707124aa48e8eb581106b8691_cgraph.md5 | 1 + ...3c2ff3707124aa48e8eb581106b8691_cgraph.svg | 244 ++ ...f3707124aa48e8eb581106b8691_cgraph_org.svg | 156 + ...d04b125e102190a768f65f1948f15bc_cgraph.map | 4 + ...d04b125e102190a768f65f1948f15bc_cgraph.md5 | 1 + ...d04b125e102190a768f65f1948f15bc_cgraph.svg | 40 + ...13e368262340af98b30fd8ebdac6597_cgraph.map | 18 + ...13e368262340af98b30fd8ebdac6597_cgraph.md5 | 1 + ...13e368262340af98b30fd8ebdac6597_cgraph.svg | 405 +++ ...68262340af98b30fd8ebdac6597_cgraph_org.svg | 317 ++ ...c4b1e4189792a3f7c11d2a745f479c0_cgraph.map | 11 + ...c4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 | 1 + ...c4b1e4189792a3f7c11d2a745f479c0_cgraph.svg | 244 ++ ...e4189792a3f7c11d2a745f479c0_cgraph_org.svg | 156 + ...ea0d934ee0f2b914b0b893736e8fe4e_cgraph.map | 11 + ...ea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 | 1 + ...ea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg | 245 ++ ...934ee0f2b914b0b893736e8fe4e_cgraph_org.svg | 157 + ...9c09013055ec39ddde86b487aefcf8b_cgraph.map | 11 + ...9c09013055ec39ddde86b487aefcf8b_cgraph.md5 | 1 + ...9c09013055ec39ddde86b487aefcf8b_cgraph.svg | 244 ++ ...013055ec39ddde86b487aefcf8b_cgraph_org.svg | 156 + ...ommands_1_1TestConfigCommands-members.html | 144 + ...onfig__commands_1_1TestConfigCommands.html | 886 ++++++ ..._config__commands_1_1TestConfigCommands.js | 15 + ...nds_1_1TestConfigCommands__coll__graph.map | 3 + ...nds_1_1TestConfigCommands__coll__graph.md5 | 1 + ...nds_1_1TestConfigCommands__coll__graph.svg | 50 + ...e8162082bcdd5652bb37bdb14cf453a_cgraph.map | 5 + ...e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 | 1 + ...e8162082bcdd5652bb37bdb14cf453a_cgraph.svg | 150 + ...2082bcdd5652bb37bdb14cf453a_cgraph_org.svg | 62 + ...355f7d313bebaa71694387cf2bc5232_cgraph.map | 8 + ...355f7d313bebaa71694387cf2bc5232_cgraph.md5 | 1 + ...355f7d313bebaa71694387cf2bc5232_cgraph.svg | 211 ++ ...7d313bebaa71694387cf2bc5232_cgraph_org.svg | 123 + ...3d4760eee3b67e1cde3aed755ebb948_cgraph.map | 5 + ...3d4760eee3b67e1cde3aed755ebb948_cgraph.md5 | 1 + ...3d4760eee3b67e1cde3aed755ebb948_cgraph.svg | 150 + ...60eee3b67e1cde3aed755ebb948_cgraph_org.svg | 62 + ...00ca5d9fcdc159714e8df54920f9436_cgraph.map | 8 + ...00ca5d9fcdc159714e8df54920f9436_cgraph.md5 | 1 + ...00ca5d9fcdc159714e8df54920f9436_cgraph.svg | 211 ++ ...5d9fcdc159714e8df54920f9436_cgraph_org.svg | 123 + ...73984d31452b56acd6ce4011a1248bd_cgraph.map | 7 + ...73984d31452b56acd6ce4011a1248bd_cgraph.md5 | 1 + ...73984d31452b56acd6ce4011a1248bd_cgraph.svg | 189 ++ ...4d31452b56acd6ce4011a1248bd_cgraph_org.svg | 101 + ...c0207be563c3de59a6d16277805114c_cgraph.map | 8 + ...c0207be563c3de59a6d16277805114c_cgraph.md5 | 1 + ...c0207be563c3de59a6d16277805114c_cgraph.svg | 211 ++ ...7be563c3de59a6d16277805114c_cgraph_org.svg | 123 + ...3a264dfb21e16003e095b79f6eab2ac_cgraph.map | 5 + ...3a264dfb21e16003e095b79f6eab2ac_cgraph.md5 | 1 + ...3a264dfb21e16003e095b79f6eab2ac_cgraph.svg | 150 + ...4dfb21e16003e095b79f6eab2ac_cgraph_org.svg | 62 + ...d12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map | 7 + ...d12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 | 1 + ...d12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg | 189 ++ ...028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg | 101 + ...d8df8219441b9e9871b903a681400d9_cgraph.map | 5 + ...d8df8219441b9e9871b903a681400d9_cgraph.md5 | 1 + ...d8df8219441b9e9871b903a681400d9_cgraph.svg | 150 + ...8219441b9e9871b903a681400d9_cgraph_org.svg | 62 + ...f9f2233a3f4cc5725b9d4f05758b167_cgraph.map | 7 + ...f9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 | 1 + ...f9f2233a3f4cc5725b9d4f05758b167_cgraph.svg | 189 ++ ...233a3f4cc5725b9d4f05758b167_cgraph_org.svg | 101 + ...e37b97432821d19758c6325d4c74bcf_cgraph.map | 7 + ...e37b97432821d19758c6325d4c74bcf_cgraph.md5 | 1 + ...e37b97432821d19758c6325d4c74bcf_cgraph.svg | 189 ++ ...97432821d19758c6325d4c74bcf_cgraph_org.svg | 101 + ...8d62310da2d768e21770f8f01ff5375_cgraph.map | 5 + ...8d62310da2d768e21770f8f01ff5375_cgraph.md5 | 1 + ...8d62310da2d768e21770f8f01ff5375_cgraph.svg | 150 + ...310da2d768e21770f8f01ff5375_cgraph_org.svg | 62 + ..._web__config_1_1TestWebConfig-members.html | 134 + ...1_1test__web__config_1_1TestWebConfig.html | 268 ++ ...s_1_1test__web__config_1_1TestWebConfig.js | 5 + ...__config_1_1TestWebConfig__coll__graph.map | 3 + ...__config_1_1TestWebConfig__coll__graph.md5 | 1 + ...__config_1_1TestWebConfig__coll__graph.svg | 30 + ...6e600222e426b003850509cb1d3190a_cgraph.map | 9 + ...6e600222e426b003850509cb1d3190a_cgraph.md5 | 1 + ...6e600222e426b003850509cb1d3190a_cgraph.svg | 227 ++ ...0222e426b003850509cb1d3190a_cgraph_org.svg | 139 + ...c6440352201d207ea8b4d26f8ccfa35_cgraph.map | 4 + ...c6440352201d207ea8b4d26f8ccfa35_cgraph.md5 | 1 + ...c6440352201d207ea8b4d26f8ccfa35_cgraph.svg | 40 + docs/html/closed.png | Bin 0 -> 132 bytes docs/html/commit-commands_8md.html | 130 + docs/html/commit__analyzer_8py.html | 146 + docs/html/commit__analyzer_8py.js | 4 + docs/html/commit__commands_8py.html | 152 + docs/html/commit__commands_8py.js | 6 + docs/html/config-commands_8md.html | 130 + docs/html/config__command_8py.html | 148 + docs/html/config__command_8py.js | 5 + docs/html/config__commands_8py.html | 174 ++ docs/html/config__commands_8py.js | 15 + docs/html/conftest_8py.html | 140 + docs/html/constants_8py.html | 148 + docs/html/constants_8py.js | 5 + docs/html/detailed-usage_8md.html | 130 + .../dir_063e2d5fe58a131099a7fe4200cca78c.html | 152 + .../dir_063e2d5fe58a131099a7fe4200cca78c.js | 9 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.map | 4 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.md5 | 1 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.svg | 30 + .../dir_1648a057408aae8db85b8e3797335623.html | 136 + ...r_1648a057408aae8db85b8e3797335623_dep.map | 4 + ...r_1648a057408aae8db85b8e3797335623_dep.md5 | 1 + ...r_1648a057408aae8db85b8e3797335623_dep.svg | 30 + .../dir_624fa2a8bce97f0444ac5cca335d4e23.html | 152 + .../dir_624fa2a8bce97f0444ac5cca335d4e23.js | 9 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.map | 4 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 | 1 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.svg | 30 + .../dir_b3b22d2ab7966b65f6b237e3231b41be.html | 145 + .../dir_b3b22d2ab7966b65f6b237e3231b41be.js | 7 + .../dir_f88c3381c1861b3f7ca1f3d63cf244b5.html | 175 ++ .../dir_f88c3381c1861b3f7ca1f3d63cf244b5.js | 19 + ...r_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map | 5 + ...r_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 | 1 + ...r_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg | 42 + docs/html/doc.png | Bin 0 -> 746 bytes docs/html/doc__commands_8md.html | 130 + docs/html/doc__commands_8py.html | 158 + docs/html/doc__commands_8py.js | 7 + docs/html/doxygen-awesome-darkmode-toggle.js | 157 + .../doxygen-awesome-fragment-copy-button.js | 85 + docs/html/doxygen-awesome-interactive-toc.js | 81 + docs/html/doxygen-awesome-paragraph-link.js | 51 + ...n-awesome-sidebar-only-darkmode-toggle.css | 40 + docs/html/doxygen-awesome-sidebar-only.css | 116 + docs/html/doxygen-awesome-tabs.js | 90 + docs/html/doxygen-awesome.css | 2675 +++++++++++++++++ docs/html/doxygen.css | 1841 ++++++++++++ docs/html/doxygen.svg | 26 + docs/html/dynsections.js | 121 + docs/html/example-workflows_8md.html | 130 + docs/html/file__analyzer_8py.html | 152 + docs/html/file__analyzer_8py.js | 5 + docs/html/files.html | 166 + docs/html/files_dup.js | 4 + docs/html/folder__analyzer_8py.html | 146 + docs/html/folder__analyzer_8py.js | 4 + docs/html/folderclosed.png | Bin 0 -> 616 bytes docs/html/folderopen.png | Bin 0 -> 597 bytes docs/html/functions.html | 261 ++ docs/html/functions_func.html | 230 ++ docs/html/functions_vars.html | 147 + docs/html/git__analyzer_8py.html | 152 + docs/html/git__analyzer_8py.js | 5 + docs/html/graph_legend.html | 189 ++ docs/html/graph_legend.md5 | 1 + docs/html/graph_legend.svg | 117 + docs/html/hierarchy.html | 148 + docs/html/hierarchy.js | 18 + docs/html/hook__commands_8py.html | 158 + docs/html/hook__commands_8py.js | 7 + docs/html/index.html | 129 + docs/html/inherit_graph_0.map | 4 + docs/html/inherit_graph_0.md5 | 1 + docs/html/inherit_graph_0.svg | 38 + docs/html/inherit_graph_1.map | 3 + docs/html/inherit_graph_1.md5 | 1 + docs/html/inherit_graph_1.svg | 22 + docs/html/inherit_graph_2.map | 7 + docs/html/inherit_graph_2.md5 | 1 + docs/html/inherit_graph_2.svg | 87 + docs/html/inherit_graph_3.map | 3 + docs/html/inherit_graph_3.md5 | 1 + docs/html/inherit_graph_3.svg | 23 + docs/html/inherit_graph_4.map | 3 + docs/html/inherit_graph_4.md5 | 1 + docs/html/inherit_graph_4.svg | 22 + docs/html/inherit_graph_5.map | 3 + docs/html/inherit_graph_5.md5 | 1 + docs/html/inherit_graph_5.svg | 23 + docs/html/inherit_graph_6.map | 3 + docs/html/inherit_graph_6.md5 | 1 + docs/html/inherit_graph_6.svg | 23 + docs/html/inherit_graph_7.map | 3 + docs/html/inherit_graph_7.md5 | 1 + docs/html/inherit_graph_7.svg | 23 + docs/html/inherits.html | 149 + docs/html/jira__client_8py.html | 152 + docs/html/jira__client_8py.js | 5 + docs/html/jquery.js | 35 + docs/html/llm__client_8py.html | 146 + docs/html/llm__client_8py.js | 4 + docs/html/login__command_8py.html | 148 + docs/html/login__command_8py.js | 5 + docs/html/main_8py.html | 146 + docs/html/main_8py.js | 4 + ...nContext_Penify_dev_penify_cli_README.html | 244 ++ ...y_dev_penify_cli_docs_commit_commands.html | 255 ++ ...y_dev_penify_cli_docs_config_commands.html | 286 ++ ...fy_dev_penify_cli_docs_detailed_usage.html | 280 ++ ...nify_dev_penify_cli_docs_doc_commands.html | 363 +++ ...dev_penify_cli_docs_example_workflows.html | 239 ++ docs/html/menu.js | 135 + docs/html/menudata.js | 117 + docs/html/namespacemembers.html | 289 ++ docs/html/namespacemembers_func.html | 228 ++ docs/html/namespacemembers_vars.html | 215 ++ docs/html/namespacepenify__hook.html | 166 + docs/html/namespacepenify__hook.js | 56 + .../namespacepenify__hook_1_1api__client.html | 138 + .../namespacepenify__hook_1_1api__client.js | 4 + ...mespacepenify__hook_1_1base__analyzer.html | 138 + ...namespacepenify__hook_1_1base__analyzer.js | 4 + .../namespacepenify__hook_1_1commands.html | 146 + .../html/namespacepenify__hook_1_1commands.js | 38 + ...y__hook_1_1commands_1_1auth__commands.html | 229 ++ ...8f375c58bb6f69f98675e6a9ac84655_cgraph.map | 5 + ...8f375c58bb6f69f98675e6a9ac84655_cgraph.md5 | 1 + ...8f375c58bb6f69f98675e6a9ac84655_cgraph.svg | 149 + ...5c58bb6f69f98675e6a9ac84655_cgraph_org.svg | 61 + ...f375c58bb6f69f98675e6a9ac84655_icgraph.map | 5 + ...f375c58bb6f69f98675e6a9ac84655_icgraph.md5 | 1 + ...f375c58bb6f69f98675e6a9ac84655_icgraph.svg | 148 + ...c58bb6f69f98675e6a9ac84655_icgraph_org.svg | 60 + ...3956ca1749d4218ea1dc6e5b6218b24_cgraph.map | 4 + ...3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 | 1 + ...3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg | 45 + ...956ca1749d4218ea1dc6e5b6218b24_icgraph.map | 6 + ...956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 | 1 + ...956ca1749d4218ea1dc6e5b6218b24_icgraph.svg | 164 + ...a1749d4218ea1dc6e5b6218b24_icgraph_org.svg | 76 + ..._hook_1_1commands_1_1commit__commands.html | 311 ++ ...2564c4e8ad59fc46d56cb0f9122a71a_cgraph.map | 10 + ...2564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 | 1 + ...2564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg | 227 ++ ...c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg | 139 + ...564c4e8ad59fc46d56cb0f9122a71a_icgraph.map | 10 + ...564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 | 1 + ...564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg | 234 ++ ...4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg | 146 + ...27583116eb78e31a4d3cdc16d2f15c_icgraph.map | 5 + ...27583116eb78e31a4d3cdc16d2f15c_icgraph.md5 | 1 + ...27583116eb78e31a4d3cdc16d2f15c_icgraph.svg | 61 + ...4f739f524c38b437e4e47673d683e23_cgraph.map | 17 + ...4f739f524c38b437e4e47673d683e23_cgraph.md5 | 1 + ...4f739f524c38b437e4e47673d683e23_cgraph.svg | 388 +++ ...9f524c38b437e4e47673d683e23_cgraph_org.svg | 300 ++ ...f739f524c38b437e4e47673d683e23_icgraph.map | 5 + ...f739f524c38b437e4e47673d683e23_icgraph.md5 | 1 + ...f739f524c38b437e4e47673d683e23_icgraph.svg | 61 + ..._hook_1_1commands_1_1config__commands.html | 567 ++++ ...5bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map | 6 + ...5bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 | 1 + ...5bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg | 172 ++ ...685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg | 84 + ...bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map | 10 + ...bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 | 1 + ...bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg | 237 ++ ...85c4dcb5c15ba6a4055e484cf2_icgraph_org.svg | 149 + ...5dfc34a655ed80e6c95939b6f3c35c_icgraph.map | 6 + ...5dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 | 1 + ...5dfc34a655ed80e6c95939b6f3c35c_icgraph.svg | 165 + ...34a655ed80e6c95939b6f3c35c_icgraph_org.svg | 77 + ...af2b062dd33b1f1d7ddc7224f0ff87_icgraph.map | 24 + ...af2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 | 1 + ...af2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg | 486 +++ ...062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg | 398 +++ ...617bc5956e502c9555dc0dda0376df4_cgraph.map | 4 + ...617bc5956e502c9555dc0dda0376df4_cgraph.md5 | 1 + ...617bc5956e502c9555dc0dda0376df4_cgraph.svg | 45 + ...17bc5956e502c9555dc0dda0376df4_icgraph.map | 7 + ...17bc5956e502c9555dc0dda0376df4_icgraph.md5 | 1 + ...17bc5956e502c9555dc0dda0376df4_icgraph.svg | 182 ++ ...5956e502c9555dc0dda0376df4_icgraph_org.svg | 94 + ...503d51c905e2f1b299b12d2a73bd812_cgraph.map | 7 + ...503d51c905e2f1b299b12d2a73bd812_cgraph.md5 | 1 + ...503d51c905e2f1b299b12d2a73bd812_cgraph.svg | 194 ++ ...51c905e2f1b299b12d2a73bd812_cgraph_org.svg | 106 + ...03d51c905e2f1b299b12d2a73bd812_icgraph.map | 14 + ...03d51c905e2f1b299b12d2a73bd812_icgraph.md5 | 1 + ...03d51c905e2f1b299b12d2a73bd812_icgraph.svg | 302 ++ ...1c905e2f1b299b12d2a73bd812_icgraph_org.svg | 214 ++ ...492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map | 6 + ...492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 | 1 + ...492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg | 172 ++ ...c8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg | 84 + ...92bc8e7df6e38bb06ad05e572d4cc0_icgraph.map | 9 + ...92bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 | 1 + ...92bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg | 216 ++ ...8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg | 128 + ...559a82d0bf727703d550d1003d3ed20_cgraph.map | 4 + ...559a82d0bf727703d550d1003d3ed20_cgraph.md5 | 1 + ...559a82d0bf727703d550d1003d3ed20_cgraph.svg | 45 + ...59a82d0bf727703d550d1003d3ed20_icgraph.map | 17 + ...59a82d0bf727703d550d1003d3ed20_icgraph.md5 | 1 + ...59a82d0bf727703d550d1003d3ed20_icgraph.svg | 352 +++ ...2d0bf727703d550d1003d3ed20_icgraph_org.svg | 264 ++ ...be277132ce0bc0aacef951cf1dee2ae_cgraph.map | 4 + ...be277132ce0bc0aacef951cf1dee2ae_cgraph.md5 | 1 + ...be277132ce0bc0aacef951cf1dee2ae_cgraph.svg | 51 + ...e277132ce0bc0aacef951cf1dee2ae_icgraph.map | 24 + ...e277132ce0bc0aacef951cf1dee2ae_icgraph.md5 | 1 + ...e277132ce0bc0aacef951cf1dee2ae_icgraph.svg | 491 +++ ...132ce0bc0aacef951cf1dee2ae_icgraph_org.svg | 403 +++ ...2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map | 4 + ...2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 | 1 + ...2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg | 45 + ...486ac2bf16b4a671e49625bfa4f9b4_icgraph.map | 8 + ...486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 | 1 + ...486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg | 204 ++ ...c2bf16b4a671e49625bfa4f9b4_icgraph_org.svg | 116 + ...115198ea5d6808ccb98733957f50b06_cgraph.map | 8 + ...115198ea5d6808ccb98733957f50b06_cgraph.md5 | 1 + ...115198ea5d6808ccb98733957f50b06_cgraph.svg | 210 ++ ...98ea5d6808ccb98733957f50b06_cgraph_org.svg | 122 + ...15198ea5d6808ccb98733957f50b06_icgraph.map | 6 + ...15198ea5d6808ccb98733957f50b06_icgraph.md5 | 1 + ...15198ea5d6808ccb98733957f50b06_icgraph.svg | 165 + ...8ea5d6808ccb98733957f50b06_icgraph_org.svg | 77 + ...fy__hook_1_1commands_1_1doc__commands.html | 279 ++ ...006ab13bff718ef783868a910c0b704_cgraph.map | 11 + ...006ab13bff718ef783868a910c0b704_cgraph.md5 | 1 + ...006ab13bff718ef783868a910c0b704_cgraph.svg | 258 ++ ...b13bff718ef783868a910c0b704_cgraph_org.svg | 170 ++ ...06ab13bff718ef783868a910c0b704_icgraph.map | 8 + ...06ab13bff718ef783868a910c0b704_icgraph.md5 | 1 + ...06ab13bff718ef783868a910c0b704_icgraph.svg | 108 + ...aac68bc563432bf25c85dc78081a25_icgraph.map | 15 + ...aac68bc563432bf25c85dc78081a25_icgraph.md5 | 1 + ...aac68bc563432bf25c85dc78081a25_icgraph.svg | 309 ++ ...8bc563432bf25c85dc78081a25_icgraph_org.svg | 221 ++ ...7f4ead1b11951d885fa5c151c2cbe0_icgraph.map | 5 + ...7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 | 1 + ...7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg | 60 + ...y__hook_1_1commands_1_1hook__commands.html | 242 ++ ...543eb5fa835fd1237f24e8bce6201d_icgraph.map | 9 + ...543eb5fa835fd1237f24e8bce6201d_icgraph.md5 | 1 + ...543eb5fa835fd1237f24e8bce6201d_icgraph.svg | 212 ++ ...b5fa835fd1237f24e8bce6201d_icgraph_org.svg | 124 + ...f8f5d3bf1c3795974a391ee95b72b2_icgraph.map | 9 + ...f8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 | 1 + ...f8f5d3bf1c3795974a391ee95b72b2_icgraph.svg | 212 ++ ...d3bf1c3795974a391ee95b72b2_icgraph_org.svg | 124 + ...spacepenify__hook_1_1commit__analyzer.html | 138 + ...mespacepenify__hook_1_1commit__analyzer.js | 4 + ...espacepenify__hook_1_1config__command.html | 205 ++ ...40e5331681eb574ac319d7458783bde_cgraph.map | 11 + ...40e5331681eb574ac319d7458783bde_cgraph.md5 | 1 + ...40e5331681eb574ac319d7458783bde_cgraph.svg | 270 ++ ...331681eb574ac319d7458783bde_cgraph_org.svg | 182 ++ ...0e5331681eb574ac319d7458783bde_icgraph.map | 4 + ...0e5331681eb574ac319d7458783bde_icgraph.md5 | 1 + ...0e5331681eb574ac319d7458783bde_icgraph.svg | 44 + ...3eb92164a69df1446d745f8a09285e_icgraph.map | 4 + ...3eb92164a69df1446d745f8a09285e_icgraph.md5 | 1 + ...3eb92164a69df1446d745f8a09285e_icgraph.svg | 45 + .../namespacepenify__hook_1_1constants.html | 169 ++ ...mespacepenify__hook_1_1file__analyzer.html | 159 + ...namespacepenify__hook_1_1file__analyzer.js | 5 + ...spacepenify__hook_1_1folder__analyzer.html | 138 + ...mespacepenify__hook_1_1folder__analyzer.js | 4 + ...amespacepenify__hook_1_1git__analyzer.html | 159 + .../namespacepenify__hook_1_1git__analyzer.js | 5 + ...namespacepenify__hook_1_1jira__client.html | 159 + .../namespacepenify__hook_1_1jira__client.js | 5 + .../namespacepenify__hook_1_1llm__client.html | 138 + .../namespacepenify__hook_1_1llm__client.js | 4 + ...mespacepenify__hook_1_1login__command.html | 196 ++ ...63db4c484797bead34b7d874020c6a_icgraph.map | 4 + ...63db4c484797bead34b7d874020c6a_icgraph.md5 | 1 + ...63db4c484797bead34b7d874020c6a_icgraph.svg | 44 + ...4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map | 6 + ...4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 | 1 + ...4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg | 165 + ...32fbafeff834b0a0c5a37f74ccd_cgraph_org.svg | 77 + ...bf932fbafeff834b0a0c5a37f74ccd_icgraph.map | 4 + ...bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 | 1 + ...bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg | 44 + docs/html/namespacepenify__hook_1_1main.html | 176 ++ ...6838b20df4bd14ee4b5e1dd2906738f_cgraph.map | 34 + ...6838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 | 1 + ...6838b20df4bd14ee4b5e1dd2906738f_cgraph.svg | 708 +++++ ...b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg | 620 ++++ ...838b20df4bd14ee4b5e1dd2906738f_icgraph.map | 3 + ...838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 | 1 + ...838b20df4bd14ee4b5e1dd2906738f_icgraph.svg | 28 + .../namespacepenify__hook_1_1ui__utils.html | 795 +++++ ...6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map | 17 + ...6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 | 1 + ...6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg | 347 +++ ...613c6fe053b6e4356cd9e5cda2_icgraph_org.svg | 259 ++ ...2b92532b1458af94f3649d411b5505c_cgraph.map | 4 + ...2b92532b1458af94f3649d411b5505c_cgraph.md5 | 1 + ...2b92532b1458af94f3649d411b5505c_cgraph.svg | 38 + ...b92532b1458af94f3649d411b5505c_icgraph.map | 4 + ...b92532b1458af94f3649d411b5505c_icgraph.md5 | 1 + ...b92532b1458af94f3649d411b5505c_icgraph.svg | 39 + ...ffbb9671dbe233770268e2dd66a67fa_cgraph.map | 4 + ...ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 | 1 + ...ffbb9671dbe233770268e2dd66a67fa_cgraph.svg | 39 + ...fbb9671dbe233770268e2dd66a67fa_icgraph.map | 16 + ...fbb9671dbe233770268e2dd66a67fa_icgraph.md5 | 1 + ...fbb9671dbe233770268e2dd66a67fa_icgraph.svg | 331 ++ ...671dbe233770268e2dd66a67fa_icgraph_org.svg | 243 ++ ...b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map | 4 + ...b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 | 1 + ...b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg | 39 + ...16aa6b68a9edea5f29f84f1c4be79a_icgraph.map | 6 + ...16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 | 1 + ...16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg | 71 + ...da02cd1140179a9ce60f62c85fccfef_cgraph.map | 4 + ...da02cd1140179a9ce60f62c85fccfef_cgraph.md5 | 1 + ...da02cd1140179a9ce60f62c85fccfef_cgraph.svg | 38 + ...a02cd1140179a9ce60f62c85fccfef_icgraph.map | 4 + ...a02cd1140179a9ce60f62c85fccfef_icgraph.md5 | 1 + ...a02cd1140179a9ce60f62c85fccfef_icgraph.svg | 39 + ...d934568897433fa73f9cc182ac4a3e_icgraph.map | 12 + ...d934568897433fa73f9cc182ac4a3e_icgraph.md5 | 1 + ...d934568897433fa73f9cc182ac4a3e_icgraph.svg | 266 ++ ...568897433fa73f9cc182ac4a3e_icgraph_org.svg | 178 ++ ...2cdb4de7c679ce8b29c3e9116c4776_icgraph.map | 7 + ...2cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 | 1 + ...2cdb4de7c679ce8b29c3e9116c4776_icgraph.svg | 175 ++ ...4de7c679ce8b29c3e9116c4776_icgraph_org.svg | 87 + ...7340d0fc60fb80f17514d60bf45f1d_icgraph.map | 6 + ...7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 | 1 + ...7340d0fc60fb80f17514d60bf45f1d_icgraph.svg | 165 + ...d0fc60fb80f17514d60bf45f1d_icgraph_org.svg | 77 + ...f0acd7dd91abfe67d0807803bc3b65f_cgraph.map | 4 + ...f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 | 1 + ...f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg | 39 + ...0acd7dd91abfe67d0807803bc3b65f_icgraph.map | 11 + ...0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 | 1 + ...0acd7dd91abfe67d0807803bc3b65f_icgraph.svg | 250 ++ ...7dd91abfe67d0807803bc3b65f_icgraph_org.svg | 162 + ...11f0adf6e9bf71510c379b6fa155e44_cgraph.map | 4 + ...11f0adf6e9bf71510c379b6fa155e44_cgraph.md5 | 1 + ...11f0adf6e9bf71510c379b6fa155e44_cgraph.svg | 37 + ...1f0adf6e9bf71510c379b6fa155e44_icgraph.map | 16 + ...1f0adf6e9bf71510c379b6fa155e44_icgraph.md5 | 1 + ...1f0adf6e9bf71510c379b6fa155e44_icgraph.svg | 356 +++ ...df6e9bf71510c379b6fa155e44_icgraph_org.svg | 268 ++ ...c3e466d1912058167be2eacf85b9f6_icgraph.map | 20 + ...c3e466d1912058167be2eacf85b9f6_icgraph.md5 | 1 + ...c3e466d1912058167be2eacf85b9f6_icgraph.svg | 425 +++ ...66d1912058167be2eacf85b9f6_icgraph_org.svg | 337 +++ ...e684c00e26199440137a87ed9b195c_icgraph.map | 5 + ...e684c00e26199440137a87ed9b195c_icgraph.md5 | 1 + ...e684c00e26199440137a87ed9b195c_icgraph.svg | 55 + ...fcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map | 4 + ...fcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 | 1 + ...fcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg | 39 + ...cbbfe39029ab6d1dd33e7bf75ae115_icgraph.map | 4 + ...cbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 | 1 + ...cbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg | 39 + ...441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map | 6 + ...441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 | 1 + ...441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg | 160 + ...b3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg | 72 + docs/html/namespacepenify__hook_1_1utils.html | 253 ++ docs/html/namespacepenify__hook_1_1utils.js | 8 + ...5c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map | 3 + ...5c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 | 1 + ...5c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg | 29 + ...c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map | 41 + ...c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 | 1 + ...c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg | 815 +++++ ...c80860d6a2e2d061d2fb660a3f_icgraph_org.svg | 727 +++++ docs/html/namespaces.html | 173 ++ docs/html/namespaces_dup.js | 20 + docs/html/namespacesetup.html | 345 +++ docs/html/namespacetests.html | 146 + docs/html/namespacetests.js | 20 + docs/html/namespacetests_1_1conftest.html | 130 + ...espacetests_1_1test__commit__commands.html | 138 + ...amespacetests_1_1test__commit__commands.js | 4 + ...espacetests_1_1test__config__commands.html | 138 + ...amespacetests_1_1test__config__commands.js | 4 + ...namespacetests_1_1test__doc__commands.html | 746 +++++ ...e74c920f258f442914771164fe26b45_cgraph.map | 4 + ...e74c920f258f442914771164fe26b45_cgraph.md5 | 1 + ...e74c920f258f442914771164fe26b45_cgraph.svg | 39 + ...f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map | 4 + ...f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 | 1 + ...f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg | 39 + ...458af9ad0128c3ca1263b552fd5e482_cgraph.map | 12 + ...458af9ad0128c3ca1263b552fd5e482_cgraph.md5 | 1 + ...458af9ad0128c3ca1263b552fd5e482_cgraph.svg | 274 ++ ...f9ad0128c3ca1263b552fd5e482_cgraph_org.svg | 186 ++ ...35e7fd4912192c7276cf31bbebc6eb0_cgraph.map | 4 + ...35e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 | 1 + ...35e7fd4912192c7276cf31bbebc6eb0_cgraph.svg | 39 + ...bb75610e40d94d42bc169b25403c186_cgraph.map | 4 + ...bb75610e40d94d42bc169b25403c186_cgraph.md5 | 1 + ...bb75610e40d94d42bc169b25403c186_cgraph.svg | 39 + ...4165ddfdb3071a88422f080f0e529a3_cgraph.map | 4 + ...4165ddfdb3071a88422f080f0e529a3_cgraph.md5 | 1 + ...4165ddfdb3071a88422f080f0e529a3_cgraph.svg | 40 + ...06110833eb0aad547156faf014b31d8_cgraph.map | 4 + ...06110833eb0aad547156faf014b31d8_cgraph.md5 | 1 + ...06110833eb0aad547156faf014b31d8_cgraph.svg | 39 + ...158ffa48469b6c097a7a55fcb20c21a_cgraph.map | 12 + ...158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 | 1 + ...158ffa48469b6c097a7a55fcb20c21a_cgraph.svg | 274 ++ ...fa48469b6c097a7a55fcb20c21a_cgraph_org.svg | 186 ++ ...74688baa8c9b5ba302c2877a9789d05_cgraph.map | 12 + ...74688baa8c9b5ba302c2877a9789d05_cgraph.md5 | 1 + ...74688baa8c9b5ba302c2877a9789d05_cgraph.svg | 274 ++ ...8baa8c9b5ba302c2877a9789d05_cgraph_org.svg | 186 ++ ...c76cc25c23476794234cdadbcaef0c0_cgraph.map | 4 + ...c76cc25c23476794234cdadbcaef0c0_cgraph.md5 | 1 + ...c76cc25c23476794234cdadbcaef0c0_cgraph.svg | 39 + ...9b01e5fc89255cac96747fa081c442c_cgraph.map | 12 + ...9b01e5fc89255cac96747fa081c442c_cgraph.md5 | 1 + ...9b01e5fc89255cac96747fa081c442c_cgraph.svg | 274 ++ ...e5fc89255cac96747fa081c442c_cgraph_org.svg | 186 ++ .../namespacetests_1_1test__web__config.html | 138 + .../namespacetests_1_1test__web__config.js | 4 + docs/html/nav_f.png | Bin 0 -> 153 bytes docs/html/nav_g.png | Bin 0 -> 95 bytes docs/html/nav_h.png | Bin 0 -> 98 bytes docs/html/navtree.css | 147 + docs/html/navtree.js | 549 ++++ docs/html/navtreedata.js | 241 ++ docs/html/navtreeindex0.js | 253 ++ docs/html/navtreeindex1.js | 253 ++ docs/html/navtreeindex2.js | 90 + docs/html/open.png | Bin 0 -> 123 bytes docs/html/pages.html | 139 + docs/html/penify-cli-documentation_8md.html | 130 + docs/html/penify__hook_2____init_____8py.html | 130 + ...ify__hook_2commands_2____init_____8py.html | 140 + docs/html/resize.js | 150 + docs/html/search/all_0.html | 37 + docs/html/search/all_0.js | 7 + docs/html/search/all_1.html | 37 + docs/html/search/all_1.js | 14 + docs/html/search/all_10.html | 37 + docs/html/search/all_10.js | 16 + docs/html/search/all_11.html | 37 + docs/html/search/all_11.js | 47 + docs/html/search/all_12.html | 37 + docs/html/search/all_12.js | 9 + docs/html/search/all_13.html | 37 + docs/html/search/all_13.js | 4 + docs/html/search/all_14.html | 37 + docs/html/search/all_14.js | 5 + docs/html/search/all_2.html | 37 + docs/html/search/all_2.js | 6 + docs/html/search/all_3.html | 37 + docs/html/search/all_3.js | 18 + docs/html/search/all_4.html | 37 + docs/html/search/all_4.js | 11 + docs/html/search/all_5.html | 37 + docs/html/search/all_5.js | 11 + docs/html/search/all_6.html | 37 + docs/html/search/all_6.js | 17 + docs/html/search/all_7.html | 37 + docs/html/search/all_7.js | 23 + docs/html/search/all_8.html | 37 + docs/html/search/all_8.js | 11 + docs/html/search/all_9.html | 37 + docs/html/search/all_9.js | 7 + docs/html/search/all_a.html | 37 + docs/html/search/all_a.js | 10 + docs/html/search/all_b.html | 37 + docs/html/search/all_b.js | 14 + docs/html/search/all_c.html | 37 + docs/html/search/all_c.js | 12 + docs/html/search/all_d.html | 37 + docs/html/search/all_d.js | 5 + docs/html/search/all_e.html | 37 + docs/html/search/all_e.js | 43 + docs/html/search/all_f.html | 37 + docs/html/search/all_f.js | 10 + docs/html/search/classes_0.html | 37 + docs/html/search/classes_0.js | 4 + docs/html/search/classes_1.html | 37 + docs/html/search/classes_1.js | 4 + docs/html/search/classes_2.html | 37 + docs/html/search/classes_2.js | 4 + docs/html/search/classes_3.html | 37 + docs/html/search/classes_3.js | 4 + docs/html/search/classes_4.html | 37 + docs/html/search/classes_4.js | 5 + docs/html/search/classes_5.html | 37 + docs/html/search/classes_5.js | 5 + docs/html/search/classes_6.html | 37 + docs/html/search/classes_6.js | 4 + docs/html/search/classes_7.html | 37 + docs/html/search/classes_7.js | 4 + docs/html/search/classes_8.html | 37 + docs/html/search/classes_8.js | 6 + docs/html/search/close.svg | 31 + docs/html/search/files_0.html | 37 + docs/html/search/files_0.js | 4 + docs/html/search/files_1.html | 37 + docs/html/search/files_1.js | 5 + docs/html/search/files_10.html | 37 + docs/html/search/files_10.js | 5 + docs/html/search/files_2.html | 37 + docs/html/search/files_2.js | 4 + docs/html/search/files_3.html | 37 + docs/html/search/files_3.js | 11 + docs/html/search/files_4.html | 37 + docs/html/search/files_4.js | 6 + docs/html/search/files_5.html | 37 + docs/html/search/files_5.js | 4 + docs/html/search/files_6.html | 37 + docs/html/search/files_6.js | 5 + docs/html/search/files_7.html | 37 + docs/html/search/files_7.js | 4 + docs/html/search/files_8.html | 37 + docs/html/search/files_8.js | 4 + docs/html/search/files_9.html | 37 + docs/html/search/files_9.js | 4 + docs/html/search/files_a.html | 37 + docs/html/search/files_a.js | 5 + docs/html/search/files_b.html | 37 + docs/html/search/files_b.js | 4 + docs/html/search/files_c.html | 37 + docs/html/search/files_c.js | 4 + docs/html/search/files_d.html | 37 + docs/html/search/files_d.js | 4 + docs/html/search/files_e.html | 37 + docs/html/search/files_e.js | 4 + docs/html/search/files_f.html | 37 + docs/html/search/files_f.js | 7 + docs/html/search/functions_0.html | 37 + docs/html/search/functions_0.js | 5 + docs/html/search/functions_1.html | 37 + docs/html/search/functions_1.js | 4 + docs/html/search/functions_2.html | 37 + docs/html/search/functions_2.js | 8 + docs/html/search/functions_3.html | 37 + docs/html/search/functions_3.js | 6 + docs/html/search/functions_4.html | 37 + docs/html/search/functions_4.js | 11 + docs/html/search/functions_5.html | 37 + docs/html/search/functions_5.js | 20 + docs/html/search/functions_6.html | 37 + docs/html/search/functions_6.js | 7 + docs/html/search/functions_7.html | 37 + docs/html/search/functions_7.js | 5 + docs/html/search/functions_8.html | 37 + docs/html/search/functions_8.js | 7 + docs/html/search/functions_9.html | 37 + docs/html/search/functions_9.js | 10 + docs/html/search/functions_a.html | 37 + docs/html/search/functions_a.js | 11 + docs/html/search/functions_b.html | 37 + docs/html/search/functions_b.js | 5 + docs/html/search/functions_c.html | 37 + docs/html/search/functions_c.js | 11 + docs/html/search/functions_d.html | 37 + docs/html/search/functions_d.js | 34 + docs/html/search/functions_e.html | 37 + docs/html/search/functions_e.js | 6 + docs/html/search/mag_sel.svg | 74 + docs/html/search/namespaces_0.html | 37 + docs/html/search/namespaces_0.js | 24 + docs/html/search/namespaces_1.html | 37 + docs/html/search/namespaces_1.js | 4 + docs/html/search/namespaces_2.html | 37 + docs/html/search/namespaces_2.js | 9 + docs/html/search/nomatches.html | 13 + docs/html/search/pages_0.html | 37 + docs/html/search/pages_0.js | 9 + docs/html/search/search.css | 263 ++ docs/html/search/search.js | 802 +++++ docs/html/search/search_l.png | Bin 0 -> 567 bytes docs/html/search/search_m.png | Bin 0 -> 158 bytes docs/html/search/search_r.png | Bin 0 -> 553 bytes docs/html/search/searchdata.js | 33 + docs/html/search/variables_0.html | 37 + docs/html/search/variables_0.js | 4 + docs/html/search/variables_1.html | 37 + docs/html/search/variables_1.js | 10 + docs/html/search/variables_10.html | 37 + docs/html/search/variables_10.js | 4 + docs/html/search/variables_11.html | 37 + docs/html/search/variables_11.js | 4 + docs/html/search/variables_12.html | 37 + docs/html/search/variables_12.js | 5 + docs/html/search/variables_2.html | 37 + docs/html/search/variables_2.js | 4 + docs/html/search/variables_3.html | 37 + docs/html/search/variables_3.js | 4 + docs/html/search/variables_4.html | 37 + docs/html/search/variables_4.js | 8 + docs/html/search/variables_5.html | 37 + docs/html/search/variables_5.js | 6 + docs/html/search/variables_6.html | 37 + docs/html/search/variables_6.js | 5 + docs/html/search/variables_7.html | 37 + docs/html/search/variables_7.js | 6 + docs/html/search/variables_8.html | 37 + docs/html/search/variables_8.js | 5 + docs/html/search/variables_9.html | 37 + docs/html/search/variables_9.js | 8 + docs/html/search/variables_a.html | 37 + docs/html/search/variables_a.js | 7 + docs/html/search/variables_b.html | 37 + docs/html/search/variables_b.js | 4 + docs/html/search/variables_c.html | 37 + docs/html/search/variables_c.js | 5 + docs/html/search/variables_d.html | 37 + docs/html/search/variables_d.js | 7 + docs/html/search/variables_e.html | 37 + docs/html/search/variables_e.js | 7 + docs/html/search/variables_f.html | 37 + docs/html/search/variables_f.js | 6 + docs/html/setup_8py.html | 168 ++ docs/html/setup_8py.js | 16 + docs/html/splitbar.png | Bin 0 -> 314 bytes docs/html/svgpan.js | 323 ++ docs/html/sync_off.png | Bin 0 -> 853 bytes docs/html/sync_on.png | Bin 0 -> 845 bytes docs/html/tab_a.png | Bin 0 -> 142 bytes docs/html/tab_b.png | Bin 0 -> 169 bytes docs/html/tab_h.png | Bin 0 -> 177 bytes docs/html/tab_s.png | Bin 0 -> 184 bytes docs/html/tabs.css | 1 + docs/html/test__commit__commands_8py.html | 146 + docs/html/test__commit__commands_8py.js | 4 + docs/html/test__config__commands_8py.html | 146 + docs/html/test__config__commands_8py.js | 4 + docs/html/test__doc__commands_8py.html | 166 + docs/html/test__doc__commands_8py.js | 14 + docs/html/test__web__config_8py.html | 146 + docs/html/test__web__config_8py.js | 4 + docs/html/tests_2____init_____8py.html | 138 + docs/html/toggle-alternative-theme.js | 11 + docs/html/ui__utils_8py.html | 200 ++ docs/html/ui__utils_8py.js | 29 + docs/html/utils_8py.html | 162 + docs/html/utils_8py.js | 8 + docs/penify-cli-Penify-dev-g.tar.gz | Bin 0 -> 791871 bytes 973 files changed, 72973 insertions(+) create mode 100644 docs/html/README_8md.html create mode 100644 docs/html/annotated.html create mode 100644 docs/html/annotated_dup.js create mode 100644 docs/html/api__client_8py.html create mode 100644 docs/html/api__client_8py.js create mode 100644 docs/html/auth__commands_8py.html create mode 100644 docs/html/auth__commands_8py.js create mode 100644 docs/html/base__analyzer_8py.html create mode 100644 docs/html/base__analyzer_8py.js create mode 100644 docs/html/bc_s.png create mode 100644 docs/html/bdwn.png create mode 100644 docs/html/classException.html create mode 100644 docs/html/classException__coll__graph.map create mode 100644 docs/html/classException__coll__graph.md5 create mode 100644 docs/html/classException__coll__graph.svg create mode 100644 docs/html/classException__inherit__graph.map create mode 100644 docs/html/classException__inherit__graph.md5 create mode 100644 docs/html/classException__inherit__graph.svg create mode 100644 docs/html/classes.html create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient.html create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient.js create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.js create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.map create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.md5 create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.svg create mode 100644 docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph_org.svg create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 create mode 100644 docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg create mode 100644 docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg create mode 100644 docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 create mode 100644 docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg create mode 100644 docs/html/closed.png create mode 100644 docs/html/commit-commands_8md.html create mode 100644 docs/html/commit__analyzer_8py.html create mode 100644 docs/html/commit__analyzer_8py.js create mode 100644 docs/html/commit__commands_8py.html create mode 100644 docs/html/commit__commands_8py.js create mode 100644 docs/html/config-commands_8md.html create mode 100644 docs/html/config__command_8py.html create mode 100644 docs/html/config__command_8py.js create mode 100644 docs/html/config__commands_8py.html create mode 100644 docs/html/config__commands_8py.js create mode 100644 docs/html/conftest_8py.html create mode 100644 docs/html/constants_8py.html create mode 100644 docs/html/constants_8py.js create mode 100644 docs/html/detailed-usage_8md.html create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 create mode 100644 docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg create mode 100644 docs/html/dir_1648a057408aae8db85b8e3797335623.html create mode 100644 docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map create mode 100644 docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 create mode 100644 docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 create mode 100644 docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg create mode 100644 docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html create mode 100644 docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.js create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.map create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 create mode 100644 docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg create mode 100644 docs/html/doc.png create mode 100644 docs/html/doc__commands_8md.html create mode 100644 docs/html/doc__commands_8py.html create mode 100644 docs/html/doc__commands_8py.js create mode 100644 docs/html/doxygen-awesome-darkmode-toggle.js create mode 100644 docs/html/doxygen-awesome-fragment-copy-button.js create mode 100644 docs/html/doxygen-awesome-interactive-toc.js create mode 100644 docs/html/doxygen-awesome-paragraph-link.js create mode 100644 docs/html/doxygen-awesome-sidebar-only-darkmode-toggle.css create mode 100644 docs/html/doxygen-awesome-sidebar-only.css create mode 100644 docs/html/doxygen-awesome-tabs.js create mode 100644 docs/html/doxygen-awesome.css create mode 100644 docs/html/doxygen.css create mode 100644 docs/html/doxygen.svg create mode 100644 docs/html/dynsections.js create mode 100644 docs/html/example-workflows_8md.html create mode 100644 docs/html/file__analyzer_8py.html create mode 100644 docs/html/file__analyzer_8py.js create mode 100644 docs/html/files.html create mode 100644 docs/html/files_dup.js create mode 100644 docs/html/folder__analyzer_8py.html create mode 100644 docs/html/folder__analyzer_8py.js create mode 100644 docs/html/folderclosed.png create mode 100644 docs/html/folderopen.png create mode 100644 docs/html/functions.html create mode 100644 docs/html/functions_func.html create mode 100644 docs/html/functions_vars.html create mode 100644 docs/html/git__analyzer_8py.html create mode 100644 docs/html/git__analyzer_8py.js create mode 100644 docs/html/graph_legend.html create mode 100644 docs/html/graph_legend.md5 create mode 100644 docs/html/graph_legend.svg create mode 100644 docs/html/hierarchy.html create mode 100644 docs/html/hierarchy.js create mode 100644 docs/html/hook__commands_8py.html create mode 100644 docs/html/hook__commands_8py.js create mode 100644 docs/html/index.html create mode 100644 docs/html/inherit_graph_0.map create mode 100644 docs/html/inherit_graph_0.md5 create mode 100644 docs/html/inherit_graph_0.svg create mode 100644 docs/html/inherit_graph_1.map create mode 100644 docs/html/inherit_graph_1.md5 create mode 100644 docs/html/inherit_graph_1.svg create mode 100644 docs/html/inherit_graph_2.map create mode 100644 docs/html/inherit_graph_2.md5 create mode 100644 docs/html/inherit_graph_2.svg create mode 100644 docs/html/inherit_graph_3.map create mode 100644 docs/html/inherit_graph_3.md5 create mode 100644 docs/html/inherit_graph_3.svg create mode 100644 docs/html/inherit_graph_4.map create mode 100644 docs/html/inherit_graph_4.md5 create mode 100644 docs/html/inherit_graph_4.svg create mode 100644 docs/html/inherit_graph_5.map create mode 100644 docs/html/inherit_graph_5.md5 create mode 100644 docs/html/inherit_graph_5.svg create mode 100644 docs/html/inherit_graph_6.map create mode 100644 docs/html/inherit_graph_6.md5 create mode 100644 docs/html/inherit_graph_6.svg create mode 100644 docs/html/inherit_graph_7.map create mode 100644 docs/html/inherit_graph_7.md5 create mode 100644 docs/html/inherit_graph_7.svg create mode 100644 docs/html/inherits.html create mode 100644 docs/html/jira__client_8py.html create mode 100644 docs/html/jira__client_8py.js create mode 100644 docs/html/jquery.js create mode 100644 docs/html/llm__client_8py.html create mode 100644 docs/html/llm__client_8py.js create mode 100644 docs/html/login__command_8py.html create mode 100644 docs/html/login__command_8py.js create mode 100644 docs/html/main_8py.html create mode 100644 docs/html/main_8py.js create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html create mode 100644 docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html create mode 100644 docs/html/menu.js create mode 100644 docs/html/menudata.js create mode 100644 docs/html/namespacemembers.html create mode 100644 docs/html/namespacemembers_func.html create mode 100644 docs/html/namespacemembers_vars.html create mode 100644 docs/html/namespacepenify__hook.html create mode 100644 docs/html/namespacepenify__hook.js create mode 100644 docs/html/namespacepenify__hook_1_1api__client.html create mode 100644 docs/html/namespacepenify__hook_1_1api__client.js create mode 100644 docs/html/namespacepenify__hook_1_1base__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1base__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands.js create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1commit__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1commit__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1config__command.html create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1constants.html create mode 100644 docs/html/namespacepenify__hook_1_1file__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1file__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1folder__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1folder__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1git__analyzer.html create mode 100644 docs/html/namespacepenify__hook_1_1git__analyzer.js create mode 100644 docs/html/namespacepenify__hook_1_1jira__client.html create mode 100644 docs/html/namespacepenify__hook_1_1jira__client.js create mode 100644 docs/html/namespacepenify__hook_1_1llm__client.html create mode 100644 docs/html/namespacepenify__hook_1_1llm__client.js create mode 100644 docs/html/namespacepenify__hook_1_1login__command.html create mode 100644 docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1main.html create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils.html create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg create mode 100644 docs/html/namespacepenify__hook_1_1utils.html create mode 100644 docs/html/namespacepenify__hook_1_1utils.js create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg create mode 100644 docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg create mode 100644 docs/html/namespaces.html create mode 100644 docs/html/namespaces_dup.js create mode 100644 docs/html/namespacesetup.html create mode 100644 docs/html/namespacetests.html create mode 100644 docs/html/namespacetests.js create mode 100644 docs/html/namespacetests_1_1conftest.html create mode 100644 docs/html/namespacetests_1_1test__commit__commands.html create mode 100644 docs/html/namespacetests_1_1test__commit__commands.js create mode 100644 docs/html/namespacetests_1_1test__config__commands.html create mode 100644 docs/html/namespacetests_1_1test__config__commands.js create mode 100644 docs/html/namespacetests_1_1test__doc__commands.html create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map create mode 100644 docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 create mode 100644 docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg create mode 100644 docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg create mode 100644 docs/html/namespacetests_1_1test__web__config.html create mode 100644 docs/html/namespacetests_1_1test__web__config.js create mode 100644 docs/html/nav_f.png create mode 100644 docs/html/nav_g.png create mode 100644 docs/html/nav_h.png create mode 100644 docs/html/navtree.css create mode 100644 docs/html/navtree.js create mode 100644 docs/html/navtreedata.js create mode 100644 docs/html/navtreeindex0.js create mode 100644 docs/html/navtreeindex1.js create mode 100644 docs/html/navtreeindex2.js create mode 100644 docs/html/open.png create mode 100644 docs/html/pages.html create mode 100644 docs/html/penify-cli-documentation_8md.html create mode 100644 docs/html/penify__hook_2____init_____8py.html create mode 100644 docs/html/penify__hook_2commands_2____init_____8py.html create mode 100644 docs/html/resize.js create mode 100644 docs/html/search/all_0.html create mode 100644 docs/html/search/all_0.js create mode 100644 docs/html/search/all_1.html create mode 100644 docs/html/search/all_1.js create mode 100644 docs/html/search/all_10.html create mode 100644 docs/html/search/all_10.js create mode 100644 docs/html/search/all_11.html create mode 100644 docs/html/search/all_11.js create mode 100644 docs/html/search/all_12.html create mode 100644 docs/html/search/all_12.js create mode 100644 docs/html/search/all_13.html create mode 100644 docs/html/search/all_13.js create mode 100644 docs/html/search/all_14.html create mode 100644 docs/html/search/all_14.js create mode 100644 docs/html/search/all_2.html create mode 100644 docs/html/search/all_2.js create mode 100644 docs/html/search/all_3.html create mode 100644 docs/html/search/all_3.js create mode 100644 docs/html/search/all_4.html create mode 100644 docs/html/search/all_4.js create mode 100644 docs/html/search/all_5.html create mode 100644 docs/html/search/all_5.js create mode 100644 docs/html/search/all_6.html create mode 100644 docs/html/search/all_6.js create mode 100644 docs/html/search/all_7.html create mode 100644 docs/html/search/all_7.js create mode 100644 docs/html/search/all_8.html create mode 100644 docs/html/search/all_8.js create mode 100644 docs/html/search/all_9.html create mode 100644 docs/html/search/all_9.js create mode 100644 docs/html/search/all_a.html create mode 100644 docs/html/search/all_a.js create mode 100644 docs/html/search/all_b.html create mode 100644 docs/html/search/all_b.js create mode 100644 docs/html/search/all_c.html create mode 100644 docs/html/search/all_c.js create mode 100644 docs/html/search/all_d.html create mode 100644 docs/html/search/all_d.js create mode 100644 docs/html/search/all_e.html create mode 100644 docs/html/search/all_e.js create mode 100644 docs/html/search/all_f.html create mode 100644 docs/html/search/all_f.js create mode 100644 docs/html/search/classes_0.html create mode 100644 docs/html/search/classes_0.js create mode 100644 docs/html/search/classes_1.html create mode 100644 docs/html/search/classes_1.js create mode 100644 docs/html/search/classes_2.html create mode 100644 docs/html/search/classes_2.js create mode 100644 docs/html/search/classes_3.html create mode 100644 docs/html/search/classes_3.js create mode 100644 docs/html/search/classes_4.html create mode 100644 docs/html/search/classes_4.js create mode 100644 docs/html/search/classes_5.html create mode 100644 docs/html/search/classes_5.js create mode 100644 docs/html/search/classes_6.html create mode 100644 docs/html/search/classes_6.js create mode 100644 docs/html/search/classes_7.html create mode 100644 docs/html/search/classes_7.js create mode 100644 docs/html/search/classes_8.html create mode 100644 docs/html/search/classes_8.js create mode 100644 docs/html/search/close.svg create mode 100644 docs/html/search/files_0.html create mode 100644 docs/html/search/files_0.js create mode 100644 docs/html/search/files_1.html create mode 100644 docs/html/search/files_1.js create mode 100644 docs/html/search/files_10.html create mode 100644 docs/html/search/files_10.js create mode 100644 docs/html/search/files_2.html create mode 100644 docs/html/search/files_2.js create mode 100644 docs/html/search/files_3.html create mode 100644 docs/html/search/files_3.js create mode 100644 docs/html/search/files_4.html create mode 100644 docs/html/search/files_4.js create mode 100644 docs/html/search/files_5.html create mode 100644 docs/html/search/files_5.js create mode 100644 docs/html/search/files_6.html create mode 100644 docs/html/search/files_6.js create mode 100644 docs/html/search/files_7.html create mode 100644 docs/html/search/files_7.js create mode 100644 docs/html/search/files_8.html create mode 100644 docs/html/search/files_8.js create mode 100644 docs/html/search/files_9.html create mode 100644 docs/html/search/files_9.js create mode 100644 docs/html/search/files_a.html create mode 100644 docs/html/search/files_a.js create mode 100644 docs/html/search/files_b.html create mode 100644 docs/html/search/files_b.js create mode 100644 docs/html/search/files_c.html create mode 100644 docs/html/search/files_c.js create mode 100644 docs/html/search/files_d.html create mode 100644 docs/html/search/files_d.js create mode 100644 docs/html/search/files_e.html create mode 100644 docs/html/search/files_e.js create mode 100644 docs/html/search/files_f.html create mode 100644 docs/html/search/files_f.js create mode 100644 docs/html/search/functions_0.html create mode 100644 docs/html/search/functions_0.js create mode 100644 docs/html/search/functions_1.html create mode 100644 docs/html/search/functions_1.js create mode 100644 docs/html/search/functions_2.html create mode 100644 docs/html/search/functions_2.js create mode 100644 docs/html/search/functions_3.html create mode 100644 docs/html/search/functions_3.js create mode 100644 docs/html/search/functions_4.html create mode 100644 docs/html/search/functions_4.js create mode 100644 docs/html/search/functions_5.html create mode 100644 docs/html/search/functions_5.js create mode 100644 docs/html/search/functions_6.html create mode 100644 docs/html/search/functions_6.js create mode 100644 docs/html/search/functions_7.html create mode 100644 docs/html/search/functions_7.js create mode 100644 docs/html/search/functions_8.html create mode 100644 docs/html/search/functions_8.js create mode 100644 docs/html/search/functions_9.html create mode 100644 docs/html/search/functions_9.js create mode 100644 docs/html/search/functions_a.html create mode 100644 docs/html/search/functions_a.js create mode 100644 docs/html/search/functions_b.html create mode 100644 docs/html/search/functions_b.js create mode 100644 docs/html/search/functions_c.html create mode 100644 docs/html/search/functions_c.js create mode 100644 docs/html/search/functions_d.html create mode 100644 docs/html/search/functions_d.js create mode 100644 docs/html/search/functions_e.html create mode 100644 docs/html/search/functions_e.js create mode 100644 docs/html/search/mag_sel.svg create mode 100644 docs/html/search/namespaces_0.html create mode 100644 docs/html/search/namespaces_0.js create mode 100644 docs/html/search/namespaces_1.html create mode 100644 docs/html/search/namespaces_1.js create mode 100644 docs/html/search/namespaces_2.html create mode 100644 docs/html/search/namespaces_2.js create mode 100644 docs/html/search/nomatches.html create mode 100644 docs/html/search/pages_0.html create mode 100644 docs/html/search/pages_0.js create mode 100644 docs/html/search/search.css create mode 100644 docs/html/search/search.js create mode 100644 docs/html/search/search_l.png create mode 100644 docs/html/search/search_m.png create mode 100644 docs/html/search/search_r.png create mode 100644 docs/html/search/searchdata.js create mode 100644 docs/html/search/variables_0.html create mode 100644 docs/html/search/variables_0.js create mode 100644 docs/html/search/variables_1.html create mode 100644 docs/html/search/variables_1.js create mode 100644 docs/html/search/variables_10.html create mode 100644 docs/html/search/variables_10.js create mode 100644 docs/html/search/variables_11.html create mode 100644 docs/html/search/variables_11.js create mode 100644 docs/html/search/variables_12.html create mode 100644 docs/html/search/variables_12.js create mode 100644 docs/html/search/variables_2.html create mode 100644 docs/html/search/variables_2.js create mode 100644 docs/html/search/variables_3.html create mode 100644 docs/html/search/variables_3.js create mode 100644 docs/html/search/variables_4.html create mode 100644 docs/html/search/variables_4.js create mode 100644 docs/html/search/variables_5.html create mode 100644 docs/html/search/variables_5.js create mode 100644 docs/html/search/variables_6.html create mode 100644 docs/html/search/variables_6.js create mode 100644 docs/html/search/variables_7.html create mode 100644 docs/html/search/variables_7.js create mode 100644 docs/html/search/variables_8.html create mode 100644 docs/html/search/variables_8.js create mode 100644 docs/html/search/variables_9.html create mode 100644 docs/html/search/variables_9.js create mode 100644 docs/html/search/variables_a.html create mode 100644 docs/html/search/variables_a.js create mode 100644 docs/html/search/variables_b.html create mode 100644 docs/html/search/variables_b.js create mode 100644 docs/html/search/variables_c.html create mode 100644 docs/html/search/variables_c.js create mode 100644 docs/html/search/variables_d.html create mode 100644 docs/html/search/variables_d.js create mode 100644 docs/html/search/variables_e.html create mode 100644 docs/html/search/variables_e.js create mode 100644 docs/html/search/variables_f.html create mode 100644 docs/html/search/variables_f.js create mode 100644 docs/html/setup_8py.html create mode 100644 docs/html/setup_8py.js create mode 100644 docs/html/splitbar.png create mode 100644 docs/html/svgpan.js create mode 100644 docs/html/sync_off.png create mode 100644 docs/html/sync_on.png create mode 100644 docs/html/tab_a.png create mode 100644 docs/html/tab_b.png create mode 100644 docs/html/tab_h.png create mode 100644 docs/html/tab_s.png create mode 100644 docs/html/tabs.css create mode 100644 docs/html/test__commit__commands_8py.html create mode 100644 docs/html/test__commit__commands_8py.js create mode 100644 docs/html/test__config__commands_8py.html create mode 100644 docs/html/test__config__commands_8py.js create mode 100644 docs/html/test__doc__commands_8py.html create mode 100644 docs/html/test__doc__commands_8py.js create mode 100644 docs/html/test__web__config_8py.html create mode 100644 docs/html/test__web__config_8py.js create mode 100644 docs/html/tests_2____init_____8py.html create mode 100644 docs/html/toggle-alternative-theme.js create mode 100644 docs/html/ui__utils_8py.html create mode 100644 docs/html/ui__utils_8py.js create mode 100644 docs/html/utils_8py.html create mode 100644 docs/html/utils_8py.js create mode 100644 docs/penify-cli-Penify-dev-g.tar.gz diff --git a/docs/html/README_8md.html b/docs/html/README_8md.html new file mode 100644 index 0000000..690fe50 --- /dev/null +++ b/docs/html/README_8md.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/README.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/README.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/annotated.html b/docs/html/annotated.html new file mode 100644 index 0000000..fd776e3 --- /dev/null +++ b/docs/html/annotated.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..d357adb --- /dev/null +++ b/docs/html/api__client_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/api_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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..cc204ae --- /dev/null +++ b/docs/html/auth__commands_8py.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/auth_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
auth_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

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

+Functions

def penify_hook.commands.auth_commands.save_credentials (api_key)
 
def 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..3e747e3 --- /dev/null +++ b/docs/html/auth__commands_8py.js @@ -0,0 +1,5 @@ +var auth__commands_8py = +[ + [ "login", "auth__commands_8py.html#a78f375c58bb6f69f98675e6a9ac84655", null ], + [ "save_credentials", "auth__commands_8py.html#aa3956ca1749d4218ea1dc6e5b6218b24", 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..828acae --- /dev/null +++ b/docs/html/base__analyzer_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/base_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/docs/html/bdwn.png b/docs/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + + + + + + + + + + + + +penify-cli: Exception Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Exception Class Reference
+
+
+
+Inheritance diagram for Exception:
+
+
+
+
+
+Collaboration diagram for Exception:
+
+
+
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/utils.py
  • +
+
+
+ + + + + diff --git a/docs/html/classException__coll__graph.map b/docs/html/classException__coll__graph.map new file mode 100644 index 0000000..9036a49 --- /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..38ed226 --- /dev/null +++ b/docs/html/classException__coll__graph.md5 @@ -0,0 +1 @@ +8bfc7cbaf3c53c3b1288446104b2c7ee \ 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..d2d4076 --- /dev/null +++ b/docs/html/classException__coll__graph.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..02cc09e --- /dev/null +++ b/docs/html/classException__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classException__inherit__graph.md5 b/docs/html/classException__inherit__graph.md5 new file mode 100644 index 0000000..f7c5b12 --- /dev/null +++ b/docs/html/classException__inherit__graph.md5 @@ -0,0 +1 @@ +02df0cdd064aa2dca59b7424cdd2be62 \ 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..33700b9 --- /dev/null +++ b/docs/html/classException__inherit__graph.svg @@ -0,0 +1,46 @@ + + + + + + +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..659edca --- /dev/null +++ b/docs/html/classes.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Index + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + 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..d316452 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..597b65f --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.html @@ -0,0 +1,468 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.api_client.APIClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.api_client.APIClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.api_client.APIClient:
+
+
+
+
+ + + + + + + + + + + + + + +

+Public Member Functions

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

+Public Attributes

 api_url
 
 AUTH_TOKEN
 
 BEARER_TOKEN
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Member Function Documentation

+ +

◆ generate_commit_summary()

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

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

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

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

◆ AUTH_TOKEN

+ +
+
+ + + + +
penify_hook.api_client.APIClient.AUTH_TOKEN
+
+ +
+
+ +

◆ BEARER_TOKEN

+ +
+
+ + + + +
penify_hook.api_client.APIClient.BEARER_TOKEN
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/api_client.py
  • +
+
+
+ + + + + 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..be81d43 --- /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#ad9cb741a8baf2d13f845e25a36311086", null ], + [ "generate_commit_summary", "classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce", null ], + [ "generate_commit_summary_with_llm", "classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3", null ], + [ "get_api_key", "classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99", 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#ac5aad61508c2cafdf6e88e6c7d6c82b3", 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..05e004c --- /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..2c7b583 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 @@ -0,0 +1 @@ +92a3e9cee2cd5e4975e6a42b548f0d62 \ 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..fe24d95 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg @@ -0,0 +1,36 @@ + + + + + + +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_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map new file mode 100644 index 0000000..86604e3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 new file mode 100644 index 0000000..b12cf91 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 @@ -0,0 +1 @@ +ea70dd7bbb840c4828c970ec1a8f5446 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg new file mode 100644 index 0000000..b3f0027 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +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_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map new file mode 100644 index 0000000..fa6ff5d --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 new file mode 100644 index 0000000..186981a --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 @@ -0,0 +1 @@ +6b1ca4842de706fb2f00719bcb509a8b \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg new file mode 100644 index 0000000..7970d85 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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 + + + + + +Node3 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node3->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg new file mode 100644 index 0000000..8567a2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg @@ -0,0 +1,70 @@ + + + + + + +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 + + + + + +Node3 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node3->Node4 + + + + + 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..b1256ae --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + 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..f71d097 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.base_analyzer.BaseAnalyzer Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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

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

+Public Attributes

 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

◆ folder_path

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

◆ relative_file_path

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.relative_file_path
+
+ +
+
+ +

◆ repo

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.repo
+
+ +
+
+ +

◆ repo_details

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.repo_details
+
+ +
+
+ +

◆ repo_path

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.repo_path
+
+ +
+
+ +

◆ supported_file_types

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.supported_file_types
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/base_analyzer.py
  • +
+
+
+ + + + + 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..026bd02 --- /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#ab1296a3d1e9070d891801876b66f7344", 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..da4b46d --- /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..8f67765 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 @@ -0,0 +1 @@ +ba0c3a1d5b95dea65df70168e43976e0 \ 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..c7b4e4a --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg @@ -0,0 +1,33 @@ + + + + + + +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..a407121 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + 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..cb38209 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 @@ -0,0 +1 @@ +63e8393eea1557a855929943cd8aca92 \ 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..7dc042a --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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 + ++ __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..0ec411d --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg @@ -0,0 +1,127 @@ + + + + + + +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 + ++ __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..a9ff912 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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.CommitDocGenHookprivate
get_summary(self, str instruction, bool generate_description)penify_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
run(self, Optional[str] msg, bool edit_commit_message, bool generate_description)penify_hook.commit_analyzer.CommitDocGenHook
+
+ + + + + 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..a6450e7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html @@ -0,0 +1,486 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commit_analyzer.CommitDocGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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

def __init__ (self, str repo_path, APIClient api_client, llm_client=None, jira_client=None)
 
dict get_summary (self, str instruction, bool generate_description)
 
def run (self, Optional[str] msg, bool edit_commit_message, bool generate_description)
 
tuple process_jira_integration (self, str title, str description, str msg)
 
def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

 llm_client
 
- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+ + + +

+Private Member Functions

def _amend_commit (self)
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.commit_analyzer.CommitDocGenHook.__init__ ( self,
str repo_path,
APIClient api_client,
 llm_client = None,
 jira_client = None 
)
+
+ +

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+
+Here is the call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+

Member Function Documentation

+ +

◆ _amend_commit()

+ +
+
+ + + + + +
+ + + + + + + + +
def penify_hook.commit_analyzer.CommitDocGenHook._amend_commit ( self)
+
+private
+
+
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 call graph for this function:
+
+
+
+
+
+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 call graph for this function:
+
+
+
+
+
+Here is the caller graph for this function:
+
+
+
+
+ +
+
+ +

◆ run()

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

+ +

◆ llm_client

+ +
+
+ + + + +
penify_hook.commit_analyzer.CommitDocGenHook.llm_client
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commit_analyzer.py
  • +
+
+
+ + + + + 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..77da79e --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.js @@ -0,0 +1,9 @@ +var classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook = +[ + [ "__init__", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e", null ], + [ "_amend_commit", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca", 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#a6370a03f7ed9175ef6f81e931a105ea9", 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..a1bbcad --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + 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..4d6e419 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.md5 @@ -0,0 +1 @@ +7b0dd63703399513e2ba32399fe691fd \ 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..5f8fd2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__coll__graph.svg @@ -0,0 +1,57 @@ + + + + + + +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 + + + + + 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..a1bbcad --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + 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..4d6e419 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +7b0dd63703399513e2ba32399fe691fd \ 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..5f8fd2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook__inherit__graph.svg @@ -0,0 +1,57 @@ + + + + + + +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 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.map new file mode 100644 index 0000000..c4c0415 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 new file mode 100644 index 0000000..d530502 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.md5 @@ -0,0 +1 @@ +503804b19fd6263bc4d634da365fcb38 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.svg new file mode 100644 index 0000000..876ec67 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph.svg @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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.ui_utils.print_info + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node8 + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.format_info + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format +_success + + + + + +Node6->Node7 + + + + + +Node8->Node4 + + + + + +Node9 + + +penify_hook.ui_utils.print +_warning + + + + + +Node8->Node9 + + + + + +Node10 + + +penify_hook.ui_utils.format +_warning + + + + + +Node9->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph_org.svg new file mode 100644 index 0000000..4cb8182 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a6370a03f7ed9175ef6f81e931a105ea9_cgraph_org.svg @@ -0,0 +1,180 @@ + + + + + + +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.ui_utils.print_info + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node8 + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.format_info + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format +_success + + + + + +Node6->Node7 + + + + + +Node8->Node4 + + + + + +Node9 + + +penify_hook.ui_utils.print +_warning + + + + + +Node8->Node9 + + + + + +Node10 + + +penify_hook.ui_utils.format +_warning + + + + + +Node9->Node10 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.map new file mode 100644 index 0000000..45b7af5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.md5 new file mode 100644 index 0000000..96b4195 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.md5 @@ -0,0 +1 @@ +ad1182651b0cfe9906faf8af31cf667d \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.svg new file mode 100644 index 0000000..72f52e3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.get_summary + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph_org.svg new file mode 100644 index 0000000..2e46cc5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_cgraph_org.svg @@ -0,0 +1,54 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.get_summary + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + 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..bced407 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.map @@ -0,0 +1,4 @@ + + + + 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..fffc366 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.md5 @@ -0,0 +1 @@ +086b563bbc1068f3e0325d4a68d5bd17 \ 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..1a0196d --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_a8496194276441fa2eb2fa014eaab9a37_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +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_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.map new file mode 100644 index 0000000..d518791 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 new file mode 100644 index 0000000..0536af9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.md5 @@ -0,0 +1 @@ +fb0bae9cf2f7e07ac778eed1297c327b \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.svg new file mode 100644 index 0000000..eb672c4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_ac999c5cbc852a7ec3b412ccb43c274ca_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +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_adda13cc121d96342476ccf72b63a007f_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.map new file mode 100644 index 0000000..5f79a9a --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.md5 new file mode 100644 index 0000000..76d8830 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.md5 @@ -0,0 +1 @@ +4cfab920326b3a6b29c805803ac72558 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.svg new file mode 100644 index 0000000..fbb1bd6 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph.svg @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.format +_warning + + + + + +Node4->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph_org.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph_org.svg new file mode 100644 index 0000000..28c33ca --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_cgraph_org.svg @@ -0,0 +1,86 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.process_jira_integration + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.format +_warning + + + + + +Node4->Node5 + + + + + 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..81bb08e --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.map @@ -0,0 +1,4 @@ + + + + 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..cf1b6d3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.md5 @@ -0,0 +1 @@ +3cd15e6828a60d49cece5c87177581df \ 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..f2f541f --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_adda13cc121d96342476ccf72b63a007f_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +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_af127d86729e226d74dbeb095b008db3e_cgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.map new file mode 100644 index 0000000..abfc766 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.md5 new file mode 100644 index 0000000..5f2103d --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.md5 @@ -0,0 +1 @@ +95c682625e7209c65fce50a4bb060a81 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.svg new file mode 100644 index 0000000..d985a2a --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_cgraph.svg @@ -0,0 +1,30 @@ + + + + + + +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_af127d86729e226d74dbeb095b008db3e_icgraph.map b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.map new file mode 100644 index 0000000..abfc766 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.md5 b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.md5 new file mode 100644 index 0000000..39adea9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.md5 @@ -0,0 +1 @@ +534bd5898147e11eac4c0e46a39c7860 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.svg b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.svg new file mode 100644 index 0000000..8cebb40 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook_af127d86729e226d74dbeb095b008db3e_icgraph.svg @@ -0,0 +1,30 @@ + + + + + + +penify_hook.commit_analyzer.CommitDocGenHook.__init__ + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook. +__init__ + + + + + +Node1->Node1 + + + + + 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..ba8e9a1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.file_analyzer.FileAnalyzerGenHook Member List
+
+ +
+ + + + + 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..d7f5c79 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html @@ -0,0 +1,362 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.file_analyzer.FileAnalyzerGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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

def __init__ (self, str file_path, APIClient api_client)
 
def process_file (self, file_path, pbar, str new_param="")
 
def print_processing (self, file_path)
 
def run (self)
 
def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

 file_path
 
- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+ +
+
+

Member Function Documentation

+ +

◆ print_processing()

+ +
+
+ + + + + + + + + + + + + + + + + + +
def penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing ( self,
 file_path 
)
+
+
Prints a message indicating that a file is being processed.
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ process_file()

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

◆ run()

+ +
+
+ + + + + + + + +
def 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
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/file_analyzer.py
  • +
+
+
+ + + + + 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..56b1d3a --- /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#a190c473090b2a07e7cb43073a3211c4b", null ], + [ "print_processing", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073", null ], + [ "process_file", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e", null ], + [ "run", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1", 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..e20b867 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + 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..b6c2c1c --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 @@ -0,0 +1 @@ +98c7ce96bb60ecdbb8c57ef7c2bc6d59 \ 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..1907db9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg @@ -0,0 +1,56 @@ + + + + + + +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..e20b867 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + 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..b6c2c1c --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +98c7ce96bb60ecdbb8c57ef7c2bc6d59 \ 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..1907db9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg @@ -0,0 +1,56 @@ + + + + + + +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_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map new file mode 100644 index 0000000..c05e761 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 new file mode 100644 index 0000000..416cd78 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 @@ -0,0 +1 @@ +dd6dbfdde640f0bc6f1c0cc995a9b4fb \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg new file mode 100644 index 0000000..ebc39ac --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg new file mode 100644 index 0000000..e169853 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg @@ -0,0 +1,71 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map new file mode 100644 index 0000000..b1658b2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 new file mode 100644 index 0000000..8da8816 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 @@ -0,0 +1 @@ +dce29e772ed93d06e90894791ddc50ca \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg new file mode 100644 index 0000000..5462f2d --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg @@ -0,0 +1,55 @@ + + + + + + +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_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map new file mode 100644 index 0000000..d166069 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 new file mode 100644 index 0000000..f40daaf --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 @@ -0,0 +1 @@ +5c58a576c4056ea132d5a9cca6880cb6 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg new file mode 100644 index 0000000..d480dca --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.run + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node5 + + + + + +Node7 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node7 + + + + + +Node9 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node9 + + + + + +Node12 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.format +_success + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node7->Node8 + + + + + +Node10 + + +penify_hook.ui_utils.print +_warning + + + + + +Node9->Node10 + + + + + +Node9->Node12 + + + + + +Node11 + + +penify_hook.ui_utils.format +_warning + + + + + +Node10->Node11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg new file mode 100644 index 0000000..68f9912 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg @@ -0,0 +1,204 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.run + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node5 + + + + + +Node7 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node7 + + + + + +Node9 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node9 + + + + + +Node12 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.format +_success + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node7->Node8 + + + + + +Node10 + + +penify_hook.ui_utils.print +_warning + + + + + +Node9->Node10 + + + + + +Node9->Node12 + + + + + +Node11 + + +penify_hook.ui_utils.format +_warning + + + + + +Node10->Node11 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map new file mode 100644 index 0000000..9da4fb2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 new file mode 100644 index 0000000..a24f9ee --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 @@ -0,0 +1 @@ +e106885ca4b06113170f86da8447c21c \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg new file mode 100644 index 0000000..af5e14f --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.print +_processing + + + + + +Node2 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node1->Node2 + + + + + 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..91b425f --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.folder_analyzer.FolderAnalyzerGenHook Member List
+
+ +
+ + + + + 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..69ee205 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html @@ -0,0 +1,301 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.folder_analyzer.FolderAnalyzerGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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

def __init__ (self, str dir_path, APIClient api_client)
 
def list_all_files_in_dir (self, str dir_path)
 
def run (self)
 
def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

 dir_path
 
- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+ +
+
+

Member Function Documentation

+ +

◆ list_all_files_in_dir()

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

+ +
+
+ + + + + + + + +
def 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
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/folder_analyzer.py
  • +
+
+
+ + + + + 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..5b2a45e --- /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#a1bb0358140931d82c7616f12efe31821", null ], + [ "list_all_files_in_dir", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec", null ], + [ "run", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc", 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..1d2849e --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + 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..320340b --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 @@ -0,0 +1 @@ +2ce8b70614e0bc292a08fd5461334e23 \ 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..7cce745 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg @@ -0,0 +1,55 @@ + + + + + + +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..1d2849e --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + 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..320340b --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +2ce8b70614e0bc292a08fd5461334e23 \ 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..7cce745 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg @@ -0,0 +1,55 @@ + + + + + + +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_a70b845318fc7ac3b607daf26378e19ec_icgraph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map new file mode 100644 index 0000000..b96ef6a --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 new file mode 100644 index 0000000..4aed41f --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 @@ -0,0 +1 @@ +e2a0ef57ef0713a63ba1c8ee5591e9f5 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg new file mode 100644 index 0000000..dd93702 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +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_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map new file mode 100644 index 0000000..fb5d687 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 new file mode 100644 index 0000000..88516d8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 @@ -0,0 +1 @@ +a3c6817cbc08f61a1a5f2b81334ae3dc \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg new file mode 100644 index 0000000..3e978da --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg @@ -0,0 +1,41 @@ + + + + + + +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..47bcddc --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.git_analyzer.GitDocGenHook Member List
+
+ +
+ + + + + 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..2922e41 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html @@ -0,0 +1,385 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.git_analyzer.GitDocGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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

def __init__ (self, str repo_path, APIClient api_client)
 
def get_modified_files_in_last_commit (self)
 
def get_modified_lines (self, diff_text)
 
def process_file (self, file_path)
 
def run (self)
 
def __init__ (self, str folder_path, APIClient api_client)
 
+ + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Attributes inherited from penify_hook.base_analyzer.BaseAnalyzer
 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
def penify_hook.git_analyzer.GitDocGenHook.__init__ ( self,
str repo_path,
APIClient api_client 
)
+
+ +

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

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

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

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

◆ process_file()

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

◆ run()

+ +
+
+ + + + + + + + +
def 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:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/git_analyzer.py
  • +
+
+
+ + + + + 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..553f118 --- /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#a92275fddb43dbef6dfdb6c1ed6e96d0c", null ], + [ "get_modified_files_in_last_commit", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481", null ], + [ "get_modified_lines", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd", null ], + [ "process_file", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85", null ], + [ "run", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae", 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..4f48f5f --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + 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..8b8aff5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 @@ -0,0 +1 @@ +d285fcb980d93312bfad049f92895ba8 \ 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..cae0b9c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg @@ -0,0 +1,58 @@ + + + + + + +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..4f48f5f --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + 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..8b8aff5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +d285fcb980d93312bfad049f92895ba8 \ 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..cae0b9c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg @@ -0,0 +1,58 @@ + + + + + + +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_a05313caa22b173ce75638f0db08eeb85_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map new file mode 100644 index 0000000..f66377c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 new file mode 100644 index 0000000..bfda978 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 @@ -0,0 +1 @@ +d30b2fe6c8ef2ddf32a8fa6ab13a25f2 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg new file mode 100644 index 0000000..78f9802 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.process_file + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map new file mode 100644 index 0000000..7d6cbb4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 new file mode 100644 index 0000000..519d9fc --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 @@ -0,0 +1 @@ +4e6accfb0097a03bb56e2f390d46b980 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg new file mode 100644 index 0000000..41b0db0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.process_file + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.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_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map new file mode 100644 index 0000000..7d6a6aa --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 new file mode 100644 index 0000000..e94ad2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 @@ -0,0 +1 @@ +c545389fcb803268668d7fa34c6d8fd9 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg new file mode 100644 index 0000000..0c109b8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +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_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map new file mode 100644 index 0000000..2bd16a0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 new file mode 100644 index 0000000..cda212c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 @@ -0,0 +1 @@ +4498c89a026edc471fa55e435c85053e \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg new file mode 100644 index 0000000..684d392 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg @@ -0,0 +1,356 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.run + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node9 + + + + + +Node11 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node11 + + + + + +Node13 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5->Node3 + + + + + +Node7 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node6->Node7 + + + + + +Node10 + + +penify_hook.ui_utils.format +_success + + + + + +Node9->Node10 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node11->Node12 + + + + + +Node14 + + +penify_hook.ui_utils.print +_warning + + + + + +Node13->Node14 + + + + + +Node16 + + +penify_hook.ui_utils.update +_stage + + + + + +Node13->Node16 + + + + + +Node15 + + +penify_hook.ui_utils.format +_warning + + + + + +Node14->Node15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg new file mode 100644 index 0000000..91ef970 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg @@ -0,0 +1,268 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.run + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node9 + + + + + +Node11 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node11 + + + + + +Node13 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5->Node3 + + + + + +Node7 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node6->Node7 + + + + + +Node10 + + +penify_hook.ui_utils.format +_success + + + + + +Node9->Node10 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node11->Node12 + + + + + +Node14 + + +penify_hook.ui_utils.print +_warning + + + + + +Node13->Node14 + + + + + +Node16 + + +penify_hook.ui_utils.update +_stage + + + + + +Node13->Node16 + + + + + +Node15 + + +penify_hook.ui_utils.format +_warning + + + + + +Node14->Node15 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map new file mode 100644 index 0000000..64415d0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 new file mode 100644 index 0000000..4c4eb97 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 @@ -0,0 +1 @@ +eb87828bf186415180fe0c4a9a69bffa \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg new file mode 100644 index 0000000..cec3173 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg @@ -0,0 +1,29 @@ + + + + + + +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_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map new file mode 100644 index 0000000..64415d0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 new file mode 100644 index 0000000..756ea69 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 @@ -0,0 +1 @@ +3a80069fcc09aa58b795925a04c3a1a9 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg new file mode 100644 index 0000000..caf1235 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg @@ -0,0 +1,29 @@ + + + + + + +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_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map new file mode 100644 index 0000000..10ddcfb --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 new file mode 100644 index 0000000..5dc8e1b --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 @@ -0,0 +1 @@ +1071229abc0a24fe1359fe7763b4c8d0 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg new file mode 100644 index 0000000..c278664 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_lines + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg new file mode 100644 index 0000000..b1e00b5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg @@ -0,0 +1,71 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_lines + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + 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..83deb35 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.jira_client.JiraClient Member List
+
+ +
+ + + + + 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..8fabaf4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html @@ -0,0 +1,774 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.jira_client.JiraClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.jira_client.JiraClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.jira_client.JiraClient:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

def __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_user
 
 jira_api_token
 
 jira_client
 
+

Detailed Description

+
Client for interacting with JIRA API
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

◆ 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_client

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

◆ jira_url

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

◆ jira_user

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_user
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/jira_client.py
  • +
+
+
+ + + + + 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..f68eed5 --- /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#a47efc1ec07389c960f2dfb37ba8c09f5", 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..2bc82ba --- /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..fd79a8c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 @@ -0,0 +1 @@ +6c94c8bb54063a87c9a021e499d2535a \ 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..9d17916 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg @@ -0,0 +1,44 @@ + + + + + + +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..0aabfe7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + 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..15413c7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 @@ -0,0 +1 @@ +e49f7a18c7f7394bc3ba168c4b7dfcbf \ 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..8976bbb --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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..3d42518 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg @@ -0,0 +1,176 @@ + + + + + + +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_a093d6456fe053ef7a7862d5d6851910c_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map new file mode 100644 index 0000000..d9cf631 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 new file mode 100644 index 0000000..bf358a8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 @@ -0,0 +1 @@ +c2b8f7eecd95ef8d0186d7f206ad610c \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg new file mode 100644 index 0000000..8f34c4a --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys_from_branch + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg new file mode 100644 index 0000000..b16e395 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg @@ -0,0 +1,54 @@ + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys_from_branch + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + 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..18d2610 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map @@ -0,0 +1,6 @@ + + + + + + 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..c70fc7f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 @@ -0,0 +1 @@ +3fdd0ff288b79c613c0ccbdde81f6b44 \ 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..da43481 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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..d90f209 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg @@ -0,0 +1,78 @@ + + + + + + +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..9762fa4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map @@ -0,0 +1,4 @@ + + + + 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..58d4f7d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 @@ -0,0 +1 @@ +e64b34f639342bc29f69697ff85b6115 \ 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..bff31d2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +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..3b9c39b --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map @@ -0,0 +1,4 @@ + + + + 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..e84f7d7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 @@ -0,0 +1 @@ +ce0d7d39675e66eb580380759195be0e \ 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..4ad6e4c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +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..7074523 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map @@ -0,0 +1,6 @@ + + + + + + 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..584c012 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 @@ -0,0 +1 @@ +b4d0f6392752d140ca4858cea5527f74 \ 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..0945c22 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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..6d9824e --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg @@ -0,0 +1,80 @@ + + + + + + +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..9fb10de --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + 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..d953518 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 @@ -0,0 +1 @@ +9194291c6b536fb2aa39473066ce3d57 \ 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..036f520 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +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..9f7cbe1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg @@ -0,0 +1,153 @@ + + + + + + +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..f7e25fe --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map @@ -0,0 +1,4 @@ + + + + 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..ea4f60f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 @@ -0,0 +1 @@ +01a09828002214953a0e4ce5a004f82b \ 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..6bfdd52 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +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..a54aa35 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map @@ -0,0 +1,3 @@ + + + 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..8cce519 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 @@ -0,0 +1 @@ +be0799c63ed63825acfa4aefd053a607 \ 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..dcc9f2d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg @@ -0,0 +1,29 @@ + + + + + + +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..2e5bc9c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map @@ -0,0 +1,4 @@ + + + + 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..562794f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 @@ -0,0 +1 @@ +de5b0ac337604f2c79dc74aaee0a1763 \ 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..d83a7d1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +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..7028556 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map @@ -0,0 +1,5 @@ + + + + + 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..cc19180 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 @@ -0,0 +1 @@ +8ed68fcd41631bf9876f85ae6b4b3de2 \ 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..06c5c4d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg @@ -0,0 +1,58 @@ + + + + + + +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..75c520f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map @@ -0,0 +1,4 @@ + + + + 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..b855a20 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 @@ -0,0 +1 @@ +2e42fe22a9070fc3f543991e99faf205 \ 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..e1b859e --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +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..3722ccb --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map @@ -0,0 +1,5 @@ + + + + + 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..f452c00 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 @@ -0,0 +1 @@ +f5fed9d6bb8f646e32b31343d031871d \ 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..b80a9d9 --- /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..1e3bc11 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg @@ -0,0 +1,57 @@ + + + + + + +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..b89125f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map @@ -0,0 +1,6 @@ + + + + + + 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..990f237 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 @@ -0,0 +1 @@ +e8676c5f3006c0807c1fe30ed75a7701 \ 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..0587bf7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg @@ -0,0 +1,85 @@ + + + + + + +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..5f09a4a --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map @@ -0,0 +1,4 @@ + + + + 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..3221326 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 @@ -0,0 +1 @@ +8e9085e7e96a72eae434ab3b9bb34f71 \ 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..bd95f00 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +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..ddf5a68 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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.LLMClientprivate
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..9602aee --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html @@ -0,0 +1,360 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.llm_client.LLMClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.llm_client.LLMClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.llm_client.LLMClient:
+
+
+
+
+ + + + + + + + +

+Public Member Functions

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

+Public Attributes

 model
 
+ + + +

+Private Attributes

 _litellm
 
+

Detailed Description

+
Client for interacting with LLM models using LiteLLM.
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

◆ litellm()

+ +
+
+ + + + + + + + +
def 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
+
+private
+
+ +
+
+ +

◆ model

+ +
+
+ + + + +
penify_hook.llm_client.LLMClient.model
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/llm_client.py
  • +
+
+
+ + + + + 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..719b127 --- /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#a76d92354f585ab4bb291169f9f530764", null ], + [ "generate_commit_summary", "classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000", null ], + [ "litellm", "classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e", 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..dcac6b2 --- /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..6db17d2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.md5 @@ -0,0 +1 @@ +98e4897c5b45a162671e50e760d299ce \ 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..40f016c --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient__coll__graph.svg @@ -0,0 +1,29 @@ + + + + + + +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..5d480bd --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.map @@ -0,0 +1,4 @@ + + + + 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..5ae4b79 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.md5 @@ -0,0 +1 @@ +3a38b34ed8236aa424f3ba243fba3cf0 \ 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..047611c --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_cgraph.svg @@ -0,0 +1,38 @@ + + + + + + +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_icgraph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.map new file mode 100644 index 0000000..4094a12 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.md5 new file mode 100644 index 0000000..6c5244f --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.md5 @@ -0,0 +1 @@ +2232db7a39aade439b305a1e3373c005 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.svg new file mode 100644 index 0000000..212c293 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_a2ad3014dac466ee1d8e00306d0cf2000_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.llm_client.LLMClient.generate_commit_summary + + + +Node1 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.map b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.map new file mode 100644 index 0000000..12bd8c0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.md5 b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.md5 new file mode 100644 index 0000000..22a2946 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.md5 @@ -0,0 +1 @@ +3dd9f4364bc4c50da31157ac03a3e97f \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.svg new file mode 100644 index 0000000..1a42767 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.llm_client.LLMClient.litellm + + + +Node1 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node2 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph_org.svg b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph_org.svg new file mode 100644 index 0000000..13d364a --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient_ad6f06658ca922793f879474f2234518e_icgraph_org.svg @@ -0,0 +1,54 @@ + + + + + + +penify_hook.llm_client.LLMClient.litellm + + + +Node1 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node2 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2->Node3 + + + + + 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..5738acd --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.utils.GitRepoNotFoundError Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/utils.py
  • +
+
+
+ + + + + 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..5f3516c --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.map @@ -0,0 +1,4 @@ + + + + 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..2e3ae13 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.md5 @@ -0,0 +1 @@ +ae33ddd5f5a4f2a38ac959e4302206a1 \ 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..1ca9a11 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__coll__graph.svg @@ -0,0 +1,46 @@ + + + + + + +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..5f3516c --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.map @@ -0,0 +1,4 @@ + + + + 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..2e3ae13 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.md5 @@ -0,0 +1 @@ +ae33ddd5f5a4f2a38ac959e4302206a1 \ 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..1ca9a11 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError__inherit__graph.svg @@ -0,0 +1,46 @@ + + + + + + +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..59b41b6 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..5bd6f4b --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html @@ -0,0 +1,791 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_commit_commands.TestCommitCommands Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tests.test_commit_commands.TestCommitCommands Class Reference
+
+
+
+Collaboration diagram for tests.test_commit_commands.TestCommitCommands:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

def mock_api_client (self)
 
def mock_llm_client (self)
 
def mock_jira_client (self)
 
def mock_commit_doc_gen (self)
 
def mock_git_folder_search (self)
 
def mock_print_functions (self)
 
def 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)
 
def 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)
 
def 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)
 
def test_commit_code_error_handling (self, mock_print, mock_exit, mock_git_folder_search, mock_doc_gen, mock_api_client)
 
def test_setup_commit_parser (self)
 
def 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()

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

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

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

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

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

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

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

◆ test_commit_code_with_jira_client()

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

◆ test_commit_code_with_jira_connection_failure()

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

◆ test_commit_code_with_llm_client()

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

◆ test_handle_commit()

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

◆ test_setup_commit_parser()

+ +
+
+ + + + + + + + +
def 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.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
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..46b59e3 --- /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#abcd2354a2af4afe19e57877628d3acc2", null ], + [ "mock_commit_doc_gen", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6", null ], + [ "mock_git_folder_search", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e", null ], + [ "mock_jira_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be", null ], + [ "mock_llm_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4", null ], + [ "mock_print_functions", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be", null ], + [ "test_commit_code_error_handling", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691", null ], + [ "test_commit_code_with_jira_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b", null ], + [ "test_commit_code_with_jira_connection_failure", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e", null ], + [ "test_commit_code_with_llm_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0", null ], + [ "test_handle_commit", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597", null ], + [ "test_setup_commit_parser", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc", 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..c06dd4a --- /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..9d383d8 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 @@ -0,0 +1 @@ +01c384c51b9b9d20ecd5af3519740055 \ 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..71f1b91 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg @@ -0,0 +1,42 @@ + + + + + + +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_a43c2ff3707124aa48e8eb581106b8691_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map new file mode 100644 index 0000000..cb1751e --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 new file mode 100644 index 0000000..f317412 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 @@ -0,0 +1 @@ +fac6736890d3e6569a3e562221e2e80c \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg new file mode 100644 index 0000000..9da54b6 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_error_handling + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg new file mode 100644 index 0000000..add0cc8 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg @@ -0,0 +1,156 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_error_handling + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map new file mode 100644 index 0000000..889f430 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 new file mode 100644 index 0000000..6ec9086 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 @@ -0,0 +1 @@ +cae6ed50d17895098d586359b58517cc \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg new file mode 100644 index 0000000..390efd9 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_setup_commit_parser + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_setup_commit_parser + + + + + +Node2 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map new file mode 100644 index 0000000..ae0be27 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 new file mode 100644 index 0000000..332ac4f --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 @@ -0,0 +1 @@ +ef8182faf1bcd63d3487614530947b10 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg new file mode 100644 index 0000000..cd07d25 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_handle_commit + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg new file mode 100644 index 0000000..90c6c04 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg @@ -0,0 +1,317 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_handle_commit + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map new file mode 100644 index 0000000..24ac63a --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 new file mode 100644 index 0000000..9c174cc --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 @@ -0,0 +1 @@ +acd28568eb3edcfc33ca2521297fd075 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg new file mode 100644 index 0000000..59cb486 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_llm_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg new file mode 100644 index 0000000..853b56c --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg @@ -0,0 +1,156 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_llm_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map new file mode 100644 index 0000000..9780c3f --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 new file mode 100644 index 0000000..080d356 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 @@ -0,0 +1 @@ +8bc1cc2849f225faaeab1719b6c0a3d6 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg new file mode 100644 index 0000000..786afd0 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_connection_failure + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg new file mode 100644 index 0000000..4b43aba --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg @@ -0,0 +1,157 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_connection_failure + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map new file mode 100644 index 0000000..2c56c22 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 new file mode 100644 index 0000000..a77222b --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 @@ -0,0 +1 @@ +2b4709da9a40be7a45efe895e73cc31f \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg new file mode 100644 index 0000000..1ed6c1b --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg new file mode 100644 index 0000000..b3aa423 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg @@ -0,0 +1,156 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + 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..8675a40 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..789b9bc --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html @@ -0,0 +1,886 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_config_commands.TestConfigCommands Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tests.test_config_commands.TestConfigCommands Class Reference
+
+
+
+Collaboration diagram for tests.test_config_commands.TestConfigCommands:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

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

Member Function Documentation

+ +

◆ test_get_jira_config_exists()

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

◆ test_get_llm_config_empty()

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

◆ test_get_llm_config_exists()

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

◆ test_get_llm_config_invalid_json()

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

◆ test_get_penify_config_existing_dir()

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

◆ test_get_penify_config_new_dir()

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

◆ test_get_token_from_config()

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

◆ test_get_token_from_env()

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

◆ test_get_token_not_found()

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

◆ test_save_jira_config_success()

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

◆ test_save_llm_config_failure()

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

◆ test_save_llm_config_success()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def 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.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
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..88e855a --- /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#aee37b97432821d19758c6325d4c74bcf", null ], + [ "test_get_llm_config_empty", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd", null ], + [ "test_get_llm_config_exists", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167", null ], + [ "test_get_llm_config_invalid_json", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd", null ], + [ "test_get_penify_config_existing_dir", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a", null ], + [ "test_get_penify_config_new_dir", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948", null ], + [ "test_get_token_from_config", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c", null ], + [ "test_get_token_from_env", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232", null ], + [ "test_get_token_not_found", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436", null ], + [ "test_save_jira_config_success", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375", null ], + [ "test_save_llm_config_failure", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac", null ], + [ "test_save_llm_config_success", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9", 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..b44b108 --- /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..eb46690 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 @@ -0,0 +1 @@ +2db6cf58d997b43a776fb21752d4aa29 \ 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..9daa237 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg @@ -0,0 +1,50 @@ + + + + + + +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_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map new file mode 100644 index 0000000..078fe57 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 new file mode 100644 index 0000000..9e0bad2 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 @@ -0,0 +1 @@ +fe055e22847261fb4e8e965247fa63e4 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg new file mode 100644 index 0000000..f4a0db4 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_existing_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg new file mode 100644 index 0000000..223d6fc --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_existing_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map new file mode 100644 index 0000000..eda7789 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 new file mode 100644 index 0000000..9cef76a --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 @@ -0,0 +1 @@ +28bc7f826bf5c37f1e543c6a2217c011 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg new file mode 100644 index 0000000..b978430 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_env + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg new file mode 100644 index 0000000..c5e3f5e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg @@ -0,0 +1,123 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_env + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map new file mode 100644 index 0000000..b8a69cd --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 new file mode 100644 index 0000000..179211c --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 @@ -0,0 +1 @@ +66249d926cb6fd81bdf9ba46dc56d466 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg new file mode 100644 index 0000000..3c9de34 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_new_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg new file mode 100644 index 0000000..3b4f6d8 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_new_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map new file mode 100644 index 0000000..9ca3973 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 new file mode 100644 index 0000000..494b2db --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 @@ -0,0 +1 @@ +fe3072609a9a0bf3d14e3143add0e6da \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg new file mode 100644 index 0000000..dd9b3ef --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_not_found + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg new file mode 100644 index 0000000..65b3e03 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg @@ -0,0 +1,123 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_not_found + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map new file mode 100644 index 0000000..bdcc413 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 new file mode 100644 index 0000000..bdddb02 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 @@ -0,0 +1 @@ +6604e171883373f917ba1e50c7dcf2a8 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg new file mode 100644 index 0000000..803f331 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_invalid_json + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg new file mode 100644 index 0000000..4b1b7ba --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_invalid_json + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map new file mode 100644 index 0000000..8da2d5a --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 new file mode 100644 index 0000000..49db9b2 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 @@ -0,0 +1 @@ +18a45266c6274df8d06c6771aea4d3ce \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg new file mode 100644 index 0000000..d4ab491 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_config + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg new file mode 100644 index 0000000..9a84079 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg @@ -0,0 +1,123 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_config + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map new file mode 100644 index 0000000..27f9795 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 new file mode 100644 index 0000000..d5a551d --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 @@ -0,0 +1 @@ +2efae0628f3580e167ff4e2e9744ff76 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg new file mode 100644 index 0000000..48f17d2 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_failure + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg new file mode 100644 index 0000000..f52311f --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_failure + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map new file mode 100644 index 0000000..9e0e801 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 new file mode 100644 index 0000000..b6d0832 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 @@ -0,0 +1 @@ +ccb36b28b36810b7debb14198aa8c840 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg new file mode 100644 index 0000000..8e3f6ab --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_empty + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg new file mode 100644 index 0000000..325a4d7 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_empty + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map new file mode 100644 index 0000000..cb3426e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 new file mode 100644 index 0000000..616400e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 @@ -0,0 +1 @@ +2dda560e911927ca62424d428f826e98 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg new file mode 100644 index 0000000..657b852 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg new file mode 100644 index 0000000..cf3f2f3 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map new file mode 100644 index 0000000..98b03e3 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 new file mode 100644 index 0000000..5292fed --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 @@ -0,0 +1 @@ +8a521fb6ddaca64c6678d226bec595a0 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg new file mode 100644 index 0000000..6c791c9 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg new file mode 100644 index 0000000..9c3f7c4 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map new file mode 100644 index 0000000..d0930f3 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 new file mode 100644 index 0000000..904ab8d --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 @@ -0,0 +1 @@ +6fbf377ddd24e2b0afa956a95f55e6c5 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg new file mode 100644 index 0000000..e31aeb0 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_jira_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg new file mode 100644 index 0000000..19057f1 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_jira_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map new file mode 100644 index 0000000..7a6d255 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 new file mode 100644 index 0000000..68d6c1c --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 @@ -0,0 +1 @@ +2e054bb79c0b6f45c4788678aac6e514 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg new file mode 100644 index 0000000..e18fa25 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_jira_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg new file mode 100644 index 0000000..eaa2159 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_jira_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + 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..7930b8a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..be8b92a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html @@ -0,0 +1,268 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_web_config.TestWebConfig Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
tests.test_web_config.TestWebConfig Class Reference
+
+
+
+Collaboration diagram for tests.test_web_config.TestWebConfig:
+
+
+
+
+ + + + + + +

+Public Member Functions

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

Member Function Documentation

+ +

◆ test_config_jira_web_server_setup()

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

◆ test_config_llm_web_server_setup()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def 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.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
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..64ea648 --- /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#a06e600222e426b003850509cb1d3190a", null ], + [ "test_config_llm_web_server_setup", "classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35", 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..77d4a58 --- /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..f0a528b --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 @@ -0,0 +1 @@ +ab8cbd57a4ebb302c58c19a4efbc1c6e \ 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..acbac22 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg @@ -0,0 +1,30 @@ + + + + + + +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_a06e600222e426b003850509cb1d3190a_cgraph.map b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map new file mode 100644 index 0000000..249e111 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 new file mode 100644 index 0000000..064b512 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 @@ -0,0 +1 @@ +40be6a2b68a00531af40fd3546a6f158 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg new file mode 100644 index 0000000..ba12fb0 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_web_config.TestWebConfig.test_config_jira_web_server_setup + + + +Node1 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg new file mode 100644 index 0000000..6325fbe --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg @@ -0,0 +1,139 @@ + + + + + + +tests.test_web_config.TestWebConfig.test_config_jira_web_server_setup + + + +Node1 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map new file mode 100644 index 0000000..0befd5a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 new file mode 100644 index 0000000..2632d9a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 @@ -0,0 +1 @@ +5ca25c9e4be6eb96370b0328e2a5e679 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg new file mode 100644 index 0000000..a5b8af9 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +tests.test_web_config.TestWebConfig.test_config_llm_web_server_setup + + + +Node1 + + +tests.test_web_config.Test +WebConfig.test_config_llm +_web_server_setup + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/closed.png b/docs/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/docs/html/commit-commands_8md.html b/docs/html/commit-commands_8md.html new file mode 100644 index 0000000..9c234f0 --- /dev/null +++ b/docs/html/commit-commands_8md.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/commit-commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/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..666cbba --- /dev/null +++ b/docs/html/commit__analyzer_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commit_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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..4071210 --- /dev/null +++ b/docs/html/commit__commands_8py.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/commit_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
commit_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

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

+Functions

def penify_hook.commands.commit_commands.commit_code (api_url, token, message, open_terminal, generate_description, llm_model=None, llm_api_base=None, llm_api_key=None, jira_url=None, jira_user=None, jira_api_token=None)
 
def penify_hook.commands.commit_commands.setup_commit_parser (parser)
 
def 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..823f902 --- /dev/null +++ b/docs/html/commit__commands_8py.js @@ -0,0 +1,6 @@ +var commit__commands_8py = +[ + [ "commit_code", "commit__commands_8py.html#a62564c4e8ad59fc46d56cb0f9122a71a", null ], + [ "handle_commit", "commit__commands_8py.html#af4f739f524c38b437e4e47673d683e23", null ], + [ "setup_commit_parser", "commit__commands_8py.html#a8627583116eb78e31a4d3cdc16d2f15c", 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..2f95767 --- /dev/null +++ b/docs/html/config-commands_8md.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/config-commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/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..c59215e --- /dev/null +++ b/docs/html/config__command_8py.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/config_command.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
config_command.py File Reference
+
+
+ + + + + + +

+Namespaces

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

+Functions

def penify_hook.config_command.setup_config_parser (parent_parser)
 
def 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..7d1ed0a --- /dev/null +++ b/docs/html/config__command_8py.js @@ -0,0 +1,5 @@ +var config__command_8py = +[ + [ "handle_config", "config__command_8py.html#a240e5331681eb574ac319d7458783bde", null ], + [ "setup_config_parser", "config__command_8py.html#a4f3eb92164a69df1446d745f8a09285e", 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..ca1a944 --- /dev/null +++ b/docs/html/config__commands_8py.html @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/config_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/config__commands_8py.js b/docs/html/config__commands_8py.js new file mode 100644 index 0000000..395f3fb --- /dev/null +++ b/docs/html/config__commands_8py.js @@ -0,0 +1,15 @@ +var config__commands_8py = +[ + [ "config_jira_web", "config__commands_8py.html#af115198ea5d6808ccb98733957f50b06", null ], + [ "config_llm_web", "config__commands_8py.html#a185dfc34a655ed80e6c95939b6f3c35c", null ], + [ "get_env_var_or_default", "config__commands_8py.html#a3caf2b062dd33b1f1d7ddc7224f0ff87", null ], + [ "get_jira_config", "config__commands_8py.html#a15bf3685c4dcb5c15ba6a4055e484cf2", null ], + [ "get_llm_config", "config__commands_8py.html#a6492bc8e7df6e38bb06ad05e572d4cc0", null ], + [ "get_penify_config", "config__commands_8py.html#a6559a82d0bf727703d550d1003d3ed20", null ], + [ "get_token", "config__commands_8py.html#a5503d51c905e2f1b299b12d2a73bd812", null ], + [ "load_env_files", "config__commands_8py.html#aabe277132ce0bc0aacef951cf1dee2ae", null ], + [ "save_jira_config", "config__commands_8py.html#ab2486ac2bf16b4a671e49625bfa4f9b4", null ], + [ "save_llm_config", "config__commands_8py.html#a4617bc5956e502c9555dc0dda0376df4", null ], + [ "DOTENV_AVAILABLE", "config__commands_8py.html#a152642ab83cf6219b604bda6122aba67", null ], + [ "path", "config__commands_8py.html#a4b202072a3a3b8515c9c254622e9c880", 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..764fdc0 --- /dev/null +++ b/docs/html/conftest_8py.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/conftest.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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..c3c300c --- /dev/null +++ b/docs/html/constants_8py.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/constants.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
constants.py File Reference
+
+
+ + + + + + +

+Namespaces

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

+Variables

string penify_hook.constants.API_URL = 'http://localhost:8000/api'
 
string 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..adbd23d --- /dev/null +++ b/docs/html/constants_8py.js @@ -0,0 +1,5 @@ +var constants_8py = +[ + [ "API_URL", "constants_8py.html#af198b5d1fc2f44657a2061aa324af3e0", null ], + [ "DASHBOARD_URL", "constants_8py.html#a316c5a606e4440fb8224c6544c3a15f0", null ] +]; \ No newline at end of file diff --git a/docs/html/detailed-usage_8md.html b/docs/html/detailed-usage_8md.html new file mode 100644 index 0000000..160bec0 --- /dev/null +++ b/docs/html/detailed-usage_8md.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/detailed-usage.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/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..e372555 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tests Directory Reference
+
+
+
+Directory dependency graph for tests:
+
+
+
+
+ + + + + + + + + + + + + + +

+Files

file  __init__.py
 
file  conftest.py
 
file  test_commit_commands.py
 
file  test_config_commands.py
 
file  test_doc_commands.py
 
file  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..599c63c --- /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..afb9081 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 @@ -0,0 +1 @@ +fdbdbdbe253c547a3b41063e5036418d \ 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..08fb018 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg @@ -0,0 +1,30 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/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..9f615bf --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623.html @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..0f23bcc --- /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..2214ec5 --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 @@ -0,0 +1 @@ +103c12b563793db32ed50b111f45bada \ 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..10a902d --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg @@ -0,0 +1,30 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/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..62f667c --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
commands Directory Reference
+
+
+
+Directory dependency graph for commands:
+
+
+
+
+ + + + + + + + + + + + + + +

+Files

file  __init__.py
 
file  auth_commands.py
 
file  commit_commands.py
 
file  config_commands.py
 
file  doc_commands.py
 
file  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..34cf9f2 --- /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..597f466 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 @@ -0,0 +1 @@ +1c8b9302d49050442030c2a1fe004137 \ 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..866d63c --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg @@ -0,0 +1,30 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/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..35c46b1 --- /dev/null +++ b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify-cli Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  docs
 
directory  penify_hook
 
directory  tests
 
+ + + +

+Files

file  setup.py
 
+
+
+ + + + + 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..42d478b --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook Directory Reference
+
+
+
+Directory dependency graph for penify_hook:
+
+
+
+
+ + + + +

+Directories

directory  commands
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  __init__.py
 
file  api_client.py
 
file  base_analyzer.py
 
file  commit_analyzer.py
 
file  config_command.py
 
file  constants.py
 
file  file_analyzer.py
 
file  folder_analyzer.py
 
file  git_analyzer.py
 
file  jira_client.py
 
file  llm_client.py
 
file  login_command.py
 
file  main.py
 
file  ui_utils.py
 
file  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..769a769 --- /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..577134d --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.md5 @@ -0,0 +1 @@ +81055f3442546e3f091686cb9eef1bc5 \ 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..9c6c5d0 --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5_dep.svg @@ -0,0 +1,42 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook + + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + +clusterdir_f88c3381c1861b3f7ca1f3d63cf244b5 + + + + + + + +dir_f88c3381c1861b3f7ca1f3d63cf244b5 +penify_hook + + + +dir_624fa2a8bce97f0444ac5cca335d4e23 + + +commands + + + + + diff --git a/docs/html/doc.png b/docs/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/docs/html/doc__commands_8md.html b/docs/html/doc__commands_8md.html new file mode 100644 index 0000000..c5448a3 --- /dev/null +++ b/docs/html/doc__commands_8md.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/doc_commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/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..58121e8 --- /dev/null +++ b/docs/html/doc__commands_8py.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/doc_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
doc_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

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

+Functions

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

+Variables

string 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..4bb5a06 --- /dev/null +++ b/docs/html/doc__commands_8py.js @@ -0,0 +1,7 @@ +var doc__commands_8py = +[ + [ "generate_doc", "doc__commands_8py.html#a4daac68bc563432bf25c85dc78081a25", null ], + [ "handle_docgen", "doc__commands_8py.html#a2006ab13bff718ef783868a910c0b704", null ], + [ "setup_docgen_parser", "doc__commands_8py.html#acc7f4ead1b11951d885fa5c151c2cbe0", null ], + [ "docgen_description", "doc__commands_8py.html#a3e42540047da37565afffeaf106cb948", null ] +]; \ No newline at end of file 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..2010785 --- /dev/null +++ b/docs/html/doxygen.css @@ -0,0 +1,1841 @@ +/* The standard CSS for doxygen 1.9.4 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +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; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +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 { + border-right: 1px solid #A3B4D7; + 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: #fff; + 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; +} + +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.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: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +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 { + overflow: visible; +} + +#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; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + 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.lineno { + padding-right: 4px; + margin-right: 9px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + 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.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +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 { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +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; +} + +.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.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; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + 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; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.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; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + 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; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* 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; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.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: "courier new",courier,monospace; + 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.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.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; + 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.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @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 { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + 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 { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.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; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + 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:#8AA0CC; + 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; + text-decoration: none; + 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:#6884BD; +} + +.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:#364D7C; + 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.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 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.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#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: 200% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 90% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +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; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") 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; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,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.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +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; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.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;*/ + 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 div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#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: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + 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: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + 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: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + 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 +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +code.JavaDocCode { + direction:ltr; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/docs/html/doxygen.svg b/docs/html/doxygen.svg new file mode 100644 index 0000000..d42dad5 --- /dev/null +++ b/docs/html/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/dynsections.js b/docs/html/dynsections.js new file mode 100644 index 0000000..3174bd7 --- /dev/null +++ b/docs/html/dynsections.js @@ -0,0 +1,121 @@ +/* + @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) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var 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; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/example-workflows.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/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..1f0b93f --- /dev/null +++ b/docs/html/file__analyzer_8py.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/file_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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..a650b8a --- /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" ], + [ "logger", "file__analyzer_8py.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..2992ef3 --- /dev/null +++ b/docs/html/files.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + +penify-cli: File List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + 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..cf69cdc --- /dev/null +++ b/docs/html/folder__analyzer_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/folder_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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.png b/docs/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/docs/html/functions.html b/docs/html/functions.html new file mode 100644 index 0000000..571b56b --- /dev/null +++ b/docs/html/functions.html @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..236890d --- /dev/null +++ b/docs/html/functions_func.html @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members - Functions + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- _ -

+ + +

- 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..936617e --- /dev/null +++ b/docs/html/functions_vars.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members - Variables + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/git__analyzer_8py.html b/docs/html/git__analyzer_8py.html new file mode 100644 index 0000000..ffa378f --- /dev/null +++ b/docs/html/git__analyzer_8py.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/git_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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..f8197a4 --- /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" ], + [ "logger", "git__analyzer_8py.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..ecf36da --- /dev/null +++ b/docs/html/graph_legend.html @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Graph Legend + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + + diff --git a/docs/html/graph_legend.md5 b/docs/html/graph_legend.md5 new file mode 100644 index 0000000..5543aee --- /dev/null +++ b/docs/html/graph_legend.md5 @@ -0,0 +1 @@ +2949d8d683b49299ad5e82dbf5d1be6c \ 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..5c7a71a --- /dev/null +++ b/docs/html/graph_legend.svg @@ -0,0 +1,117 @@ + + + + + + +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..8c1fe33 --- /dev/null +++ b/docs/html/hierarchy.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + 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..796a364 --- /dev/null +++ b/docs/html/hook__commands_8py.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/hook_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
hook_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

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

+Functions

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

+Variables

string penify_hook.commands.hook_commands.HOOK_FILENAME = "post-commit"
 
string 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..7868841 --- /dev/null +++ b/docs/html/hook__commands_8py.js @@ -0,0 +1,7 @@ +var hook__commands_8py = +[ + [ "install_git_hook", "hook__commands_8py.html#adff8f5d3bf1c3795974a391ee95b72b2", null ], + [ "uninstall_git_hook", "hook__commands_8py.html#a81543eb5fa835fd1237f24e8bce6201d", null ], + [ "HOOK_FILENAME", "hook__commands_8py.html#ae82fd46e5a9219da1478b0476b8214b1", null ], + [ "HOOK_TEMPLATE", "hook__commands_8py.html#a6a45aad71c8d32ce11a6dff8cee8bee7", 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..4343d3d --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Main Page + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..4d4472c --- /dev/null +++ b/docs/html/inherit_graph_0.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/inherit_graph_0.md5 b/docs/html/inherit_graph_0.md5 new file mode 100644 index 0000000..927ae02 --- /dev/null +++ b/docs/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +fbdbe5195fd7acea201510f0e9bb231e \ 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..af8bbff --- /dev/null +++ b/docs/html/inherit_graph_0.svg @@ -0,0 +1,38 @@ + + + + + + +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..e29f764 --- /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..ea3634a --- /dev/null +++ b/docs/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +61b97d863a0d1fddd4dbd69906ebc213 \ 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..31bd0a8 --- /dev/null +++ b/docs/html/inherit_graph_1.svg @@ -0,0 +1,22 @@ + + + + + + +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..799bfbb --- /dev/null +++ b/docs/html/inherit_graph_2.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/inherit_graph_2.md5 b/docs/html/inherit_graph_2.md5 new file mode 100644 index 0000000..4b44272 --- /dev/null +++ b/docs/html/inherit_graph_2.md5 @@ -0,0 +1 @@ +75e192bb568d3adda84eea21391817f9 \ 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..2677d68 --- /dev/null +++ b/docs/html/inherit_graph_2.svg @@ -0,0 +1,87 @@ + + + + + + +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..697011d --- /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..dc81dee --- /dev/null +++ b/docs/html/inherit_graph_3.md5 @@ -0,0 +1 @@ +fceca40b7ed3dc42e967f284c6fcc468 \ 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..8d32efa --- /dev/null +++ b/docs/html/inherit_graph_3.svg @@ -0,0 +1,23 @@ + + + + + + +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..8833eec --- /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..7b024dc --- /dev/null +++ b/docs/html/inherit_graph_4.md5 @@ -0,0 +1 @@ +78a208cc7ff8d5e3d76f7fe246474324 \ 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..f51c5c8 --- /dev/null +++ b/docs/html/inherit_graph_4.svg @@ -0,0 +1,22 @@ + + + + + + +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..340884d --- /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..a572e33 --- /dev/null +++ b/docs/html/inherit_graph_5.md5 @@ -0,0 +1 @@ +07fe5f1877ad04afe232476f3697a187 \ 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..d1eb1ca --- /dev/null +++ b/docs/html/inherit_graph_5.svg @@ -0,0 +1,23 @@ + + + + + + +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..093c227 --- /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..37adffc --- /dev/null +++ b/docs/html/inherit_graph_6.md5 @@ -0,0 +1 @@ +df59af5d6cbe4d3df1d1ec09b3fe3a88 \ 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..6156f4f --- /dev/null +++ b/docs/html/inherit_graph_6.svg @@ -0,0 +1,23 @@ + + + + + + +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..f1fc41d --- /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..474c162 --- /dev/null +++ b/docs/html/inherit_graph_7.md5 @@ -0,0 +1 @@ +0da5838f91ae0c3b8f7bfe23d4aad90f \ 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..a9bcadf --- /dev/null +++ b/docs/html/inherit_graph_7.svg @@ -0,0 +1,23 @@ + + + + + + +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..89f3ba1 --- /dev/null +++ b/docs/html/inherits.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Class Hierarchy
+
+
+ + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+ + + + + diff --git a/docs/html/jira__client_8py.html b/docs/html/jira__client_8py.html new file mode 100644 index 0000000..f7e182c --- /dev/null +++ b/docs/html/jira__client_8py.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/jira_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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..887fb38 --- /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" ], + [ "JIRA_AVAILABLE", "jira__client_8py.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..c9ed3d9 --- /dev/null +++ b/docs/html/jquery.js @@ -0,0 +1,35 @@ +/*! 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?"\ufffd":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 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/html/llm__client_8py.html b/docs/html/llm__client_8py.html new file mode 100644 index 0000000..463acd7 --- /dev/null +++ b/docs/html/llm__client_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/llm_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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..4e3f8e9 --- /dev/null +++ b/docs/html/login__command_8py.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/login_command.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
login_command.py File Reference
+
+
+ + + + + + +

+Namespaces

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

+Functions

def penify_hook.login_command.setup_login_parser (parser)
 
def 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..7ce13bc --- /dev/null +++ b/docs/html/login__command_8py.js @@ -0,0 +1,5 @@ +var login__command_8py = +[ + [ "handle_login", "login__command_8py.html#ae4bf932fbafeff834b0a0c5a37f74ccd", null ], + [ "setup_login_parser", "login__command_8py.html#aae63db4c484797bead34b7d874020c6a", null ] +]; \ No newline at end of file diff --git a/docs/html/main_8py.html b/docs/html/main_8py.html new file mode 100644 index 0000000..e4c1c69 --- /dev/null +++ b/docs/html/main_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/main.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
main.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.main
 
+ + + +

+Functions

def penify_hook.main.main ()
 
+
+
+ + + + + diff --git a/docs/html/main_8py.js b/docs/html/main_8py.js new file mode 100644 index 0000000..6150b32 --- /dev/null +++ b/docs/html/main_8py.js @@ -0,0 +1,4 @@ +var main_8py = +[ + [ "main", "main_8py.html#a16838b20df4bd14ee4b5e1dd2906738f", null ] +]; \ No newline at end of file diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html new file mode 100644 index 0000000..9c12aa8 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI Tool + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI Tool
+
+
+

Tests Coverage

+

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

+

+Features

+
    +
  • Automatically generate documentation for your code
  • +
  • Support for multiple programming languages
  • +
  • Git hook integration for automatic documentation on commits
  • +
  • Folder and file analysis
  • +
+

+Installation

+

Install from PyPI:

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

    +
  • -m, --message: Optional custom commit message
  • +
  • -e, --terminal: Open editor to modify commit message before committing
  • +
  • -d, --description: Generate commit message with both title and description (without this flag, only title is generated)
  • +
+

+Config

+

Configure local LLM and JIRA settings:

+
# Configure LLM settings
+
penify config llm --model MODEL_NAME [--api-base API_URL] [--api-key API_KEY]
+
+
# Configure LLM settings through web interface
+
penify config llm-web
+
+
# Configure JIRA settings
+
penify config jira --url JIRA_URL --username USERNAME --api-token TOKEN [--verify]
+
+
# Configure JIRA settings through web interface
+
penify config jira-web
+

+Advanced Commands (Login required)

+

+Login

+

To log in and obtain an API token:

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

    +
  • -l, --location: Path to specific file or folder for documentation generation (defaults to current directory)
  • +
+

+Git Hook Management

+

Install or uninstall Git post-commit hooks:

+
# Install Git hook
+
penify docgen install-hook [-l /path/to/repo]
+
+
# Uninstall Git hook
+
penify docgen uninstall-hook [-l /path/to/repo]
+

Options:

    +
  • -l, --location: Path to the Git repository (defaults to current directory)
  • +
+

+Authentication

+

Penify CLI uses an API token for authentication with advanced features.

+

If no token is available and you try to access an advanced feature, you'll be prompted to log in.

+

+Local LLM Configuration

+

For commit message generation, Penify can use a local LLM. Configure it using:

+
penify config llm --model MODEL_NAME --api-base API_URL --api-key API_KEY
+

Common configurations:

+

+JIRA Integration

+

Configure JIRA integration to enhance commit messages with issue details:

+
penify config jira --url https://your-domain.atlassian.net --username your-email@example.com --api-token YOUR_API_TOKEN
+

+Development

+

To set up the development environment:

+
    +
  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/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html new file mode 100644 index 0000000..2a429ba --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html @@ -0,0 +1,255 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Commit Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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

+

+<tt>-m, --message</tt>

+

Provide context for the commit message generation:

+
penify commit -m "Fix login flow"
+

This hint helps the AI understand your intention and improves the quality of the generated message.

+

+<tt>-e, --terminal</tt>

+

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

+
penify commit -e
+

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

+

+<tt>-d, --description</tt>

+

Generate a detailed commit message with both title and description:

+
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__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html new file mode 100644 index 0000000..4d6079c --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html @@ -0,0 +1,286 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Configuration Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html new file mode 100644 index 0000000..6b9ea1f --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html @@ -0,0 +1,280 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Detailed Usage Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html new file mode 100644 index 0000000..6d8b21a --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html @@ -0,0 +1,363 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Documentation Generation Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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

+

+<tt>-l, --location</tt>

+

Specify a target for documentation generation:

+
# Generate documentation for a specific file
+
penify docgen -l path/to/file.py
+
+
# Generate documentation for a specific folder
+
penify docgen -l path/to/folder
+

Without this flag, Penify analyzes only Git-tracked modified files.

+

+Subcommands

+

+<tt>install-hook</tt>

+

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

+
penify docgen install-hook
+

+<tt>uninstall-hook</tt>

+

Remove the Git post-commit hook:

+
penify docgen uninstall-hook
+

+Option Combinations

+

+Generate Documentation for Current Git Diff

+
# Basic usage - current Git diff
+
penify docgen
+

+Generate Documentation for a Specific File

+
# Single file documentation
+
penify docgen -l src/main.py
+

+Generate Documentation for a Folder

+
# Folder documentation
+
penify docgen -l src/models/
+

+Install Hook in Current Repository

+
# Install hook in current Git repository
+
penify docgen install-hook
+

+Install Hook in Specific Repository

+
# Install hook in a specific Git repository
+
penify docgen install-hook -l /path/to/repo
+

+Uninstall Hook from Current Repository

+
# Uninstall hook from current Git repository
+
penify docgen uninstall-hook
+

+Uninstall Hook from Specific Repository

+
# Uninstall hook from a specific Git repository
+
penify docgen uninstall-hook -l /path/to/repo
+

+Git Hook Commands

+

Penify provides Git hook commands to automate documentation generation as part of your Git workflow.

+

+Hook Installation

+

+How Hooks Work

+

When you install a Git hook with penify docgen install-hook, Penify:

+
    +
  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__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html new file mode 100644 index 0000000..b7cf0dd --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html @@ -0,0 +1,239 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI Example Workflows + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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/menu.js b/docs/html/menu.js new file mode 100644 index 0000000..818b859 --- /dev/null +++ b/docs/html/menu.js @@ -0,0 +1,135 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBox; + if (searchEnabled) { + if (serverSide) { + searchBox='
'+ + '
'+ + '
'+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBox='
'+ + ''+ + ''+ + ''+ + ''+ + ''+ + '' + '' + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBox) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBox); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBox); + $('#searchBoxPos2').show(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/docs/html/menudata.js b/docs/html/menudata.js new file mode 100644 index 0000000..314c51a --- /dev/null +++ b/docs/html/menudata.js @@ -0,0 +1,117 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"a",url:"namespacemembers.html#index_a"}, +{text:"c",url:"namespacemembers.html#index_c"}, +{text:"d",url:"namespacemembers.html#index_d"}, +{text:"e",url:"namespacemembers.html#index_e"}, +{text:"f",url:"namespacemembers.html#index_f"}, +{text:"g",url:"namespacemembers.html#index_g"}, +{text:"h",url:"namespacemembers.html#index_h"}, +{text:"i",url:"namespacemembers.html#index_i"}, +{text:"j",url:"namespacemembers.html#index_j"}, +{text:"l",url:"namespacemembers.html#index_l"}, +{text:"m",url:"namespacemembers.html#index_m"}, +{text:"n",url:"namespacemembers.html#index_n"}, +{text:"p",url:"namespacemembers.html#index_p"}, +{text:"r",url:"namespacemembers.html#index_r"}, +{text:"s",url:"namespacemembers.html#index_s"}, +{text:"t",url:"namespacemembers.html#index_t"}, +{text:"u",url:"namespacemembers.html#index_u"}, +{text:"v",url:"namespacemembers.html#index_v"}, +{text:"w",url:"namespacemembers.html#index_w"}]}, +{text:"Functions",url:"namespacemembers_func.html",children:[ +{text:"c",url:"namespacemembers_func.html#index_c"}, +{text:"f",url:"namespacemembers_func.html#index_f"}, +{text:"g",url:"namespacemembers_func.html#index_g"}, +{text:"h",url:"namespacemembers_func.html#index_h"}, +{text:"i",url:"namespacemembers_func.html#index_i"}, +{text:"l",url:"namespacemembers_func.html#index_l"}, +{text:"m",url:"namespacemembers_func.html#index_m"}, +{text:"p",url:"namespacemembers_func.html#index_p"}, +{text:"r",url:"namespacemembers_func.html#index_r"}, +{text:"s",url:"namespacemembers_func.html#index_s"}, +{text:"t",url:"namespacemembers_func.html#index_t"}, +{text:"u",url:"namespacemembers_func.html#index_u"}]}, +{text:"Variables",url:"namespacemembers_vars.html",children:[ +{text:"a",url:"namespacemembers_vars.html#index_a"}, +{text:"c",url:"namespacemembers_vars.html#index_c"}, +{text:"d",url:"namespacemembers_vars.html#index_d"}, +{text:"e",url:"namespacemembers_vars.html#index_e"}, +{text:"h",url:"namespacemembers_vars.html#index_h"}, +{text:"i",url:"namespacemembers_vars.html#index_i"}, +{text:"j",url:"namespacemembers_vars.html#index_j"}, +{text:"l",url:"namespacemembers_vars.html#index_l"}, +{text:"n",url:"namespacemembers_vars.html#index_n"}, +{text:"p",url:"namespacemembers_vars.html#index_p"}, +{text:"s",url:"namespacemembers_vars.html#index_s"}, +{text:"u",url:"namespacemembers_vars.html#index_u"}, +{text:"v",url:"namespacemembers_vars.html#index_v"}, +{text:"w",url:"namespacemembers_vars.html#index_w"}]}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"_",url:"functions.html#index__5F"}, +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"i",url:"functions.html#index_i"}, +{text:"j",url:"functions.html#index_j"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"_",url:"functions_func.html#index__5F"}, +{text:"a",url:"functions_func.html#index_a"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"l",url:"functions_func.html#index_l"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}, +{text:"u",url:"functions_func.html#index_u"}]}, +{text:"Variables",url:"functions_vars.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/docs/html/namespacemembers.html b/docs/html/namespacemembers.html new file mode 100644 index 0000000..c9cb63f --- /dev/null +++ b/docs/html/namespacemembers.html @@ -0,0 +1,289 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - a -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - v -

    + + +

    - w -

    +
    +
    + + + + + diff --git a/docs/html/namespacemembers_func.html b/docs/html/namespacemembers_func.html new file mode 100644 index 0000000..e56ccb6 --- /dev/null +++ b/docs/html/namespacemembers_func.html @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - c -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    +
    +
    + + + + + diff --git a/docs/html/namespacemembers_vars.html b/docs/html/namespacemembers_vars.html new file mode 100644 index 0000000..fb094ec --- /dev/null +++ b/docs/html/namespacemembers_vars.html @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - 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..48ab393 --- /dev/null +++ b/docs/html/namespacepenify__hook.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..3344578 --- /dev/null +++ b/docs/html/namespacepenify__hook.js @@ -0,0 +1,56 @@ +var namespacepenify__hook = +[ + [ "api_client", "namespacepenify__hook_1_1api__client.html", "namespacepenify__hook_1_1api__client" ], + [ "base_analyzer", "namespacepenify__hook_1_1base__analyzer.html", "namespacepenify__hook_1_1base__analyzer" ], + [ "commands", "namespacepenify__hook_1_1commands.html", "namespacepenify__hook_1_1commands" ], + [ "commit_analyzer", "namespacepenify__hook_1_1commit__analyzer.html", "namespacepenify__hook_1_1commit__analyzer" ], + [ "config_command", "namespacepenify__hook_1_1config__command.html", [ + [ "handle_config", "namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde", null ], + [ "setup_config_parser", "namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e", null ] + ] ], + [ "constants", "namespacepenify__hook_1_1constants.html", [ + [ "API_URL", "namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0", null ], + [ "DASHBOARD_URL", "namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0", null ] + ] ], + [ "file_analyzer", "namespacepenify__hook_1_1file__analyzer.html", "namespacepenify__hook_1_1file__analyzer" ], + [ "folder_analyzer", "namespacepenify__hook_1_1folder__analyzer.html", "namespacepenify__hook_1_1folder__analyzer" ], + [ "git_analyzer", "namespacepenify__hook_1_1git__analyzer.html", "namespacepenify__hook_1_1git__analyzer" ], + [ "jira_client", "namespacepenify__hook_1_1jira__client.html", "namespacepenify__hook_1_1jira__client" ], + [ "llm_client", "namespacepenify__hook_1_1llm__client.html", "namespacepenify__hook_1_1llm__client" ], + [ "login_command", "namespacepenify__hook_1_1login__command.html", [ + [ "handle_login", "namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd", null ], + [ "setup_login_parser", "namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a", null ] + ] ], + [ "main", "namespacepenify__hook_1_1main.html", [ + [ "main", "namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f", null ] + ] ], + [ "ui_utils", "namespacepenify__hook_1_1ui__utils.html", [ + [ "create_progress_bar", "namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c", null ], + [ "create_stage_progress_bar", "namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef", null ], + [ "format_error", "namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e", null ], + [ "format_file_path", "namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4", null ], + [ "format_highlight", "namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452", null ], + [ "format_info", "namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6", null ], + [ "format_success", "namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776", null ], + [ "format_warning", "namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2", null ], + [ "print_error", "namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f", null ], + [ "print_info", "namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44", null ], + [ "print_processing", "namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115", null ], + [ "print_status", "namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c", null ], + [ "print_success", "namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a", null ], + [ "print_warning", "namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa", null ], + [ "update_stage", "namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d", null ], + [ "autoreset", "namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71", null ], + [ "ERROR_COLOR", "namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe", null ], + [ "ERROR_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0", null ], + [ "HIGHLIGHT_COLOR", "namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc", null ], + [ "INFO_COLOR", "namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c", null ], + [ "NEUTRAL_COLOR", "namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5", null ], + [ "PROCESSING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756", null ], + [ "SUCCESS_COLOR", "namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4", null ], + [ "SUCCESS_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e", null ], + [ "WARNING_COLOR", "namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff", null ], + [ "WARNING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16", null ] + ] ], + [ "utils", "namespacepenify__hook_1_1utils.html", "namespacepenify__hook_1_1utils" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1api__client.html b/docs/html/namespacepenify__hook_1_1api__client.html new file mode 100644 index 0000000..e7cd2a2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1api__client.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.api_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..e5c44b9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1base__analyzer.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.base_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..91f6ae6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..28e70f5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands.js @@ -0,0 +1,38 @@ +var namespacepenify__hook_1_1commands = +[ + [ "auth_commands", "namespacepenify__hook_1_1commands_1_1auth__commands.html", [ + [ "login", "namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655", null ], + [ "save_credentials", "namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24", null ] + ] ], + [ "commit_commands", "namespacepenify__hook_1_1commands_1_1commit__commands.html", [ + [ "commit_code", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a", null ], + [ "handle_commit", "namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23", null ], + [ "setup_commit_parser", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c", null ] + ] ], + [ "config_commands", "namespacepenify__hook_1_1commands_1_1config__commands.html", [ + [ "config_jira_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06", null ], + [ "config_llm_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c", null ], + [ "get_env_var_or_default", "namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87", null ], + [ "get_jira_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2", null ], + [ "get_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0", null ], + [ "get_penify_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20", null ], + [ "get_token", "namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812", null ], + [ "load_env_files", "namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae", null ], + [ "save_jira_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4", null ], + [ "save_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4", null ], + [ "DOTENV_AVAILABLE", "namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67", null ], + [ "path", "namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880", null ] + ] ], + [ "doc_commands", "namespacepenify__hook_1_1commands_1_1doc__commands.html", [ + [ "generate_doc", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25", null ], + [ "handle_docgen", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704", null ], + [ "setup_docgen_parser", "namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0", null ], + [ "docgen_description", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948", null ] + ] ], + [ "hook_commands", "namespacepenify__hook_1_1commands_1_1hook__commands.html", [ + [ "install_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2", null ], + [ "uninstall_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d", null ], + [ "HOOK_FILENAME", "namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1", null ], + [ "HOOK_TEMPLATE", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html new file mode 100644 index 0000000..42aaf63 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.auth_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.auth_commands Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def save_credentials (api_key)
     
    def login (api_url, dashboard_url)
     
    +

    Function Documentation

    + +

    ◆ login()

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

    ◆ save_credentials()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.auth_commands.save_credentials ( api_key)
    +
    +
    Save the API key in a priority-based manner.
    +
    +This function attempts to save the API key in two locations, based on priority:
    +1. In a `.env` file located in the root of the Git repository if one is found.
    +2. In a global `.penify` file located in the user's home directory as a
    +fallback.  The function first tries to locate the Git repository using
    +`recursive_search_git_folder`. If a Git repository is found, it reads the
    +existing `.env` file (if present), updates or adds the API key under the key
    +`PENIFY_API_TOKEN`, and writes the updated content back. If any error occurs
    +during this process, it falls back to saving the credentials in the global
    +`.penify` file. The function handles exceptions and prints appropriate error
    +messages.
    +
    +Args:
    +    api_key (str): The API key to save.
    +
    +Returns:
    +    bool: True if the API key is saved successfully, False otherwise.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map new file mode 100644 index 0000000..966bdbb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 new file mode 100644 index 0000000..3843ca4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.md5 @@ -0,0 +1 @@ +8ad325585e8efe43cb16f6c7070d7d0a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg new file mode 100644 index 0000000..50d45ea --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph.svg @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.auth_commands.login + + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg new file mode 100644 index 0000000..964fd40 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_cgraph_org.svg @@ -0,0 +1,61 @@ + + + + + + +penify_hook.commands.auth_commands.login + + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map new file mode 100644 index 0000000..88a6ff8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 new file mode 100644 index 0000000..a7db012 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.md5 @@ -0,0 +1 @@ +65e495614449516908c997067ca3d2d2 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg new file mode 100644 index 0000000..028514f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.auth_commands.login + + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.login_command.handle +_login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg new file mode 100644 index 0000000..a07bb01 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_a78f375c58bb6f69f98675e6a9ac84655_icgraph_org.svg @@ -0,0 +1,60 @@ + + + + + + +penify_hook.commands.auth_commands.login + + + +Node1 + + +penify_hook.commands.auth +_commands.login + + + + + +Node2 + + +penify_hook.login_command.handle +_login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map new file mode 100644 index 0000000..5c0b505 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 new file mode 100644 index 0000000..17fadc1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.md5 @@ -0,0 +1 @@ +31a51591f0a8f9ef897c4a08daac5829 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg new file mode 100644 index 0000000..e40984b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.commands.auth_commands.save_credentials + + + +Node1 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map new file mode 100644 index 0000000..c6d1bd8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 new file mode 100644 index 0000000..051c10c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.md5 @@ -0,0 +1 @@ +ec7d7c899a70e1c68057353448e9a6d9 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg new file mode 100644 index 0000000..7d1c3a1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph.svg @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.auth_commands.save_credentials + + + +Node1 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.login_command.handle +_login + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg new file mode 100644 index 0000000..8ab520a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands_aa3956ca1749d4218ea1dc6e5b6218b24_icgraph_org.svg @@ -0,0 +1,76 @@ + + + + + + +penify_hook.commands.auth_commands.save_credentials + + + +Node1 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.login_command.handle +_login + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html new file mode 100644 index 0000000..2693b3e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html @@ -0,0 +1,311 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.commit_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.commit_commands Namespace Reference
    +
    +
    + + + + + + + + +

    +Functions

    def commit_code (api_url, token, message, open_terminal, generate_description, llm_model=None, llm_api_base=None, llm_api_key=None, jira_url=None, jira_user=None, jira_api_token=None)
     
    def setup_commit_parser (parser)
     
    def handle_commit (args)
     
    +

    Function Documentation

    + +

    ◆ commit_code()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.commit_commands.commit_code ( api_url,
     token,
     message,
     open_terminal,
     generate_description,
     llm_model = None,
     llm_api_base = None,
     llm_api_key = None,
     jira_url = None,
     jira_user = None,
     jira_api_token = None 
    )
    +
    +
    Enhance Git commits with AI-powered commit messages.
    +
    +This function allows for the generation of enhanced commit messages using
    +natural language processing models and optionally integrates with JIRA for
    +additional context. It processes the current Git folder to find relevant files
    +and generates a detailed commit message based on the provided parameters.
    +
    +Args:
    +    api_url (str): URL of the API endpoint.
    +    token (str): Authentication token for the API.
    +    message (str): Initial commit message provided by the user.
    +    open_terminal (bool): Whether to open the terminal after committing.
    +    generate_description (bool): Whether to generate a detailed description in the commit message.
    +    llm_model (str?): The language model to use for generating the commit message. Defaults to None.
    +    llm_api_base (str?): Base URL of the LLM API. Defaults to None.
    +    llm_api_key (str?): API key for accessing the LLM service. Defaults to None.
    +    jira_url (str?): URL of the JIRA instance. Defaults to None.
    +    jira_user (str?): Username for authenticating with JIRA. Defaults to None.
    +    jira_api_token (str?): API token for accessing JIRA. Defaults to None.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ handle_commit()

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

    ◆ setup_commit_parser()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.commit_commands.setup_commit_parser ( parser)
    +
    +
    Sets up an argument parser for generating smart commit messages.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map new file mode 100644 index 0000000..9d410b4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 new file mode 100644 index 0000000..f0df322 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.md5 @@ -0,0 +1 @@ +ebbb356587ab923660dadd713f529935 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg new file mode 100644 index 0000000..1a0e3d8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.commit_commands.commit_code + + + +Node1 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.ui_utils.format +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.format_info + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format +_warning + + + + + +Node6->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg new file mode 100644 index 0000000..602876a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_cgraph_org.svg @@ -0,0 +1,139 @@ + + + + + + +penify_hook.commands.commit_commands.commit_code + + + +Node1 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.ui_utils.format +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.format_info + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format +_warning + + + + + +Node6->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map new file mode 100644 index 0000000..45d80f3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 new file mode 100644 index 0000000..30b2f36 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.md5 @@ -0,0 +1 @@ +b42af33551c96c0ccabd26bf5dac7901 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg new file mode 100644 index 0000000..ec9d033 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph.svg @@ -0,0 +1,234 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.commit_commands.commit_code + + + +Node1 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node1->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node1->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg new file mode 100644 index 0000000..c3b9bf0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a62564c4e8ad59fc46d56cb0f9122a71a_icgraph_org.svg @@ -0,0 +1,146 @@ + + + + + + +penify_hook.commands.commit_commands.commit_code + + + +Node1 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node1->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node1->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map new file mode 100644 index 0000000..f16a071 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 new file mode 100644 index 0000000..c49ca59 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.md5 @@ -0,0 +1 @@ +9d31c6bce57180d0019639c06f0a64c6 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg new file mode 100644 index 0000000..e254716 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_a8627583116eb78e31a4d3cdc16d2f15c_icgraph.svg @@ -0,0 +1,61 @@ + + + + + + +penify_hook.commands.commit_commands.setup_commit_parser + + + +Node1 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_commit_commands. +TestCommitCommands.test +_setup_commit_parser + + + + + +Node1->Node3 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map new file mode 100644 index 0000000..2910728 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 new file mode 100644 index 0000000..9c1af92 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.md5 @@ -0,0 +1 @@ +76b990698c4e374b742a1a611bfd524b \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg new file mode 100644 index 0000000..7ad44ff --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph.svg @@ -0,0 +1,388 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.commit_commands.handle_commit + + + +Node1 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node10 + + + + + +Node13 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node13 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node10->Node11 + + + + + +Node12 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node10->Node12 + + + + + +Node12->Node9 + + + + + +Node12->Node12 + + + + + +Node13->Node11 + + + + + +Node13->Node12 + + + + + +Node14->Node11 + + + + + +Node14->Node12 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node14->Node15 + + + + + +Node15->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg new file mode 100644 index 0000000..bd1b9a1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_cgraph_org.svg @@ -0,0 +1,300 @@ + + + + + + +penify_hook.commands.commit_commands.handle_commit + + + +Node1 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node10 + + + + + +Node13 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node13 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node10->Node11 + + + + + +Node12 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node10->Node12 + + + + + +Node12->Node9 + + + + + +Node12->Node12 + + + + + +Node13->Node11 + + + + + +Node13->Node12 + + + + + +Node14->Node11 + + + + + +Node14->Node12 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node14->Node15 + + + + + +Node15->Node9 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map new file mode 100644 index 0000000..d25f3e9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 new file mode 100644 index 0000000..47a6cde --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.md5 @@ -0,0 +1 @@ +a8800179f1f560b476cc721ea33d08f7 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg new file mode 100644 index 0000000..c57863f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands_af4f739f524c38b437e4e47673d683e23_icgraph.svg @@ -0,0 +1,61 @@ + + + + + + +penify_hook.commands.commit_commands.handle_commit + + + +Node1 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node1->Node3 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html new file mode 100644 index 0000000..7792cfd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html @@ -0,0 +1,567 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.config_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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)
     
    def save_llm_config (model, api_base, api_key)
     
    def save_jira_config (url, username, api_token)
     
    Dict[str, str] get_llm_config ()
     
    Dict[str, str] get_jira_config ()
     
    def config_llm_web ()
     
    def config_jira_web ()
     
    Optional[str] get_token ()
     
    + + + + + +

    +Variables

    bool DOTENV_AVAILABLE = True
     
     path
     
    +

    Function Documentation

    + +

    ◆ config_jira_web()

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

    ◆ config_llm_web()

    + +
    +
    + + + + + + + +
    def penify_hook.commands.config_commands.config_llm_web ()
    +
    +
    Starts an HTTP server for configuring LLM settings via a web interface.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

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

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.config_commands.save_jira_config ( url,
     username,
     api_token 
    )
    +
    +
    Save JIRA configuration settings to a .env file.
    +
    +This function saves JIRA configuration following these steps: 1. Determine the
    +target .env file location based on whether the current directory is inside a
    +Git repository. 2. If inside a Git repo, use the Git repo root's .env file;
    +otherwise, use the user home directory's .env file. 3. Read the existing
    +content of the .env file (if it exists) to preserve other settings. 4. Update
    +the .env content with the new JIRA configuration. 5. Write the updated content
    +back to the .env file. 6. Optionally, reload environment variables to make
    +changes immediately available.
    +
    +Args:
    +    url (str): The JIRA URL to be saved in the .env file.
    +    username (str): The JIRA username to be saved in the .env file.
    +    api_token (str): The JIRA API token to be saved in the .env file.
    +
    +Returns:
    +    bool: True if the configuration was successfully saved, False otherwise.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ save_llm_config()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.config_commands.save_llm_config ( model,
     api_base,
     api_key 
    )
    +
    +
    Save LLM configuration settings to an .env file.
    +
    +This function saves the LLM configuration following a specific priority: 1. Git
    +repo root .env (if inside a git repo) 2. User home directory .env  It handles
    +the detection of the Git repo root, reads the existing .env content, updates it
    +with the new LLM configuration, and writes it back to the file. It also reloads
    +the environment variables to make changes immediately available.
    +
    +Args:
    +    model (str): The name of the language model.
    +    api_base (str): The base URL for the API.
    +    api_key (str): The API key for authentication.
    +
    +Returns:
    +    bool: True if the configuration is saved successfully, False otherwise.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ DOTENV_AVAILABLE

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

    ◆ path

    + +
    +
    + + + + +
    penify_hook.commands.config_commands.path
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map new file mode 100644 index 0000000..3d04ded --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 new file mode 100644 index 0000000..8a855e7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.md5 @@ -0,0 +1 @@ +168858f3e9d4759f99db4c52c229e797 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg new file mode 100644 index 0000000..fb362e4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node3 + + + + + +Node3->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg new file mode 100644 index 0000000..3cc35c6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_cgraph_org.svg @@ -0,0 +1,84 @@ + + + + + + +penify_hook.commands.config_commands.get_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node3 + + + + + +Node3->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map new file mode 100644 index 0000000..31799e7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 new file mode 100644 index 0000000..3595ee0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.md5 @@ -0,0 +1 @@ +543187d5c63c1c460ff6dd5d57c6a646 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg new file mode 100644 index 0000000..b03c3d5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph.svg @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node6 + + + + + +Node8 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.config +_command.handle_config + + + + + +Node2->Node3 + + + + + +Node5 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2->Node5 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + +Node6->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node6->Node7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg new file mode 100644 index 0000000..9f5c40f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a15bf3685c4dcb5c15ba6a4055e484cf2_icgraph_org.svg @@ -0,0 +1,149 @@ + + + + + + +penify_hook.commands.config_commands.get_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node6 + + + + + +Node8 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node1->Node8 + + + + + +Node3 + + +penify_hook.config +_command.handle_config + + + + + +Node2->Node3 + + + + + +Node5 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2->Node5 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + +Node6->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node6->Node7 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map new file mode 100644 index 0000000..6bb067d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 new file mode 100644 index 0000000..fd6eb21 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.md5 @@ -0,0 +1 @@ +91a6c2c6a25f3c8c1d38cd6f5f5c3f25 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg new file mode 100644 index 0000000..ece71b8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.config_llm_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_web_config.Test +WebConfig.test_config_llm +_web_server_setup + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg new file mode 100644 index 0000000..3ab7894 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a185dfc34a655ed80e6c95939b6f3c35c_icgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.commands.config_commands.config_llm_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_web_config.Test +WebConfig.test_config_llm +_web_server_setup + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map new file mode 100644 index 0000000..988f965 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.map @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 new file mode 100644 index 0000000..f9c067a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.md5 @@ -0,0 +1 @@ +78a315f2a9f5ef12496dc5b4a1f2f578 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg new file mode 100644 index 0000000..af8bba2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph.svg @@ -0,0 +1,486 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_env_var_or_default + + + +Node1 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node10 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node7 + + + + + +Node9 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.config +_command.handle_config + + + + + +Node3->Node4 + + + + + +Node6 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node3->Node6 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node7->Node5 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node7->Node8 + + + + + +Node10->Node7 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node10->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node10->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node10->Node13 + + + + + +Node14->Node7 + + + + + +Node15 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node14->Node15 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node14->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node14->Node21 + + + + + +Node22 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node14->Node22 + + + + + +Node15->Node5 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node15->Node16 + + + + + +Node17 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node15->Node17 + + + + + +Node18 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node15->Node18 + + + + + +Node19 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node15->Node19 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg new file mode 100644 index 0000000..5dd38f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a3caf2b062dd33b1f1d7ddc7224f0ff87_icgraph_org.svg @@ -0,0 +1,398 @@ + + + + + + +penify_hook.commands.config_commands.get_env_var_or_default + + + +Node1 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node10 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node7 + + + + + +Node9 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.config +_command.handle_config + + + + + +Node3->Node4 + + + + + +Node6 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node3->Node6 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node7->Node5 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node7->Node8 + + + + + +Node10->Node7 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node10->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node10->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node10->Node13 + + + + + +Node14->Node7 + + + + + +Node15 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node14->Node15 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node14->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node14->Node21 + + + + + +Node22 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node14->Node22 + + + + + +Node15->Node5 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node15->Node16 + + + + + +Node17 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node15->Node17 + + + + + +Node18 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node15->Node18 + + + + + +Node19 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node15->Node19 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map new file mode 100644 index 0000000..523e618 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 new file mode 100644 index 0000000..1d6bd9c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.md5 @@ -0,0 +1 @@ +1312bc7ffa0a3c4b3d914591e46647ea \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg new file mode 100644 index 0000000..6772dc2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.commands.config_commands.save_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map new file mode 100644 index 0000000..0a1bd6e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 new file mode 100644 index 0000000..4427799 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.md5 @@ -0,0 +1 @@ +64e3e5d1614b987e9beaa7b1002e49e6 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg new file mode 100644 index 0000000..7653ae5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph.svg @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.save_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node1->Node4 + + + + + +Node5 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node1->Node5 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg new file mode 100644 index 0000000..4779598 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a4617bc5956e502c9555dc0dda0376df4_icgraph_org.svg @@ -0,0 +1,94 @@ + + + + + + +penify_hook.commands.config_commands.save_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node1->Node4 + + + + + +Node5 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node1->Node5 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map new file mode 100644 index 0000000..8a89956 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 new file mode 100644 index 0000000..47f24a6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.md5 @@ -0,0 +1 @@ +e227b3587529f3c7fa14501fb496ccc8 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg new file mode 100644 index 0000000..af6abf0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph.svg @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_token + + + +Node1 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node3 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node5 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + +Node5->Node4 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg new file mode 100644 index 0000000..0cd794d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_cgraph_org.svg @@ -0,0 +1,106 @@ + + + + + + +penify_hook.commands.config_commands.get_token + + + +Node1 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node3 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node5 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + +Node5->Node4 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map new file mode 100644 index 0000000..27e33e7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 new file mode 100644 index 0000000..5a5a866 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.md5 @@ -0,0 +1 @@ +9c6b048bd5412b617ea890b1f88c2104 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg new file mode 100644 index 0000000..6b05345 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph.svg @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_token + + + +Node1 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node5 + + + + + +Node10 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + +Node5->Node3 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node5->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node5->Node7 + + + + + +Node8 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node5->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node5->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg new file mode 100644 index 0000000..8a0f76b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a5503d51c905e2f1b299b12d2a73bd812_icgraph_org.svg @@ -0,0 +1,214 @@ + + + + + + +penify_hook.commands.config_commands.get_token + + + +Node1 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node5 + + + + + +Node10 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + +Node5->Node3 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node5->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node5->Node7 + + + + + +Node8 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node5->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node5->Node9 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map new file mode 100644 index 0000000..55fc422 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 new file mode 100644 index 0000000..c4b9ce2 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.md5 @@ -0,0 +1 @@ +67c138c843a1f5d8ab7592c326643328 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg new file mode 100644 index 0000000..aa2fbc9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node3 + + + + + +Node3->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg new file mode 100644 index 0000000..4b9759c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_cgraph_org.svg @@ -0,0 +1,84 @@ + + + + + + +penify_hook.commands.config_commands.get_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node3 + + + + + +Node3->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map new file mode 100644 index 0000000..11e9843 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 new file mode 100644 index 0000000..280df61 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.md5 @@ -0,0 +1 @@ +32e055c0ae757bbecf2b86db164d29df \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg new file mode 100644 index 0000000..2e5a94a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph.svg @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node1->Node6 + + + + + +Node7 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node1->Node7 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg new file mode 100644 index 0000000..7c7fba4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6492bc8e7df6e38bb06ad05e572d4cc0_icgraph_org.svg @@ -0,0 +1,128 @@ + + + + + + +penify_hook.commands.config_commands.get_llm_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node5 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node1->Node6 + + + + + +Node7 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node1->Node7 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2->Node4 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map new file mode 100644 index 0000000..a9f72bb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 new file mode 100644 index 0000000..6643612 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.md5 @@ -0,0 +1 @@ +69777adad7caeabd935b90d3f0ca21e8 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg new file mode 100644 index 0000000..26a2c27 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.commands.config_commands.get_penify_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map new file mode 100644 index 0000000..9de687d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 new file mode 100644 index 0000000..3e643ef --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.md5 @@ -0,0 +1 @@ +4f8f2c5d878438fd8fa2e1f0ca1dbc52 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg new file mode 100644 index 0000000..9a839f1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph.svg @@ -0,0 +1,352 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.get_penify_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node14 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node1->Node14 + + + + + +Node15 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node1->Node15 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2->Node6 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2->Node13 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node6->Node4 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node6->Node7 + + + + + +Node8 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node6->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node6->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node6->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg new file mode 100644 index 0000000..a6f9814 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_a6559a82d0bf727703d550d1003d3ed20_icgraph_org.svg @@ -0,0 +1,264 @@ + + + + + + +penify_hook.commands.config_commands.get_penify_config + + + +Node1 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node14 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node1->Node14 + + + + + +Node15 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node1->Node15 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2->Node6 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2->Node13 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node6->Node4 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node6->Node7 + + + + + +Node8 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node6->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node6->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node6->Node10 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map new file mode 100644 index 0000000..85cba52 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 new file mode 100644 index 0000000..26009b0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.md5 @@ -0,0 +1 @@ +91b1c0b60f8171163e43b782cfdc5e4b \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg new file mode 100644 index 0000000..5ed2818 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_cgraph.svg @@ -0,0 +1,51 @@ + + + + + + +penify_hook.commands.config_commands.load_env_files + + + +Node1 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map new file mode 100644 index 0000000..d99de6a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.map @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 new file mode 100644 index 0000000..a2245b9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.md5 @@ -0,0 +1 @@ +e208c1be2bea05a2824626f2971c2bf3 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg new file mode 100644 index 0000000..e4f35a6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph.svg @@ -0,0 +1,491 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.load_env_files + + + +Node1 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node10 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node7 + + + + + +Node9 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.config +_command.handle_config + + + + + +Node3->Node4 + + + + + +Node6 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node3->Node6 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node7->Node5 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node7->Node8 + + + + + +Node10->Node7 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node10->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node10->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node10->Node13 + + + + + +Node14->Node7 + + + + + +Node15 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node14->Node15 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node14->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node14->Node21 + + + + + +Node22 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node14->Node22 + + + + + +Node15->Node5 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node15->Node16 + + + + + +Node17 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node15->Node17 + + + + + +Node18 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node15->Node18 + + + + + +Node19 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node15->Node19 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg new file mode 100644 index 0000000..a264e4b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_aabe277132ce0bc0aacef951cf1dee2ae_icgraph_org.svg @@ -0,0 +1,403 @@ + + + + + + +penify_hook.commands.config_commands.load_env_files + + + +Node1 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node10 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node14 + + + + + +Node3 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node7 + + + + + +Node9 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.config +_command.handle_config + + + + + +Node3->Node4 + + + + + +Node6 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node3->Node6 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node7->Node5 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node7->Node8 + + + + + +Node10->Node7 + + + + + +Node11 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node10->Node11 + + + + + +Node12 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node10->Node12 + + + + + +Node13 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node10->Node13 + + + + + +Node14->Node7 + + + + + +Node15 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node14->Node15 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node14->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node14->Node21 + + + + + +Node22 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node14->Node22 + + + + + +Node15->Node5 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node15->Node16 + + + + + +Node17 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node15->Node17 + + + + + +Node18 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node15->Node18 + + + + + +Node19 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node15->Node19 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map new file mode 100644 index 0000000..66dc072 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 new file mode 100644 index 0000000..9c2e575 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.md5 @@ -0,0 +1 @@ +68e4fb55d25659f523e8547c8cb01464 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg new file mode 100644 index 0000000..d2e2758 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.commands.config_commands.save_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map new file mode 100644 index 0000000..c80d943 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 new file mode 100644 index 0000000..1f53baa --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.md5 @@ -0,0 +1 @@ +d1ffd3debe0bd71ea914f1dd47c727ad \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg new file mode 100644 index 0000000..359799d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph.svg @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.save_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node3 + + + + + +Node6 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node1->Node6 + + + + + +Node2->Node3 + + + + + +Node5 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2->Node5 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg new file mode 100644 index 0000000..d5eb5c0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_ab2486ac2bf16b4a671e49625bfa4f9b4_icgraph_org.svg @@ -0,0 +1,116 @@ + + + + + + +penify_hook.commands.config_commands.save_jira_config + + + +Node1 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node3 + + + + + +Node6 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node1->Node6 + + + + + +Node2->Node3 + + + + + +Node5 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2->Node5 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map new file mode 100644 index 0000000..f9b2f55 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 new file mode 100644 index 0000000..7795142 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.md5 @@ -0,0 +1 @@ +e83a80d18918d47faae41628fcd92c7a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg new file mode 100644 index 0000000..5211cae --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph.svg @@ -0,0 +1,210 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.config_jira_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg new file mode 100644 index 0000000..d7f7ae5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_cgraph_org.svg @@ -0,0 +1,122 @@ + + + + + + +penify_hook.commands.config_commands.config_jira_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map new file mode 100644 index 0000000..fc35b2e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 new file mode 100644 index 0000000..166f9b7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.md5 @@ -0,0 +1 @@ +e627346d77982130e6685bfc2c553220 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg new file mode 100644 index 0000000..b4cc55b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.config_commands.config_jira_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg new file mode 100644 index 0000000..72fd941 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands_af115198ea5d6808ccb98733957f50b06_icgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.commands.config_commands.config_jira_web + + + +Node1 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node2 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node2 + + + + + +Node4 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html new file mode 100644 index 0000000..88b9805 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html @@ -0,0 +1,279 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.doc_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.doc_commands Namespace Reference
    +
    +
    + + + + + + + + +

    +Functions

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

    +Variables

    string docgen_description
     
    +

    Function Documentation

    + +

    ◆ generate_doc()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.doc_commands.generate_doc ( api_url,
     token,
     location = None 
    )
    +
    +
    Generates documentation based on the given parameters.
    +
    +This function initializes an API client using the provided API URL and token.
    +It then generates documentation by analyzing the specified location, which can
    +be a folder, a file, or the current working directory if no location is
    +provided. The function handles different types of analysis based on the input
    +location and reports any errors encountered during the process.
    +
    +Args:
    +    api_url (str): The URL of the API to connect to for documentation generation.
    +    token (str): The authentication token for accessing the API.
    +    location (str?): The path to a specific file or folder to analyze. If not provided,
    +        the current working directory is used.
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ handle_docgen()

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

    ◆ setup_docgen_parser()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.doc_commands.setup_docgen_parser ( parser)
    +
    +
    Configure a parser for generating documentation using Git commands.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ docgen_description

    + +
    +
    + + + + +
    string 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_a2006ab13bff718ef783868a910c0b704_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map new file mode 100644 index 0000000..2c0a565 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 new file mode 100644 index 0000000..472a430 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 @@ -0,0 +1 @@ +d7ee1e07127beb9f489b974a61acce5d \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg new file mode 100644 index 0000000..9ea3b5d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.doc_commands.handle_docgen + + + +Node1 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node3 + + + + + +Node8 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node1->Node9 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node3->Node5 + + + + + +Node7 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node7 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node7->Node7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg new file mode 100644 index 0000000..838bb12 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg @@ -0,0 +1,170 @@ + + + + + + +penify_hook.commands.doc_commands.handle_docgen + + + +Node1 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node3 + + + + + +Node8 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node1->Node9 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node3->Node5 + + + + + +Node7 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node7 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node7->Node7 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map new file mode 100644 index 0000000..37a65e4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 new file mode 100644 index 0000000..9d429ee --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 @@ -0,0 +1 @@ +ed70390d069e80c493faf1a14a7c6fff \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg new file mode 100644 index 0000000..6790fe4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg @@ -0,0 +1,108 @@ + + + + + + +penify_hook.commands.doc_commands.handle_docgen + + + +Node1 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node1->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node1->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node1->Node6 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map new file mode 100644 index 0000000..3084ab9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 new file mode 100644 index 0000000..171b82e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 @@ -0,0 +1 @@ +5e9faa5a79a60188abcf0c90efae69aa \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg new file mode 100644 index 0000000..c5131ef --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.doc_commands.generate_doc + + + +Node1 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node8 + + +tests.test_doc_commands.test +_generate_doc_error_handling + + + + + +Node1->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_generate_doc_file_location + + + + + +Node1->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_generate_doc_folder_location + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_doc_commands.test +_generate_doc_no_location + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_doc_commands.test +_generate_doc_with_file_exception + + + + + +Node1->Node12 + + + + + +Node13 + + +tests.test_doc_commands.test +_generate_doc_with_folder +_exception + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg new file mode 100644 index 0000000..4cf4b48 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg @@ -0,0 +1,221 @@ + + + + + + +penify_hook.commands.doc_commands.generate_doc + + + +Node1 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node8 + + +tests.test_doc_commands.test +_generate_doc_error_handling + + + + + +Node1->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_generate_doc_file_location + + + + + +Node1->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_generate_doc_folder_location + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_doc_commands.test +_generate_doc_no_location + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_doc_commands.test +_generate_doc_with_file_exception + + + + + +Node1->Node12 + + + + + +Node13 + + +tests.test_doc_commands.test +_generate_doc_with_folder +_exception + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map new file mode 100644 index 0000000..0ee99eb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 new file mode 100644 index 0000000..0dc7e32 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 @@ -0,0 +1 @@ +0fa78969e5f8672d0da52972dd124680 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg new file mode 100644 index 0000000..998d629 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg @@ -0,0 +1,60 @@ + + + + + + +penify_hook.commands.doc_commands.setup_docgen_parser + + + +Node1 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_doc_commands.test +_setup_docgen_parser + + + + + +Node1->Node3 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html new file mode 100644 index 0000000..f88093c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html @@ -0,0 +1,242 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.hook_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.hook_commands Namespace Reference
    +
    +
    + + + + + + +

    +Functions

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

    +Variables

    string HOOK_FILENAME = "post-commit"
     
    string HOOK_TEMPLATE
     
    +

    Function Documentation

    + +

    ◆ install_git_hook()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.commands.hook_commands.install_git_hook ( location,
     token 
    )
    +
    +
    Install a post-commit Git hook that generates documentation for changed files.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ uninstall_git_hook()

    + +
    +
    + + + + + + + + +
    def penify_hook.commands.hook_commands.uninstall_git_hook ( location)
    +
    +
    Uninstalls the post-commit hook from the specified location.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ HOOK_FILENAME

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

    ◆ HOOK_TEMPLATE

    + +
    +
    + + + + +
    string penify_hook.commands.hook_commands.HOOK_TEMPLATE
    +
    +Initial value:
    1= """#!/bin/sh
    +
    2# This is a post-commit hook generated by penify.
    +
    3# Automatically generates documentation for changed files after each commit.
    +
    4
    +
    5penify docgen -gf {git_folder_path} -t {token}
    +
    6"""
    +
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map new file mode 100644 index 0000000..ea3d3f4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 new file mode 100644 index 0000000..197f108 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.md5 @@ -0,0 +1 @@ +25f36344702d0e8ec428aac2f670078e \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg new file mode 100644 index 0000000..a399555 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.hook_commands.uninstall_git_hook + + + +Node1 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg new file mode 100644 index 0000000..6068928 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_a81543eb5fa835fd1237f24e8bce6201d_icgraph_org.svg @@ -0,0 +1,124 @@ + + + + + + +penify_hook.commands.hook_commands.uninstall_git_hook + + + +Node1 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map new file mode 100644 index 0000000..16920b6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 new file mode 100644 index 0000000..333d2ec --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.md5 @@ -0,0 +1 @@ +3ec2e3ff4462cc865b4cb6fd3a62753d \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg new file mode 100644 index 0000000..ebcff0a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph.svg @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.hook_commands.install_git_hook + + + +Node1 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg new file mode 100644 index 0000000..8141220 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands_adff8f5d3bf1c3795974a391ee95b72b2_icgraph_org.svg @@ -0,0 +1,124 @@ + + + + + + +penify_hook.commands.hook_commands.install_git_hook + + + +Node1 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commit__analyzer.html b/docs/html/namespacepenify__hook_1_1commit__analyzer.html new file mode 100644 index 0000000..401a742 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commit__analyzer.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commit_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..fddefcd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command.html @@ -0,0 +1,205 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.config_command Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.config_command Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def setup_config_parser (parent_parser)
     
    def handle_config (args)
     
    +

    Function Documentation

    + +

    ◆ handle_config()

    + +
    +
    + + + + + + + + +
    def penify_hook.config_command.handle_config ( args)
    +
    +
    Handle configuration settings based on the specified config type.
    +
    +This function processes different types of configurations such as LLM (Language
    +Model) and JIRA. It saves configurations, sets up web-based configurations, and
    +verifies JIRA connections. Depending on the `args.config_type`, it imports
    +necessary modules, handles configuration saving or setup, and optionally
    +verifies JIRA connectivity.
    +
    +Args:
    +    args (argparse.Namespace): Command-line arguments containing the type of configuration to handle.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ setup_config_parser()

    + +
    +
    + + + + + + + + +
    def penify_hook.config_command.setup_config_parser ( parent_parser)
    +
    +
    Set up configuration parsers with subcommands for LLM and JIRA settings.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map new file mode 100644 index 0000000..5262513 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 new file mode 100644 index 0000000..1e009e6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.md5 @@ -0,0 +1 @@ +4f75720d323fed0e1cf98ec14ae8f6e9 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg new file mode 100644 index 0000000..7daaddc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph.svg @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.config_command.handle_config + + + +Node1 + + +penify_hook.config +_command.handle_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node7 + + + + + +Node8 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node9 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node9->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg new file mode 100644 index 0000000..2707803 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_cgraph_org.svg @@ -0,0 +1,182 @@ + + + + + + +penify_hook.config_command.handle_config + + + +Node1 + + +penify_hook.config +_command.handle_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node7 + + + + + +Node8 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node9 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node9->Node6 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map new file mode 100644 index 0000000..b702a42 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 new file mode 100644 index 0000000..a09bdd4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.md5 @@ -0,0 +1 @@ +f35e472a3767aa0a0b09219e96174cf9 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg new file mode 100644 index 0000000..cafcc47 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a240e5331681eb574ac319d7458783bde_icgraph.svg @@ -0,0 +1,44 @@ + + + + + + +penify_hook.config_command.handle_config + + + +Node1 + + +penify_hook.config +_command.handle_config + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map new file mode 100644 index 0000000..f0c2ef3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 new file mode 100644 index 0000000..48311b5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.md5 @@ -0,0 +1 @@ +a17b5eb406ca6a74de12d7201d9bcee7 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg new file mode 100644 index 0000000..edae0c9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command_a4f3eb92164a69df1446d745f8a09285e_icgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.config_command.setup_config_parser + + + +Node1 + + +penify_hook.config +_command.setup_config +_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1constants.html b/docs/html/namespacepenify__hook_1_1constants.html new file mode 100644 index 0000000..712cd59 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1constants.html @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.constants Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.constants Namespace Reference
    +
    +
    + + + + + + +

    +Variables

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

    Variable Documentation

    + +

    ◆ API_URL

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

    ◆ DASHBOARD_URL

    + +
    +
    + + + + +
    string penify_hook.constants.DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1file__analyzer.html b/docs/html/namespacepenify__hook_1_1file__analyzer.html new file mode 100644 index 0000000..91f1f2e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1file__analyzer.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.file_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..b8341cd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1folder__analyzer.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.folder_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..3ec05ff --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1git__analyzer.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.git_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..8751ac6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1jira__client.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.jira_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..4cef1c3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1llm__client.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.llm_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..77ba67b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command.html @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.login_command Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.login_command Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def setup_login_parser (parser)
     
    def handle_login (args)
     
    +

    Function Documentation

    + +

    ◆ handle_login()

    + +
    +
    + + + + + + + + +
    def penify_hook.login_command.handle_login ( args)
    +
    +
    Initiates a user login process using predefined constants and the `login`
    +function.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ setup_login_parser()

    + +
    +
    + + + + + + + + +
    def penify_hook.login_command.setup_login_parser ( parser)
    +
    +
    Set up command-line arguments for login.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map new file mode 100644 index 0000000..e39c064 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 new file mode 100644 index 0000000..2daae41 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.md5 @@ -0,0 +1 @@ +34cbd1a77d726e3937d67455d405b0ba \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg new file mode 100644 index 0000000..84d1c1e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_aae63db4c484797bead34b7d874020c6a_icgraph.svg @@ -0,0 +1,44 @@ + + + + + + +penify_hook.login_command.setup_login_parser + + + +Node1 + + +penify_hook.login_command.setup +_login_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map new file mode 100644 index 0000000..dd44b98 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 new file mode 100644 index 0000000..ad91965 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.md5 @@ -0,0 +1 @@ +6a1ceeef99a0101ba5882e9e71fa9bce \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg new file mode 100644 index 0000000..23caccd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.login_command.handle_login + + + +Node1 + + +penify_hook.login_command.handle +_login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg new file mode 100644 index 0000000..97e0e2a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_cgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.login_command.handle_login + + + +Node1 + + +penify_hook.login_command.handle +_login + + + + + +Node2 + + +penify_hook.commands.auth +_commands.login + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node4 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map new file mode 100644 index 0000000..74fa8c7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 new file mode 100644 index 0000000..7a114f5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.md5 @@ -0,0 +1 @@ +1f6ec32e02e9919f90ba1a6a23743cb6 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg new file mode 100644 index 0000000..88bfdb9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command_ae4bf932fbafeff834b0a0c5a37f74ccd_icgraph.svg @@ -0,0 +1,44 @@ + + + + + + +penify_hook.login_command.handle_login + + + +Node1 + + +penify_hook.login_command.handle +_login + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main.html b/docs/html/namespacepenify__hook_1_1main.html new file mode 100644 index 0000000..f09c8f7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.main Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.main Namespace Reference
    +
    +
    + + + + +

    +Functions

    def main ()
     
    +

    Function Documentation

    + +

    ◆ main()

    + +
    +
    + + + + + + + +
    def penify_hook.main.main ()
    +
    +
    Main function to handle command-line interface (CLI) interactions with Penify
    +services.
    +
    +This tool provides a command-line interface for generating smart commit
    +messages, configuring local-LLM and JIRA, and generating code documentation. It
    +supports basic commands that do not require login and advanced commands that
    +require user authentication. The `--version` flag can be used to display the
    +version information.
    +
    +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_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map new file mode 100644 index 0000000..5c35b70 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.map @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 new file mode 100644 index 0000000..304cb74 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.md5 @@ -0,0 +1 @@ +73631f13dbb5d5f90aafdead88d96c1c \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg new file mode 100644 index 0000000..eed8f52 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph.svg @@ -0,0 +1,708 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.main.main + + + +Node1 + + +penify_hook.main.main + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node6 + + + + + +Node17 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node17 + + + + + +Node22 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node22 + + + + + +Node26 + + +penify_hook.login_command.handle +_login + + + + + +Node1->Node26 + + + + + +Node29 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node1->Node29 + + + + + +Node30 + + +penify_hook.config +_command.setup_config +_parser + + + + + +Node1->Node30 + + + + + +Node31 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node1->Node31 + + + + + +Node32 + + +penify_hook.login_command.setup +_login_parser + + + + + +Node1->Node32 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + +Node18 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node17->Node18 + + + + + +Node19 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node17->Node19 + + + + + +Node20 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node17->Node20 + + + + + +Node21 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node17->Node21 + + + + + +Node18->Node11 + + + + + +Node18->Node19 + + + + + +Node19->Node10 + + + + + +Node21->Node10 + + + + + +Node22->Node15 + + + + + +Node23 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node22->Node23 + + + + + +Node24 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node22->Node24 + + + + + +Node25 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node22->Node25 + + + + + +Node27 + + +penify_hook.commands.auth +_commands.login + + + + + +Node26->Node27 + + + + + +Node28 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node27->Node28 + + + + + +Node28->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg new file mode 100644 index 0000000..4199d83 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_cgraph_org.svg @@ -0,0 +1,620 @@ + + + + + + +penify_hook.main.main + + + +Node1 + + +penify_hook.main.main + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node6 + + + + + +Node17 + + +penify_hook.config +_command.handle_config + + + + + +Node1->Node17 + + + + + +Node22 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node22 + + + + + +Node26 + + +penify_hook.login_command.handle +_login + + + + + +Node1->Node26 + + + + + +Node29 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node1->Node29 + + + + + +Node30 + + +penify_hook.config +_command.setup_config +_parser + + + + + +Node1->Node30 + + + + + +Node31 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node1->Node31 + + + + + +Node32 + + +penify_hook.login_command.setup +_login_parser + + + + + +Node1->Node32 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + +Node18 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node17->Node18 + + + + + +Node19 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node17->Node19 + + + + + +Node20 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node17->Node20 + + + + + +Node21 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node17->Node21 + + + + + +Node18->Node11 + + + + + +Node18->Node19 + + + + + +Node19->Node10 + + + + + +Node21->Node10 + + + + + +Node22->Node15 + + + + + +Node23 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node22->Node23 + + + + + +Node24 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node22->Node24 + + + + + +Node25 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node22->Node25 + + + + + +Node27 + + +penify_hook.commands.auth +_commands.login + + + + + +Node26->Node27 + + + + + +Node28 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node27->Node28 + + + + + +Node28->Node10 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map new file mode 100644 index 0000000..3aaa58c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 new file mode 100644 index 0000000..4bf17ac --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.md5 @@ -0,0 +1 @@ +3a9435159e82b3293bbcf47f41f2b41c \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg new file mode 100644 index 0000000..5001f6b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main_a16838b20df4bd14ee4b5e1dd2906738f_icgraph.svg @@ -0,0 +1,28 @@ + + + + + + +penify_hook.main.main + + + +Node1 + + +penify_hook.main.main + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils.html b/docs/html/namespacepenify__hook_1_1ui__utils.html new file mode 100644 index 0000000..c4ca8db --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils.html @@ -0,0 +1,795 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.ui_utils Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.ui_utils Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    def format_info (message)
     
    def format_success (message)
     
    def format_warning (message)
     
    def format_error (message)
     
    def format_highlight (message)
     
    def format_file_path (file_path)
     
    def print_info (message)
     
    def print_success (message)
     
    def print_warning (message)
     
    def print_error (message)
     
    def print_processing (file_path)
     
    def print_status (status, message)
     
    def create_progress_bar (total, desc="Processing", unit="item")
     
    def create_stage_progress_bar (stages, desc="Processing")
     
    def 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
     
    string SUCCESS_SYMBOL = "✓"
     
    string WARNING_SYMBOL = "○"
     
    string ERROR_SYMBOL = "✗"
     
    string 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()

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

    ◆ create_stage_progress_bar()

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

    ◆ format_error()

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

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

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

    ◆ format_info()

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

    ◆ format_success()

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

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

    ◆ print_error()

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

    ◆ print_info()

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

    ◆ print_processing()

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

    ◆ print_status()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.ui_utils.print_status ( status,
     message 
    )
    +
    +
    Print a status message with an appropriate symbol.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ print_success()

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

    ◆ print_warning()

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

    ◆ update_stage()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def penify_hook.ui_utils.update_stage ( pbar,
     stage_name 
    )
    +
    +
    Update the progress bar with a new stage name.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    +

    Variable Documentation

    + +

    ◆ autoreset

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

    ◆ ERROR_COLOR

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

    ◆ ERROR_SYMBOL

    + +
    +
    + + + + +
    string penify_hook.ui_utils.ERROR_SYMBOL = "✗"
    +
    + +
    +
    + +

    ◆ HIGHLIGHT_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.HIGHLIGHT_COLOR = Fore.BLUE
    +
    + +
    +
    + +

    ◆ INFO_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.INFO_COLOR = Fore.CYAN
    +
    + +
    +
    + +

    ◆ NEUTRAL_COLOR

    + +
    +
    + + + + +
    penify_hook.ui_utils.NEUTRAL_COLOR = Fore.WHITE
    +
    + +
    +
    + +

    ◆ PROCESSING_SYMBOL

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

    ◆ SUCCESS_COLOR

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

    ◆ SUCCESS_SYMBOL

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

    ◆ WARNING_COLOR

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

    ◆ WARNING_SYMBOL

    + +
    +
    + + + + +
    string penify_hook.ui_utils.WARNING_SYMBOL = "○"
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map new file mode 100644 index 0000000..25e33d6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 new file mode 100644 index 0000000..e8c2c22 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.md5 @@ -0,0 +1 @@ +e844738072248c6c64fdcc2330f4e553 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg new file mode 100644 index 0000000..d1398fc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph.svg @@ -0,0 +1,347 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_warning + + + +Node1 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node11 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2->Node14 + + + + + +Node4 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node3->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node3->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node3->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node3->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node4->Node6 + + + + + +Node5->Node5 + + + + + +Node12 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node11->Node13 + + + + + +Node15 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node14->Node15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg new file mode 100644 index 0000000..1de8b95 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a0a6fd2613c6fe053b6e4356cd9e5cda2_icgraph_org.svg @@ -0,0 +1,259 @@ + + + + + + +penify_hook.ui_utils.format_warning + + + +Node1 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node11 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node2->Node14 + + + + + +Node4 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node3->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node3->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node3->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node3->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node4->Node6 + + + + + +Node5->Node5 + + + + + +Node12 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node11->Node13 + + + + + +Node15 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node14->Node15 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map new file mode 100644 index 0000000..b3bbd49 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 new file mode 100644 index 0000000..61c5559 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.md5 @@ -0,0 +1 @@ +107c8ab941ac9fce368d49be27d3ad77 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg new file mode 100644 index 0000000..4f4e98b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_cgraph.svg @@ -0,0 +1,38 @@ + + + + + + +penify_hook.ui_utils.create_progress_bar + + + +Node1 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node2 + + +penify_hook.ui_utils.format_info + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map new file mode 100644 index 0000000..2837065 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 new file mode 100644 index 0000000..28e733d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.md5 @@ -0,0 +1 @@ +31face48bece50b969dd777e2fc02655 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg new file mode 100644 index 0000000..c38d43e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a12b92532b1458af94f3649d411b5505c_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.create_progress_bar + + + +Node1 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map new file mode 100644 index 0000000..9aa84d3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 new file mode 100644 index 0000000..95113cf --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.md5 @@ -0,0 +1 @@ +dc9c89eee18a938f2f9191abf1d0c4e3 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg new file mode 100644 index 0000000..3d3ba26 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_warning + + + +Node1 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2 + + +penify_hook.ui_utils.format +_warning + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map new file mode 100644 index 0000000..951c8b4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 new file mode 100644 index 0000000..cd55665 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.md5 @@ -0,0 +1 @@ +9fb882734b6d928eec5be79c1f8ddcfd \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg new file mode 100644 index 0000000..c19d945 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph.svg @@ -0,0 +1,331 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.print_warning + + + +Node1 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node10 + + + + + +Node13 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node10->Node11 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node10->Node12 + + + + + +Node14 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node13->Node14 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg new file mode 100644 index 0000000..8fa32d4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a1ffbb9671dbe233770268e2dd66a67fa_icgraph_org.svg @@ -0,0 +1,243 @@ + + + + + + +penify_hook.ui_utils.print_warning + + + +Node1 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node10 + + + + + +Node13 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node10->Node11 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node10->Node12 + + + + + +Node14 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node13->Node14 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map new file mode 100644 index 0000000..dd6f039 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 new file mode 100644 index 0000000..2cb272d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.md5 @@ -0,0 +1 @@ +86ecc3cd8eb77718a70cf2d0a033d81b \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg new file mode 100644 index 0000000..7e446d7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_success + + + +Node1 + + +penify_hook.ui_utils.print +_success + + + + + +Node2 + + +penify_hook.ui_utils.format +_success + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map new file mode 100644 index 0000000..ae7f6f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 new file mode 100644 index 0000000..aeb43db --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.md5 @@ -0,0 +1 @@ +5a5f4e31cb2a03012aa538af45b7c2f7 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg new file mode 100644 index 0000000..72720aa --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a2b16aa6b68a9edea5f29f84f1c4be79a_icgraph.svg @@ -0,0 +1,71 @@ + + + + + + +penify_hook.ui_utils.print_success + + + +Node1 + + +penify_hook.ui_utils.print +_success + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map new file mode 100644 index 0000000..7bb444c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 new file mode 100644 index 0000000..13a3f9b --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.md5 @@ -0,0 +1 @@ +07bb20aff57367351bd025b6bbac0225 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg new file mode 100644 index 0000000..29c14be --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_cgraph.svg @@ -0,0 +1,38 @@ + + + + + + +penify_hook.ui_utils.create_stage_progress_bar + + + +Node1 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node2 + + +penify_hook.ui_utils.format_info + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map new file mode 100644 index 0000000..f7b8a4e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 new file mode 100644 index 0000000..2972d31 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.md5 @@ -0,0 +1 @@ +c7fe8cba89008798c4a6df0ce478844e \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg new file mode 100644 index 0000000..756b57c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a3da02cd1140179a9ce60f62c85fccfef_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.create_stage_progress_bar + + + +Node1 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map new file mode 100644 index 0000000..1474643 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 new file mode 100644 index 0000000..69b06bc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.md5 @@ -0,0 +1 @@ +e9b17f53f8eea3fa235635a840d97fb5 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg new file mode 100644 index 0000000..35fcfaa --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph.svg @@ -0,0 +1,266 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_error + + + +Node1 + + +penify_hook.ui_utils.format +_error + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node3->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node3->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node3->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node3->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node4->Node6 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg new file mode 100644 index 0000000..d6c4844 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a4dd934568897433fa73f9cc182ac4a3e_icgraph_org.svg @@ -0,0 +1,178 @@ + + + + + + +penify_hook.ui_utils.format_error + + + +Node1 + + +penify_hook.ui_utils.format +_error + + + + + +Node2 + + +penify_hook.ui_utils.print +_error + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node3->Node4 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node3->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node3->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node3->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.main.main + + + + + +Node4->Node5 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node4->Node6 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map new file mode 100644 index 0000000..9ed7a63 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 new file mode 100644 index 0000000..5199573 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.md5 @@ -0,0 +1 @@ +e25efaa5775be3034819eb11f9cbeeb3 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg new file mode 100644 index 0000000..1b60170 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph.svg @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_success + + + +Node1 + + +penify_hook.ui_utils.format +_success + + + + + +Node2 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + +Node5 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node2->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg new file mode 100644 index 0000000..a84c7b9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a532cdb4de7c679ce8b29c3e9116c4776_icgraph_org.svg @@ -0,0 +1,87 @@ + + + + + + +penify_hook.ui_utils.format_success + + + +Node1 + + +penify_hook.ui_utils.format +_success + + + + + +Node2 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + +Node5 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node2->Node5 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map new file mode 100644 index 0000000..68ad486 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 new file mode 100644 index 0000000..882dba5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.md5 @@ -0,0 +1 @@ +3b447097b4d45a9b7a66bc911d7dd54f \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg new file mode 100644 index 0000000..dd6a762 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph.svg @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.update_stage + + + +Node1 + + +penify_hook.ui_utils.update +_stage + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node3 + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg new file mode 100644 index 0000000..1b51200 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a5a7340d0fc60fb80f17514d60bf45f1d_icgraph_org.svg @@ -0,0 +1,77 @@ + + + + + + +penify_hook.ui_utils.update_stage + + + +Node1 + + +penify_hook.ui_utils.update +_stage + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node3 + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map new file mode 100644 index 0000000..b95ed08 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 new file mode 100644 index 0000000..e14594c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.md5 @@ -0,0 +1 @@ +f7f77cf41919f414860683374ddefc0a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg new file mode 100644 index 0000000..268b380 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_error + + + +Node1 + + +penify_hook.ui_utils.print +_error + + + + + +Node2 + + +penify_hook.ui_utils.format +_error + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map new file mode 100644 index 0000000..cfe84b1 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 new file mode 100644 index 0000000..8538194 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.md5 @@ -0,0 +1 @@ +9c27aeee4681a41d96bdc9cb1c2cd259 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg new file mode 100644 index 0000000..5e321ab --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph.svg @@ -0,0 +1,250 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.print_error + + + +Node1 + + +penify_hook.ui_utils.print +_error + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg new file mode 100644 index 0000000..e913c1f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a6f0acd7dd91abfe67d0807803bc3b65f_icgraph_org.svg @@ -0,0 +1,162 @@ + + + + + + +penify_hook.ui_utils.print_error + + + +Node1 + + +penify_hook.ui_utils.print +_error + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map new file mode 100644 index 0000000..07143b8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 new file mode 100644 index 0000000..f566c4a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.md5 @@ -0,0 +1 @@ +0ee2c99f818d114be866466bd3ca67e3 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg new file mode 100644 index 0000000..ec42fa5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_cgraph.svg @@ -0,0 +1,37 @@ + + + + + + +penify_hook.ui_utils.print_info + + + +Node1 + + +penify_hook.ui_utils.print_info + + + + + +Node2 + + +penify_hook.ui_utils.format_info + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map new file mode 100644 index 0000000..a111cc8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 new file mode 100644 index 0000000..9d7b6fc --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.md5 @@ -0,0 +1 @@ +4693bdcc77b647a09f27d1c12b6cf38a \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg new file mode 100644 index 0000000..5e238f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph.svg @@ -0,0 +1,356 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.print_info + + + +Node1 + + +penify_hook.ui_utils.print_info + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node1->Node4 + + + + + +Node10 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node1->Node10 + + + + + +Node11 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node1->Node11 + + + + + +Node12 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node12 + + + + + +Node13 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node13 + + + + + +Node14 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node14 + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11->Node12 + + + + + +Node13->Node12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg new file mode 100644 index 0000000..f960222 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a811f0adf6e9bf71510c379b6fa155e44_icgraph_org.svg @@ -0,0 +1,268 @@ + + + + + + +penify_hook.ui_utils.print_info + + + +Node1 + + +penify_hook.ui_utils.print_info + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node1->Node4 + + + + + +Node10 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node1->Node10 + + + + + +Node11 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node1->Node11 + + + + + +Node12 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node1->Node12 + + + + + +Node13 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node1->Node13 + + + + + +Node14 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node14 + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11->Node12 + + + + + +Node13->Node12 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map new file mode 100644 index 0000000..7df2c63 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.map @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 new file mode 100644 index 0000000..0acebf0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.md5 @@ -0,0 +1 @@ +ebb2d3fbd74327cb6297532859329884 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg new file mode 100644 index 0000000..af64c2d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph.svg @@ -0,0 +1,425 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_info + + + +Node1 + + +penify_hook.ui_utils.format_info + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node4->Node5 + + + + + +Node6->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node6->Node7 + + + + + +Node8 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node6->Node8 + + + + + +Node9 + + +penify_hook.main.main + + + + + +Node6->Node9 + + + + + +Node15 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node6->Node15 + + + + + +Node16 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node6->Node16 + + + + + +Node17 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node6->Node17 + + + + + +Node18 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node6->Node18 + + + + + +Node7->Node8 + + + + + +Node11 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node7->Node11 + + + + + +Node12 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node7->Node12 + + + + + +Node13 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node7->Node13 + + + + + +Node14 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node7->Node14 + + + + + +Node8->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node8->Node10 + + + + + +Node9->Node9 + + + + + +Node16->Node17 + + + + + +Node18->Node17 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg new file mode 100644 index 0000000..99f7f74 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_a92c3e466d1912058167be2eacf85b9f6_icgraph_org.svg @@ -0,0 +1,337 @@ + + + + + + +penify_hook.ui_utils.format_info + + + +Node1 + + +penify_hook.ui_utils.format_info + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node4->Node5 + + + + + +Node6->Node3 + + + + + +Node7 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node6->Node7 + + + + + +Node8 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node6->Node8 + + + + + +Node9 + + +penify_hook.main.main + + + + + +Node6->Node9 + + + + + +Node15 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node6->Node15 + + + + + +Node16 + + +penify_hook.commit +_analyzer.CommitDocGenHook.get +_summary + + + + + +Node6->Node16 + + + + + +Node17 + + +penify_hook.commit +_analyzer.CommitDocGenHook.run + + + + + +Node6->Node17 + + + + + +Node18 + + +penify_hook.commit +_analyzer.CommitDocGenHook.process +_jira_integration + + + + + +Node6->Node18 + + + + + +Node7->Node8 + + + + + +Node11 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node7->Node11 + + + + + +Node12 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node7->Node12 + + + + + +Node13 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node7->Node13 + + + + + +Node14 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node7->Node14 + + + + + +Node8->Node9 + + + + + +Node10 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node8->Node10 + + + + + +Node9->Node9 + + + + + +Node16->Node17 + + + + + +Node18->Node17 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map new file mode 100644 index 0000000..a068346 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 new file mode 100644 index 0000000..fc03531 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.md5 @@ -0,0 +1 @@ +cb2ef693a136057440c77b2ffc5fc5cc \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg new file mode 100644 index 0000000..57fce61 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_aa6e684c00e26199440137a87ed9b195c_icgraph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.ui_utils.print_status + + + +Node1 + + +penify_hook.ui_utils.print +_status + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map new file mode 100644 index 0000000..0d99cfe --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 new file mode 100644 index 0000000..c14d515 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.md5 @@ -0,0 +1 @@ +65fe82e63024fcc065fa65dce2c0c8fb \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg new file mode 100644 index 0000000..a59c184 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_processing + + + +Node1 + + +penify_hook.ui_utils.print +_processing + + + + + +Node2 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map new file mode 100644 index 0000000..f15b74e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 new file mode 100644 index 0000000..568301c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.md5 @@ -0,0 +1 @@ +34c0d184b1a914e69d4b0bdacbaaff04 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg new file mode 100644 index 0000000..8c29f6a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_adfcbbfe39029ab6d1dd33e7bf75ae115_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.ui_utils.print_processing + + + +Node1 + + +penify_hook.ui_utils.print +_processing + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map new file mode 100644 index 0000000..37c3667 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 new file mode 100644 index 0000000..354e231 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.md5 @@ -0,0 +1 @@ +788f6631fd68b88312b14eace530bcf4 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg new file mode 100644 index 0000000..fa2467e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph.svg @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.ui_utils.format_file_path + + + +Node1 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node2 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.print +_processing + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg new file mode 100644 index 0000000..2e9a0f9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils_af3441fb3c2c3850b8b3b6455a9fdaba4_icgraph_org.svg @@ -0,0 +1,72 @@ + + + + + + +penify_hook.ui_utils.format_file_path + + + +Node1 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node2 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.print +_processing + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils.html b/docs/html/namespacepenify__hook_1_1utils.html new file mode 100644 index 0000000..19de32e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils.html @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.utils Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.utils Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  GitRepoNotFoundError
     
    + + + + + + + +

    +Functions

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

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Function Documentation

    + +

    ◆ find_git_parent()

    + +
    +
    + + + + + + + + +
    def penify_hook.utils.find_git_parent ( path)
    +
    +
    Traverse up from the given path to find the nearest directory containing a .git
    +subdirectory.
    +
    +
    + +

    ◆ get_repo_details()

    + +
    +
    + + + + + + + + +
    def penify_hook.utils.get_repo_details (Repo repo)
    +
    +
    Determine the details of a repository including its remote URL, hosting
    +service, organization name, and repository name.
    +
    +This function extracts the remote URL from the given Git repository object and
    +determines the hosting service (e.g., GitHub, Azure DevOps, Bitbucket, GitLab).
    +It then parses the URL to extract the organization name and repository name. If
    +the URL does not match any known hosting service pattern, it sets the hosting
    +service as "Unknown". The function handles exceptions that may occur during
    +this process and logs an error message if needed.
    +
    +Args:
    +    repo (Repo): A GitPython Repo object representing the local git repository.
    +
    +Returns:
    +    dict: A dictionary containing the organization name, repository name, and hosting
    +        service.
    +
    +
    +
    + +

    ◆ recursive_search_git_folder()

    + +
    +
    + + + + + + + + +
    def penify_hook.utils.recursive_search_git_folder ( folder_path)
    +
    +
    Recursively searches for a .git folder starting from the given directory.
    +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..af7a599 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils.js @@ -0,0 +1,8 @@ +var namespacepenify__hook_1_1utils = +[ + [ "GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ], + [ "find_git_parent", "namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2", null ], + [ "get_repo_details", "namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3", null ], + [ "recursive_search_git_folder", "namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f", null ], + [ "logger", "namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map new file mode 100644 index 0000000..054f06d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 new file mode 100644 index 0000000..1431c94 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 @@ -0,0 +1 @@ +dd726258fb2e799d709d2647521b3371 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg new file mode 100644 index 0000000..058cc5f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.utils.recursive_search_git_folder + + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map new file mode 100644 index 0000000..24785f5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 new file mode 100644 index 0000000..768ce43 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 @@ -0,0 +1 @@ +7f750ca69d16550b240f7065f5db45d2 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg new file mode 100644 index 0000000..4b06faf --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg @@ -0,0 +1,815 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.utils.recursive_search_git_folder + + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node10 + + + + + +Node22 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node22 + + + + + +Node32 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node32 + + + + + +Node35 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node35 + + + + + +Node37 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node37 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node10->Node11 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node10->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node10->Node21 + + + + + +Node11->Node3 + + + + + +Node12 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node11->Node12 + + + + + +Node17 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node11->Node17 + + + + + +Node18 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node11->Node18 + + + + + +Node19 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node11->Node19 + + + + + +Node12->Node4 + + + + + +Node13 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node12->Node13 + + + + + +Node14 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node12->Node14 + + + + + +Node15 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node12->Node15 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node12->Node16 + + + + + +Node22->Node11 + + + + + +Node22->Node22 + + + + + +Node23 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node22->Node23 + + + + + +Node28 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node22->Node28 + + + + + +Node23->Node3 + + + + + +Node24 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node23->Node24 + + + + + +Node27 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node23->Node27 + + + + + +Node25 + + +penify_hook.config +_command.handle_config + + + + + +Node24->Node25 + + + + + +Node26 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node24->Node26 + + + + + +Node25->Node4 + + + + + +Node28->Node3 + + + + + +Node29 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node28->Node29 + + + + + +Node30 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node28->Node30 + + + + + +Node31 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node28->Node31 + + + + + +Node33 + + +penify_hook.commands.auth +_commands.login + + + + + +Node32->Node33 + + + + + +Node34 + + +penify_hook.login_command.handle +_login + + + + + +Node33->Node34 + + + + + +Node34->Node4 + + + + + +Node35->Node24 + + + + + +Node35->Node25 + + + + + +Node36 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node35->Node36 + + + + + +Node37->Node25 + + + + + +Node38 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node37->Node38 + + + + + +Node39 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node37->Node39 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg new file mode 100644 index 0000000..8094fbd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg @@ -0,0 +1,727 @@ + + + + + + +penify_hook.utils.recursive_search_git_folder + + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node10 + + + + + +Node22 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node22 + + + + + +Node32 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node32 + + + + + +Node35 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node35 + + + + + +Node37 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node37 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node10->Node11 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node10->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node10->Node21 + + + + + +Node11->Node3 + + + + + +Node12 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node11->Node12 + + + + + +Node17 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node11->Node17 + + + + + +Node18 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node11->Node18 + + + + + +Node19 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node11->Node19 + + + + + +Node12->Node4 + + + + + +Node13 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node12->Node13 + + + + + +Node14 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node12->Node14 + + + + + +Node15 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node12->Node15 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node12->Node16 + + + + + +Node22->Node11 + + + + + +Node22->Node22 + + + + + +Node23 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node22->Node23 + + + + + +Node28 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node22->Node28 + + + + + +Node23->Node3 + + + + + +Node24 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node23->Node24 + + + + + +Node27 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node23->Node27 + + + + + +Node25 + + +penify_hook.config +_command.handle_config + + + + + +Node24->Node25 + + + + + +Node26 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node24->Node26 + + + + + +Node25->Node4 + + + + + +Node28->Node3 + + + + + +Node29 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node28->Node29 + + + + + +Node30 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node28->Node30 + + + + + +Node31 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node28->Node31 + + + + + +Node33 + + +penify_hook.commands.auth +_commands.login + + + + + +Node32->Node33 + + + + + +Node34 + + +penify_hook.login_command.handle +_login + + + + + +Node33->Node34 + + + + + +Node34->Node4 + + + + + +Node35->Node24 + + + + + +Node35->Node25 + + + + + +Node36 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node35->Node36 + + + + + +Node37->Node25 + + + + + +Node38 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node37->Node38 + + + + + +Node39 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node37->Node39 + + + + + diff --git a/docs/html/namespaces.html b/docs/html/namespaces.html new file mode 100644 index 0000000..6f511ea --- /dev/null +++ b/docs/html/namespaces.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Namespace List
    +
    + +
    + + + + + 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..892dbf6 --- /dev/null +++ b/docs/html/namespacesetup.html @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + +penify-cli: setup Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..f375460 --- /dev/null +++ b/docs/html/namespacetests.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..cc880ce --- /dev/null +++ b/docs/html/namespacetests.js @@ -0,0 +1,20 @@ +var namespacetests = +[ + [ "conftest", "namespacetests_1_1conftest.html", null ], + [ "test_commit_commands", "namespacetests_1_1test__commit__commands.html", "namespacetests_1_1test__commit__commands" ], + [ "test_config_commands", "namespacetests_1_1test__config__commands.html", "namespacetests_1_1test__config__commands" ], + [ "test_doc_commands", "namespacetests_1_1test__doc__commands.html", [ + [ "test_generate_doc_error_handling", "namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0", null ], + [ "test_generate_doc_file_location", "namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45", null ], + [ "test_generate_doc_folder_location", "namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186", null ], + [ "test_generate_doc_no_location", "namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8", null ], + [ "test_generate_doc_with_file_exception", "namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0", null ], + [ "test_generate_doc_with_folder_exception", "namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3", null ], + [ "test_handle_docgen_generate", "namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a", null ], + [ "test_handle_docgen_install_hook", "namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05", null ], + [ "test_handle_docgen_no_token", "namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c", null ], + [ "test_handle_docgen_uninstall_hook", "namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482", null ], + [ "test_setup_docgen_parser", "namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7", null ] + ] ], + [ "test_web_config", "namespacetests_1_1test__web__config.html", "namespacetests_1_1test__web__config" ] +]; \ No newline at end of file diff --git a/docs/html/namespacetests_1_1conftest.html b/docs/html/namespacetests_1_1conftest.html new file mode 100644 index 0000000..9cbd784 --- /dev/null +++ b/docs/html/namespacetests_1_1conftest.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.conftest Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    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..cff79b7 --- /dev/null +++ b/docs/html/namespacetests_1_1test__commit__commands.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_commit_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..c1436dc --- /dev/null +++ b/docs/html/namespacetests_1_1test__config__commands.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_config_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..22c2f88 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands.html @@ -0,0 +1,746 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_doc_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_doc_commands Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

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

    Function Documentation

    + +

    ◆ test_generate_doc_error_handling()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_error_handling ( mock_api_client,
     mock_git_analyzer,
     mock_exit 
    )
    +
    +
    Generate a documentation string for the provided code snippet using
    +Google Docstring style.
    +
    +Short one line description: Test function to ensure proper error
    +handling during API calls with GitAnalyzer.  Multiline long description:
    +This test function is designed to verify that the generate_doc function
    +handles exceptions correctly when an error occurs during API interaction
    +with GitAnalyzer. It sets up a mock API client and a mock Git analyzer,
    +causing the analyzer to raise an exception to simulate a failure
    +condition. The function then asserts that the exit code is set to 1 when
    +the error handling mechanism is invoked.
    +
    +Args:
    +    mock_api_client (MagicMock): A mock object simulating the API client.
    +    mock_git_analyzer (MagicMock): A mock object simulating the Git analyzer, configured to raise an
    +        exception.
    +    mock_exit (MagicMock): A mock object representing the exit function, which should be called
    +        with an error code.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_file_location()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_file_location ( mock_api_client,
     mock_folder_analyzer,
     mock_file_analyzer,
     mock_git_analyzer 
    )
    +
    +
    Test generating a documentation file location.
    +
    +This function tests the process of generating a documentation file
    +location using mock objects for API client, folder analyzer, file
    +analyzer, and Git analyzer. It sets up the necessary mocks, calls the
    +`generate_doc` function with specified parameters, and asserts that the
    +appropriate methods on the mock objects are called as expected.
    +
    +Args:
    +    mock_api_client (MagicMock): Mock object for the API client.
    +    mock_folder_analyzer (MagicMock): Mock object for the folder analyzer.
    +    mock_file_analyzer (MagicMock): Mock object for the file analyzer.
    +    mock_git_analyzer (MagicMock): Mock object for the Git analyzer.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_folder_location()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_folder_location ( mock_api_client,
     mock_folder_analyzer,
     mock_file_analyzer,
     mock_git_analyzer 
    )
    +
    +
    Test the function to generate documentation for a folder location.
    +
    +It sets up mock objects for API client, folder analyzer, file analyzer,
    +and Git analyzer, then calls the `generate_doc` function with specified
    +parameters. Finally, it asserts that the correct methods on the mock
    +objects were called as expected.
    +
    +Args:
    +    mock_api_client (MagicMock): Mock object for the API client.
    +    mock_folder_analyzer (MagicMock): Mock object for the folder analyzer.
    +    mock_file_analyzer (MagicMock): Mock object for the file analyzer.
    +    mock_git_analyzer (MagicMock): Mock object for the Git analyzer.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_no_location()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_no_location ( mock_getcwd,
     mock_api_client,
     mock_folder_analyzer,
     mock_file_analyzer,
     mock_git_analyzer 
    )
    +
    +
    Test function to generate documentation without location information.
    +
    +This function sets up mocks for the API client, current working
    +directory, and Git analyzer. It then calls the `generate_doc` function
    +with a fake API URL and token. The function is expected to initialize
    +the API client, configure the Git analyzer, and run it without any
    +location information.
    +
    +Args:
    +    mock_getcwd (MagicMock): Mock for os.getcwd().
    +    mock_api_client (MagicMock): Mock for creating an API client.
    +    mock_folder_analyzer (MagicMock): Mock for folder analysis.
    +    mock_file_analyzer (MagicMock): Mock for file analysis.
    +    mock_git_analyzer (MagicMock): Mock for Git analyzer setup.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_with_file_exception()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_with_file_exception ( mock_api_client,
     mock_getcwd 
    )
    +
    +
    Generate documentation from a Python source file.
    +
    +This function reads a Python file and generates a docstring based on its
    +content. It uses mock objects to simulate API calls and directory
    +operations during testing.
    +
    +Args:
    +    mock_api_client (unittest.mock.MagicMock): A mock object for simulating API client behavior.
    +    mock_getcwd (unittest.mock.MagicMock): A mock object for simulating the current working directory function.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_generate_doc_with_folder_exception()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_generate_doc_with_folder_exception ( mock_api_client,
     mock_getcwd 
    )
    +
    +
    Generate documentation from a given API endpoint and save it to a
    +folder.
    +
    +This function fetches data from the specified API endpoint, processes
    +it, and saves the generated documentation in the provided folder. If an
    +error occurs during the fetching process, a SystemExit exception is
    +raised with an appropriate message.
    +
    +Args:
    +    api_url (str): The URL of the API endpoint from which data will be fetched.
    +    token (str): The authentication token required to access the API.
    +    folder_path (str): The path to the folder where the documentation will be saved.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_handle_docgen_generate()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_handle_docgen_generate ( mock_get_token,
     mock_generate_doc,
     mock_uninstall_hook,
     mock_install_hook 
    )
    +
    +
    Test the direct documentation generation functionality.
    +
    +This function tests the `handle_docgen` function when no subcommand is
    +provided. It verifies that the document generation hook is called and
    +the uninstall and install hooks are not called.
    +
    +Args:
    +    mock_get_token (MagicMock): Mocked function to get authentication token.
    +    mock_generate_doc (MagicMock): Mocked function for generating documentation.
    +    mock_uninstall_hook (MagicMock): Mocked function for uninstalling the document generation hook.
    +    mock_install_hook (MagicMock): Mocked function for installing the document generation hook.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_handle_docgen_install_hook()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_handle_docgen_install_hook ( mock_exit,
     mock_get_token,
     mock_generate_doc,
     mock_uninstall_hook,
     mock_install_hook 
    )
    +
    +
    Test the handling of the 'install-hook' subcommand.
    +
    +This function sets up a mock environment where it simulates the
    +execution of the 'install-hook' subcommand. It verifies that the
    +`mock_install_hook` is called with the correct arguments, while
    +`mock_generate_doc` and `mock_uninstall_hook` are not called.
    +
    +Args:
    +    mock_exit (MagicMock): Mock object for sys.exit.
    +    mock_get_token (MagicMock): Mock object to simulate fetching a token.
    +    mock_generate_doc (MagicMock): Mock object to simulate generating documentation.
    +    mock_uninstall_hook (MagicMock): Mock object to simulate uninstalling a hook.
    +    mock_install_hook (MagicMock): Mock object to simulate installing a hook.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_handle_docgen_no_token()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_handle_docgen_no_token ( mock_exit,
     mock_get_token 
    )
    +
    +
    Test the behavior of the `handle_docgen` function when no token is
    +provided.
    +
    +This function asserts that if no token is returned by `mock_get_token`,
    +the `handle_docgen` function will call `mock_exit` with a status code of
    +1.
    +
    +Args:
    +    mock_exit (MagicMock): A MagicMock object simulating the `exit` function.
    +    mock_get_token (MagicMock): A MagicMock object simulating the `get_token` function.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_handle_docgen_uninstall_hook()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    def tests.test_doc_commands.test_handle_docgen_uninstall_hook ( mock_exit,
     mock_get_token,
     mock_generate_doc,
     mock_uninstall_hook,
     mock_install_hook 
    )
    +
    +
    Test the uninstall-hook subcommand of the handle_docgen function.
    +This test case sets up a mock environment and verifies that the
    +uninstall-hook is called with the correct location, while generate_doc
    +and install_hook are not called.
    +
    +Args:
    +    mock_exit (MagicMock): A mock for the exit function.
    +    mock_get_token (MagicMock): A mock for the get_token function.
    +    mock_generate_doc (MagicMock): A mock for the generate_doc function.
    +    mock_uninstall_hook (MagicMock): A mock for the uninstall_hook function.
    +    mock_install_hook (MagicMock): A mock for the install_hook function.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ test_setup_docgen_parser()

    + +
    +
    + + + + + + + +
    def tests.test_doc_commands.test_setup_docgen_parser ()
    +
    +
    Test the setup_docgen_parser function to ensure it properly configures
    +the ArgumentParser for docgen options.
    +
    +It verifies that the parser correctly sets up docgen options and handles
    +different subcommands like 'install-hook' and 'uninstall-hook'.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map new file mode 100644 index 0000000..f0f54c3 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 new file mode 100644 index 0000000..b280dc5 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 @@ -0,0 +1 @@ +28c17f21f2a2a250d23b14c68e3e5d3a \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg new file mode 100644 index 0000000..c482b86 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_file_location + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_file_location + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map new file mode 100644 index 0000000..a8ff77b --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 new file mode 100644 index 0000000..53e2e0a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 @@ -0,0 +1 @@ +192fbe5412db3710d1849692c54ac106 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg new file mode 100644 index 0000000..6ca2ff2 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_setup_docgen_parser + + + +Node1 + + +tests.test_doc_commands.test +_setup_docgen_parser + + + + + +Node2 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map new file mode 100644 index 0000000..b5bbb57 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 new file mode 100644 index 0000000..300f399 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 @@ -0,0 +1 @@ +aef759552fc6cc4d80899b0b13739a5e \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg new file mode 100644 index 0000000..94a320e --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_uninstall_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg new file mode 100644 index 0000000..fd67a25 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_uninstall_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map new file mode 100644 index 0000000..f220740 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 new file mode 100644 index 0000000..ef64a42 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 @@ -0,0 +1 @@ +10d76966ac7089e8706fb1aec3e4f9d6 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg new file mode 100644 index 0000000..b369e3b --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_with_file_exception + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_with_file_exception + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map new file mode 100644 index 0000000..1cee3ef --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 new file mode 100644 index 0000000..076630a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 @@ -0,0 +1 @@ +064f1a8c9470887507dea5cf5dd184eb \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg new file mode 100644 index 0000000..d9f33f9 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_folder_location + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_folder_location + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map new file mode 100644 index 0000000..6505473 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 new file mode 100644 index 0000000..314f15d --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 @@ -0,0 +1 @@ +e42b926dad2f0ff5205af415d972f1da \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg new file mode 100644 index 0000000..f231670 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_with_folder_exception + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_with_folder +_exception + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map new file mode 100644 index 0000000..73c8b64 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 new file mode 100644 index 0000000..99c08a9 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 @@ -0,0 +1 @@ +d4d1f9d92eb42ae249ce3409ab7627ac \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg new file mode 100644 index 0000000..0ee0fcd --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_no_location + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_no_location + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map new file mode 100644 index 0000000..86fe3ea --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 new file mode 100644 index 0000000..28ac74a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 @@ -0,0 +1 @@ +810237d2c8640fcab5bd4448f12a9692 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg new file mode 100644 index 0000000..ae76a88 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_generate + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg new file mode 100644 index 0000000..408dbc3 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_generate + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map new file mode 100644 index 0000000..97c848c --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 new file mode 100644 index 0000000..56e1467 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 @@ -0,0 +1 @@ +dc60bba75d6f8dafbd4701e4ac271385 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg new file mode 100644 index 0000000..927f757 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_install_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg new file mode 100644 index 0000000..0258a01 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_install_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map new file mode 100644 index 0000000..1b841f4 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 new file mode 100644 index 0000000..ef9f04c --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 @@ -0,0 +1 @@ +7930a342103b95a29b43ca93e1212cff \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg new file mode 100644 index 0000000..9768a7e --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_error_handling + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_error_handling + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map new file mode 100644 index 0000000..6b196ac --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 new file mode 100644 index 0000000..8969799 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 @@ -0,0 +1 @@ +4dfa85ad92a13ab307edd504ab65bb1a \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg new file mode 100644 index 0000000..b636d21 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_no_token + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg new file mode 100644 index 0000000..0cfb00d --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_no_token + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__web__config.html b/docs/html/namespacetests_1_1test__web__config.html new file mode 100644 index 0000000..fb6c3cd --- /dev/null +++ b/docs/html/namespacetests_1_1test__web__config.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_web_config Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/docs/html/nav_g.png b/docs/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/-m, --message", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md3", null ], + [ "-e, --terminal", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md4", null ], + [ "-d, --description", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md5", null ] + ] ], + [ "Option Combinations", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md6", [ + [ "Generate Title Only with Context", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md7", null ], + [ "Generate Title and Description with Context", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md8", null ], + [ "Generate and Edit Full Commit Message", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md9", null ], + [ "Generate, Edit, and Provide Context", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md10", null ] + ] ], + [ "LLM and JIRA Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md11", [ + [ "Using Local LLM", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md12", null ], + [ "JIRA Enhancement", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md13", null ] + ] ], + [ "Configuration Requirements", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md14", null ], + [ "Examples", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md15", [ + [ "Basic Commit with Default Settings", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md16", null ], + [ "Full Workflow with All Features", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md17", null ] + ] ], + [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md18", [ + [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md19", null ] + ] ] + ] ], + [ "Penify CLI - Configuration Commands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html", [ + [ "Configuration Overview", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md21", null ], + [ "Basic Usage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md22", null ], + [ "LLM Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md23", [ + [ "Web Interface", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md24", null ], + [ "Supported LLMs", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md25", [ + [ "OpenAI", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md26", null ], + [ "Anthropic", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md27", null ], + [ "Ollama (Local)", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md28", null ], + [ "Azure OpenAI", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md29", null ] + ] ], + [ "Configuration File Structure", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md30", null ] + ] ], + [ "JIRA Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md31", [ + [ "Web Interface", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md32", null ], + [ "Creating a JIRA API Token", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md33", null ], + [ "Configuration File Structure", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md34", null ] + ] ], + [ "Configuration Locations", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md35", null ], + [ "Environment Variables", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md36", null ], + [ "Command-Line Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md37", null ], + [ "Sharing Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md38", null ], + [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md39", [ + [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md40", null ] + ] ] + ] ], + [ "Penify CLI - Detailed Usage Guide", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html", [ + [ "Table of Contents", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md42", null ], + [ "Authentication", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md43", [ + [ "Login Process", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md44", null ], + [ "API Token Storage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md45", null ], + [ "Token Precedence", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md46", null ] + ] ], + [ "Command Overview", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md47", null ], + [ "Commit Message Generation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md48", null ], + [ "Code Documentation Generation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md49", [ + [ "Use Cases", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md50", null ], + [ "Authentication Requirement", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md51", null ] + ] ], + [ "Configuration Settings", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md52", null ], + [ "Git Hooks", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md53", [ + [ "Post-Commit Hook", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md54", null ], + [ "Custom Hook Location", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md55", null ] + ] ], + [ "Advanced Use Cases", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md56", [ + [ "CI/CD Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md57", null ], + [ "Remote Repository Documentation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md58", null ] + ] ], + [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md59", [ + [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md60", null ], + [ "Logs", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md61", null ], + [ "Support", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md62", null ] + ] ] + ] ], + [ "Penify CLI - Documentation Generation Commands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html", [ + [ "Table of Contents", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md64", null ], + [ "Basic Usage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md65", null ], + [ "Command Options", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md66", [ + [ "-l, --location", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md67", null ], + [ "Subcommands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md68", [ + [ "install-hook", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md69", null ], + [ "uninstall-hook", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md70", null ] + ] ] + ] ], + [ "Option Combinations", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md71", [ + [ "Generate Documentation for Current Git Diff", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md72", null ], + [ "Generate Documentation for a Specific File", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md73", null ], + [ "Generate Documentation for a Folder", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md74", null ], + [ "Install Hook in Current Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md75", null ], + [ "Install Hook in Specific Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md76", null ], + [ "Uninstall Hook from Current Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md77", null ], + [ "Uninstall Hook from Specific Repository", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md78", null ] + ] ], + [ "Git Hook Commands", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md79", [ + [ "Hook Installation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md80", [ + [ "How Hooks Work", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md81", null ], + [ "Hook Script Content", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md82", null ], + [ "Installation Location", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md83", null ], + [ "Installation Requirements", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md84", null ], + [ "Verifying Installation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md85", null ] + ] ], + [ "Hook Customization", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md86", [ + [ "Modifying Hook Behavior", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md87", null ], + [ "Advanced Hook Scenarios", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md88", null ] + ] ], + [ "Hook Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md89", [ + [ "Standard Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md90", null ], + [ "Specific Repository Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md91", null ], + [ "Manual Hook Removal", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md92", null ], + [ "Verifying Uninstallation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md93", null ] + ] ] + ] ], + [ "Advanced Use Cases", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md94", [ + [ "Continuous Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md95", null ], + [ "Batch Documentation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md96", null ], + [ "Custom Git Hook Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md97", null ], + [ "Documenting Release Tags", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md98", null ] + ] ], + [ "Troubleshooting", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md99", [ + [ "Common Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md100", null ], + [ "Debugging", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md101", null ], + [ "Getting Help", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md102", null ] + ] ] + ] ], + [ "Penify CLI Example Workflows", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html", [ + [ "Workflow 1: Efficient Git Commits with AI", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md104", [ + [ "Setup", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md105", null ], + [ "Daily Workflow", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md106", null ], + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md107", null ] + ] ], + [ "Workflow 2: Documentation Generation Pipeline", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md108", [ + [ "Setup", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md109", null ], + [ "Daily Workflow", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md110", null ], + [ "Manual Documentation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md111", null ], + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md112", null ] + ] ], + [ "Workflow 3: Code Review Enhancement", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md113", [ + [ "Setup", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md114", null ], + [ "Workflow", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md115", null ], + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md116", null ] + ] ], + [ "Workflow 4: Onboarding New Team Members", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md117", [ + [ "For Team Leads", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md118", null ], + [ "For New Team Members", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md119", null ], + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md120", null ] + ] ], + [ "Workflow 5: Legacy Code Understanding", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md121", [ + [ "Benefits", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md122", null ] + ] ] + ] ], + [ "Penify CLI Tool", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html", [ + [ "Features", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md157", null ], + [ "Installation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md158", null ], + [ "Usage", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md159", null ], + [ "Basic Commands (No login required)", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md160", [ + [ "Commit", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md161", null ], + [ "Config", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md162", null ] + ] ], + [ "Advanced Commands (Login required)", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md163", [ + [ "Login", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md164", null ], + [ "Documentation Generation", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md165", null ], + [ "Git Hook Management", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md166", null ] + ] ], + [ "Authentication", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md167", null ], + [ "Local LLM Configuration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md168", null ], + [ "JIRA Integration", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md169", null ], + [ "Development", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md170", [ + [ "Running Tests", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md171", null ] + ] ], + [ "License", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md172", null ], + [ "Author", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md173", null ], + [ "Contributing", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md174", null ], + [ "Issues", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md175", null ], + [ "Support", "md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md176", null ] + ] ], + [ "Namespaces", "namespaces.html", [ + [ "Namespace List", "namespaces.html", "namespaces_dup" ], + [ "Namespace Members", "namespacemembers.html", [ + [ "All", "namespacemembers.html", null ], + [ "Functions", "namespacemembers_func.html", null ], + [ "Variables", "namespacemembers_vars.html", null ] + ] ] + ] ], + [ "Classes", "annotated.html", [ + [ "Class List", "annotated.html", "annotated_dup" ], + [ "Class Index", "classes.html", null ], + [ "Class Hierarchy", "hierarchy.html", "hierarchy" ], + [ "Class Members", "functions.html", [ + [ "All", "functions.html", null ], + [ "Functions", "functions_func.html", null ], + [ "Variables", "functions_vars.html", null ] + ] ] + ] ], + [ "Files", "files.html", [ + [ "File List", "files.html", "files_dup" ] + ] ] + ] ] +]; + +var NAVTREEINDEX = +[ +"annotated.html", +"jira__client_8py.html#a5593ea3415081eca1eea92e4c1ad1aa2", +"namespacesetup.html#abead4f26b530856f858f0d44c7cf2588" +]; + +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; \ No newline at end of file diff --git a/docs/html/navtreeindex0.js b/docs/html/navtreeindex0.js new file mode 100644 index 0000000..8358b16 --- /dev/null +++ b/docs/html/navtreeindex0.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX0 = +{ +"annotated.html":[7,0], +"api__client_8py.html":[8,0,0,1,2], +"auth__commands_8py.html":[8,0,0,1,0,1], +"auth__commands_8py.html#a78f375c58bb6f69f98675e6a9ac84655":[8,0,0,1,0,1,0], +"auth__commands_8py.html#aa3956ca1749d4218ea1dc6e5b6218b24":[8,0,0,1,0,1,1], +"base__analyzer_8py.html":[8,0,0,1,3], +"classException.html":[7,0,2], +"classes.html":[7,1], +"classpenify__hook_1_1api__client_1_1APIClient.html":[7,0,0,0,0], +"classpenify__hook_1_1api__client_1_1APIClient.html":[6,0,0,0,0], +"classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872":[6,0,0,0,0,6], +"classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872":[7,0,0,0,0,6], +"classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237":[6,0,0,0,0,7], +"classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237":[7,0,0,0,0,7], +"classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402":[7,0,0,0,0,4], +"classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402":[6,0,0,0,0,4], +"classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0":[6,0,0,0,0,8], +"classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0":[7,0,0,0,0,8], +"classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce":[6,0,0,0,0,1], +"classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce":[7,0,0,0,0,1], +"classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3":[6,0,0,0,0,2], +"classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3":[7,0,0,0,0,2], +"classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3":[7,0,0,0,0,5], +"classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3":[6,0,0,0,0,5], +"classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99":[6,0,0,0,0,3], +"classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99":[7,0,0,0,0,3], +"classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086":[7,0,0,0,0,0], +"classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086":[6,0,0,0,0,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html":[6,0,0,1,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html":[7,0,0,1,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb":[6,0,0,1,0,7], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb":[7,0,0,1,0,7], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369":[6,0,0,1,0,4], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369":[7,0,0,1,0,4], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2":[7,0,0,1,0,1], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2":[6,0,0,1,0,1], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499":[6,0,0,1,0,6], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499":[7,0,0,1,0,6], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5":[6,0,0,1,0,5], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5":[7,0,0,1,0,5], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25":[6,0,0,1,0,2], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25":[7,0,0,1,0,2], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344":[7,0,0,1,0,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344":[6,0,0,1,0,0], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4":[7,0,0,1,0,3], +"classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4":[6,0,0,1,0,3], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html":[6,0,0,3,0], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html":[7,0,0,2,0], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9":[6,0,0,3,0,4], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9":[7,0,0,2,0,4], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37":[6,0,0,3,0,2], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37":[7,0,0,2,0,2], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca":[7,0,0,2,0,1], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca":[6,0,0,3,0,1], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a":[7,0,0,2,0,5], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a":[6,0,0,3,0,5], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f":[7,0,0,2,0,3], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f":[6,0,0,3,0,3], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e":[7,0,0,2,0,0], +"classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e":[6,0,0,3,0,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html":[6,0,0,6,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html":[7,0,0,3,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b":[6,0,0,6,0,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b":[7,0,0,3,0,0], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e":[7,0,0,3,0,2], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e":[6,0,0,6,0,2], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1":[6,0,0,6,0,3], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1":[7,0,0,3,0,3], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073":[7,0,0,3,0,1], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073":[6,0,0,6,0,1], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32":[6,0,0,6,0,4], +"classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32":[7,0,0,3,0,4], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html":[6,0,0,7,0], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html":[7,0,0,4,0], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821":[7,0,0,4,0,0], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821":[6,0,0,7,0,0], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393":[6,0,0,7,0,3], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393":[7,0,0,4,0,3], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec":[7,0,0,4,0,1], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec":[6,0,0,7,0,1], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc":[7,0,0,4,0,2], +"classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc":[6,0,0,7,0,2], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html":[6,0,0,8,0], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html":[7,0,0,5,0], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85":[7,0,0,5,0,3], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85":[6,0,0,8,0,3], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481":[6,0,0,8,0,1], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481":[7,0,0,5,0,1], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae":[7,0,0,5,0,4], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae":[6,0,0,8,0,4], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c":[6,0,0,8,0,0], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c":[7,0,0,5,0,0], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd":[7,0,0,5,0,2], +"classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd":[6,0,0,8,0,2], +"classpenify__hook_1_1jira__client_1_1JiraClient.html":[7,0,0,6,0], +"classpenify__hook_1_1jira__client_1_1JiraClient.html":[6,0,0,9,0], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8":[7,0,0,6,0,9], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8":[6,0,0,9,0,9], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c":[7,0,0,6,0,4], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c":[6,0,0,9,0,4], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197":[6,0,0,9,0,13], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197":[7,0,0,6,0,13], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5":[7,0,0,6,0,0], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5":[6,0,0,9,0,0], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23":[6,0,0,9,0,5], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23":[7,0,0,6,0,5], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a":[6,0,0,9,0,8], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a":[7,0,0,6,0,8], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760":[7,0,0,6,0,2], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760":[6,0,0,9,0,2], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1":[6,0,0,9,0,1], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1":[7,0,0,6,0,1], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746":[7,0,0,6,0,7], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746":[6,0,0,9,0,7], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826":[7,0,0,6,0,10], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826":[6,0,0,9,0,10], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7":[7,0,0,6,0,3], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7":[6,0,0,9,0,3], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c":[7,0,0,6,0,14], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c":[6,0,0,9,0,14], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6":[7,0,0,6,0,12], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6":[6,0,0,9,0,12], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd":[7,0,0,6,0,6], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd":[6,0,0,9,0,6], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9":[7,0,0,6,0,11], +"classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9":[6,0,0,9,0,11], +"classpenify__hook_1_1llm__client_1_1LLMClient.html":[6,0,0,10,0], +"classpenify__hook_1_1llm__client_1_1LLMClient.html":[7,0,0,7,0], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000":[7,0,0,7,0,1], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000":[6,0,0,10,0,1], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362":[7,0,0,7,0,3], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362":[6,0,0,10,0,3], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764":[6,0,0,10,0,0], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764":[7,0,0,7,0,0], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10":[7,0,0,7,0,4], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10":[6,0,0,10,0,4], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e":[7,0,0,7,0,2], +"classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e":[6,0,0,10,0,2], +"classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html":[7,0,0,8,0], +"classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html":[6,0,0,14,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html":[6,0,2,1,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html":[7,0,1,0,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be":[6,0,2,1,0,3], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be":[7,0,1,0,0,3], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4":[7,0,1,0,0,4], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4":[6,0,2,1,0,4], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e":[7,0,1,0,0,2], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e":[6,0,2,1,0,2], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691":[7,0,1,0,0,6], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691":[6,0,2,1,0,6], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc":[6,0,2,1,0,11], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc":[7,0,1,0,0,11], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6":[7,0,1,0,0,1], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6":[6,0,2,1,0,1], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2":[6,0,2,1,0,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2":[7,0,1,0,0,0], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597":[7,0,1,0,0,10], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597":[6,0,2,1,0,10], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0":[7,0,1,0,0,9], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0":[6,0,2,1,0,9], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e":[6,0,2,1,0,8], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e":[7,0,1,0,0,8], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b":[6,0,2,1,0,7], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b":[7,0,1,0,0,7], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be":[6,0,2,1,0,5], +"classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be":[7,0,1,0,0,5], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html":[6,0,2,2,0], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html":[7,0,1,1,0], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a":[7,0,1,1,0,4], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a":[6,0,2,2,0,4], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232":[6,0,2,2,0,7], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232":[7,0,1,1,0,7], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948":[7,0,1,1,0,5], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948":[6,0,2,2,0,5], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436":[7,0,1,1,0,8], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436":[6,0,2,2,0,8], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd":[7,0,1,1,0,3], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd":[6,0,2,2,0,3], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c":[7,0,1,1,0,6], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c":[6,0,2,2,0,6], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac":[7,0,1,1,0,10], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac":[6,0,2,2,0,10], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd":[6,0,2,2,0,1], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd":[7,0,1,1,0,1], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9":[7,0,1,1,0,11], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9":[6,0,2,2,0,11], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167":[6,0,2,2,0,2], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167":[7,0,1,1,0,2], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf":[6,0,2,2,0,0], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf":[7,0,1,1,0,0], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375":[7,0,1,1,0,9], +"classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375":[6,0,2,2,0,9], +"classtests_1_1test__web__config_1_1TestWebConfig.html":[6,0,2,4,0], +"classtests_1_1test__web__config_1_1TestWebConfig.html":[7,0,1,2,0], +"classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a":[6,0,2,4,0,0], +"classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a":[7,0,1,2,0,0], +"classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35":[7,0,1,2,0,1], +"classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35":[6,0,2,4,0,1], +"commit__analyzer_8py.html":[8,0,0,1,4], +"commit__commands_8py.html":[8,0,0,1,0,2], +"commit__commands_8py.html#a62564c4e8ad59fc46d56cb0f9122a71a":[8,0,0,1,0,2,0], +"commit__commands_8py.html#a8627583116eb78e31a4d3cdc16d2f15c":[8,0,0,1,0,2,2], +"commit__commands_8py.html#af4f739f524c38b437e4e47673d683e23":[8,0,0,1,0,2,1], +"config__command_8py.html":[8,0,0,1,5], +"config__command_8py.html#a240e5331681eb574ac319d7458783bde":[8,0,0,1,5,0], +"config__command_8py.html#a4f3eb92164a69df1446d745f8a09285e":[8,0,0,1,5,1], +"config__commands_8py.html":[8,0,0,1,0,3], +"config__commands_8py.html#a152642ab83cf6219b604bda6122aba67":[8,0,0,1,0,3,10], +"config__commands_8py.html#a15bf3685c4dcb5c15ba6a4055e484cf2":[8,0,0,1,0,3,3], +"config__commands_8py.html#a185dfc34a655ed80e6c95939b6f3c35c":[8,0,0,1,0,3,1], +"config__commands_8py.html#a3caf2b062dd33b1f1d7ddc7224f0ff87":[8,0,0,1,0,3,2], +"config__commands_8py.html#a4617bc5956e502c9555dc0dda0376df4":[8,0,0,1,0,3,9], +"config__commands_8py.html#a4b202072a3a3b8515c9c254622e9c880":[8,0,0,1,0,3,11], +"config__commands_8py.html#a5503d51c905e2f1b299b12d2a73bd812":[8,0,0,1,0,3,6], +"config__commands_8py.html#a6492bc8e7df6e38bb06ad05e572d4cc0":[8,0,0,1,0,3,4], +"config__commands_8py.html#a6559a82d0bf727703d550d1003d3ed20":[8,0,0,1,0,3,5], +"config__commands_8py.html#aabe277132ce0bc0aacef951cf1dee2ae":[8,0,0,1,0,3,7], +"config__commands_8py.html#ab2486ac2bf16b4a671e49625bfa4f9b4":[8,0,0,1,0,3,8], +"config__commands_8py.html#af115198ea5d6808ccb98733957f50b06":[8,0,0,1,0,3,0], +"conftest_8py.html":[8,0,0,2,1], +"constants_8py.html":[8,0,0,1,6], +"constants_8py.html#a316c5a606e4440fb8224c6544c3a15f0":[8,0,0,1,6,1], +"constants_8py.html#af198b5d1fc2f44657a2061aa324af3e0":[8,0,0,1,6,0], +"dir_063e2d5fe58a131099a7fe4200cca78c.html":[8,0,0,2], +"dir_1648a057408aae8db85b8e3797335623.html":[8,0,0,0], +"dir_624fa2a8bce97f0444ac5cca335d4e23.html":[8,0,0,1,0], +"dir_b3b22d2ab7966b65f6b237e3231b41be.html":[8,0,0], +"dir_f88c3381c1861b3f7ca1f3d63cf244b5.html":[8,0,0,1], +"doc__commands_8py.html":[8,0,0,1,0,4], +"doc__commands_8py.html#a2006ab13bff718ef783868a910c0b704":[8,0,0,1,0,4,1], +"doc__commands_8py.html#a3e42540047da37565afffeaf106cb948":[8,0,0,1,0,4,3], +"doc__commands_8py.html#a4daac68bc563432bf25c85dc78081a25":[8,0,0,1,0,4,0], +"doc__commands_8py.html#acc7f4ead1b11951d885fa5c151c2cbe0":[8,0,0,1,0,4,2], +"file__analyzer_8py.html":[8,0,0,1,7], +"file__analyzer_8py.html#af419a4965f079d58cac5a5281ddb1828":[8,0,0,1,7,1], +"files.html":[8,0], +"folder__analyzer_8py.html":[8,0,0,1,8], +"functions.html":[7,3,0], +"functions_func.html":[7,3,1], +"functions_vars.html":[7,3,2], +"git__analyzer_8py.html":[8,0,0,1,9], +"git__analyzer_8py.html#ac4ce143fdca789a79c66852c37d7363a":[8,0,0,1,9,1], +"hierarchy.html":[7,2], +"hook__commands_8py.html":[8,0,0,1,0,5], +"hook__commands_8py.html#a6a45aad71c8d32ce11a6dff8cee8bee7":[8,0,0,1,0,5,3], +"hook__commands_8py.html#a81543eb5fa835fd1237f24e8bce6201d":[8,0,0,1,0,5,1], +"hook__commands_8py.html#adff8f5d3bf1c3795974a391ee95b72b2":[8,0,0,1,0,5,0], +"hook__commands_8py.html#ae82fd46e5a9219da1478b0476b8214b1":[8,0,0,1,0,5,2], +"index.html":[], +"jira__client_8py.html":[8,0,0,1,10] +}; diff --git a/docs/html/navtreeindex1.js b/docs/html/navtreeindex1.js new file mode 100644 index 0000000..f9245fe --- /dev/null +++ b/docs/html/navtreeindex1.js @@ -0,0 +1,253 @@ +var NAVTREEINDEX1 = +{ +"jira__client_8py.html#a5593ea3415081eca1eea92e4c1ad1aa2":[8,0,0,1,10,1], +"llm__client_8py.html":[8,0,0,1,11], +"login__command_8py.html":[8,0,0,1,12], +"login__command_8py.html#aae63db4c484797bead34b7d874020c6a":[8,0,0,1,12,1], +"login__command_8py.html#ae4bf932fbafeff834b0a0c5a37f74ccd":[8,0,0,1,12,0], +"main_8py.html":[8,0,0,1,13], +"main_8py.html#a16838b20df4bd14ee4b5e1dd2906738f":[8,0,0,1,13,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html":[5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md157":[5,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md158":[5,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md159":[5,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md160":[5,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md161":[5,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md162":[5,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md163":[5,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md164":[5,4,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md165":[5,4,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md166":[5,4,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md167":[5,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md168":[5,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md169":[5,7], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md170":[5,8], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md171":[5,8,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md172":[5,9], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md173":[5,10], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md174":[5,11], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md175":[5,12], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html#autotoc_md176":[5,13], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html":[0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md1":[0,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md10":[0,2,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md11":[0,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md12":[0,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md13":[0,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md14":[0,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md15":[0,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md16":[0,5,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md17":[0,5,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md18":[0,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md19":[0,6,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md2":[0,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md3":[0,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md4":[0,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md5":[0,1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md6":[0,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md7":[0,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md8":[0,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html#autotoc_md9":[0,2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html":[1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md21":[1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md22":[1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md23":[1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md24":[1,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md25":[1,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md26":[1,2,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md27":[1,2,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md28":[1,2,1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md29":[1,2,1,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md30":[1,2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md31":[1,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md32":[1,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md33":[1,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md34":[1,3,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md35":[1,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md36":[1,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md37":[1,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md38":[1,7], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md39":[1,8], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html#autotoc_md40":[1,8,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html":[2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md42":[2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md43":[2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md44":[2,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md45":[2,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md46":[2,1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md47":[2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md48":[2,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md49":[2,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md50":[2,4,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md51":[2,4,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md52":[2,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md53":[2,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md54":[2,6,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md55":[2,6,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md56":[2,7], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md57":[2,7,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md58":[2,7,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md59":[2,8], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md60":[2,8,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md61":[2,8,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html#autotoc_md62":[2,8,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html":[3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md100":[3,6,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md101":[3,6,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md102":[3,6,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md64":[3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md65":[3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md66":[3,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md67":[3,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md68":[3,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md69":[3,2,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md70":[3,2,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md71":[3,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md72":[3,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md73":[3,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md74":[3,3,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md75":[3,3,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md76":[3,3,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md77":[3,3,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md78":[3,3,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md79":[3,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md80":[3,4,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md81":[3,4,0,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md82":[3,4,0,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md83":[3,4,0,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md84":[3,4,0,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md85":[3,4,0,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md86":[3,4,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md87":[3,4,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md88":[3,4,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md89":[3,4,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md90":[3,4,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md91":[3,4,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md92":[3,4,2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md93":[3,4,2,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md94":[3,5], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md95":[3,5,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md96":[3,5,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md97":[3,5,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md98":[3,5,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html#autotoc_md99":[3,6], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html":[4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md104":[4,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md105":[4,0,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md106":[4,0,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md107":[4,0,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md108":[4,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md109":[4,1,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md110":[4,1,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md111":[4,1,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md112":[4,1,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md113":[4,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md114":[4,2,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md115":[4,2,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md116":[4,2,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md117":[4,3], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md118":[4,3,0], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md119":[4,3,1], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md120":[4,3,2], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md121":[4,4], +"md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html#autotoc_md122":[4,4,0], +"namespacemembers.html":[6,1,0], +"namespacemembers_func.html":[6,1,1], +"namespacemembers_vars.html":[6,1,2], +"namespacepenify__hook.html":[6,0,0], +"namespacepenify__hook_1_1api__client.html":[6,0,0,0], +"namespacepenify__hook_1_1base__analyzer.html":[6,0,0,1], +"namespacepenify__hook_1_1commands.html":[6,0,0,2], +"namespacepenify__hook_1_1commands_1_1auth__commands.html":[6,0,0,2,0], +"namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655":[6,0,0,2,0,0], +"namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24":[6,0,0,2,0,1], +"namespacepenify__hook_1_1commands_1_1commit__commands.html":[6,0,0,2,1], +"namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a":[6,0,0,2,1,0], +"namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c":[6,0,0,2,1,2], +"namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23":[6,0,0,2,1,1], +"namespacepenify__hook_1_1commands_1_1config__commands.html":[6,0,0,2,2], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67":[6,0,0,2,2,10], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2":[6,0,0,2,2,3], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c":[6,0,0,2,2,1], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87":[6,0,0,2,2,2], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4":[6,0,0,2,2,9], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880":[6,0,0,2,2,11], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812":[6,0,0,2,2,6], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0":[6,0,0,2,2,4], +"namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20":[6,0,0,2,2,5], +"namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae":[6,0,0,2,2,7], +"namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4":[6,0,0,2,2,8], +"namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06":[6,0,0,2,2,0], +"namespacepenify__hook_1_1commands_1_1doc__commands.html":[6,0,0,2,3], +"namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704":[6,0,0,2,3,1], +"namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948":[6,0,0,2,3,3], +"namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25":[6,0,0,2,3,0], +"namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0":[6,0,0,2,3,2], +"namespacepenify__hook_1_1commands_1_1hook__commands.html":[6,0,0,2,4], +"namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7":[6,0,0,2,4,3], +"namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d":[6,0,0,2,4,1], +"namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2":[6,0,0,2,4,0], +"namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1":[6,0,0,2,4,2], +"namespacepenify__hook_1_1commit__analyzer.html":[6,0,0,3], +"namespacepenify__hook_1_1config__command.html":[6,0,0,4], +"namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde":[6,0,0,4,0], +"namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e":[6,0,0,4,1], +"namespacepenify__hook_1_1constants.html":[6,0,0,5], +"namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0":[6,0,0,5,1], +"namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0":[6,0,0,5,0], +"namespacepenify__hook_1_1file__analyzer.html":[6,0,0,6], +"namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828":[6,0,0,6,1], +"namespacepenify__hook_1_1folder__analyzer.html":[6,0,0,7], +"namespacepenify__hook_1_1git__analyzer.html":[6,0,0,8], +"namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a":[6,0,0,8,1], +"namespacepenify__hook_1_1jira__client.html":[6,0,0,9], +"namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2":[6,0,0,9,1], +"namespacepenify__hook_1_1llm__client.html":[6,0,0,10], +"namespacepenify__hook_1_1login__command.html":[6,0,0,11], +"namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a":[6,0,0,11,1], +"namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd":[6,0,0,11,0], +"namespacepenify__hook_1_1main.html":[6,0,0,12], +"namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f":[6,0,0,12,0], +"namespacepenify__hook_1_1ui__utils.html":[6,0,0,13], +"namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2":[6,0,0,13,7], +"namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c":[6,0,0,13,0], +"namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff":[6,0,0,13,24], +"namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa":[6,0,0,13,13], +"namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4":[6,0,0,13,22], +"namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a":[6,0,0,13,12], +"namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756":[6,0,0,13,21], +"namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e":[6,0,0,13,23], +"namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef":[6,0,0,13,1], +"namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe":[6,0,0,13,16], +"namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e":[6,0,0,13,2], +"namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776":[6,0,0,13,6], +"namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d":[6,0,0,13,14], +"namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16":[6,0,0,13,25], +"namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f":[6,0,0,13,8], +"namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44":[6,0,0,13,9], +"namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6":[6,0,0,13,5], +"namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c":[6,0,0,13,19], +"namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0":[6,0,0,13,17], +"namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c":[6,0,0,13,11], +"namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71":[6,0,0,13,15], +"namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc":[6,0,0,13,18], +"namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5":[6,0,0,13,20], +"namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452":[6,0,0,13,4], +"namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115":[6,0,0,13,10], +"namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4":[6,0,0,13,3], +"namespacepenify__hook_1_1utils.html":[6,0,0,14], +"namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01":[6,0,0,14,4], +"namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2":[6,0,0,14,1], +"namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f":[6,0,0,14,3], +"namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3":[6,0,0,14,2], +"namespaces.html":[6,0], +"namespacesetup.html":[6,0,1], +"namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c":[6,0,1,12], +"namespacesetup.html#a3796ea10c998699d07d391414ff5d720":[6,0,1,7], +"namespacesetup.html#a3a57a4772d418a06835249cbade0d86a":[6,0,1,0], +"namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde":[6,0,1,6], +"namespacesetup.html#a5b08034343aa2be607722a8b315f3625":[6,0,1,1], +"namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf":[6,0,1,10], +"namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f":[6,0,1,8], +"namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785":[6,0,1,2] +}; diff --git a/docs/html/navtreeindex2.js b/docs/html/navtreeindex2.js new file mode 100644 index 0000000..8e18872 --- /dev/null +++ b/docs/html/navtreeindex2.js @@ -0,0 +1,90 @@ +var NAVTREEINDEX2 = +{ +"namespacesetup.html#abead4f26b530856f858f0d44c7cf2588":[6,0,1,5], +"namespacesetup.html#ada7058afc98897f073d3f3b8b9157059":[6,0,1,4], +"namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0":[6,0,1,3], +"namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb":[6,0,1,11], +"namespacesetup.html#aff2375a361fd5865c77bd9aa093be747":[6,0,1,9], +"namespacetests.html":[6,0,2], +"namespacetests_1_1conftest.html":[6,0,2,0], +"namespacetests_1_1test__commit__commands.html":[6,0,2,1], +"namespacetests_1_1test__config__commands.html":[6,0,2,2], +"namespacetests_1_1test__doc__commands.html":[6,0,2,3], +"namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45":[6,0,2,3,1], +"namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7":[6,0,2,3,10], +"namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482":[6,0,2,3,9], +"namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0":[6,0,2,3,4], +"namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186":[6,0,2,3,2], +"namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3":[6,0,2,3,5], +"namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8":[6,0,2,3,3], +"namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a":[6,0,2,3,6], +"namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05":[6,0,2,3,7], +"namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0":[6,0,2,3,0], +"namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c":[6,0,2,3,8], +"namespacetests_1_1test__web__config.html":[6,0,2,4], +"pages.html":[], +"penify__hook_2____init_____8py.html":[8,0,0,1,1], +"penify__hook_2commands_2____init_____8py.html":[8,0,0,1,0,0], +"setup_8py.html":[8,0,0,3], +"setup_8py.html#a2aa722b36a933088812b50ea79b97a5c":[8,0,0,3,12], +"setup_8py.html#a3796ea10c998699d07d391414ff5d720":[8,0,0,3,7], +"setup_8py.html#a3a57a4772d418a06835249cbade0d86a":[8,0,0,3,0], +"setup_8py.html#a4cda9dbfb952875376a0749fe08a5bde":[8,0,0,3,6], +"setup_8py.html#a5b08034343aa2be607722a8b315f3625":[8,0,0,3,1], +"setup_8py.html#aa7ca7bc9391b217e81efeb03689d8dbf":[8,0,0,3,10], +"setup_8py.html#ab3a7a0638d76a01367c5bc3cc699447f":[8,0,0,3,8], +"setup_8py.html#abe96a9c38c1c61f9f0fdb002c482f785":[8,0,0,3,2], +"setup_8py.html#abead4f26b530856f858f0d44c7cf2588":[8,0,0,3,5], +"setup_8py.html#ada7058afc98897f073d3f3b8b9157059":[8,0,0,3,4], +"setup_8py.html#aedf461ec52a946bda975938ba0b93ec0":[8,0,0,3,3], +"setup_8py.html#afc13124aa5c0124e84e1d965e3f4b0fb":[8,0,0,3,11], +"setup_8py.html#aff2375a361fd5865c77bd9aa093be747":[8,0,0,3,9], +"test__commit__commands_8py.html":[8,0,0,2,2], +"test__config__commands_8py.html":[8,0,0,2,3], +"test__doc__commands_8py.html":[8,0,0,2,4], +"test__doc__commands_8py.html#a0e74c920f258f442914771164fe26b45":[8,0,0,2,4,1], +"test__doc__commands_8py.html#a0f27751d0ba2acfe40ef7e85bccf47d7":[8,0,0,2,4,10], +"test__doc__commands_8py.html#a1458af9ad0128c3ca1263b552fd5e482":[8,0,0,2,4,9], +"test__doc__commands_8py.html#a335e7fd4912192c7276cf31bbebc6eb0":[8,0,0,2,4,4], +"test__doc__commands_8py.html#a4bb75610e40d94d42bc169b25403c186":[8,0,0,2,4,2], +"test__doc__commands_8py.html#a64165ddfdb3071a88422f080f0e529a3":[8,0,0,2,4,5], +"test__doc__commands_8py.html#a806110833eb0aad547156faf014b31d8":[8,0,0,2,4,3], +"test__doc__commands_8py.html#ab158ffa48469b6c097a7a55fcb20c21a":[8,0,0,2,4,6], +"test__doc__commands_8py.html#ab74688baa8c9b5ba302c2877a9789d05":[8,0,0,2,4,7], +"test__doc__commands_8py.html#aec76cc25c23476794234cdadbcaef0c0":[8,0,0,2,4,0], +"test__doc__commands_8py.html#af9b01e5fc89255cac96747fa081c442c":[8,0,0,2,4,8], +"test__web__config_8py.html":[8,0,0,2,5], +"tests_2____init_____8py.html":[8,0,0,2,0], +"ui__utils_8py.html":[8,0,0,1,14], +"ui__utils_8py.html#a0a6fd2613c6fe053b6e4356cd9e5cda2":[8,0,0,1,14,7], +"ui__utils_8py.html#a12b92532b1458af94f3649d411b5505c":[8,0,0,1,14,0], +"ui__utils_8py.html#a177bc9b44157844c999e0c1c2c6936ff":[8,0,0,1,14,24], +"ui__utils_8py.html#a1ffbb9671dbe233770268e2dd66a67fa":[8,0,0,1,14,13], +"ui__utils_8py.html#a22c450c5e2b5394618ecf9b636560df4":[8,0,0,1,14,22], +"ui__utils_8py.html#a2b16aa6b68a9edea5f29f84f1c4be79a":[8,0,0,1,14,12], +"ui__utils_8py.html#a3b208e2750a38dd09467a73e4afd9756":[8,0,0,1,14,21], +"ui__utils_8py.html#a3c6fe4bd17c1a5fe76587225ae4beb3e":[8,0,0,1,14,23], +"ui__utils_8py.html#a3da02cd1140179a9ce60f62c85fccfef":[8,0,0,1,14,1], +"ui__utils_8py.html#a4ab4e61dfab7973c87bef59c6e1977fe":[8,0,0,1,14,16], +"ui__utils_8py.html#a4dd934568897433fa73f9cc182ac4a3e":[8,0,0,1,14,2], +"ui__utils_8py.html#a532cdb4de7c679ce8b29c3e9116c4776":[8,0,0,1,14,6], +"ui__utils_8py.html#a5a7340d0fc60fb80f17514d60bf45f1d":[8,0,0,1,14,14], +"ui__utils_8py.html#a6eaea98f1a8cbe16a181647da2fc0a16":[8,0,0,1,14,25], +"ui__utils_8py.html#a6f0acd7dd91abfe67d0807803bc3b65f":[8,0,0,1,14,8], +"ui__utils_8py.html#a811f0adf6e9bf71510c379b6fa155e44":[8,0,0,1,14,9], +"ui__utils_8py.html#a92c3e466d1912058167be2eacf85b9f6":[8,0,0,1,14,5], +"ui__utils_8py.html#a9fdcb180915696f5d217032a62c3857c":[8,0,0,1,14,19], +"ui__utils_8py.html#aa564e1e1d016c8227d076542e74cecb0":[8,0,0,1,14,17], +"ui__utils_8py.html#aa6e684c00e26199440137a87ed9b195c":[8,0,0,1,14,11], +"ui__utils_8py.html#ab560cfade398ac1e0bd47befb52d9f71":[8,0,0,1,14,15], +"ui__utils_8py.html#aba01b8259f0d66cdc2b4a1b58f9736fc":[8,0,0,1,14,18], +"ui__utils_8py.html#aca0fcee81606857497520ae4290bc9f5":[8,0,0,1,14,20], +"ui__utils_8py.html#adcb97fc26b405d2b9cdf5eb7aecc5452":[8,0,0,1,14,4], +"ui__utils_8py.html#adfcbbfe39029ab6d1dd33e7bf75ae115":[8,0,0,1,14,10], +"ui__utils_8py.html#af3441fb3c2c3850b8b3b6455a9fdaba4":[8,0,0,1,14,3], +"utils_8py.html":[8,0,0,1,15], +"utils_8py.html#a0c0c1ed6b197038085c94a90ceedfb01":[8,0,0,1,15,4], +"utils_8py.html#a4ec5335a4026c22a34a3a8ccf665a5f2":[8,0,0,1,15,1], +"utils_8py.html#a95c3f9c80860d6a2e2d061d2fb660a3f":[8,0,0,1,15,3], +"utils_8py.html#ae236f3c4c8bf5dcddbb92b4c2065eea3":[8,0,0,1,15,2] +}; diff --git a/docs/html/open.png b/docs/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + + + + + + + + + + + + +penify-cli: Related Pages + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    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..c9fda3f --- /dev/null +++ b/docs/html/penify-cli-documentation_8md.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/penify-cli-documentation.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    /tmp/github_reposRepoArchDocGenContext/Penify-dev/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..c8a1d23 --- /dev/null +++ b/docs/html/penify__hook_2____init_____8py.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    __init__.py File Reference
    +
    +
    +
    +
    + + + + + 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..0e2e60d --- /dev/null +++ b/docs/html/penify__hook_2commands_2____init_____8py.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    __init__.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

    namespace  penify_hook
     
    namespace  penify_hook.commands
     
    +
    +
    + + + + + diff --git a/docs/html/resize.js b/docs/html/resize.js new file mode 100644 index 0000000..7fe30d1 --- /dev/null +++ b/docs/html/resize.js @@ -0,0 +1,150 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height(); + var contentHeight,navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/docs/html/search/all_0.html b/docs/html/search/all_0.html new file mode 100644 index 0000000..bb9e364 --- /dev/null +++ b/docs/html/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js new file mode 100644 index 0000000..66bb827 --- /dev/null +++ b/docs/html/search/all_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_0',['__init__',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086',1,'penify_hook.api_client.APIClient.__init__()'],['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344',1,'penify_hook.base_analyzer.BaseAnalyzer.__init__()'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e',1,'penify_hook.commit_analyzer.CommitDocGenHook.__init__()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c',1,'penify_hook.git_analyzer.GitDocGenHook.__init__()'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5',1,'penify_hook.jira_client.JiraClient.__init__()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764',1,'penify_hook.llm_client.LLMClient.__init__()']]], + ['_5f_5finit_5f_5f_2epy_1',['__init__.py',['../penify__hook_2____init_____8py.html',1,'(Global Namespace)'],['../penify__hook_2commands_2____init_____8py.html',1,'(Global Namespace)'],['../tests_2____init_____8py.html',1,'(Global Namespace)']]], + ['_5famend_5fcommit_2',['_amend_commit',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['_5flitellm_3',['_litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/all_1.html b/docs/html/search/all_1.html new file mode 100644 index 0000000..8989416 --- /dev/null +++ b/docs/html/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js new file mode 100644 index 0000000..b6a2dbe --- /dev/null +++ b/docs/html/search/all_1.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['add_5fcomment_0',['add_comment',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1',1,'penify_hook::jira_client::JiraClient']]], + ['api_5fclient_1',['api_client',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['api_5fclient_2epy_2',['api_client.py',['../api__client_8py.html',1,'']]], + ['api_5furl_3',['api_url',['../classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872',1,'penify_hook::api_client::APIClient']]], + ['api_5furl_4',['API_URL',['../namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0',1,'penify_hook::constants']]], + ['apiclient_5',['APIClient',['../classpenify__hook_1_1api__client_1_1APIClient.html',1,'penify_hook::api_client']]], + ['auth_5fcommands_2epy_6',['auth_commands.py',['../auth__commands_8py.html',1,'']]], + ['auth_5ftoken_7',['AUTH_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237',1,'penify_hook::api_client::APIClient']]], + ['author_8',['author',['../namespacesetup.html#a3a57a4772d418a06835249cbade0d86a',1,'setup']]], + ['author_5femail_9',['author_email',['../namespacesetup.html#a5b08034343aa2be607722a8b315f3625',1,'setup']]], + ['autoreset_10',['autoreset',['../namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_10.html b/docs/html/search/all_10.html new file mode 100644 index 0000000..a7c1f9c --- /dev/null +++ b/docs/html/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_10.js b/docs/html/search/all_10.js new file mode 100644 index 0000000..7fb377d --- /dev/null +++ b/docs/html/search/all_10.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['save_5fcredentials_0',['save_credentials',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24',1,'penify_hook::commands::auth_commands']]], + ['save_5fjira_5fconfig_1',['save_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4',1,'penify_hook::commands::config_commands']]], + ['save_5fllm_5fconfig_2',['save_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4',1,'penify_hook::commands::config_commands']]], + ['send_5ffile_5ffor_5fdocstring_5fgeneration_3',['send_file_for_docstring_generation',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3',1,'penify_hook::api_client::APIClient']]], + ['setup_4',['setup',['../namespacesetup.html',1,'']]], + ['setup_2epy_5',['setup.py',['../setup_8py.html',1,'']]], + ['setup_5fcommit_5fparser_6',['setup_commit_parser',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c',1,'penify_hook::commands::commit_commands']]], + ['setup_5fconfig_5fparser_7',['setup_config_parser',['../namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e',1,'penify_hook::config_command']]], + ['setup_5fdocgen_5fparser_8',['setup_docgen_parser',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0',1,'penify_hook::commands::doc_commands']]], + ['setup_5flogin_5fparser_9',['setup_login_parser',['../namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a',1,'penify_hook::login_command']]], + ['success_5fcolor_10',['SUCCESS_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4',1,'penify_hook::ui_utils']]], + ['success_5fsymbol_11',['SUCCESS_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e',1,'penify_hook::ui_utils']]], + ['supported_5ffile_5ftypes_12',['supported_file_types',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/search/all_11.html b/docs/html/search/all_11.html new file mode 100644 index 0000000..8f86146 --- /dev/null +++ b/docs/html/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js new file mode 100644 index 0000000..45646f7 --- /dev/null +++ b/docs/html/search/all_11.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['conftest_0',['conftest',['../namespacetests_1_1conftest.html',1,'tests']]], + ['test_5fcommit_5fcode_5ferror_5fhandling_1',['test_commit_code_error_handling',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fclient_2',['test_commit_code_with_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fconnection_5ffailure_3',['test_commit_code_with_jira_connection_failure',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fllm_5fclient_4',['test_commit_code_with_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcommands_5',['test_commit_commands',['../namespacetests_1_1test__commit__commands.html',1,'tests']]], + ['test_5fcommit_5fcommands_2epy_6',['test_commit_commands.py',['../test__commit__commands_8py.html',1,'']]], + ['test_5fconfig_5fcommands_7',['test_config_commands',['../namespacetests_1_1test__config__commands.html',1,'tests']]], + ['test_5fconfig_5fcommands_2epy_8',['test_config_commands.py',['../test__config__commands_8py.html',1,'']]], + ['test_5fconfig_5fjira_5fweb_5fserver_5fsetup_9',['test_config_jira_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fconfig_5fllm_5fweb_5fserver_5fsetup_10',['test_config_llm_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fdoc_5fcommands_11',['test_doc_commands',['../namespacetests_1_1test__doc__commands.html',1,'tests']]], + ['test_5fdoc_5fcommands_2epy_12',['test_doc_commands.py',['../test__doc__commands_8py.html',1,'']]], + ['test_5fgenerate_5fdoc_5ferror_5fhandling_13',['test_generate_doc_error_handling',['../namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffile_5flocation_14',['test_generate_doc_file_location',['../namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffolder_5flocation_15',['test_generate_doc_folder_location',['../namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fno_5flocation_16',['test_generate_doc_no_location',['../namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffile_5fexception_17',['test_generate_doc_with_file_exception',['../namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffolder_5fexception_18',['test_generate_doc_with_folder_exception',['../namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3',1,'tests::test_doc_commands']]], + ['test_5fget_5fjira_5fconfig_5fexists_19',['test_get_jira_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fempty_20',['test_get_llm_config_empty',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fexists_21',['test_get_llm_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5finvalid_5fjson_22',['test_get_llm_config_invalid_json',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fexisting_5fdir_23',['test_get_penify_config_existing_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fnew_5fdir_24',['test_get_penify_config_new_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fconfig_25',['test_get_token_from_config',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fenv_26',['test_get_token_from_env',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5fnot_5ffound_27',['test_get_token_not_found',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fhandle_5fcommit_28',['test_handle_commit',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fhandle_5fdocgen_5fgenerate_29',['test_handle_docgen_generate',['../namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5finstall_5fhook_30',['test_handle_docgen_install_hook',['../namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5fno_5ftoken_31',['test_handle_docgen_no_token',['../namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5funinstall_5fhook_32',['test_handle_docgen_uninstall_hook',['../namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482',1,'tests::test_doc_commands']]], + ['test_5fsave_5fjira_5fconfig_5fsuccess_33',['test_save_jira_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5ffailure_34',['test_save_llm_config_failure',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5fsuccess_35',['test_save_llm_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsetup_5fcommit_5fparser_36',['test_setup_commit_parser',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fsetup_5fdocgen_5fparser_37',['test_setup_docgen_parser',['../namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7',1,'tests::test_doc_commands']]], + ['test_5fweb_5fconfig_38',['test_web_config',['../namespacetests_1_1test__web__config.html',1,'tests']]], + ['test_5fweb_5fconfig_2epy_39',['test_web_config.py',['../test__web__config_8py.html',1,'']]], + ['testcommitcommands_40',['TestCommitCommands',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html',1,'tests::test_commit_commands']]], + ['testconfigcommands_41',['TestConfigCommands',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html',1,'tests::test_config_commands']]], + ['tests_42',['tests',['../namespacetests.html',1,'']]], + ['testwebconfig_43',['TestWebConfig',['../classtests_1_1test__web__config_1_1TestWebConfig.html',1,'tests::test_web_config']]] +]; diff --git a/docs/html/search/all_12.html b/docs/html/search/all_12.html new file mode 100644 index 0000000..90b128f --- /dev/null +++ b/docs/html/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_12.js b/docs/html/search/all_12.js new file mode 100644 index 0000000..0d33c8a --- /dev/null +++ b/docs/html/search/all_12.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['ui_5futils_2epy_0',['ui_utils.py',['../ui__utils_8py.html',1,'']]], + ['uninstall_5fgit_5fhook_1',['uninstall_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d',1,'penify_hook::commands::hook_commands']]], + ['update_5fissue_5fstatus_2',['update_issue_status',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826',1,'penify_hook::jira_client::JiraClient']]], + ['update_5fstage_3',['update_stage',['../namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d',1,'penify_hook::ui_utils']]], + ['url_4',['url',['../namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb',1,'setup']]], + ['utils_2epy_5',['utils.py',['../utils_8py.html',1,'']]] +]; diff --git a/docs/html/search/all_13.html b/docs/html/search/all_13.html new file mode 100644 index 0000000..272d129 --- /dev/null +++ b/docs/html/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_13.js b/docs/html/search/all_13.js new file mode 100644 index 0000000..d9621d9 --- /dev/null +++ b/docs/html/search/all_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version_0',['version',['../namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c',1,'setup']]] +]; diff --git a/docs/html/search/all_14.html b/docs/html/search/all_14.html new file mode 100644 index 0000000..291e0d9 --- /dev/null +++ b/docs/html/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_14.js b/docs/html/search/all_14.js new file mode 100644 index 0000000..10d696f --- /dev/null +++ b/docs/html/search/all_14.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['warning_5fcolor_0',['WARNING_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff',1,'penify_hook::ui_utils']]], + ['warning_5fsymbol_1',['WARNING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_2.html b/docs/html/search/all_2.html new file mode 100644 index 0000000..98e648c --- /dev/null +++ b/docs/html/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js new file mode 100644 index 0000000..56f2add --- /dev/null +++ b/docs/html/search/all_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['base_5fanalyzer_2epy_0',['base_analyzer.py',['../base__analyzer_8py.html',1,'']]], + ['baseanalyzer_1',['BaseAnalyzer',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html',1,'penify_hook::base_analyzer']]], + ['bearer_5ftoken_2',['BEARER_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0',1,'penify_hook::api_client::APIClient']]] +]; diff --git a/docs/html/search/all_3.html b/docs/html/search/all_3.html new file mode 100644 index 0000000..f4e8da7 --- /dev/null +++ b/docs/html/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js new file mode 100644 index 0000000..45ec4ff --- /dev/null +++ b/docs/html/search/all_3.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['classifiers_0',['classifiers',['../namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785',1,'setup']]], + ['commit_2dcommands_2emd_1',['commit-commands.md',['../commit-commands_8md.html',1,'']]], + ['commit_5fanalyzer_2epy_2',['commit_analyzer.py',['../commit__analyzer_8py.html',1,'']]], + ['commit_5fcode_3',['commit_code',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a',1,'penify_hook::commands::commit_commands']]], + ['commit_5fcommands_2epy_4',['commit_commands.py',['../commit__commands_8py.html',1,'']]], + ['commitdocgenhook_5',['CommitDocGenHook',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook::commit_analyzer']]], + ['config_2dcommands_2emd_6',['config-commands.md',['../config-commands_8md.html',1,'']]], + ['config_5fcommand_2epy_7',['config_command.py',['../config__command_8py.html',1,'']]], + ['config_5fcommands_2epy_8',['config_commands.py',['../config__commands_8py.html',1,'']]], + ['config_5fjira_5fweb_9',['config_jira_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06',1,'penify_hook::commands::config_commands']]], + ['config_5fllm_5fweb_10',['config_llm_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c',1,'penify_hook::commands::config_commands']]], + ['conftest_2epy_11',['conftest.py',['../conftest_8py.html',1,'']]], + ['constants_2epy_12',['constants.py',['../constants_8py.html',1,'']]], + ['create_5fprogress_5fbar_13',['create_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c',1,'penify_hook::ui_utils']]], + ['create_5fstage_5fprogress_5fbar_14',['create_stage_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_4.html b/docs/html/search/all_4.html new file mode 100644 index 0000000..678d3a2 --- /dev/null +++ b/docs/html/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js new file mode 100644 index 0000000..ccfe815 --- /dev/null +++ b/docs/html/search/all_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['dashboard_5furl_0',['DASHBOARD_URL',['../namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0',1,'penify_hook::constants']]], + ['description_1',['description',['../namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0',1,'setup']]], + ['detailed_2dusage_2emd_2',['detailed-usage.md',['../detailed-usage_8md.html',1,'']]], + ['dir_5fpath_3',['dir_path',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['doc_5fcommands_2emd_4',['doc_commands.md',['../doc__commands_8md.html',1,'']]], + ['doc_5fcommands_2epy_5',['doc_commands.py',['../doc__commands_8py.html',1,'']]], + ['docgen_5fdescription_6',['docgen_description',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948',1,'penify_hook::commands::doc_commands']]], + ['dotenv_5favailable_7',['DOTENV_AVAILABLE',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/all_5.html b/docs/html/search/all_5.html new file mode 100644 index 0000000..aa9af78 --- /dev/null +++ b/docs/html/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js new file mode 100644 index 0000000..89b0ea5 --- /dev/null +++ b/docs/html/search/all_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['enhance_5fcommit_5fmessage_0',['enhance_commit_message',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760',1,'penify_hook::jira_client::JiraClient']]], + ['entry_5fpoints_1',['entry_points',['../namespacesetup.html#ada7058afc98897f073d3f3b8b9157059',1,'setup']]], + ['error_5fcolor_2',['ERROR_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe',1,'penify_hook::ui_utils']]], + ['error_5fsymbol_3',['ERROR_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0',1,'penify_hook::ui_utils']]], + ['example_2dworkflows_2emd_4',['example-workflows.md',['../example-workflows_8md.html',1,'']]], + ['exception_5',['Exception',['../classException.html',1,'']]], + ['extract_5fissue_5fkeys_6',['extract_issue_keys',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_5ffrom_5fbranch_7',['extract_issue_keys_from_branch',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/all_6.html b/docs/html/search/all_6.html new file mode 100644 index 0000000..d3026a7 --- /dev/null +++ b/docs/html/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js new file mode 100644 index 0000000..9da4602 --- /dev/null +++ b/docs/html/search/all_6.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['file_5fanalyzer_2epy_0',['file_analyzer.py',['../file__analyzer_8py.html',1,'']]], + ['file_5fpath_1',['file_path',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32',1,'penify_hook::file_analyzer::FileAnalyzerGenHook']]], + ['fileanalyzergenhook_2',['FileAnalyzerGenHook',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html',1,'penify_hook::file_analyzer']]], + ['find_5fgit_5fparent_3',['find_git_parent',['../namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2',1,'penify_hook::utils']]], + ['folder_5fanalyzer_2epy_4',['folder_analyzer.py',['../folder__analyzer_8py.html',1,'']]], + ['folder_5fpath_5',['folder_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['folderanalyzergenhook_6',['FolderAnalyzerGenHook',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html',1,'penify_hook::folder_analyzer']]], + ['format_5fcommit_5fmessage_5fwith_5fjira_5finfo_7',['format_commit_message_with_jira_info',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23',1,'penify_hook::jira_client::JiraClient']]], + ['format_5ferror_8',['format_error',['../namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e',1,'penify_hook::ui_utils']]], + ['format_5ffile_5fpath_9',['format_file_path',['../namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4',1,'penify_hook::ui_utils']]], + ['format_5fhighlight_10',['format_highlight',['../namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452',1,'penify_hook::ui_utils']]], + ['format_5finfo_11',['format_info',['../namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6',1,'penify_hook::ui_utils']]], + ['format_5fsuccess_12',['format_success',['../namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776',1,'penify_hook::ui_utils']]], + ['format_5fwarning_13',['format_warning',['../namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_7.html b/docs/html/search/all_7.html new file mode 100644 index 0000000..b2ee042 --- /dev/null +++ b/docs/html/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js new file mode 100644 index 0000000..d5e7346 --- /dev/null +++ b/docs/html/search/all_7.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['generate_5fcommit_5fsummary_0',['generate_commit_summary',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce',1,'penify_hook.api_client.APIClient.generate_commit_summary()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000',1,'penify_hook.llm_client.LLMClient.generate_commit_summary()']]], + ['generate_5fcommit_5fsummary_5fwith_5fllm_1',['generate_commit_summary_with_llm',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3',1,'penify_hook::api_client::APIClient']]], + ['generate_5fdoc_2',['generate_doc',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25',1,'penify_hook::commands::doc_commands']]], + ['get_5fapi_5fkey_3',['get_api_key',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99',1,'penify_hook::api_client::APIClient']]], + ['get_5fcommit_5fcontext_5ffrom_5fissues_4',['get_commit_context_from_issues',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fdetailed_5fissue_5fcontext_5',['get_detailed_issue_context',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fenv_5fvar_5for_5fdefault_6',['get_env_var_or_default',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87',1,'penify_hook::commands::config_commands']]], + ['get_5fissue_5fdetails_7',['get_issue_details',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fjira_5fconfig_8',['get_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2',1,'penify_hook::commands::config_commands']]], + ['get_5fllm_5fconfig_9',['get_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0',1,'penify_hook::commands::config_commands']]], + ['get_5fmodified_5ffiles_5fin_5flast_5fcommit_10',['get_modified_files_in_last_commit',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fmodified_5flines_11',['get_modified_lines',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fpenify_5fconfig_12',['get_penify_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20',1,'penify_hook::commands::config_commands']]], + ['get_5frepo_5fdetails_13',['get_repo_details',['../namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3',1,'penify_hook::utils']]], + ['get_5fsummary_14',['get_summary',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['get_5fsupported_5ffile_5ftypes_15',['get_supported_file_types',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402',1,'penify_hook::api_client::APIClient']]], + ['get_5ftoken_16',['get_token',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812',1,'penify_hook::commands::config_commands']]], + ['git_5fanalyzer_2epy_17',['git_analyzer.py',['../git__analyzer_8py.html',1,'']]], + ['gitdocgenhook_18',['GitDocGenHook',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html',1,'penify_hook::git_analyzer']]], + ['gitreponotfounderror_19',['GitRepoNotFoundError',['../classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html',1,'penify_hook::utils']]] +]; diff --git a/docs/html/search/all_8.html b/docs/html/search/all_8.html new file mode 100644 index 0000000..40a0b3f --- /dev/null +++ b/docs/html/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js new file mode 100644 index 0000000..b83bbc6 --- /dev/null +++ b/docs/html/search/all_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['handle_5fcommit_0',['handle_commit',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23',1,'penify_hook::commands::commit_commands']]], + ['handle_5fconfig_1',['handle_config',['../namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde',1,'penify_hook::config_command']]], + ['handle_5fdocgen_2',['handle_docgen',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704',1,'penify_hook::commands::doc_commands']]], + ['handle_5flogin_3',['handle_login',['../namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd',1,'penify_hook::login_command']]], + ['highlight_5fcolor_4',['HIGHLIGHT_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc',1,'penify_hook::ui_utils']]], + ['hook_5fcommands_2epy_5',['hook_commands.py',['../hook__commands_8py.html',1,'']]], + ['hook_5ffilename_6',['HOOK_FILENAME',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1',1,'penify_hook::commands::hook_commands']]], + ['hook_5ftemplate_7',['HOOK_TEMPLATE',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7',1,'penify_hook::commands::hook_commands']]] +]; diff --git a/docs/html/search/all_9.html b/docs/html/search/all_9.html new file mode 100644 index 0000000..7c49144 --- /dev/null +++ b/docs/html/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_9.js b/docs/html/search/all_9.js new file mode 100644 index 0000000..bf0f94f --- /dev/null +++ b/docs/html/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['info_5fcolor_0',['INFO_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c',1,'penify_hook::ui_utils']]], + ['install_5fgit_5fhook_1',['install_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2',1,'penify_hook::commands::hook_commands']]], + ['install_5frequires_2',['install_requires',['../namespacesetup.html#abead4f26b530856f858f0d44c7cf2588',1,'setup']]], + ['is_5fconnected_3',['is_connected',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/all_a.html b/docs/html/search/all_a.html new file mode 100644 index 0000000..fc9d79c --- /dev/null +++ b/docs/html/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_a.js b/docs/html/search/all_a.js new file mode 100644 index 0000000..cb87635 --- /dev/null +++ b/docs/html/search/all_a.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['jira_5fapi_5ftoken_0',['jira_api_token',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5favailable_1',['JIRA_AVAILABLE',['../namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2',1,'penify_hook::jira_client']]], + ['jira_5fclient_2',['jira_client',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fclient_2epy_3',['jira_client.py',['../jira__client_8py.html',1,'']]], + ['jira_5furl_4',['jira_url',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fuser_5',['jira_user',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c',1,'penify_hook::jira_client::JiraClient']]], + ['jiraclient_6',['JiraClient',['../classpenify__hook_1_1jira__client_1_1JiraClient.html',1,'penify_hook::jira_client']]] +]; diff --git a/docs/html/search/all_b.html b/docs/html/search/all_b.html new file mode 100644 index 0000000..dafb1fa --- /dev/null +++ b/docs/html/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js new file mode 100644 index 0000000..2024217 --- /dev/null +++ b/docs/html/search/all_b.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['list_5fall_5ffiles_5fin_5fdir_0',['list_all_files_in_dir',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['litellm_1',['litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e',1,'penify_hook::llm_client::LLMClient']]], + ['llm_5fclient_2',['llm_client',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['llm_5fclient_2epy_3',['llm_client.py',['../llm__client_8py.html',1,'']]], + ['llmclient_4',['LLMClient',['../classpenify__hook_1_1llm__client_1_1LLMClient.html',1,'penify_hook::llm_client']]], + ['load_5fenv_5ffiles_5',['load_env_files',['../namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae',1,'penify_hook::commands::config_commands']]], + ['logger_6',['logger',['../namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828',1,'penify_hook.file_analyzer.logger()'],['../namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a',1,'penify_hook.git_analyzer.logger()'],['../namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01',1,'penify_hook.utils.logger()']]], + ['login_7',['login',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655',1,'penify_hook::commands::auth_commands']]], + ['login_5fcommand_2epy_8',['login_command.py',['../login__command_8py.html',1,'']]], + ['long_5fdescription_9',['long_description',['../namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde',1,'setup']]], + ['long_5fdescription_5fcontent_5ftype_10',['long_description_content_type',['../namespacesetup.html#a3796ea10c998699d07d391414ff5d720',1,'setup']]] +]; diff --git a/docs/html/search/all_c.html b/docs/html/search/all_c.html new file mode 100644 index 0000000..9df619d --- /dev/null +++ b/docs/html/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js new file mode 100644 index 0000000..885d3c4 --- /dev/null +++ b/docs/html/search/all_c.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['main_0',['main',['../namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f',1,'penify_hook::main']]], + ['main_2epy_1',['main.py',['../main_8py.html',1,'']]], + ['mock_5fapi_5fclient_2',['mock_api_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fcommit_5fdoc_5fgen_3',['mock_commit_doc_gen',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fgit_5ffolder_5fsearch_4',['mock_git_folder_search',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fjira_5fclient_5',['mock_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fllm_5fclient_6',['mock_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fprint_5ffunctions_7',['mock_print_functions',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be',1,'tests::test_commit_commands::TestCommitCommands']]], + ['model_8',['model',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/all_d.html b/docs/html/search/all_d.html new file mode 100644 index 0000000..95d8eec --- /dev/null +++ b/docs/html/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js new file mode 100644 index 0000000..eb3ec51 --- /dev/null +++ b/docs/html/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['name_0',['name',['../namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f',1,'setup']]], + ['neutral_5fcolor_1',['NEUTRAL_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_e.html b/docs/html/search/all_e.html new file mode 100644 index 0000000..a54e120 --- /dev/null +++ b/docs/html/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js new file mode 100644 index 0000000..c246db6 --- /dev/null +++ b/docs/html/search/all_e.js @@ -0,0 +1,43 @@ +var searchData= +[ + ['api_5fclient_0',['api_client',['../namespacepenify__hook_1_1api__client.html',1,'penify_hook']]], + ['auth_5fcommands_1',['auth_commands',['../namespacepenify__hook_1_1commands_1_1auth__commands.html',1,'penify_hook::commands']]], + ['base_5fanalyzer_2',['base_analyzer',['../namespacepenify__hook_1_1base__analyzer.html',1,'penify_hook']]], + ['commands_3',['commands',['../namespacepenify__hook_1_1commands.html',1,'penify_hook']]], + ['commit_5fanalyzer_4',['commit_analyzer',['../namespacepenify__hook_1_1commit__analyzer.html',1,'penify_hook']]], + ['commit_5fcommands_5',['commit_commands',['../namespacepenify__hook_1_1commands_1_1commit__commands.html',1,'penify_hook::commands']]], + ['config_5fcommand_6',['config_command',['../namespacepenify__hook_1_1config__command.html',1,'penify_hook']]], + ['config_5fcommands_7',['config_commands',['../namespacepenify__hook_1_1commands_1_1config__commands.html',1,'penify_hook::commands']]], + ['constants_8',['constants',['../namespacepenify__hook_1_1constants.html',1,'penify_hook']]], + ['doc_5fcommands_9',['doc_commands',['../namespacepenify__hook_1_1commands_1_1doc__commands.html',1,'penify_hook::commands']]], + ['file_5fanalyzer_10',['file_analyzer',['../namespacepenify__hook_1_1file__analyzer.html',1,'penify_hook']]], + ['folder_5fanalyzer_11',['folder_analyzer',['../namespacepenify__hook_1_1folder__analyzer.html',1,'penify_hook']]], + ['git_5fanalyzer_12',['git_analyzer',['../namespacepenify__hook_1_1git__analyzer.html',1,'penify_hook']]], + ['hook_5fcommands_13',['hook_commands',['../namespacepenify__hook_1_1commands_1_1hook__commands.html',1,'penify_hook::commands']]], + ['jira_5fclient_14',['jira_client',['../namespacepenify__hook_1_1jira__client.html',1,'penify_hook']]], + ['llm_5fclient_15',['llm_client',['../namespacepenify__hook_1_1llm__client.html',1,'penify_hook']]], + ['login_5fcommand_16',['login_command',['../namespacepenify__hook_1_1login__command.html',1,'penify_hook']]], + ['main_17',['main',['../namespacepenify__hook_1_1main.html',1,'penify_hook']]], + ['packages_18',['packages',['../namespacesetup.html#aff2375a361fd5865c77bd9aa093be747',1,'setup']]], + ['path_19',['path',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880',1,'penify_hook::commands::config_commands']]], + ['penify_20cli_20_2d_20commit_20commands_20',['Penify CLI - Commit Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html',1,'']]], + ['penify_20cli_20_2d_20configuration_20commands_21',['Penify CLI - Configuration Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html',1,'']]], + ['penify_20cli_20_2d_20detailed_20usage_20guide_22',['Penify CLI - Detailed Usage Guide',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html',1,'']]], + ['penify_20cli_20_2d_20documentation_20generation_20commands_23',['Penify CLI - Documentation Generation Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html',1,'']]], + ['penify_20cli_20example_20workflows_24',['Penify CLI Example Workflows',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html',1,'']]], + ['penify_20cli_20tool_25',['Penify CLI Tool',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html',1,'']]], + ['penify_2dcli_2ddocumentation_2emd_26',['penify-cli-documentation.md',['../penify-cli-documentation_8md.html',1,'']]], + ['penify_5fhook_27',['penify_hook',['../namespacepenify__hook.html',1,'']]], + ['print_5ferror_28',['print_error',['../namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f',1,'penify_hook::ui_utils']]], + ['print_5finfo_29',['print_info',['../namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44',1,'penify_hook::ui_utils']]], + ['print_5fprocessing_30',['print_processing',['../namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115',1,'penify_hook.ui_utils.print_processing()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing()']]], + ['print_5fstatus_31',['print_status',['../namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c',1,'penify_hook::ui_utils']]], + ['print_5fsuccess_32',['print_success',['../namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a',1,'penify_hook::ui_utils']]], + ['print_5fwarning_33',['print_warning',['../namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa',1,'penify_hook::ui_utils']]], + ['process_5ffile_34',['process_file',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85',1,'penify_hook.git_analyzer.GitDocGenHook.process_file()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.process_file()']]], + ['process_5fjira_5fintegration_35',['process_jira_integration',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['processing_5fsymbol_36',['PROCESSING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756',1,'penify_hook::ui_utils']]], + ['python_5frequires_37',['python_requires',['../namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf',1,'setup']]], + ['ui_5futils_38',['ui_utils',['../namespacepenify__hook_1_1ui__utils.html',1,'penify_hook']]], + ['utils_39',['utils',['../namespacepenify__hook_1_1utils.html',1,'penify_hook']]] +]; diff --git a/docs/html/search/all_f.html b/docs/html/search/all_f.html new file mode 100644 index 0000000..8d0aed3 --- /dev/null +++ b/docs/html/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_f.js b/docs/html/search/all_f.js new file mode 100644 index 0000000..11f8b78 --- /dev/null +++ b/docs/html/search/all_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]], + ['recursive_5fsearch_5fgit_5ffolder_1',['recursive_search_git_folder',['../namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f',1,'penify_hook::utils']]], + ['relative_5ffile_5fpath_2',['relative_file_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_3',['repo',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fdetails_4',['repo_details',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fpath_5',['repo_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['run_6',['run',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9',1,'penify_hook.commit_analyzer.CommitDocGenHook.run()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.run()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.run()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae',1,'penify_hook.git_analyzer.GitDocGenHook.run()']]] +]; diff --git a/docs/html/search/classes_0.html b/docs/html/search/classes_0.html new file mode 100644 index 0000000..9d4f871 --- /dev/null +++ b/docs/html/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_0.js b/docs/html/search/classes_0.js new file mode 100644 index 0000000..d470783 --- /dev/null +++ b/docs/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['apiclient_0',['APIClient',['../classpenify__hook_1_1api__client_1_1APIClient.html',1,'penify_hook::api_client']]] +]; diff --git a/docs/html/search/classes_1.html b/docs/html/search/classes_1.html new file mode 100644 index 0000000..0557f9f --- /dev/null +++ b/docs/html/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_1.js b/docs/html/search/classes_1.js new file mode 100644 index 0000000..740b36f --- /dev/null +++ b/docs/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['baseanalyzer_0',['BaseAnalyzer',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html',1,'penify_hook::base_analyzer']]] +]; diff --git a/docs/html/search/classes_2.html b/docs/html/search/classes_2.html new file mode 100644 index 0000000..fa20861 --- /dev/null +++ b/docs/html/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_2.js b/docs/html/search/classes_2.js new file mode 100644 index 0000000..8bdd859 --- /dev/null +++ b/docs/html/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['commitdocgenhook_0',['CommitDocGenHook',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook::commit_analyzer']]] +]; diff --git a/docs/html/search/classes_3.html b/docs/html/search/classes_3.html new file mode 100644 index 0000000..98fbc87 --- /dev/null +++ b/docs/html/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_3.js b/docs/html/search/classes_3.js new file mode 100644 index 0000000..0ed9487 --- /dev/null +++ b/docs/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['exception_0',['Exception',['../classException.html',1,'']]] +]; diff --git a/docs/html/search/classes_4.html b/docs/html/search/classes_4.html new file mode 100644 index 0000000..3b6c51e --- /dev/null +++ b/docs/html/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_4.js b/docs/html/search/classes_4.js new file mode 100644 index 0000000..e90ffee --- /dev/null +++ b/docs/html/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fileanalyzergenhook_0',['FileAnalyzerGenHook',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html',1,'penify_hook::file_analyzer']]], + ['folderanalyzergenhook_1',['FolderAnalyzerGenHook',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html',1,'penify_hook::folder_analyzer']]] +]; diff --git a/docs/html/search/classes_5.html b/docs/html/search/classes_5.html new file mode 100644 index 0000000..51c2b30 --- /dev/null +++ b/docs/html/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_5.js b/docs/html/search/classes_5.js new file mode 100644 index 0000000..a6b1740 --- /dev/null +++ b/docs/html/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gitdocgenhook_0',['GitDocGenHook',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html',1,'penify_hook::git_analyzer']]], + ['gitreponotfounderror_1',['GitRepoNotFoundError',['../classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html',1,'penify_hook::utils']]] +]; diff --git a/docs/html/search/classes_6.html b/docs/html/search/classes_6.html new file mode 100644 index 0000000..431fb05 --- /dev/null +++ b/docs/html/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_6.js b/docs/html/search/classes_6.js new file mode 100644 index 0000000..6f010a9 --- /dev/null +++ b/docs/html/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jiraclient_0',['JiraClient',['../classpenify__hook_1_1jira__client_1_1JiraClient.html',1,'penify_hook::jira_client']]] +]; diff --git a/docs/html/search/classes_7.html b/docs/html/search/classes_7.html new file mode 100644 index 0000000..0c76bf5 --- /dev/null +++ b/docs/html/search/classes_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_7.js b/docs/html/search/classes_7.js new file mode 100644 index 0000000..bd37889 --- /dev/null +++ b/docs/html/search/classes_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['llmclient_0',['LLMClient',['../classpenify__hook_1_1llm__client_1_1LLMClient.html',1,'penify_hook::llm_client']]] +]; diff --git a/docs/html/search/classes_8.html b/docs/html/search/classes_8.html new file mode 100644 index 0000000..5a392ee --- /dev/null +++ b/docs/html/search/classes_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_8.js b/docs/html/search/classes_8.js new file mode 100644 index 0000000..ca590a4 --- /dev/null +++ b/docs/html/search/classes_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['testcommitcommands_0',['TestCommitCommands',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html',1,'tests::test_commit_commands']]], + ['testconfigcommands_1',['TestConfigCommands',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html',1,'tests::test_config_commands']]], + ['testwebconfig_2',['TestWebConfig',['../classtests_1_1test__web__config_1_1TestWebConfig.html',1,'tests::test_web_config']]] +]; diff --git a/docs/html/search/close.svg b/docs/html/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/docs/html/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/docs/html/search/files_0.html b/docs/html/search/files_0.html new file mode 100644 index 0000000..2dbb4c2 --- /dev/null +++ b/docs/html/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_0.js b/docs/html/search/files_0.js new file mode 100644 index 0000000..7b3d690 --- /dev/null +++ b/docs/html/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_2epy_0',['__init__.py',['../penify__hook_2____init_____8py.html',1,'(Global Namespace)'],['../penify__hook_2commands_2____init_____8py.html',1,'(Global Namespace)'],['../tests_2____init_____8py.html',1,'(Global Namespace)']]] +]; diff --git a/docs/html/search/files_1.html b/docs/html/search/files_1.html new file mode 100644 index 0000000..18ccd15 --- /dev/null +++ b/docs/html/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_1.js b/docs/html/search/files_1.js new file mode 100644 index 0000000..6d2b14e --- /dev/null +++ b/docs/html/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['api_5fclient_2epy_0',['api_client.py',['../api__client_8py.html',1,'']]], + ['auth_5fcommands_2epy_1',['auth_commands.py',['../auth__commands_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_10.html b/docs/html/search/files_10.html new file mode 100644 index 0000000..c6af52c --- /dev/null +++ b/docs/html/search/files_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_10.js b/docs/html/search/files_10.js new file mode 100644 index 0000000..b759a00 --- /dev/null +++ b/docs/html/search/files_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ui_5futils_2epy_0',['ui_utils.py',['../ui__utils_8py.html',1,'']]], + ['utils_2epy_1',['utils.py',['../utils_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_2.html b/docs/html/search/files_2.html new file mode 100644 index 0000000..a4c2be4 --- /dev/null +++ b/docs/html/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_2.js b/docs/html/search/files_2.js new file mode 100644 index 0000000..ba3909d --- /dev/null +++ b/docs/html/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['base_5fanalyzer_2epy_0',['base_analyzer.py',['../base__analyzer_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_3.html b/docs/html/search/files_3.html new file mode 100644 index 0000000..3ac4cfb --- /dev/null +++ b/docs/html/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_3.js b/docs/html/search/files_3.js new file mode 100644 index 0000000..bb00fd4 --- /dev/null +++ b/docs/html/search/files_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['commit_2dcommands_2emd_0',['commit-commands.md',['../commit-commands_8md.html',1,'']]], + ['commit_5fanalyzer_2epy_1',['commit_analyzer.py',['../commit__analyzer_8py.html',1,'']]], + ['commit_5fcommands_2epy_2',['commit_commands.py',['../commit__commands_8py.html',1,'']]], + ['config_2dcommands_2emd_3',['config-commands.md',['../config-commands_8md.html',1,'']]], + ['config_5fcommand_2epy_4',['config_command.py',['../config__command_8py.html',1,'']]], + ['config_5fcommands_2epy_5',['config_commands.py',['../config__commands_8py.html',1,'']]], + ['conftest_2epy_6',['conftest.py',['../conftest_8py.html',1,'']]], + ['constants_2epy_7',['constants.py',['../constants_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_4.html b/docs/html/search/files_4.html new file mode 100644 index 0000000..eb19ecf --- /dev/null +++ b/docs/html/search/files_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_4.js b/docs/html/search/files_4.js new file mode 100644 index 0000000..e7bf2b2 --- /dev/null +++ b/docs/html/search/files_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['detailed_2dusage_2emd_0',['detailed-usage.md',['../detailed-usage_8md.html',1,'']]], + ['doc_5fcommands_2emd_1',['doc_commands.md',['../doc__commands_8md.html',1,'']]], + ['doc_5fcommands_2epy_2',['doc_commands.py',['../doc__commands_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_5.html b/docs/html/search/files_5.html new file mode 100644 index 0000000..61d86d0 --- /dev/null +++ b/docs/html/search/files_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_5.js b/docs/html/search/files_5.js new file mode 100644 index 0000000..29d814a --- /dev/null +++ b/docs/html/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['example_2dworkflows_2emd_0',['example-workflows.md',['../example-workflows_8md.html',1,'']]] +]; diff --git a/docs/html/search/files_6.html b/docs/html/search/files_6.html new file mode 100644 index 0000000..333517d --- /dev/null +++ b/docs/html/search/files_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_6.js b/docs/html/search/files_6.js new file mode 100644 index 0000000..3d76b9d --- /dev/null +++ b/docs/html/search/files_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_5fanalyzer_2epy_0',['file_analyzer.py',['../file__analyzer_8py.html',1,'']]], + ['folder_5fanalyzer_2epy_1',['folder_analyzer.py',['../folder__analyzer_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_7.html b/docs/html/search/files_7.html new file mode 100644 index 0000000..ad481b0 --- /dev/null +++ b/docs/html/search/files_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_7.js b/docs/html/search/files_7.js new file mode 100644 index 0000000..4c89ef8 --- /dev/null +++ b/docs/html/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['git_5fanalyzer_2epy_0',['git_analyzer.py',['../git__analyzer_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_8.html b/docs/html/search/files_8.html new file mode 100644 index 0000000..2af8404 --- /dev/null +++ b/docs/html/search/files_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_8.js b/docs/html/search/files_8.js new file mode 100644 index 0000000..3d83c4a --- /dev/null +++ b/docs/html/search/files_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hook_5fcommands_2epy_0',['hook_commands.py',['../hook__commands_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_9.html b/docs/html/search/files_9.html new file mode 100644 index 0000000..8d5c07d --- /dev/null +++ b/docs/html/search/files_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_9.js b/docs/html/search/files_9.js new file mode 100644 index 0000000..fcddd7a --- /dev/null +++ b/docs/html/search/files_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jira_5fclient_2epy_0',['jira_client.py',['../jira__client_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_a.html b/docs/html/search/files_a.html new file mode 100644 index 0000000..806a999 --- /dev/null +++ b/docs/html/search/files_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_a.js b/docs/html/search/files_a.js new file mode 100644 index 0000000..876ef0d --- /dev/null +++ b/docs/html/search/files_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['llm_5fclient_2epy_0',['llm_client.py',['../llm__client_8py.html',1,'']]], + ['login_5fcommand_2epy_1',['login_command.py',['../login__command_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_b.html b/docs/html/search/files_b.html new file mode 100644 index 0000000..371cc0f --- /dev/null +++ b/docs/html/search/files_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_b.js b/docs/html/search/files_b.js new file mode 100644 index 0000000..01a0bf7 --- /dev/null +++ b/docs/html/search/files_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_2epy_0',['main.py',['../main_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_c.html b/docs/html/search/files_c.html new file mode 100644 index 0000000..5b93d7f --- /dev/null +++ b/docs/html/search/files_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_c.js b/docs/html/search/files_c.js new file mode 100644 index 0000000..6f265cb --- /dev/null +++ b/docs/html/search/files_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['penify_2dcli_2ddocumentation_2emd_0',['penify-cli-documentation.md',['../penify-cli-documentation_8md.html',1,'']]] +]; diff --git a/docs/html/search/files_d.html b/docs/html/search/files_d.html new file mode 100644 index 0000000..a9b1c64 --- /dev/null +++ b/docs/html/search/files_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_d.js b/docs/html/search/files_d.js new file mode 100644 index 0000000..9847676 --- /dev/null +++ b/docs/html/search/files_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]] +]; diff --git a/docs/html/search/files_e.html b/docs/html/search/files_e.html new file mode 100644 index 0000000..db2d31a --- /dev/null +++ b/docs/html/search/files_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_e.js b/docs/html/search/files_e.js new file mode 100644 index 0000000..d0dfcff --- /dev/null +++ b/docs/html/search/files_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['setup_2epy_0',['setup.py',['../setup_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_f.html b/docs/html/search/files_f.html new file mode 100644 index 0000000..82b198a --- /dev/null +++ b/docs/html/search/files_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_f.js b/docs/html/search/files_f.js new file mode 100644 index 0000000..133fd11 --- /dev/null +++ b/docs/html/search/files_f.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['test_5fcommit_5fcommands_2epy_0',['test_commit_commands.py',['../test__commit__commands_8py.html',1,'']]], + ['test_5fconfig_5fcommands_2epy_1',['test_config_commands.py',['../test__config__commands_8py.html',1,'']]], + ['test_5fdoc_5fcommands_2epy_2',['test_doc_commands.py',['../test__doc__commands_8py.html',1,'']]], + ['test_5fweb_5fconfig_2epy_3',['test_web_config.py',['../test__web__config_8py.html',1,'']]] +]; diff --git a/docs/html/search/functions_0.html b/docs/html/search/functions_0.html new file mode 100644 index 0000000..3b739c7 --- /dev/null +++ b/docs/html/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js new file mode 100644 index 0000000..8362237 --- /dev/null +++ b/docs/html/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_0',['__init__',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086',1,'penify_hook.api_client.APIClient.__init__()'],['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344',1,'penify_hook.base_analyzer.BaseAnalyzer.__init__()'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e',1,'penify_hook.commit_analyzer.CommitDocGenHook.__init__()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c',1,'penify_hook.git_analyzer.GitDocGenHook.__init__()'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5',1,'penify_hook.jira_client.JiraClient.__init__()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764',1,'penify_hook.llm_client.LLMClient.__init__()']]], + ['_5famend_5fcommit_1',['_amend_commit',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca',1,'penify_hook::commit_analyzer::CommitDocGenHook']]] +]; diff --git a/docs/html/search/functions_1.html b/docs/html/search/functions_1.html new file mode 100644 index 0000000..2cef5e3 --- /dev/null +++ b/docs/html/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_1.js b/docs/html/search/functions_1.js new file mode 100644 index 0000000..6c71456 --- /dev/null +++ b/docs/html/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['add_5fcomment_0',['add_comment',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/functions_2.html b/docs/html/search/functions_2.html new file mode 100644 index 0000000..3308c65 --- /dev/null +++ b/docs/html/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_2.js b/docs/html/search/functions_2.js new file mode 100644 index 0000000..9ea0560 --- /dev/null +++ b/docs/html/search/functions_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['commit_5fcode_0',['commit_code',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a',1,'penify_hook::commands::commit_commands']]], + ['config_5fjira_5fweb_1',['config_jira_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06',1,'penify_hook::commands::config_commands']]], + ['config_5fllm_5fweb_2',['config_llm_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c',1,'penify_hook::commands::config_commands']]], + ['create_5fprogress_5fbar_3',['create_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c',1,'penify_hook::ui_utils']]], + ['create_5fstage_5fprogress_5fbar_4',['create_stage_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/functions_3.html b/docs/html/search/functions_3.html new file mode 100644 index 0000000..43ac697 --- /dev/null +++ b/docs/html/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_3.js b/docs/html/search/functions_3.js new file mode 100644 index 0000000..79bed7c --- /dev/null +++ b/docs/html/search/functions_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['enhance_5fcommit_5fmessage_0',['enhance_commit_message',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_1',['extract_issue_keys',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_5ffrom_5fbranch_2',['extract_issue_keys_from_branch',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/functions_4.html b/docs/html/search/functions_4.html new file mode 100644 index 0000000..d12c2df --- /dev/null +++ b/docs/html/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_4.js b/docs/html/search/functions_4.js new file mode 100644 index 0000000..3c2e1af --- /dev/null +++ b/docs/html/search/functions_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['find_5fgit_5fparent_0',['find_git_parent',['../namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2',1,'penify_hook::utils']]], + ['format_5fcommit_5fmessage_5fwith_5fjira_5finfo_1',['format_commit_message_with_jira_info',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23',1,'penify_hook::jira_client::JiraClient']]], + ['format_5ferror_2',['format_error',['../namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e',1,'penify_hook::ui_utils']]], + ['format_5ffile_5fpath_3',['format_file_path',['../namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4',1,'penify_hook::ui_utils']]], + ['format_5fhighlight_4',['format_highlight',['../namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452',1,'penify_hook::ui_utils']]], + ['format_5finfo_5',['format_info',['../namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6',1,'penify_hook::ui_utils']]], + ['format_5fsuccess_6',['format_success',['../namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776',1,'penify_hook::ui_utils']]], + ['format_5fwarning_7',['format_warning',['../namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/functions_5.html b/docs/html/search/functions_5.html new file mode 100644 index 0000000..7266236 --- /dev/null +++ b/docs/html/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_5.js b/docs/html/search/functions_5.js new file mode 100644 index 0000000..75c7e99 --- /dev/null +++ b/docs/html/search/functions_5.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['generate_5fcommit_5fsummary_0',['generate_commit_summary',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000',1,'penify_hook.llm_client.LLMClient.generate_commit_summary()'],['../classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce',1,'penify_hook.api_client.APIClient.generate_commit_summary(self, git_diff, str instruction="", repo_details=None, dict jira_context=None)']]], + ['generate_5fcommit_5fsummary_5fwith_5fllm_1',['generate_commit_summary_with_llm',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3',1,'penify_hook::api_client::APIClient']]], + ['generate_5fdoc_2',['generate_doc',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25',1,'penify_hook::commands::doc_commands']]], + ['get_5fapi_5fkey_3',['get_api_key',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99',1,'penify_hook::api_client::APIClient']]], + ['get_5fcommit_5fcontext_5ffrom_5fissues_4',['get_commit_context_from_issues',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fdetailed_5fissue_5fcontext_5',['get_detailed_issue_context',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fenv_5fvar_5for_5fdefault_6',['get_env_var_or_default',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87',1,'penify_hook::commands::config_commands']]], + ['get_5fissue_5fdetails_7',['get_issue_details',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fjira_5fconfig_8',['get_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2',1,'penify_hook::commands::config_commands']]], + ['get_5fllm_5fconfig_9',['get_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0',1,'penify_hook::commands::config_commands']]], + ['get_5fmodified_5ffiles_5fin_5flast_5fcommit_10',['get_modified_files_in_last_commit',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fmodified_5flines_11',['get_modified_lines',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fpenify_5fconfig_12',['get_penify_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20',1,'penify_hook::commands::config_commands']]], + ['get_5frepo_5fdetails_13',['get_repo_details',['../namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3',1,'penify_hook::utils']]], + ['get_5fsummary_14',['get_summary',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['get_5fsupported_5ffile_5ftypes_15',['get_supported_file_types',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402',1,'penify_hook::api_client::APIClient']]], + ['get_5ftoken_16',['get_token',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/functions_6.html b/docs/html/search/functions_6.html new file mode 100644 index 0000000..7f9fc45 --- /dev/null +++ b/docs/html/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_6.js b/docs/html/search/functions_6.js new file mode 100644 index 0000000..6ef2054 --- /dev/null +++ b/docs/html/search/functions_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['handle_5fcommit_0',['handle_commit',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23',1,'penify_hook::commands::commit_commands']]], + ['handle_5fconfig_1',['handle_config',['../namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde',1,'penify_hook::config_command']]], + ['handle_5fdocgen_2',['handle_docgen',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704',1,'penify_hook::commands::doc_commands']]], + ['handle_5flogin_3',['handle_login',['../namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd',1,'penify_hook::login_command']]] +]; diff --git a/docs/html/search/functions_7.html b/docs/html/search/functions_7.html new file mode 100644 index 0000000..ad0f88b --- /dev/null +++ b/docs/html/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_7.js b/docs/html/search/functions_7.js new file mode 100644 index 0000000..f0f0714 --- /dev/null +++ b/docs/html/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['install_5fgit_5fhook_0',['install_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2',1,'penify_hook::commands::hook_commands']]], + ['is_5fconnected_1',['is_connected',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/functions_8.html b/docs/html/search/functions_8.html new file mode 100644 index 0000000..ea7fa74 --- /dev/null +++ b/docs/html/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_8.js b/docs/html/search/functions_8.js new file mode 100644 index 0000000..8934697 --- /dev/null +++ b/docs/html/search/functions_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['list_5fall_5ffiles_5fin_5fdir_0',['list_all_files_in_dir',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['litellm_1',['litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e',1,'penify_hook::llm_client::LLMClient']]], + ['load_5fenv_5ffiles_2',['load_env_files',['../namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae',1,'penify_hook::commands::config_commands']]], + ['login_3',['login',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655',1,'penify_hook::commands::auth_commands']]] +]; diff --git a/docs/html/search/functions_9.html b/docs/html/search/functions_9.html new file mode 100644 index 0000000..d831dc7 --- /dev/null +++ b/docs/html/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_9.js b/docs/html/search/functions_9.js new file mode 100644 index 0000000..70a2559 --- /dev/null +++ b/docs/html/search/functions_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['main_0',['main',['../namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f',1,'penify_hook::main']]], + ['mock_5fapi_5fclient_1',['mock_api_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fcommit_5fdoc_5fgen_2',['mock_commit_doc_gen',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fgit_5ffolder_5fsearch_3',['mock_git_folder_search',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fjira_5fclient_4',['mock_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fllm_5fclient_5',['mock_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fprint_5ffunctions_6',['mock_print_functions',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be',1,'tests::test_commit_commands::TestCommitCommands']]] +]; diff --git a/docs/html/search/functions_a.html b/docs/html/search/functions_a.html new file mode 100644 index 0000000..7018fc6 --- /dev/null +++ b/docs/html/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_a.js b/docs/html/search/functions_a.js new file mode 100644 index 0000000..0283fbe --- /dev/null +++ b/docs/html/search/functions_a.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['print_5ferror_0',['print_error',['../namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f',1,'penify_hook::ui_utils']]], + ['print_5finfo_1',['print_info',['../namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44',1,'penify_hook::ui_utils']]], + ['print_5fprocessing_2',['print_processing',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing()'],['../namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115',1,'penify_hook.ui_utils.print_processing(file_path)']]], + ['print_5fstatus_3',['print_status',['../namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c',1,'penify_hook::ui_utils']]], + ['print_5fsuccess_4',['print_success',['../namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a',1,'penify_hook::ui_utils']]], + ['print_5fwarning_5',['print_warning',['../namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa',1,'penify_hook::ui_utils']]], + ['process_5ffile_6',['process_file',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.process_file()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85',1,'penify_hook.git_analyzer.GitDocGenHook.process_file()']]], + ['process_5fjira_5fintegration_7',['process_jira_integration',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f',1,'penify_hook::commit_analyzer::CommitDocGenHook']]] +]; diff --git a/docs/html/search/functions_b.html b/docs/html/search/functions_b.html new file mode 100644 index 0000000..c0660b0 --- /dev/null +++ b/docs/html/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_b.js b/docs/html/search/functions_b.js new file mode 100644 index 0000000..aa36dc7 --- /dev/null +++ b/docs/html/search/functions_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['recursive_5fsearch_5fgit_5ffolder_0',['recursive_search_git_folder',['../namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f',1,'penify_hook::utils']]], + ['run_1',['run',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9',1,'penify_hook.commit_analyzer.CommitDocGenHook.run()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.run()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.run()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae',1,'penify_hook.git_analyzer.GitDocGenHook.run()']]] +]; diff --git a/docs/html/search/functions_c.html b/docs/html/search/functions_c.html new file mode 100644 index 0000000..b642767 --- /dev/null +++ b/docs/html/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_c.js b/docs/html/search/functions_c.js new file mode 100644 index 0000000..8de5e4c --- /dev/null +++ b/docs/html/search/functions_c.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['save_5fcredentials_0',['save_credentials',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24',1,'penify_hook::commands::auth_commands']]], + ['save_5fjira_5fconfig_1',['save_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4',1,'penify_hook::commands::config_commands']]], + ['save_5fllm_5fconfig_2',['save_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4',1,'penify_hook::commands::config_commands']]], + ['send_5ffile_5ffor_5fdocstring_5fgeneration_3',['send_file_for_docstring_generation',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3',1,'penify_hook::api_client::APIClient']]], + ['setup_5fcommit_5fparser_4',['setup_commit_parser',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c',1,'penify_hook::commands::commit_commands']]], + ['setup_5fconfig_5fparser_5',['setup_config_parser',['../namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e',1,'penify_hook::config_command']]], + ['setup_5fdocgen_5fparser_6',['setup_docgen_parser',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0',1,'penify_hook::commands::doc_commands']]], + ['setup_5flogin_5fparser_7',['setup_login_parser',['../namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a',1,'penify_hook::login_command']]] +]; diff --git a/docs/html/search/functions_d.html b/docs/html/search/functions_d.html new file mode 100644 index 0000000..16464b4 --- /dev/null +++ b/docs/html/search/functions_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_d.js b/docs/html/search/functions_d.js new file mode 100644 index 0000000..36538fa --- /dev/null +++ b/docs/html/search/functions_d.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['test_5fcommit_5fcode_5ferror_5fhandling_0',['test_commit_code_error_handling',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fclient_1',['test_commit_code_with_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fconnection_5ffailure_2',['test_commit_code_with_jira_connection_failure',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fllm_5fclient_3',['test_commit_code_with_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fconfig_5fjira_5fweb_5fserver_5fsetup_4',['test_config_jira_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fconfig_5fllm_5fweb_5fserver_5fsetup_5',['test_config_llm_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fgenerate_5fdoc_5ferror_5fhandling_6',['test_generate_doc_error_handling',['../namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffile_5flocation_7',['test_generate_doc_file_location',['../namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffolder_5flocation_8',['test_generate_doc_folder_location',['../namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fno_5flocation_9',['test_generate_doc_no_location',['../namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffile_5fexception_10',['test_generate_doc_with_file_exception',['../namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffolder_5fexception_11',['test_generate_doc_with_folder_exception',['../namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3',1,'tests::test_doc_commands']]], + ['test_5fget_5fjira_5fconfig_5fexists_12',['test_get_jira_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fempty_13',['test_get_llm_config_empty',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fexists_14',['test_get_llm_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5finvalid_5fjson_15',['test_get_llm_config_invalid_json',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fexisting_5fdir_16',['test_get_penify_config_existing_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fnew_5fdir_17',['test_get_penify_config_new_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fconfig_18',['test_get_token_from_config',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fenv_19',['test_get_token_from_env',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5fnot_5ffound_20',['test_get_token_not_found',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fhandle_5fcommit_21',['test_handle_commit',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fhandle_5fdocgen_5fgenerate_22',['test_handle_docgen_generate',['../namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5finstall_5fhook_23',['test_handle_docgen_install_hook',['../namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5fno_5ftoken_24',['test_handle_docgen_no_token',['../namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5funinstall_5fhook_25',['test_handle_docgen_uninstall_hook',['../namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482',1,'tests::test_doc_commands']]], + ['test_5fsave_5fjira_5fconfig_5fsuccess_26',['test_save_jira_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5ffailure_27',['test_save_llm_config_failure',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5fsuccess_28',['test_save_llm_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsetup_5fcommit_5fparser_29',['test_setup_commit_parser',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fsetup_5fdocgen_5fparser_30',['test_setup_docgen_parser',['../namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7',1,'tests::test_doc_commands']]] +]; diff --git a/docs/html/search/functions_e.html b/docs/html/search/functions_e.html new file mode 100644 index 0000000..e55bbf1 --- /dev/null +++ b/docs/html/search/functions_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_e.js b/docs/html/search/functions_e.js new file mode 100644 index 0000000..60953c2 --- /dev/null +++ b/docs/html/search/functions_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['uninstall_5fgit_5fhook_0',['uninstall_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d',1,'penify_hook::commands::hook_commands']]], + ['update_5fissue_5fstatus_1',['update_issue_status',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826',1,'penify_hook::jira_client::JiraClient']]], + ['update_5fstage_2',['update_stage',['../namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/mag_sel.svg b/docs/html/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/docs/html/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/docs/html/search/namespaces_0.html b/docs/html/search/namespaces_0.html new file mode 100644 index 0000000..b2d68fe --- /dev/null +++ b/docs/html/search/namespaces_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_0.js b/docs/html/search/namespaces_0.js new file mode 100644 index 0000000..3a1e6d3 --- /dev/null +++ b/docs/html/search/namespaces_0.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['api_5fclient_0',['api_client',['../namespacepenify__hook_1_1api__client.html',1,'penify_hook']]], + ['auth_5fcommands_1',['auth_commands',['../namespacepenify__hook_1_1commands_1_1auth__commands.html',1,'penify_hook::commands']]], + ['base_5fanalyzer_2',['base_analyzer',['../namespacepenify__hook_1_1base__analyzer.html',1,'penify_hook']]], + ['commands_3',['commands',['../namespacepenify__hook_1_1commands.html',1,'penify_hook']]], + ['commit_5fanalyzer_4',['commit_analyzer',['../namespacepenify__hook_1_1commit__analyzer.html',1,'penify_hook']]], + ['commit_5fcommands_5',['commit_commands',['../namespacepenify__hook_1_1commands_1_1commit__commands.html',1,'penify_hook::commands']]], + ['config_5fcommand_6',['config_command',['../namespacepenify__hook_1_1config__command.html',1,'penify_hook']]], + ['config_5fcommands_7',['config_commands',['../namespacepenify__hook_1_1commands_1_1config__commands.html',1,'penify_hook::commands']]], + ['constants_8',['constants',['../namespacepenify__hook_1_1constants.html',1,'penify_hook']]], + ['doc_5fcommands_9',['doc_commands',['../namespacepenify__hook_1_1commands_1_1doc__commands.html',1,'penify_hook::commands']]], + ['file_5fanalyzer_10',['file_analyzer',['../namespacepenify__hook_1_1file__analyzer.html',1,'penify_hook']]], + ['folder_5fanalyzer_11',['folder_analyzer',['../namespacepenify__hook_1_1folder__analyzer.html',1,'penify_hook']]], + ['git_5fanalyzer_12',['git_analyzer',['../namespacepenify__hook_1_1git__analyzer.html',1,'penify_hook']]], + ['hook_5fcommands_13',['hook_commands',['../namespacepenify__hook_1_1commands_1_1hook__commands.html',1,'penify_hook::commands']]], + ['jira_5fclient_14',['jira_client',['../namespacepenify__hook_1_1jira__client.html',1,'penify_hook']]], + ['llm_5fclient_15',['llm_client',['../namespacepenify__hook_1_1llm__client.html',1,'penify_hook']]], + ['login_5fcommand_16',['login_command',['../namespacepenify__hook_1_1login__command.html',1,'penify_hook']]], + ['main_17',['main',['../namespacepenify__hook_1_1main.html',1,'penify_hook']]], + ['penify_5fhook_18',['penify_hook',['../namespacepenify__hook.html',1,'']]], + ['ui_5futils_19',['ui_utils',['../namespacepenify__hook_1_1ui__utils.html',1,'penify_hook']]], + ['utils_20',['utils',['../namespacepenify__hook_1_1utils.html',1,'penify_hook']]] +]; diff --git a/docs/html/search/namespaces_1.html b/docs/html/search/namespaces_1.html new file mode 100644 index 0000000..a4b1530 --- /dev/null +++ b/docs/html/search/namespaces_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_1.js b/docs/html/search/namespaces_1.js new file mode 100644 index 0000000..fdca1a8 --- /dev/null +++ b/docs/html/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['setup_0',['setup',['../namespacesetup.html',1,'']]] +]; diff --git a/docs/html/search/namespaces_2.html b/docs/html/search/namespaces_2.html new file mode 100644 index 0000000..a89a756 --- /dev/null +++ b/docs/html/search/namespaces_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_2.js b/docs/html/search/namespaces_2.js new file mode 100644 index 0000000..10ec4ce --- /dev/null +++ b/docs/html/search/namespaces_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['conftest_0',['conftest',['../namespacetests_1_1conftest.html',1,'tests']]], + ['test_5fcommit_5fcommands_1',['test_commit_commands',['../namespacetests_1_1test__commit__commands.html',1,'tests']]], + ['test_5fconfig_5fcommands_2',['test_config_commands',['../namespacetests_1_1test__config__commands.html',1,'tests']]], + ['test_5fdoc_5fcommands_3',['test_doc_commands',['../namespacetests_1_1test__doc__commands.html',1,'tests']]], + ['test_5fweb_5fconfig_4',['test_web_config',['../namespacetests_1_1test__web__config.html',1,'tests']]], + ['tests_5',['tests',['../namespacetests.html',1,'']]] +]; diff --git a/docs/html/search/nomatches.html b/docs/html/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/docs/html/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/docs/html/search/pages_0.html b/docs/html/search/pages_0.html new file mode 100644 index 0000000..1981712 --- /dev/null +++ b/docs/html/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/pages_0.js b/docs/html/search/pages_0.js new file mode 100644 index 0000000..3cd36ca --- /dev/null +++ b/docs/html/search/pages_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['penify_20cli_20_2d_20commit_20commands_0',['Penify CLI - Commit Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html',1,'']]], + ['penify_20cli_20_2d_20configuration_20commands_1',['Penify CLI - Configuration Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html',1,'']]], + ['penify_20cli_20_2d_20detailed_20usage_20guide_2',['Penify CLI - Detailed Usage Guide',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html',1,'']]], + ['penify_20cli_20_2d_20documentation_20generation_20commands_3',['Penify CLI - Documentation Generation Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html',1,'']]], + ['penify_20cli_20example_20workflows_4',['Penify CLI Example Workflows',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html',1,'']]], + ['penify_20cli_20tool_5',['Penify CLI Tool',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html',1,'']]] +]; diff --git a/docs/html/search/search.css b/docs/html/search/search.css new file mode 100644 index 0000000..648a792 --- /dev/null +++ b/docs/html/search/search.css @@ -0,0 +1,263 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 19px; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/html/search/search.js b/docs/html/search/search.js new file mode 100644 index 0000000..607f4e1 --- /dev/null +++ b/docs/html/search/search.js @@ -0,0 +1,802 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var width = 400; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/docs/html/search/search_r.png b/docs/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/docs/html/search/searchdata.js b/docs/html/search/searchdata.js new file mode 100644 index 0000000..37552a5 --- /dev/null +++ b/docs/html/search/searchdata.js @@ -0,0 +1,33 @@ +var indexSectionsWithContent = +{ + 0: "_abcdefghijlmnprstuvw", + 1: "abcefgjlt", + 2: "pst", + 3: "_abcdefghjlmprstu", + 4: "_acefghilmprstu", + 5: "_abcdefhijlmnprsuvw", + 6: "p" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Namespaces", + 3: "Files", + 4: "Functions", + 5: "Variables", + 6: "Pages" +}; + diff --git a/docs/html/search/variables_0.html b/docs/html/search/variables_0.html new file mode 100644 index 0000000..fd893a6 --- /dev/null +++ b/docs/html/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_0.js b/docs/html/search/variables_0.js new file mode 100644 index 0000000..ee0a9ff --- /dev/null +++ b/docs/html/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5flitellm_0',['_litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/variables_1.html b/docs/html/search/variables_1.html new file mode 100644 index 0000000..5f8e440 --- /dev/null +++ b/docs/html/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_1.js b/docs/html/search/variables_1.js new file mode 100644 index 0000000..a34ece5 --- /dev/null +++ b/docs/html/search/variables_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['api_5fclient_0',['api_client',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['api_5furl_1',['api_url',['../classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872',1,'penify_hook::api_client::APIClient']]], + ['api_5furl_2',['API_URL',['../namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0',1,'penify_hook::constants']]], + ['auth_5ftoken_3',['AUTH_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237',1,'penify_hook::api_client::APIClient']]], + ['author_4',['author',['../namespacesetup.html#a3a57a4772d418a06835249cbade0d86a',1,'setup']]], + ['author_5femail_5',['author_email',['../namespacesetup.html#a5b08034343aa2be607722a8b315f3625',1,'setup']]], + ['autoreset_6',['autoreset',['../namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_10.html b/docs/html/search/variables_10.html new file mode 100644 index 0000000..943cbd1 --- /dev/null +++ b/docs/html/search/variables_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_10.js b/docs/html/search/variables_10.js new file mode 100644 index 0000000..28d0871 --- /dev/null +++ b/docs/html/search/variables_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['url_0',['url',['../namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb',1,'setup']]] +]; diff --git a/docs/html/search/variables_11.html b/docs/html/search/variables_11.html new file mode 100644 index 0000000..47f1ec5 --- /dev/null +++ b/docs/html/search/variables_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_11.js b/docs/html/search/variables_11.js new file mode 100644 index 0000000..d9621d9 --- /dev/null +++ b/docs/html/search/variables_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version_0',['version',['../namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c',1,'setup']]] +]; diff --git a/docs/html/search/variables_12.html b/docs/html/search/variables_12.html new file mode 100644 index 0000000..2842f66 --- /dev/null +++ b/docs/html/search/variables_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_12.js b/docs/html/search/variables_12.js new file mode 100644 index 0000000..10d696f --- /dev/null +++ b/docs/html/search/variables_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['warning_5fcolor_0',['WARNING_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff',1,'penify_hook::ui_utils']]], + ['warning_5fsymbol_1',['WARNING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_2.html b/docs/html/search/variables_2.html new file mode 100644 index 0000000..77a7f48 --- /dev/null +++ b/docs/html/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_2.js b/docs/html/search/variables_2.js new file mode 100644 index 0000000..d02ac2e --- /dev/null +++ b/docs/html/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bearer_5ftoken_0',['BEARER_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0',1,'penify_hook::api_client::APIClient']]] +]; diff --git a/docs/html/search/variables_3.html b/docs/html/search/variables_3.html new file mode 100644 index 0000000..3ee62ba --- /dev/null +++ b/docs/html/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_3.js b/docs/html/search/variables_3.js new file mode 100644 index 0000000..c6d851a --- /dev/null +++ b/docs/html/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['classifiers_0',['classifiers',['../namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785',1,'setup']]] +]; diff --git a/docs/html/search/variables_4.html b/docs/html/search/variables_4.html new file mode 100644 index 0000000..640713f --- /dev/null +++ b/docs/html/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_4.js b/docs/html/search/variables_4.js new file mode 100644 index 0000000..ea198d0 --- /dev/null +++ b/docs/html/search/variables_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['dashboard_5furl_0',['DASHBOARD_URL',['../namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0',1,'penify_hook::constants']]], + ['description_1',['description',['../namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0',1,'setup']]], + ['dir_5fpath_2',['dir_path',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['docgen_5fdescription_3',['docgen_description',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948',1,'penify_hook::commands::doc_commands']]], + ['dotenv_5favailable_4',['DOTENV_AVAILABLE',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/variables_5.html b/docs/html/search/variables_5.html new file mode 100644 index 0000000..7b2ba97 --- /dev/null +++ b/docs/html/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_5.js b/docs/html/search/variables_5.js new file mode 100644 index 0000000..0ca10cf --- /dev/null +++ b/docs/html/search/variables_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['entry_5fpoints_0',['entry_points',['../namespacesetup.html#ada7058afc98897f073d3f3b8b9157059',1,'setup']]], + ['error_5fcolor_1',['ERROR_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe',1,'penify_hook::ui_utils']]], + ['error_5fsymbol_2',['ERROR_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_6.html b/docs/html/search/variables_6.html new file mode 100644 index 0000000..fb1de8f --- /dev/null +++ b/docs/html/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_6.js b/docs/html/search/variables_6.js new file mode 100644 index 0000000..6f038b5 --- /dev/null +++ b/docs/html/search/variables_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_5fpath_0',['file_path',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32',1,'penify_hook::file_analyzer::FileAnalyzerGenHook']]], + ['folder_5fpath_1',['folder_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/search/variables_7.html b/docs/html/search/variables_7.html new file mode 100644 index 0000000..cf8dcf4 --- /dev/null +++ b/docs/html/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_7.js b/docs/html/search/variables_7.js new file mode 100644 index 0000000..05d3ba9 --- /dev/null +++ b/docs/html/search/variables_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['highlight_5fcolor_0',['HIGHLIGHT_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc',1,'penify_hook::ui_utils']]], + ['hook_5ffilename_1',['HOOK_FILENAME',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1',1,'penify_hook::commands::hook_commands']]], + ['hook_5ftemplate_2',['HOOK_TEMPLATE',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7',1,'penify_hook::commands::hook_commands']]] +]; diff --git a/docs/html/search/variables_8.html b/docs/html/search/variables_8.html new file mode 100644 index 0000000..88cbb01 --- /dev/null +++ b/docs/html/search/variables_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_8.js b/docs/html/search/variables_8.js new file mode 100644 index 0000000..6c4b704 --- /dev/null +++ b/docs/html/search/variables_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['info_5fcolor_0',['INFO_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c',1,'penify_hook::ui_utils']]], + ['install_5frequires_1',['install_requires',['../namespacesetup.html#abead4f26b530856f858f0d44c7cf2588',1,'setup']]] +]; diff --git a/docs/html/search/variables_9.html b/docs/html/search/variables_9.html new file mode 100644 index 0000000..36c49bd --- /dev/null +++ b/docs/html/search/variables_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_9.js b/docs/html/search/variables_9.js new file mode 100644 index 0000000..4d28226 --- /dev/null +++ b/docs/html/search/variables_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['jira_5fapi_5ftoken_0',['jira_api_token',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5favailable_1',['JIRA_AVAILABLE',['../namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2',1,'penify_hook::jira_client']]], + ['jira_5fclient_2',['jira_client',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5furl_3',['jira_url',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fuser_4',['jira_user',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/variables_a.html b/docs/html/search/variables_a.html new file mode 100644 index 0000000..0005c6a --- /dev/null +++ b/docs/html/search/variables_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_a.js b/docs/html/search/variables_a.js new file mode 100644 index 0000000..1b06afc --- /dev/null +++ b/docs/html/search/variables_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['llm_5fclient_0',['llm_client',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['logger_1',['logger',['../namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828',1,'penify_hook.file_analyzer.logger()'],['../namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a',1,'penify_hook.git_analyzer.logger()'],['../namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01',1,'penify_hook.utils.logger()']]], + ['long_5fdescription_2',['long_description',['../namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde',1,'setup']]], + ['long_5fdescription_5fcontent_5ftype_3',['long_description_content_type',['../namespacesetup.html#a3796ea10c998699d07d391414ff5d720',1,'setup']]] +]; diff --git a/docs/html/search/variables_b.html b/docs/html/search/variables_b.html new file mode 100644 index 0000000..757c068 --- /dev/null +++ b/docs/html/search/variables_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_b.js b/docs/html/search/variables_b.js new file mode 100644 index 0000000..0081627 --- /dev/null +++ b/docs/html/search/variables_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_0',['model',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/variables_c.html b/docs/html/search/variables_c.html new file mode 100644 index 0000000..451a136 --- /dev/null +++ b/docs/html/search/variables_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_c.js b/docs/html/search/variables_c.js new file mode 100644 index 0000000..eb3ec51 --- /dev/null +++ b/docs/html/search/variables_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['name_0',['name',['../namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f',1,'setup']]], + ['neutral_5fcolor_1',['NEUTRAL_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_d.html b/docs/html/search/variables_d.html new file mode 100644 index 0000000..aea4286 --- /dev/null +++ b/docs/html/search/variables_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_d.js b/docs/html/search/variables_d.js new file mode 100644 index 0000000..e4b61ad --- /dev/null +++ b/docs/html/search/variables_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['packages_0',['packages',['../namespacesetup.html#aff2375a361fd5865c77bd9aa093be747',1,'setup']]], + ['path_1',['path',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880',1,'penify_hook::commands::config_commands']]], + ['processing_5fsymbol_2',['PROCESSING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756',1,'penify_hook::ui_utils']]], + ['python_5frequires_3',['python_requires',['../namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf',1,'setup']]] +]; diff --git a/docs/html/search/variables_e.html b/docs/html/search/variables_e.html new file mode 100644 index 0000000..ec3793e --- /dev/null +++ b/docs/html/search/variables_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_e.js b/docs/html/search/variables_e.js new file mode 100644 index 0000000..90e3cd7 --- /dev/null +++ b/docs/html/search/variables_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['relative_5ffile_5fpath_0',['relative_file_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_1',['repo',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fdetails_2',['repo_details',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fpath_3',['repo_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/search/variables_f.html b/docs/html/search/variables_f.html new file mode 100644 index 0000000..ee82fce --- /dev/null +++ b/docs/html/search/variables_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_f.js b/docs/html/search/variables_f.js new file mode 100644 index 0000000..2dcc04a --- /dev/null +++ b/docs/html/search/variables_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['success_5fcolor_0',['SUCCESS_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4',1,'penify_hook::ui_utils']]], + ['success_5fsymbol_1',['SUCCESS_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e',1,'penify_hook::ui_utils']]], + ['supported_5ffile_5ftypes_2',['supported_file_types',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/setup_8py.html b/docs/html/setup_8py.html new file mode 100644 index 0000000..2b53762 --- /dev/null +++ b/docs/html/setup_8py.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/setup.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..241d406 --- /dev/null +++ b/docs/html/setup_8py.js @@ -0,0 +1,16 @@ +var setup_8py = +[ + [ "author", "setup_8py.html#a3a57a4772d418a06835249cbade0d86a", null ], + [ "author_email", "setup_8py.html#a5b08034343aa2be607722a8b315f3625", null ], + [ "classifiers", "setup_8py.html#abe96a9c38c1c61f9f0fdb002c482f785", null ], + [ "description", "setup_8py.html#aedf461ec52a946bda975938ba0b93ec0", null ], + [ "entry_points", "setup_8py.html#ada7058afc98897f073d3f3b8b9157059", null ], + [ "install_requires", "setup_8py.html#abead4f26b530856f858f0d44c7cf2588", null ], + [ "long_description", "setup_8py.html#a4cda9dbfb952875376a0749fe08a5bde", null ], + [ "long_description_content_type", "setup_8py.html#a3796ea10c998699d07d391414ff5d720", null ], + [ "name", "setup_8py.html#ab3a7a0638d76a01367c5bc3cc699447f", null ], + [ "packages", "setup_8py.html#aff2375a361fd5865c77bd9aa093be747", null ], + [ "python_requires", "setup_8py.html#aa7ca7bc9391b217e81efeb03689d8dbf", null ], + [ "url", "setup_8py.html#afc13124aa5c0124e84e1d965e3f4b0fb", null ], + [ "version", "setup_8py.html#a2aa722b36a933088812b50ea79b97a5c", null ] +]; \ No newline at end of file diff --git a/docs/html/splitbar.png b/docs/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/docs/html/svgpan.js b/docs/html/svgpan.js new file mode 100644 index 0000000..2678d38 --- /dev/null +++ b/docs/html/svgpan.js @@ -0,0 +1,323 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + The code below is based on SVGPan Library 1.2 and was modified for doxygen + to support both zooming and panning via the mouse and via embedded buttons. + + This code is licensed under the following BSD license: + + Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + The views and conclusions contained in the software and documentation are those of the + authors and should not be interpreted as representing official policies, either expressed + or implied, of Andrea Leofreddi. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +var root = document.documentElement; +var state = 'none'; +var stateOrigin; +var stateTf = root.createSVGMatrix(); +var cursorGrab = ' url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRFAAAA////////c3ilYwAAAAN0Uk5T//8A18oNQQAAAD1JREFUeNp0zlEKACAIA9Bt9z90bZBZkQj29qFBEuBOzQHSnWTTyckEfqUuZgFvslH4ch3qLCO/Kr8cAgwATw4Ax6XRCcoAAAAASUVORK5CYII="), move'; +var zoomSteps = 10; +var zoomInFactor; +var zoomOutFactor; +var windowWidth; +var windowHeight; +var svgDoc; +var minZoom; +var maxZoom; +if (!window) window=this; + +/** + * Show the graph in the middle of the view, scaled to fit + */ +function show() +{ + if (window.innerHeight) // Firefox + { + windowWidth = window.innerWidth; + windowHeight = window.innerHeight; + } + else if (document.documentElement.clientWidth) // Chrome/Safari + { + windowWidth = document.documentElement.clientWidth + windowHeight = document.documentElement.clientHeight + } + if (!windowWidth || !windowHeight) // failsafe + { + windowWidth = 800; + windowHeight = 600; + } + minZoom = Math.min(Math.min(viewHeight,windowHeight)/viewHeight,Math.min(viewWidth,windowWidth)/viewWidth); + maxZoom = minZoom+1.5; + zoomInFactor = Math.pow(maxZoom/minZoom,1.0/zoomSteps); + zoomOutFactor = 1.0/zoomInFactor; + + var g = svgDoc.getElementById('viewport'); + try + { + var bb = g.getBBox(); // this can throw an exception if css { display: none } + var tx = (windowWidth-viewWidth*minZoom+8)/(2*minZoom); + var ty = viewHeight+(windowHeight-viewHeight*minZoom)/(2*minZoom); + var a = 'scale('+minZoom+') rotate(0) translate('+tx+' '+ty+')'; + g.setAttribute('transform',a); + } + catch(e) {} +} + +/** + * Register handlers + */ +function init(evt) +{ + svgDoc = evt.target.ownerDocument; + try { + if (top.window && top.window.registerShow) { // register show function in html doc for dynamic sections + top.window.registerShow(sectionId,show); + } + } catch(e) { + // ugh, we are not allowed to talk to the parent; can happen with Chrome when viewing pages + // locally, since they treat every local page as having a different origin + } + show(); + + setAttributes(root, { + "onmousedown" : "handleMouseDown(evt)", + "onmousemove" : "handleMouseMove(evt)", + "onmouseup" : "handleMouseUp(evt)" + }); + + if (window.addEventListener) + { + if (navigator.userAgent.toLowerCase().indexOf('webkit') >= 0 || + navigator.userAgent.toLowerCase().indexOf("opera") >= 0 || + navigator.appVersion.indexOf("MSIE") != -1) + { + window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari/IE9 + } + else + { + window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others + } + } +} + +window.onresize=function() +{ + if (svgDoc) { show(); } +} + +/** + * Instance an SVGPoint object with given event coordinates. + */ +function getEventPoint(evt) +{ + var p = root.createSVGPoint(); + p.x = evt.clientX; + p.y = evt.clientY; + return p; +} + +/** + * Sets the current transform matrix of an element. + */ +function setCTM(element, matrix) +{ + var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")"; + element.setAttribute("transform", s); +} + +/** + * Sets attributes of an element. + */ +function setAttributes(element, attributes) +{ + for (i in attributes) + element.setAttributeNS(null, i, attributes[i]); +} + +function doZoom(g,point,zoomFactor) +{ + var p = point.matrixTransform(g.getCTM().inverse()); + var k = root.createSVGMatrix().translate(p.x, p.y).scale(zoomFactor).translate(-p.x, -p.y); + var n = g.getCTM().multiply(k); + var s = Math.max(n.a,n.d); + if (s>maxZoom) n=n.translate(p.x,p.y).scale(maxZoom/s).translate(-p.x,-p.y); + else if (s'); + d.write('Print SVG'); + d.write(''); + d.write('
    '+xs+'
    '); + d.write(''); + d.write(''); + d.close(); + } catch(e) { + alert('Failed to open popup window needed for printing!\n'+e.message); + } +} +/* @license-end */ diff --git a/docs/html/sync_off.png b/docs/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/docs/html/sync_on.png b/docs/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/docs/html/tab_a.png b/docs/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/docs/html/tab_b.png b/docs/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/docs/html/tabs.css b/docs/html/tabs.css new file mode 100644 index 0000000..fb0977a --- /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:0px/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:#666;-webkit-transition:all 0.25s;transition:all 0.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:0px 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:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.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);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{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{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{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.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:#fff;text-shadow:0px 1px 1px #000}.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;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff 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 #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;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 #555;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:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;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 #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 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;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:#fff}} diff --git a/docs/html/test__commit__commands_8py.html b/docs/html/test__commit__commands_8py.html new file mode 100644 index 0000000..94976bf --- /dev/null +++ b/docs/html/test__commit__commands_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_commit_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..e7ad3b5 --- /dev/null +++ b/docs/html/test__config__commands_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_config_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..8dd55c8 --- /dev/null +++ b/docs/html/test__doc__commands_8py.html @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_doc_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_doc_commands.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

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

    +Functions

    def tests.test_doc_commands.test_generate_doc_no_location (mock_getcwd, mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def tests.test_doc_commands.test_generate_doc_file_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def tests.test_doc_commands.test_generate_doc_folder_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def tests.test_doc_commands.test_generate_doc_error_handling (mock_api_client, mock_git_analyzer, mock_exit)
     
    def tests.test_doc_commands.test_setup_docgen_parser ()
     
    def tests.test_doc_commands.test_handle_docgen_install_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def tests.test_doc_commands.test_handle_docgen_uninstall_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def tests.test_doc_commands.test_handle_docgen_generate (mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def tests.test_doc_commands.test_handle_docgen_no_token (mock_exit, mock_get_token)
     
    def tests.test_doc_commands.test_generate_doc_with_file_exception (mock_api_client, mock_getcwd)
     
    def 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..31809a6 --- /dev/null +++ b/docs/html/test__doc__commands_8py.js @@ -0,0 +1,14 @@ +var test__doc__commands_8py = +[ + [ "test_generate_doc_error_handling", "test__doc__commands_8py.html#aec76cc25c23476794234cdadbcaef0c0", null ], + [ "test_generate_doc_file_location", "test__doc__commands_8py.html#a0e74c920f258f442914771164fe26b45", null ], + [ "test_generate_doc_folder_location", "test__doc__commands_8py.html#a4bb75610e40d94d42bc169b25403c186", null ], + [ "test_generate_doc_no_location", "test__doc__commands_8py.html#a806110833eb0aad547156faf014b31d8", null ], + [ "test_generate_doc_with_file_exception", "test__doc__commands_8py.html#a335e7fd4912192c7276cf31bbebc6eb0", null ], + [ "test_generate_doc_with_folder_exception", "test__doc__commands_8py.html#a64165ddfdb3071a88422f080f0e529a3", null ], + [ "test_handle_docgen_generate", "test__doc__commands_8py.html#ab158ffa48469b6c097a7a55fcb20c21a", null ], + [ "test_handle_docgen_install_hook", "test__doc__commands_8py.html#ab74688baa8c9b5ba302c2877a9789d05", null ], + [ "test_handle_docgen_no_token", "test__doc__commands_8py.html#af9b01e5fc89255cac96747fa081c442c", null ], + [ "test_handle_docgen_uninstall_hook", "test__doc__commands_8py.html#a1458af9ad0128c3ca1263b552fd5e482", null ], + [ "test_setup_docgen_parser", "test__doc__commands_8py.html#a0f27751d0ba2acfe40ef7e85bccf47d7", 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..cfc3b98 --- /dev/null +++ b/docs/html/test__web__config_8py.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_web_config.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..3ab0c44 --- /dev/null +++ b/docs/html/tests_2____init_____8py.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    __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..4ee454f --- /dev/null +++ b/docs/html/ui__utils_8py.html @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/ui_utils.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    ui_utils.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

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

    +Functions

    def penify_hook.ui_utils.format_info (message)
     
    def penify_hook.ui_utils.format_success (message)
     
    def penify_hook.ui_utils.format_warning (message)
     
    def penify_hook.ui_utils.format_error (message)
     
    def penify_hook.ui_utils.format_highlight (message)
     
    def penify_hook.ui_utils.format_file_path (file_path)
     
    def penify_hook.ui_utils.print_info (message)
     
    def penify_hook.ui_utils.print_success (message)
     
    def penify_hook.ui_utils.print_warning (message)
     
    def penify_hook.ui_utils.print_error (message)
     
    def penify_hook.ui_utils.print_processing (file_path)
     
    def penify_hook.ui_utils.print_status (status, message)
     
    def penify_hook.ui_utils.create_progress_bar (total, desc="Processing", unit="item")
     
    def penify_hook.ui_utils.create_stage_progress_bar (stages, desc="Processing")
     
    def 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
     
    string penify_hook.ui_utils.SUCCESS_SYMBOL = "✓"
     
    string penify_hook.ui_utils.WARNING_SYMBOL = "○"
     
    string penify_hook.ui_utils.ERROR_SYMBOL = "✗"
     
    string 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..04380b0 --- /dev/null +++ b/docs/html/ui__utils_8py.js @@ -0,0 +1,29 @@ +var ui__utils_8py = +[ + [ "create_progress_bar", "ui__utils_8py.html#a12b92532b1458af94f3649d411b5505c", null ], + [ "create_stage_progress_bar", "ui__utils_8py.html#a3da02cd1140179a9ce60f62c85fccfef", null ], + [ "format_error", "ui__utils_8py.html#a4dd934568897433fa73f9cc182ac4a3e", null ], + [ "format_file_path", "ui__utils_8py.html#af3441fb3c2c3850b8b3b6455a9fdaba4", null ], + [ "format_highlight", "ui__utils_8py.html#adcb97fc26b405d2b9cdf5eb7aecc5452", null ], + [ "format_info", "ui__utils_8py.html#a92c3e466d1912058167be2eacf85b9f6", null ], + [ "format_success", "ui__utils_8py.html#a532cdb4de7c679ce8b29c3e9116c4776", null ], + [ "format_warning", "ui__utils_8py.html#a0a6fd2613c6fe053b6e4356cd9e5cda2", null ], + [ "print_error", "ui__utils_8py.html#a6f0acd7dd91abfe67d0807803bc3b65f", null ], + [ "print_info", "ui__utils_8py.html#a811f0adf6e9bf71510c379b6fa155e44", null ], + [ "print_processing", "ui__utils_8py.html#adfcbbfe39029ab6d1dd33e7bf75ae115", null ], + [ "print_status", "ui__utils_8py.html#aa6e684c00e26199440137a87ed9b195c", null ], + [ "print_success", "ui__utils_8py.html#a2b16aa6b68a9edea5f29f84f1c4be79a", null ], + [ "print_warning", "ui__utils_8py.html#a1ffbb9671dbe233770268e2dd66a67fa", null ], + [ "update_stage", "ui__utils_8py.html#a5a7340d0fc60fb80f17514d60bf45f1d", null ], + [ "autoreset", "ui__utils_8py.html#ab560cfade398ac1e0bd47befb52d9f71", null ], + [ "ERROR_COLOR", "ui__utils_8py.html#a4ab4e61dfab7973c87bef59c6e1977fe", null ], + [ "ERROR_SYMBOL", "ui__utils_8py.html#aa564e1e1d016c8227d076542e74cecb0", null ], + [ "HIGHLIGHT_COLOR", "ui__utils_8py.html#aba01b8259f0d66cdc2b4a1b58f9736fc", null ], + [ "INFO_COLOR", "ui__utils_8py.html#a9fdcb180915696f5d217032a62c3857c", null ], + [ "NEUTRAL_COLOR", "ui__utils_8py.html#aca0fcee81606857497520ae4290bc9f5", null ], + [ "PROCESSING_SYMBOL", "ui__utils_8py.html#a3b208e2750a38dd09467a73e4afd9756", null ], + [ "SUCCESS_COLOR", "ui__utils_8py.html#a22c450c5e2b5394618ecf9b636560df4", null ], + [ "SUCCESS_SYMBOL", "ui__utils_8py.html#a3c6fe4bd17c1a5fe76587225ae4beb3e", null ], + [ "WARNING_COLOR", "ui__utils_8py.html#a177bc9b44157844c999e0c1c2c6936ff", null ], + [ "WARNING_SYMBOL", "ui__utils_8py.html#a6eaea98f1a8cbe16a181647da2fc0a16", 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..610917d --- /dev/null +++ b/docs/html/utils_8py.html @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/utils.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    utils.py File Reference
    +
    +
    + + + + +

    +Classes

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

    +Namespaces

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

    +Functions

    def penify_hook.utils.get_repo_details (Repo repo)
     
    def penify_hook.utils.recursive_search_git_folder (folder_path)
     
    def 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..073b162 --- /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 ], + [ "find_git_parent", "utils_8py.html#a4ec5335a4026c22a34a3a8ccf665a5f2", null ], + [ "get_repo_details", "utils_8py.html#ae236f3c4c8bf5dcddbb92b4c2065eea3", null ], + [ "recursive_search_git_folder", "utils_8py.html#a95c3f9c80860d6a2e2d061d2fb660a3f", null ], + [ "logger", "utils_8py.html#a0c0c1ed6b197038085c94a90ceedfb01", null ] +]; \ No newline at end of file diff --git a/docs/penify-cli-Penify-dev-g.tar.gz b/docs/penify-cli-Penify-dev-g.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..b0719f498519aaa0fc87fdcb0cacb9a9fb514ad0 GIT binary patch literal 791871 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�fCddHA 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�aiAt@AWB~fPl8^q9R6U&#uS>O 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%0DUKpZyP@O~-1ENRcrH&c2 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