From 1b36b048971fe82aa661e68fea2f7c4a54d66ab6 Mon Sep 17 00:00:00 2001 From: "penify-dev[bot]" <146478655+penify-dev[bot]@users.noreply.github.com> Date: Thu, 15 May 2025 08:12:04 +0000 Subject: [PATCH] Add architecture documentation --- docs/html/README_8md.html | 131 + docs/html/annotated.html | 161 + docs/html/annotated_dup.js | 44 + docs/html/api__client_8py.html | 147 + docs/html/api__client_8py.js | 4 + docs/html/auth__commands_8py.html | 151 + docs/html/auth__commands_8py.js | 5 + docs/html/base__analyzer_8py.html | 147 + 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 | 146 + 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 | 160 + ...k_1_1api__client_1_1APIClient-members.html | 142 + ...ify__hook_1_1api__client_1_1APIClient.html | 469 +++ ...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 | 141 + ...ook_1_1base__analyzer_1_1BaseAnalyzer.html | 309 ++ ..._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 | 139 + ...1commit__analyzer_1_1CommitDocGenHook.html | 487 +++ ...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 | 138 + ...file__analyzer_1_1FileAnalyzerGenHook.html | 363 +++ ..._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 | 137 + ...er__analyzer_1_1FolderAnalyzerGenHook.html | 302 ++ ...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 | 138 + ...ook_1_1git__analyzer_1_1GitDocGenHook.html | 386 +++ ..._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 | 148 + ...y__hook_1_1jira__client_1_1JiraClient.html | 775 +++++ ...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 | 138 + ...ify__hook_1_1llm__client_1_1LLMClient.html | 361 +++ ...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 | 146 + ...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 | 145 + ...ommit__commands_1_1TestCommitCommands.html | 792 +++++ ..._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 | 145 + ...onfig__commands_1_1TestConfigCommands.html | 887 ++++++ ..._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 | 135 + ...1_1test__web__config_1_1TestWebConfig.html | 269 ++ ...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 | 131 + docs/html/commit__analyzer_8py.html | 147 + docs/html/commit__analyzer_8py.js | 4 + docs/html/commit__commands_8py.html | 153 + docs/html/commit__commands_8py.js | 6 + docs/html/config-commands_8md.html | 131 + docs/html/config__command_8py.html | 149 + docs/html/config__command_8py.js | 5 + docs/html/config__commands_8py.html | 175 ++ docs/html/config__commands_8py.js | 15 + docs/html/conftest_8py.html | 141 + docs/html/constants_8py.html | 149 + docs/html/constants_8py.js | 5 + docs/html/detailed-usage_8md.html | 131 + .../dir_063e2d5fe58a131099a7fe4200cca78c.html | 153 + .../dir_063e2d5fe58a131099a7fe4200cca78c.js | 9 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.map | 4 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.md5 | 1 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.svg | 30 + .../dir_1648a057408aae8db85b8e3797335623.html | 137 + ...r_1648a057408aae8db85b8e3797335623_dep.map | 4 + ...r_1648a057408aae8db85b8e3797335623_dep.md5 | 1 + ...r_1648a057408aae8db85b8e3797335623_dep.svg | 30 + .../dir_624fa2a8bce97f0444ac5cca335d4e23.html | 153 + .../dir_624fa2a8bce97f0444ac5cca335d4e23.js | 9 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.map | 4 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 | 1 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.svg | 30 + .../dir_b3b22d2ab7966b65f6b237e3231b41be.html | 146 + .../dir_b3b22d2ab7966b65f6b237e3231b41be.js | 7 + .../dir_f88c3381c1861b3f7ca1f3d63cf244b5.html | 176 ++ .../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 | 131 + docs/html/doc__commands_8py.html | 159 + 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 | 131 + docs/html/file__analyzer_8py.html | 153 + docs/html/file__analyzer_8py.js | 5 + docs/html/files.html | 167 + docs/html/files_dup.js | 4 + docs/html/folder__analyzer_8py.html | 147 + 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 | 262 ++ docs/html/functions_func.html | 231 ++ docs/html/functions_vars.html | 148 + docs/html/git__analyzer_8py.html | 153 + docs/html/git__analyzer_8py.js | 5 + docs/html/graph_legend.html | 190 ++ docs/html/graph_legend.md5 | 1 + docs/html/graph_legend.svg | 117 + docs/html/hierarchy.html | 149 + docs/html/hierarchy.js | 18 + docs/html/hook__commands_8py.html | 159 + docs/html/hook__commands_8py.js | 7 + docs/html/index.html | 130 + 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 | 150 + docs/html/jira__client_8py.html | 153 + docs/html/jira__client_8py.js | 5 + docs/html/jquery.js | 35 + docs/html/llm__client_8py.html | 147 + docs/html/llm__client_8py.js | 4 + docs/html/login__command_8py.html | 149 + docs/html/login__command_8py.js | 5 + docs/html/main_8py.html | 147 + docs/html/main_8py.js | 4 + ...nContext_Penify_dev_penify_cli_README.html | 245 ++ ...y_dev_penify_cli_docs_commit_commands.html | 256 ++ ...y_dev_penify_cli_docs_config_commands.html | 287 ++ ...fy_dev_penify_cli_docs_detailed_usage.html | 281 ++ ...nify_dev_penify_cli_docs_doc_commands.html | 364 +++ ...dev_penify_cli_docs_example_workflows.html | 240 ++ docs/html/menu.js | 135 + docs/html/menudata.js | 117 + docs/html/namespacemembers.html | 290 ++ docs/html/namespacemembers_func.html | 229 ++ docs/html/namespacemembers_vars.html | 216 ++ docs/html/namespacepenify__hook.html | 167 + docs/html/namespacepenify__hook.js | 56 + .../namespacepenify__hook_1_1api__client.html | 139 + .../namespacepenify__hook_1_1api__client.js | 4 + ...mespacepenify__hook_1_1base__analyzer.html | 139 + ...namespacepenify__hook_1_1base__analyzer.js | 4 + .../namespacepenify__hook_1_1commands.html | 147 + .../html/namespacepenify__hook_1_1commands.js | 38 + ...y__hook_1_1commands_1_1auth__commands.html | 230 ++ ...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 | 312 ++ ...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 | 568 ++++ ...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 | 280 ++ ...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 | 243 ++ ...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 | 139 + ...mespacepenify__hook_1_1commit__analyzer.js | 4 + ...espacepenify__hook_1_1config__command.html | 206 ++ ...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 | 170 ++ ...mespacepenify__hook_1_1file__analyzer.html | 160 + ...namespacepenify__hook_1_1file__analyzer.js | 5 + ...spacepenify__hook_1_1folder__analyzer.html | 139 + ...mespacepenify__hook_1_1folder__analyzer.js | 4 + ...amespacepenify__hook_1_1git__analyzer.html | 160 + .../namespacepenify__hook_1_1git__analyzer.js | 5 + ...namespacepenify__hook_1_1jira__client.html | 160 + .../namespacepenify__hook_1_1jira__client.js | 5 + .../namespacepenify__hook_1_1llm__client.html | 139 + .../namespacepenify__hook_1_1llm__client.js | 4 + ...mespacepenify__hook_1_1login__command.html | 197 ++ ...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 | 177 ++ ...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 | 796 +++++ ...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 | 254 ++ 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 | 174 ++ docs/html/namespaces_dup.js | 20 + docs/html/namespacesetup.html | 346 +++ docs/html/namespacetests.html | 147 + docs/html/namespacetests.js | 20 + docs/html/namespacetests_1_1conftest.html | 131 + ...espacetests_1_1test__commit__commands.html | 139 + ...amespacetests_1_1test__commit__commands.js | 4 + ...espacetests_1_1test__config__commands.html | 139 + ...amespacetests_1_1test__config__commands.js | 4 + ...namespacetests_1_1test__doc__commands.html | 747 +++++ ...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 | 139 + .../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 | 140 + docs/html/penify-cli-documentation_8md.html | 131 + docs/html/penify__hook_2____init_____8py.html | 131 + ...ify__hook_2commands_2____init_____8py.html | 141 + 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 | 169 ++ 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 | 147 + docs/html/test__commit__commands_8py.js | 4 + docs/html/test__config__commands_8py.html | 147 + docs/html/test__config__commands_8py.js | 4 + docs/html/test__doc__commands_8py.html | 167 + docs/html/test__doc__commands_8py.js | 14 + docs/html/test__web__config_8py.html | 147 + docs/html/test__web__config_8py.js | 4 + docs/html/tests_2____init_____8py.html | 139 + docs/html/toggle-alternative-theme.js | 11 + docs/html/ui__utils_8py.html | 201 ++ docs/html/ui__utils_8py.js | 29 + docs/html/utils_8py.html | 163 + docs/html/utils_8py.js | 8 + docs/penify-cli-Penify-dev-g.tar.gz | Bin 0 -> 791605 bytes 973 files changed, 73086 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..5b654ee --- /dev/null +++ b/docs/html/README_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +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..a3b5c27 --- /dev/null +++ b/docs/html/annotated.html @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + + +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..787e52b --- /dev/null +++ b/docs/html/api__client_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +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..55bb3be --- /dev/null +++ b/docs/html/auth__commands_8py.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + +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..8694c99 --- /dev/null +++ b/docs/html/base__analyzer_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +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..8561168 --- /dev/null +++ b/docs/html/classes.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +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..f88fb17 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + +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..45685e1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.html @@ -0,0 +1,469 @@ + + + + + + + + + + + + + + + + + + +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..281d417 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + +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..689b1b8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + +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..877c41e --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +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..928b461 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html @@ -0,0 +1,487 @@ + + + + + + + + + + + + + + + + + + +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..970dc4f --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +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..7e33848 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html @@ -0,0 +1,363 @@ + + + + + + + + + + + + + + + + + + +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..fdd0465 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + +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..66d606d --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + +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..1169e85 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +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..0852786 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + +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..cfd4cf1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +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..c3e6427 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html @@ -0,0 +1,775 @@ + + + + + + + + + + + + + + + + + + +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..e898b72 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +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..09825ca --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html @@ -0,0 +1,361 @@ + + + + + + + + + + + + + + + + + + +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..7511863 --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +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..0a222fb --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + +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..d2a5956 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html @@ -0,0 +1,792 @@ + + + + + + + + + + + + + + + + + + +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..6ed6f51 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + +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..4c9521f --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html @@ -0,0 +1,887 @@ + + + + + + + + + + + + + + + + + + +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..08f5b12 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + +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..ca590e2 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + +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..13de5b1 --- /dev/null +++ b/docs/html/commit-commands_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +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..f600b7c --- /dev/null +++ b/docs/html/commit__analyzer_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +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..6eaee00 --- /dev/null +++ b/docs/html/commit__commands_8py.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +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..7851f33 --- /dev/null +++ b/docs/html/config-commands_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +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..905a5a0 --- /dev/null +++ b/docs/html/config__command_8py.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +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..fd7d999 --- /dev/null +++ b/docs/html/config__commands_8py.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + +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..4839d38 --- /dev/null +++ b/docs/html/conftest_8py.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + +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..a415b9f --- /dev/null +++ b/docs/html/constants_8py.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +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..0d65ed1 --- /dev/null +++ b/docs/html/detailed-usage_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +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..fe79c69 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +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..e1d59dd --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + +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..e0c30df --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +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..e526c4a --- /dev/null +++ b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +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..6464f58 --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + +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..2ad70e6 --- /dev/null +++ b/docs/html/doc__commands_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +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..2bfe46a --- /dev/null +++ b/docs/html/doc__commands_8py.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +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..ed6e9da --- /dev/null +++ b/docs/html/file__analyzer_8py.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +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..c775edb --- /dev/null +++ b/docs/html/files.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + +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..58d0357 --- /dev/null +++ b/docs/html/folder__analyzer_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +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..da63ac8 --- /dev/null +++ b/docs/html/functions.html @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + +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..461b5c0 --- /dev/null +++ b/docs/html/functions_func.html @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + +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..5262aaa --- /dev/null +++ b/docs/html/functions_vars.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +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..212c61c --- /dev/null +++ b/docs/html/git__analyzer_8py.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +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..4a4e965 --- /dev/null +++ b/docs/html/graph_legend.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + +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..df2ed13 --- /dev/null +++ b/docs/html/hierarchy.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +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..cef593a --- /dev/null +++ b/docs/html/hook__commands_8py.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +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..fd5f286 --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +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..e6c36bd --- /dev/null +++ b/docs/html/inherits.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + +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..c075098 --- /dev/null +++ b/docs/html/jira__client_8py.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +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..ae0b9b2 --- /dev/null +++ b/docs/html/llm__client_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +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..2dd860e --- /dev/null +++ b/docs/html/login__command_8py.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +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..c88742b --- /dev/null +++ b/docs/html/main_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +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..5205036 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + +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..282892a --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + + +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..d277f13 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html @@ -0,0 +1,287 @@ + + + + + + + + + + + + + + + + + + +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..201c404 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + +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..f206ae3 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html @@ -0,0 +1,364 @@ + + + + + + + + + + + + + + + + + + +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..49ce651 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + +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..e83d3bc --- /dev/null +++ b/docs/html/namespacemembers.html @@ -0,0 +1,290 @@ + + + + + + + + + + + + + + + + + + +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..f9bbb7b --- /dev/null +++ b/docs/html/namespacemembers_func.html @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + +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..c10cf1d --- /dev/null +++ b/docs/html/namespacemembers_vars.html @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + +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..2d6d6c4 --- /dev/null +++ b/docs/html/namespacepenify__hook.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + +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..2bae79a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1api__client.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +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..0555d7c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1base__analyzer.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +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..9e14b0e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +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..89c79b0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + +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..0b70e8f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + +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..d32a9ef --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html @@ -0,0 +1,568 @@ + + + + + + + + + + + + + + + + + + +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..e6613e7 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html @@ -0,0 +1,280 @@ + + + + + + + + + + + + + + + + + + +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..7b20460 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + +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..96906eb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commit__analyzer.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +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..ee8b7e8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command.html @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + +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..ceb69f5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1constants.html @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + +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..85c4ef6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1file__analyzer.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +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..2d5a481 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1folder__analyzer.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +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..798eedb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1git__analyzer.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +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..7f83b57 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1jira__client.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +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..6bee151 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1llm__client.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +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..0e48585 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command.html @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + +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..14d02b3 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main.html @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + +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..05b0de6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils.html @@ -0,0 +1,796 @@ + + + + + + + + + + + + + + + + + + +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..21f85ec --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils.html @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + + +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..0f64a9f --- /dev/null +++ b/docs/html/namespaces.html @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + +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..a18468d --- /dev/null +++ b/docs/html/namespacesetup.html @@ -0,0 +1,346 @@ + + + + + + + + + + + + + + + + + + +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..fbb7c3f --- /dev/null +++ b/docs/html/namespacetests.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +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..b2e33cf --- /dev/null +++ b/docs/html/namespacetests_1_1conftest.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +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..6897f38 --- /dev/null +++ b/docs/html/namespacetests_1_1test__commit__commands.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +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..284fb8e --- /dev/null +++ b/docs/html/namespacetests_1_1test__config__commands.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +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..88d4ea4 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands.html @@ -0,0 +1,747 @@ + + + + + + + + + + + + + + + + + + +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..3d070ed --- /dev/null +++ b/docs/html/namespacetests_1_1test__web__config.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +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..831dd46 --- /dev/null +++ b/docs/html/penify-cli-documentation_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +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..019a10b --- /dev/null +++ b/docs/html/penify__hook_2____init_____8py.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +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..5e2a811 --- /dev/null +++ b/docs/html/penify__hook_2commands_2____init_____8py.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + +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..0b2996c --- /dev/null +++ b/docs/html/setup_8py.html @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + +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..12e6626 --- /dev/null +++ b/docs/html/test__commit__commands_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +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..cef0d61 --- /dev/null +++ b/docs/html/test__config__commands_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +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..e52afc8 --- /dev/null +++ b/docs/html/test__doc__commands_8py.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + +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..1fbe614 --- /dev/null +++ b/docs/html/test__web__config_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +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..a1c6cd9 --- /dev/null +++ b/docs/html/tests_2____init_____8py.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +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..cc55250 --- /dev/null +++ b/docs/html/ui__utils_8py.html @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + +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..fba5373 --- /dev/null +++ b/docs/html/utils_8py.html @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + +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..e0bea8232d12ca33de616f5daa1759211285006d GIT binary patch literal 791605 zcmb4qLzpE@ux#75t!Zo8wrykDwtd<*X4q&%zv8oT+2m+>|7RGae!?-nRB%Vpw>Dw0df$?HS(LeC=iyLN2nwoXPM)X})pB@q z70?S!K`F~hxtaKQrau@d7VJsz@0FVj<%!7mAvj-(w8DX=a(DSRY6gl#{Sd}QF@Tmr zfZr0C=%0eDKFL$w*rT&*=VcC1T6S*oX-%Gbqb+iB;mCxUYy9yQoRx%%INr^?^w}+~ zXt3YNpj4D-evO9O4vnYe04IFIWFJtJh93fLu5~sp&D=78&UNI=|NTz(Jq|tvvwr|O zkP8k9+RXbb*3%%Nn`bbGG_imzHtwez z9QkSM3P68zP6|R6GNpeD)&WV|TYRv}-;5{fYiHk}!pJ-|~ADnQw%o@$aH}KO3=&faz|;;@gs) z=wByJ_q-^lU)Y#$o#2CS)nTG2V6J1Kmb3YLMypiY0@bM~1SEC6X}3WG&i7_@h287L z7-FTRnl!SYOq0JlOP~^>aW@mg{vwKPRoIJT;pq7DLp4GWP z3O`%6d(Q3m@pgao_u;n(GPp(f&AK$wTtOtG;#_ZFk@yc$of=nX^iTH|8L>VBXgghO zk}G>wEAYDY)Ti58N3i?Xf^<6<@b*J)wK>}8Ur^q=S4mmCt-Zo1BV9;79kS$%p+avb z*UI2(UR(|zk$`{4C$s!qa>qC4?h;{0;$+zIxaw1FI1Hs%P|h36qQH*)D;EA$$*#XH zr--G%MCVg0Npt@bdzc%4Kkt`SFK|uJi_a!%u4{iO_0vqd=-vu;FC#HWf%ula+M{v= z=zj*BRZ?bn@nVA$@mZlZoL0H|BHDz73(prR5hG-#>ZWyt!URv4fL!WX_er!7jgS^5ab{s$9M+4arfTT zRVj0j3+}TQDQcT}+PaMjM3Z^O*n8H`;B$=*Sz)qec>458_%C8SU0S%Xq1!u>fO74f zLV9lb`Ub0#O?KGwXZB-q)4yH!SykN}&wVUHlxTK3{dqTw9L>M}b~Lw$oD2JyXR);j z2#4&tqT$2T9x@S3!k~Y#KE)Gr9ms?sPp*X?qrqChOkJtwD;W`o6tJNW%4&GCws$c$ zptNeAC$Sl|k!|TZ=X4(@uh)vfF5xQaSM2{JyEAHw3>ws~8#1-Q4MbQx5|I0?;gwgWc2I$yikeEMINAF;>++UewEG%0LV71R(1+({mneiYLcyj$@t|8)guBLJU<58 z2d*-L>gx)tA%)`RrL6vF{cFe6J6m`4jqmqaW^G381>@|iYe>t5 zS8oW9rceL|_0KKZn`hDVr)(W=ypT0cMUN;H$m8U#Hoqz6Qx16o@a$sh-;ohaH!m_5 z$mbZ~ii9~qA5>QQq3Vjt`(Iq%2{b2qQA_WFp z*e7@Zn*5tzxIC0Bp{d}AwU!=vTVP-Bw2sDTSu4*#jYPB!f`IlY-`J5_&5zSYW4aZ< z(L?Lt8`5>}?scenRE?MKy4WBy_!b?6{Uamja2|!`ESL3rVDo z52%HNC=kE{$Y!Y-=~>_EM)iJK!c-J%Muvd(Oe~IHi{;iv3G~*VJ;r1CoyYPalezcd zAVoZt2qffn|0*xao)4s(RRe|W0sE9GtTrPS+nOx|Q#d)89SDrn*%SYb?2yu5b*zrq zr|}zPGY?d&6UvCQwM_tgIf8dhv&1CIZopKw&4mvuPD_@YK&B+A6Vn66dH@9iuP5~` zczWz$`6?4=Kz<2ti?rcmZnQ4R_E8X7J$E2jJvb=6`;MkJZugVXIk#(yQm~Q-@f= z{=<3znhKqW&?OxSVnI+|CxYEi;H6MeD-_^~JYcAT3aGmH)n}?CTt=(0O;m~l4VS@R z02+tl%esLOLxySuqyR8AE#08iK0^Z%;aMCCIiIw7mduch-7uFZy;$rIIujYU(PQow zhu?DGcF=ZjF;UiMbST+T87p|*T$CuS&L6`JHq4`aF-(B1S(|tA7jmZAmbMjsgUPgQ zH8q<_cmhm`j1&(%liE>UA`KiZ%WsLZ_L}eDe{(Iq6|S3pn3|pXqSSSk7C6`v8=P^9SwaSwGmhDUu(Wx;^7t{G`_63LLAv@%ANqI!|ME9_O z&NQGn5B5uR>DZQ^VI1j4M@pNaDLX4V{^tq850s(}l0Q<1%n}>WIJr!9{$&kVtZmB9 zgID}{dg5~)w>wIn!1NA=r(8{L{KS+lGqmF6$IkgGKWq0rM1K(2{n5YK#su_dhX%NW zLw3~xJ6yGKa(qD)Yu@Gk0(d|T&#M_#g?7RahAtrG=HB;xzn z;BkV1lN7yPA5V-1Ex1R+%w;=l8KXY+IUQyO6@H?5g8Zth&5eKi$b@QLA0QN8cy@71oC%j^Wh$#N_k1$=pk=Qe(Q0CK~T>!6?}LfE8=F)Amr>zSGf zg9Kn^ID9?h#y%G!# zKQCeIoC9zAqQY|~e#U@ydTKe5U2~q~s?IPs1SUxDGzlozmyng0PZ!5Ghq1drliMcZ zr&PEaV9T+z2~*j`)6%$|MS)DDJWZ_C*z@NipV&zk1T9Aji!#`GP;DyHb;}7?#$0rm zz^t0$g-PJ|BQjM-Mu&+mvzk<~l7D(Zbg{FMXuH`69-2-TiZRE$*SXoPE=U7GLi0kq z^@ER&C2(ieT@<_m7L@`F3oB5!DkhSg5|_D64kFHJE$reLJEb*rucOEVA3{_UNza`F zq?uzZI>;?jfN(qPT8GqFf*NB*uG);A3buYhhy2$utO6S4s<6s@0g;Q%p9n7F{NT5# zEG?Y2<@^&I=0QwOSbgZ=(&23($L%2EOA^bH4ssGeL{kCQXk?L!iFs&Wno*n4%tEtJ z%Daz;%VUGNa|YZAIaRQF$iGqcC=(HeG65`IaUH8Y4;u}F%p&sE;;xXONWv<-FN#A) zTjsYj#z+vdJ*m?&cN_UFLT9oy7EEi=LjZsUrj#O1(g^oJ?2#hsT?gkT4%18Ok1Yg_ zE;Tb`H3{JNnoevcg53h#Ks0eYvLTRl4QK{Dp8xTX4Bvz=0%A&xMrA@w@mf+&nO2HA zzzK8cx&;HJZ7!QfF+%>z{a&QkK*Ef$;Zx9o({Q zIIoV8*eMKd43Bjtu(OQW2qXsLP?X*7c?WM7EDV1~q+`>(6ea&GqmE0O;>|8nO)gYM z5(1wKz0iS6$D^|mJ;n+ou6fCs7Af@ccZSRgSPDB^<3Y- zfLs()#%d@-9t<97H0T}>C_$zJYkn7XwymtriVpd!RCAP^Scwo)Pvf3@4syW-tQa>k zdZkPps{YIb0zLNwJqi=)Lk&p(tZfE_D3}>Ngd%l0iZmrEbT~#gTfH+*o2LG|!Fa)+ z**yoQcqGHy-j4PI>+GFhSz1Wms*-t4RaANvIA??-QD{WT&5OjuJ>D)&0bR#WdyO#F z)f5ui4#P0>`K3`#fuN^Hm{2}%n>Xo5i9o}2w_YIqD1Uk{@a<#$R*+L3K|dL2EVpp{ zg>06;_xheYtL*!8ddO|W!oof?{TY-~1kNV&&GBarUAIo-&<0O7b1zHes1{w4EP^8? zg%t7{^u<}-cs9@Sx4VW!##JFJx#lhJtwA z8a$10YCIc66tff-J6{7zlmJYaCR{3AO0*Au*!MR=2B<1DsD~sWJv*0OVpt#rD6<|7 z1+*eTIH~8UaTihyEm9jV4UPL=wKU9-xNSe8`3Q@hng~g~khr z!1L_Dq%(?@xJ;=|98t@H;s{?$47>;xHGGk*?4U=4?LJI#0|eSpj_EKDFieXuDp(^a zw29`EiC=eu7@(z$8pci551V;Bij&E_7P%CxTmyi2iZJ8E=9OO&G^tCBERj(T(3&}B z&&Eh0Vx@(P1KY4MBUZNLBiVznvE+9Nj#Xq(54UOu8x+-qBfKYGrhV!z|H`B!@&eHk zd=DN`^eDD~DZNltbnR=`prljvO7jV*+V6 zWl|*LqGuD=%;ccI>pFF%yAC@pQ?Ibg&W-rbKG+4Qv~r&&@6;@4hpl1nGg5F$)(Pet z;gRB#>~oo}9o1R#`##?;p+E59_k{34g{F1Ff0c#Py%C~2&Gu{0X@9qQHvGBfCbZpJ z`8v3)0O_LHU3%2JZEcv`0`92HRTxgT`%FW=M7WwlLD-Np_Pd>ne*`n0Chku>HN=5e zXr~ONQ#uN^2l=E_x+z%_KxGh8A9~mXtrGK#kq5+Tdh~3sG*`*%V5Eizd@i}2msfGl z;czUWwcRo$T{VSzOf7ps@IunaE|9jEuB4wwNFiDop7o+w^RgP#82fCs6QY)ATJ`Gg zIlB3&qsS6g2n@&Wsp`GNN=fx}y@}Z{SY$G<>S5(SVxHY*C+=+i-jLpuk>5mUr&PCa zwH$poaMH_hpH-4qadmt`BRqXSb58Hr?FzY=<}HpZ4HDEr$Fx6Egm1@bKabp{Y4UzC zcUY;n&cN%v>W~(v?DaU%o%78$-%}Qt0@pozWUqCPo&)PWuD9(rwfuoIrG0H|^=z2Gk`5N#x7rl`nr9VpOK+^N=MWG_75!15 zQO5j5ZLiSt`EvvLmSm>uyyf0W{@>If&Bw@igWd*Wuc{N5fHfh!df@nD4<@Tg_ju1G zdy_XZ&quIWXQM38Id{ZZ%v+Wg0q{~OtZxs2d*>QJiQp@pk@Qd^PhLA&mYT9LhVm@Q z2ZVE37gih*5f3j!751u=I|T>5>BNEO@_ibK?~LY!oaTjaCLz>Jy*A)MZ8$r-wUi<{ z?}D^yp7@B;s2b|(+udKY^D&)DHwawT1l@ayKqqXOlwmMaMB5vBxBsbZbj~Vg0=6$Q zdRX^Re(9h6S4aoZ&wJS4siAZw8%lp_t3>G*xNyT<7;??AJq-3KQ9Inh{mgKXAKyf* zx+mCaW*-oGSSkaoFogci7h)s*|ENA)ro*own*2y^mAiy8_ju4j0&3n0HtUARuXQD+c(64PLd3Q( zksv?VDpNrhOj&#maG?zP5)H!TAN_-KzR--g<$AAU3f?o41U#}Y%`9*!l(^=M6l}0< z{?oR3Lb#t|w?Zxt8R}Dl-MrWryhmVufzeRFIS7boD!)@!4Yhjz$g{u$^({wl>+IMq zRJ8?I9mvljyS8TYu~_X|&$iNpi(6oO3mjV}QKxKPc#Vavf^Xk=)d*NpD~E?u`H3Rm zWg(5-^Uo+#x2NV|d#XM6&FS}9sN4j_%E+1Kt&WaMM8E%Y6PB2XAMoi$)R_$0#CYSh z3TS3V^my6NE6L=ebz%6Ys9`+p>MBt(6oqJc)(^qxyDgeElU$JV@wG#BgnS0RM?rv~ z7fc)>Gzm)SchsK%!WJ~N5XgM}8ABPLVBvz~EqnSw8h(A)%$BzrhiFNVT;X!oBs_XV zPy@=h0eb8hluRVE_!59F)qn`%vmo=guY0}mU5gR{L&r&ZJMtX)Zew2<;-)&s=Awrg z96@2WI4(QGRY7@{@`IU$%wSejb%0gLYPJxSr#{1)ImZ)m$jCCN)*X#oh`Ad?KA)s; zMBFVc2#QA9jl>Sj4=byQxlgEPpM^p$hpHdZNFEPHiQcmR7&(oPdg4&HzJ1mc#uJbL zn>_>_Ej?Y&B@YrLDrar7=iCfVG#Vr+7K=>6`F9+#SD@6dZbl~9Mip(mGc3iEiS=4L zje4K>oDjA+u6dOX?F&c2IJB`UPg7aT`gZV9jH`y_mlzt>pEaxZg0H7DePLzR2Yw#qJyZG5&kF#|VLvrI@wWOd`($MDeTX6l>suvj22=p>$ueokisprCADWx9 z?iOdS44QcL1}l5`uKe#O$2M?@;GVejvbUkdN2W(fKh!dR|<-ZlElCPF({Cy=Nh)|??JRfl?E6YVvSlTl~nV>*? z6qKto`eDRQMx4x~Tkn$k?H-enUs*d%H=e6*^&vJRXJ*CFySgN%>|!HME$hS*dlB}& zUv@H!RH+e(ccGn@#@ua_pC|ud_&bYbF^U5GvhfRWu9EFlU*M9ZC$nkQtn~djy12T$ zbf0K>DDL?Kb+*0PJ(xw|N~?HkodP|h-qnxrq( z=*6u_iKTDt%jk9VJAPlVy^7~ejBrluBZ==7ZOoqH@6TY9{@rh#O`ke7N97%@8(t-! zN&!P!O6c*XRh*##>Tbv@!AG7GoP<(n$Ys82FotLG?4*!~h68S7yQ8drnK z@)HIBXKSkpjr(0nC(6q5`}_;b@f3ySya(en$=kUDIRe6x(m%MY^E7wMS{Ju+?YWk{2iEtqcA)Izpyf50UO&cdP0~9 zn4v+sTTZ5HRK2w#(Fff)gVd0~8k1enHXvTEn2b{8AtQOz|k+QRsD=}^*` z3~zXaY3hUH;mOiZw0nl68mjqDz9G>7c3BIN(BG9l3ye0O6?~B?&q7ETV}fY;>~$?~ zn4*qI+}c7(sN?1ZS_qYWNbMiVaT2iaz6B~eb-R-(V+!>IM}$x`*n@R_5lf-3CGC6s zMG0}e^b1~Sf_us^hc1E9BJwlEw)hEEHf2Qq)3K|{2|i4WziT=I%&V0v%dJyM8ECAe zhxpsmP=^bQWWu1+BQ0ig9Hc;EZ@NU(Cr;wONS{yJV6gg7=&FFpx%* zv~XdiCnusNbL4glqKxX##<{!K(H-*bC9O;IVeM*!u*;zLP!dRu8kBcAdtB*xWC^1b z@w(rt>XF7^WU@<}XlI>jUUI3eX>^w#m;G85N!XO(-2PhpEc4A1(fku2;36Gkh4cik zXK20fsf4$*^AciLUn*Qx@MlnNthB31c+izo0&KMHoAKP@m+_l>8r)S1HJo3CUum!A|~kEdRzO?31b-qyRMHQ2pS?@{=@V7=zq$ z3TuQDrYahfxP;ay^~ZV9hp5~N!(>q;Z4%LPE$gPe!GYA~hqU2yocr8!V@cq_QP%hj zV`3o_cyc&$4Yx$_JEC?haeB#Bf4Hx1SqvFB z6LidYz#F_Bh>^eOnP?6GlDPyyvFDdom8=y;)2OP56?)DeQ9W>JgV69`Wa?CNuzmr$&@#wX9a0%Ik zd(Q*-BFu^G)-muCezguHEAYS|uI|G5X@bYv{C4J~d-VHK#o+m7ybFnHqK1uG!1>gx#vPkz$ab!riWDDBUMzzJ zRO86mHLCum^S0Wbuz_^h@32V!bz{>+`|gJ-H0OMjeds{VVY898c}~MR6p^}ql@8NL z>WxUp6;J8|NLwcHNUuq2AxPVXA5dQR`#{zb9Cg7Ws{b6RqCJb-aQF_T{nu_iK+22t zMRkzShGAsX4SGs|G7g&{nDy7a49WFVQ=g|kkTAHkh*<2Cg0pdl0vGH=FA=*xG%4n?gP&8_uSvx_nvkOIzPlo77s^IV(xLyL$O&`J8=j z!O676j3Nrs$Sb!jZ>Vb3H|uVHQt;ffnOr$>sy|i?SMAH$g$fjNltnUVi@$I@Bx~f{ zqdl-`t>E=50V>s9g8)s0OMIuRm21Wl9ceYLgXaDO0=WfeUr?nL2(G6}BWj(uT?5dE z)1Sr9Y&PF2)h{Oy)bIDk=*ySqnop1KAH%kzoL1kT+C$q{;16TK=6CP^0(kxz@Ok`a zrI!W8`FTu}Hig}?S0(r3O2k)oXSfnTu48HC+F9!Pf5)3*PpN0@a?!QH{(o?LfeSd{ z*uSJQacDPwI{^t5w4ngI0EjjNLo``VOxJR(=Mg zF*z5swJoadbpP0}mU2>v#4oc+<+QB+3ws%hlPom;gIuMIgNQZ>d(d}(uqG$Bi=Vmt z`;KHsu%mFZH#MMl^v!S<*kasq{Rkw5hmz9Xe9PTEyuGVLPL}IiV=y8WYCL1!r-{>0 zNF2+`^2_Chh6ph&9kDpQk_O+J!2MC&0?#@F*3Y_ zYHL2*D_{Z@AWnE}BW_VoxK#SFPG1$OHt8zo^0 z#vcJ>2j>FXJOh*r`*2c{f&4Sap#(Ugg1LMG{w`mS{QQxlky-19un+M#b6!74Tv^mC zUp4k|e4RMp&9a%64^1<`muqFVSdVUpjX+^l!6gM!q7_|{XD1c^| z&g;|q6B3-JbgH)w@niS*@TIk7r?Qsu4Wv(?+Gre&%hDnKQ!gQl+{n4wz;AFp?`x;z zt4Jn4t&~b0&DM3v92mv@BJB{sJvRD=7|j`XYp4l zN_Bh8iO)lu(S7ct5n#V@M$sbONdEV+0`x&V4(MCP=p(nHtse4;dER)j9%9AW7W(XO zSr6~5eBRlkPK)KojyYN*>5KIE>L3yXIjh-KBMB4<34v7US-u ze@5thCzP#Yj2>DEV9;jpCGT&QplWcZFo5(-GP$#YW`MHD)22*10@qS{x+xN9#4aam zhoP{5z|CW^q%U2%-%$rhok0~L9*@qYipKw6wCf+ z-W5MK_ZaC05EV!nS!9{h*Qy;KLqDsegu=Fk7Nz=R{qNs{a)h+?=$4~(bsntm?4&g!^JuXP_1zUhMHvuIu6z*m_@cn@RVwIH zEzc%7J|qY!1S=#s7C%|yjHjbZaNm2v?L$y#B6>ckhf2hq6kfg#*OgGy->$!x-+Szp z2V1J486~^kdWsk}Q}emfAckJVI2&VHZA>=}PBcI9{F^l&EB$=@5x0k)ug93tCPO)` zL+qdp&U~Z^5T^SgZ_*6+aZG8z@t72J(kA6LZEsHzTb)+4eYrW3JcqB1e?q@;r`CJB4gHLfmfq z@%-1EelqSb^$L>QcC(bgC1@&qpunYzHoM~!Ny5`1G{NA>+rxZG8n@jU)o^9Ai@}Ma zMW$f3&D)~(bneXc`yyTzV}|S5hjGG?^jS=m(a|P3TSGW3#+5^VZi{9kacsWHghoSZ zP}1dN={ZjTUx13^$@RNxPH8J{2+t&fb?tQC%r(vu(HT{J5u$fEnwu2$0=XI*SFDKU ze{!Dke44$~%=H#Q-QNRy#}j?(LyJL2Ru*|aST0@H(p+GMu55?y3^h} zlqwQ%lD-ZUxM>_)#_X$g%!u0He+PF z%^2NQPgHIn+c3z_eW-_^{zy7E@n;N&mQNZIZa)|M$#$8pckBmn{MG4jm?$BT<^q@X zUK4sIXDk?YBmmeF^v^+xtF-htm zVE&LozySX24Zubwhx)Rh`2_yuCP5;o3q^JW8}dQbR{t*q_0<>o8!HIpHO0*Ti2dpE zM74kxqAlGZPx)wCa-ic*QI+tDBv!4uV+x3+x15T(P#5G(1!lQG;7 z8Oh*3J|Pz)4COdg=AA4ww z+pL(!9nmf3^D+R*jS&!O;gtCCKN|~UTwmQ zs>Eed!gaj^Rlm+rtW}FUDH7_Om0G++DiKdbiJ^Q9QyQKWKI=Bk7*fI8KT&`-gkVtR zeBF@}Ry)K268$i8`ATDrpLcrIfDesC>0QQFz#C9p_;^p9ZOCY1<3h9T*bnn0j>?r1 zNxme{@Jj#7c;#p;D3HlNhVR)bV4|+fTe~Ven}IuEUHZf!sV{zQcQrZ z3Rjr0=}L4Xd>=LrpATu@slsdKs4-?d{f@HMLbiunQzy-dI%Psw)2{yfD!YkQcYbs@qcDsv_dtrDJ_|7zZ(0Xu-J>`EW0li6rU~SDIvaP;HLx@`(=Wg zvGgI5<1ObYpMWkiqS*BpWTjdX)6ReO2JF~s?Z@nt^p{dF9=9Y+IikdUn_kXMxlRfZ z&P;hT%#_H~Clpy)bixev>gOrO`6@HDHP~derk5JC*7wPxm&q(bi~h-^R|0e(gN+ky zMp@I7ZAVQ=B>7jFa_;i(O_Z|E_m19mWa*fN^*;tC0N3si7K3d8l zDN4Q4m_%-~7<$!_F)*_jTLJKe0x8u>_G#gbLlQcak{DC38npt~`a?VDeyw(a15y8J zv5NA!qjQ}~>fq$;njG7Pedd#X1`S1>*JS@yQD!EK-@MgQiP{E@vYvJ?+tV3{=DcuA z%3xlILs+^Jfv`n}ZBMAe<%V)YV=a$Ff6Q3uz`qL+;-cnFIjoR*V8#| zSmQiN*K$L{_9MNd2_f7GxME^|A?POr7o3clhE}3k!qvM~MrsA+&8j0@4|+zRG*$PR z%!z@eXBS#`WT9H`1lpEEu9Km&cD%!gqp2UsDd&_AppL5^L!{GARwrxc)NRKp!Nn?k z;T(zj>n(WGvU_!`z!cBL-YUl^ohHtt{>J7IQ)ZoJca1w7Ye+3vZ{;-M&XD{j z%b;kZf|vz7v{dBT2)E6^;UQ*9QaxC{2Qb^M@Vyw_>5>{#4-v)a-Gn^)3Msx36p77d zjIdqbu&rvO9anGKz=^Vb=l!l#*SNK9D`0jY=2x9t>%*6&rNpSQj_!z+u3f=aM#{Hb z{W)LEBpZRceeMoPj)=5rrtC>{tt}8AZPxj`XCTC!v2Zf*-}pEE{`4)baSFeUMg%Sk z{B^J`futSoPuY@8xmp1COMMB$mxaM9gpaZ4iC9N*`l66JCyxmXc1Bpyx&#K!1V?F! z{%~eAjQd{p5?06SVQBF&jc#TzS8jF=y_y(1x$zyxiN@cGpPx=KhsIk$@&rWqS1^jk z-S4qQ%s@ov4-ksB1=v?Fz6)1R{Qetz0zOX$uRHAo%mQ=>)oQi;4LhARmF1s()Sud< z49UBItRr4FA8q`<`OBBY(2j|)71pedi{HP-!r#O}xjsoQLaM+JR|56|ND6|Xl&v_} z>=j{Vlr3zG(e;;0%ZWZ#+qNwxhH@~J&(r`YHTVRaUa1u9JOiCr8B)OHa!%>B3q*02Sr0MCH>A&v>Vr-{+K6PzUc_eTt zTF-)JS`~@rKkZUz=1iUbpO^Cn(RTq~_t$JHVZEF-UGFbOX1H{3#BT;ucfBYnSMNYF z#;54r8fY=jny&NG56;36RC}U!io7YzIMqQKjHO{0 z`d#aoiaD!6h_t>YfXM^M#UdD?oyGG!#cvUjdGQkAG6l?eFO@#u;@H9!v&ZN2TsIF5 z??hEom#i!~n;fjHq#>V~WZRJHjKv6~9GBa}HD6d0t< zm4RvTz<(ed=%K26+ZO`D2D%8ORo#7^MCn&@S#=l|)J!%M3)nC>!0N&K9l z61*p1fHoB3W$~GrAa*LxwN5H@antB6+q-V@<#(?@Kq;A0TPSe05@i4K;alTBfpLqd z5S7295P0yn>vE-&fT3>+Mn;tnNv_@Ah{9+Lt|4n1J()`dW3DQ=f0TVCHV6SPmxHf~ znG(w>W(~0{Koc%<9f+t}t3T%8B;T|ph9jaJP!mlqwb8bB>C~OPj^$Ec^IfCTF}S*(jl?&qvif69#4BLrJkYQ6`~`uHIRxmxV5Lw6xF9 z>tsfT0Na{v^Pr~dM2;>&Gr*`==0M0~HC9WiZ_1;^j9gfPt;DIbB7^%ICE1toXUGZE z3cTGB4Np)H+QD=xmRDqREe*f5ZxaWbU+SiPy4?wB)EZX;X%jSVIRZa3HkHVUoUJ~| z)c%j>&0PdO>ba`jbS$5F{wj*Vi3F7?BRDwO4b#~+RhEp``CFw;9r$!a03GW~|aC!w4aaZ(bmqR?unk$4*2@fhbTclxu?2NQkFxqcJq#)8Wo zn{C;TYJ&jzT-su)F>m)p+7t_pngib+ZWQ`mP?RdbMZqe@gvyJQ^PaDfpQ*{keDa(= zwsKj9M=jdft=trhn7zwRx<*ReHij_;W+D;#hGf1Gejm~vqtwWv6%*l(8{&(i%4k!` zKeMl|jEYv} z3@#QNFW&bSj+C7L2p-CKYkveBgcjWjjGX-OcEiq$P(BZA<&+X9#gsoOx0ZZ}oyTsF zys)4gkRD&57K)mT%VcXFp-iC(>q1W*by6jjN(Q@oUyrhp2NFfXC2%y0RuALw8&*E2 z#;qcv<#^#dE)EmcZqZ|1J7BJ-m8v8+u|=o*-A8pkaK1yd*c*mM4CqNbakVco_uHT5QlJlaJljPS$#zEM)6d4 z5c>C|9WW}Caw0`oLllv0Uem4x3c55+h_c$?|{cCkyb#a3Y>i(VD10B znm>l&gUO47hc9Rfb>_+uehU((IQ_$d3jb z8TX)r$c)s8bPD0gzb0fN^vkD!ETE_$K&^eCjGps$wd|T_;v^?xCJSFKHj>d)4_2!4 zQ3}Q{vdiKhXMJ0X*jDsSS6Omd2|>)iPj~0q(4L+qN9TnkdU3tQT|tL>6RIQ5X+;~f zskGWtz0qwv_BhWU*N5($=S_Uuy3%3U zBpsj&{h6Kq$1+YU&jL=$XTPdt6k#3ovbi)2tEX)a&T(^A5+&nsJne`x`ce|OV$O_iGG1vx4O#;M|0qiHW7OXi_0Dj=sHcYwfSn1K z+<8gqfQl2E{*|p{-W(-=*EvF+{^sy%bWWT=lcf%19g#YPQS>{cf*M1Z9d&mSwLpyo zF_P1QUZxrXA~nkXdU+*?E}ugXvHz@QxrLxQqW4hERl>58bHnR_d6-2#@j1!ZGBzdu za7U8=o$x^lv&^=WZs{07V@^ zC^uk4#TuH@8uEXssj^F$??zw#YN?{`7d5myFq+y+p^lNMZUYmSrOb5A)K*c%NybY_ z2n(Jl7;kTN2}J6_mc}-?--iq7CX@=Q90@2miuo$#T0a!j9}C5Sne-9D+`UbGLBS3- zxJ5L)$##28|M=c9vE>K4d)4f2=?Z)03|7)@Y;WO{r`ZT6yy`#|5164fJ&2)%jdoG% zQSh;7YtT@lYuCLe&835Dw&=9uQzguAh;xsq_p>EtHYIqaomyFI)3QQsueAeKg+Su2 zcuuPsRvF!jhp+fh$fPb$X#)RH6f$c5YR>9IF#lsNZX$i6XHW#V3HlaDz&-;?Z{Q7; zZX;LabHUE{&E8jo`_7AL z;?KXDy)O>AzOU^8UKfVIOQ8Q{wcym}yrA#>WJtW=bETl);rFfY=?~kk=ewpq+s8`4 zkH;hSr{QNTXYa%9f4^JAOb@6FO);H=>8ccKIP z6>`^|WH0cz_bu`@;QRFF)hFlkGyZF~wfCD>Fz&hgec_VnXBj>hxNzLO27RfM2V@fb zi*4+G+aXYrsr+nHtNz8bRQ1C|Y3lRS8&RnN%;homjCydp_)c2Fx4BK>#0duiID}Gn z6apl{i_T}hz_xJv@#Ec{uxiPr%EGLa$OR)l{`leyxw?GJwGI{1m~sQz$|3${0yB?% zzHdcpB1xfDdRLMT*=l#Zt~JC=(YE{bKR9k6DF_|blr2`BPG9!Hr|5880Y)xbUM_!j z_Tlv`5m93Z_*_hM(vR+3z&dmQR)25cEv|hyk-A7lJl47%@0LhsKeS-s&kTEVw&g#- zIlEBhw2>}Z-{l?`XF21&sY}P}vfV4*w|vjTvb)g3dJc^egL7C8U722p_yC`CQXE)~ zOfkwps`Ei4hnt(`M(55}R8oHj-gEZu{1HSRsBNG9Vom!VqGuzuM;AK)_bKerP3y29 zcd4J}mZa+Fj?cTG=lEE|Zk=VUyG@5Nw=B5Op5^w@ge z^W@N3yx&+TY8q-KvbeCi0nP$@iPYbejwUM?g}=c{+88lrA`RlrWBNkcwuR!B`p5t36b?Kp98tM1p29-PG{rIl%D)vnU9+BoXhm0vhoWhn zS8kWsCEi?t-Tha^+$>)G7ol4TCL{%nMXP`U(J~6P!nmCL-4s|bw;aN!#>u=nS9SBx zm9kyIfL%myYWsbk=c4Lja|84Ll*y8=We&$i5Ulyz+||S8Gyz(PVMvoM`@|BSG`g;v zm^HT@+QSVnh+;BckZQNWF=JcGyKZy6Z^omDHwELb^scY_XX3ea*~YwK6ggLx9{0(} zN^!8b9^RwfT({J(oBR&3*Qhe-`y~={-Sz}s-=S=)0TBr$#D7Nx^j{7jxZLW-H-nC* zDV_?)wXThwvAW&x1Im)e%;wGN#;&6lZhs|x#ygUDmVnYtX{qkvt#4I z%qPRw^>a%3<1WLmQtQ@NTIn8*+V6S8>q*iQ?$dbPED7hi8QsjstZuv0{TbG5T;WxQ zy}IP4MZNF3Y;lQ(kvqFu=R}uoUSui#zPp@G$XW3fJ%R8< zUmnXH+tc>T0?&u_F-R*APk9`&4l(L?FexYpB?vI$#SF*_0-o`C`8Rw%@ zk8JNk7JE^s=teOW9udvw5rI|?S#O`BQn|}fbD@C@gMF(GxFR1R6Dw3vEtoz9%tM4g z$G@=%A$G~4MM%jEe6eHr+cV^@^_T`0RbpQj%)XY^b#shqS8w@H#x7svrT=D-J&aqj zb!&y9ll+O22}4IH?1u$ugYp44jhJ@=UYOfC4gUit6?`a)#}thP;ZZc#IAR3l>QCm6 zeO)(%v}kBiUxehjwbIu~($syAWCt7C3LZ8O6*vt|gn&^W3I`OYV+;??^{XCOl*x%v zU>_Lnxj~J>-`gpW_-{Uz5hF@wCmC_j<^T$^gSzDS0n$vip#e@ zuvfx3e&AXwpf%CL_ucw&#zPoFopn}}741rnlJg;Mw}+jOg}1y9xkT;ZWpCD^_5O7C z_l^Lg4;#Od2UQv$PcaF5Eur6$0mhF;f-~D&K}I|&!x?1arQ6Tl zTW%fU2D^-;lN-G zwYn|c$yRweu9%da#!l;Nv3$1raK4Dm7Mkv*hK1e!+N;#c{`8BvWb6svi6vz0@?h2f z*g@>8Yko0!aPR-M()BF=u)k*3)PRr?3yb$CLd(mR=N{A7@~abj+I+{+w$Oz+h>&r3 z3|3u00-BdGv&E|~v3F)yHuSt6{wXAGyM6Sgq}V-p@sT5oPirA1WcW!b2qr8=9T|6{&7(8+W+l%ZOR~vrCZU~RlTR*8_LiS<jR*^(zkV9x$e$DGe$>^^ zY7RX%{V2+Zx1)(br6F*-lvCXp%{0+R9kq1=+SCIBGlhKKTp4@AebawOWkPw}LpAj} zdRv^wmDs8Z-5jHI!!A=W_wn-SZ*5&9ogfieb*ifcYAj|Z%orco#fK@_5dF0dwS34_T$Ae zm<{Up^4&o5$+}n8Jy*et->Prx&{yVAp;5JdPnV@AGbq!hL?#p|NM5!v^DodVPOi32 zb1+g3ur6?a-gx4bQ5@uh(AeLL?apg}5zzDsDHx{iWHvgbS{088ZEl$wt0MCG;1Xk> zZc6GCAB>Xq8XsUXq$7idCXdi8NenlkOQ9R5I<40rXR)7?Rqj^7Pn!(IP&|Zka+z0% z-hG$34m~<-wLEk8c=FnJEk&iaDvYqYj={5D*_#--p%L-9*SeEV%t|@Ea&|FG!>Yx4 zTx2b>_UvPH0YDx1$WFgt0`j52J7&JKz+}eFJ_Rs!z&JyC4XPrYhI#&?AiUT+|$C*YoN&d4;Rd zdric;`n+9X)1z+TP_ONqVmG;5wx6k3lPgLHjmt#t`^_KQ?5jZsj8xZ{9m9weh6yfK7 zI;Dw|_d%-Er^uI-GGF`rB)4CLgGBO@=D#_l@C!TiD*m=et3!tGT6T0)n;l}TUsweT zRo7)j6l-}TjkhUAdNl;0Jq??fOkk!t=-o31(CBd$Dro9R_Qg73Zpw*TNE>2!u@Sls zH^6%LcUMgKkPqx=OV;U{6{T^@bH{;ah5fx0FaNVfL)xvxGcDQsc61nRpB3FBp12R! z7#uAN64o$Hv0eRV$=$SvoM%iTCJCYO9{JjN4JaaRNMzF}8+>atCD}n{{uGQ5!lal< z0?RImAL<%z#um=3@E-js9qPIWJbKQSQ_AKy@@BD7pESeIZKle<-hdCvA?*?U1qVIN zCJ`~~7WbJX%L=y}>4@AoUySJ|&X38%mz)WYhpY^8_y(>~;zv4dbm{pi;Bn|bxSe~U0?qK>iLVsW(Nl@VA!93YB) z+Wmd2=bI@$bvA^RSu~KRv^o~PsBy;xt0YC}_2!s}y~h3e-|`3169g@{_!wZkyg-z-1e zHu{J(looFV}J<< zsq_DgSKNbse~a(T=;l1mekOtG9 z&G5tQ7wG*%1T42v0A{Cc>_U9#;2_S)$|pZ~V^iYEn0O`G<$uMXlDNu%BVxUOZcV&v zey!vHLX4u`1PqvOjsYL9DW`tFeRdNGsP%8IpXJK?2PN7mZ=p!L*Zp@qt8QoDUHA_- z7g<#=oz2xKKh;XNAucfqS}f7XS)x&ivGE=cqa(@CEDHpaiICCV%Sq4>k}FxpPl1n- z{>^R_br2SvbW}HwUhj@P6N*AK%mSPl1p+HMV*<)k%q*wMq{NU=g;^L5sA35Idxv!1 z_aZ=oo;u+s&_x;3qe~fs9%L&4rx4@iC{dG^Hk(#g`G*<`-(N*+ z-d&1bOw)Qv+*$4NcKO-mZF_mi9>aDjufd`$zst$!5;CB{qKfy4Dk;i2NTf(RAPL9w z90FV}cs8g~5I66n&I#JB+O?(tRbC%)A8$`@gdd-A zKHsDKfWyensQlvU>TYHA<^1RQBfxod44-&!%YnG+ipc zutsUQC6qYgngMTpu^ihDcWFDY6e*E(bUiRH6j*5OacY3-+dY_xb!4g|O0o-jv-oG(6D&;<{lgD)vH zY&`U3C-G5bC90v2zfU59;du;yHsUB&?BNp1tyD^FF^88mE=$hJN8s4l3#Sj7X6rDL{#Ti?W*iRPB>k1)$ zK*jhA*xOK-u8(ca<1ljWLcKF4e||mIX-;wX$#OdqB;aetHJS4-1b&T~!AWj38gv%% zOlmq1+a5zStzlxWK-cwuj!xKy*X?sFux|z;CEn8&C}L5HSJLfeOGHQ}LY)XtOjoQc zw57Wg3Aa9J+}HdDmD%A*3ke-3pvSj5Gf)uy6{w%lV~LC{mcx?2IPywl`{v|F6>fK8 zZ>8r<8_@hDjaWE?v%)(LWHIvpk_{{&L}wWRS(`V}`e zASVD5QQoO@s2ON&WfSATZUGVT);y;-cR8n}`0cx|W^_oeyH2E-cS%)3ay>wiC)Ui2 zDSTx9Y|!4U1IJ0bwrmC66E=SL=z9IAG4*grBhS=?wC0KPc(zwL#Ml) zdNFPKMPFGocLRrv-KFj1!T#VP7b5o@gpsg+}RhdPK}6vH<94JgvMc+%>iV^q$>@}^TENf<@OKIY~!)8XPw9)Ule zS_q*Aw9zrqCi0XBYWGV2CjQz=Qgh=%cFXG80>-;mM@CC(%jz;jB6eovR5%k!G?` z+yyWTD{Pm9qVR?w0atoeg z#Ra_+cw3h1>O035|C5!qw_Oju(Ps;1p~SVa5riRHH2YZTDUWGGvrE4bwUW-T+S-#N zBhOZ2`y=TU%dnuzjMN4BNF7-6e=f`Oq82tXR!W<&8(0OU5$bEBzi>@w zy}ei`VxS}j3+Pub=fwssUQ%IW79&2+I6=Dup&IWx8rNy83Uj@$W40)UxPvyRgv3ZH z{8s~!5_szjVhal!Vafi!Jle3ijD&N&E;Lls{T9F2MV1{9pmkuv?TRY#h6ZzV|Ad?< z)`|x76`dXW?M&9j0p>>i&JG10{}J-PydtKxX?xF3tHRj=m3{@<<=0_Ny?Y?}@P_jf zh!P?e#6ixF2Av%WJ^my5Kh5$21Vh*Mf<6Y}{7gd>0mN3yYybya0g2d9Owe?bx*+}b z&C|C<(@<^?W9D0t?M!rrTt4rescr^TD;KPAxNoV6LJdk`QEpPrbQY;BPZTS)T2ql5 zST0|Y;eNGmp6$@iJ$g|0ZwU7uTDXesJP{*@WSTi5e+k7ASv*`E=lB{;JX6>pJMNXG ztWLhitn;$Xw#yk=hqvun0ggF1%676OLklH}1u`Z>lv3hCAv)vCP%FbBcFMAb{1c7d zk6LvBIK8jS++9FZ+I}P#25<_nvZy6Pp-KYL3AeOs1-Plz;{Nyb$F1HUfKeQ%S~&~b zIF~FK6XI%F0C)-~Qg(Iwlu)<5KXe_5O9xDd%!2p!0Nb!e7o(6}ao zX(CaLNAK53VE+Zb6Kp&=!~CL6ZP@}F<<7SOmS0>2&kx|4G@N(rJ79`-F_Nq*lyMeH zF_Q-4l|gOkJD0spC$DDc+ZVh=kg7Z;Po#l1$wa{!gw-@5F&0jANTgt{%Q$Q4(oly! z>Uuk>#&*Z`9i#@W0if34J`nvDEdV9er~=76r^{zDNC&2#Y=ZD&3)6eqDa+Jixw2Jz zY&Pc5gey#fc8GvViWbu<(khX06w3%V9c6acn^;9iC$CG-BAW!kp$6tf1``G21`%RK zh)~mogmZf6QHah6^Mvs(j#PfdRL(%ru=kiUOh8PUme7#`*$(|P`5Wy}0(|4%aIALyL z0=*0O{(r^qqnJR>cc!H**q4(5o-tC+PT;>z5u=e0r)kD}+(~~oa3HjLT);mPTnxWC zaP)Ix?37LIN0VJ+imcQ*nnbM<=jr4t)o|(NI1#Zpgoq*ALI<93wFt^fld>*BO#QJt z$Jpl+lgyAc!;2ZEqr3B?fTt?v;ZIL4x{zDo?7pEma|4)ybIXJjKK7Xfz(}C8^&HVN2+)U=|ccZ6a0>nMXOy!ddy8 zCY{rd>0`*p;)s@uw6kz*5KgOrYy>u2fp=$aipm9PH7(8G6=*A4yJa66($a#a?rarK z&kAhLkvJn6mWarDO1dE3YmggCo0f${tBei$O9Ty7+#-Y5#C2W^fRun$ulvpU!Il*y zzC07Y{PTXF{-{iVbee}-0Wwe}bn{+&q`1+!j;3(9#x9+Q8q!;uCh!URtz^g%2(xag zM#|{-2FYN!B6AdF>P7+(q`;vjdn2*yzA(20ab1g1_*3$vlWAPxfCiXrN6@h^ZO58pyxn~0p^GJ;i7BFN zkEXM1(Ikqgl~?R&-hM$z=&SP16B7q~fTC}wh4h+t4r*i3eV)cjwbAVQ4s`o(J2H8o zhaD|2|NL8;96F2+Hs(EI1!xRnC7QG4?Sd6wj_c0zMp9<&? z=y>FA3G4OJVC22RZ>?8`A8sN1m_Eg?c-< zoXo=1{!R0nkyZyJ4o9cJ*E%F&KQ<{>;_=R=1lji=$ht3YZ%Cuv501y1Gs&4o@-w6z_hn`A_tx{uL^Ehy0~&#;VF22&E9#BEZ6v>mBddiSz&Pv% ziytu;@O|y%7%`8LD>b@S2tcM$(R4edUem|}bbrZwmHYHKeAS`=wo?z9I9gi!9!aU8 z<;i8~60j#Nr>bJ8dk}OVxY(0r&1G2)K6(3Qb*KC|zhFnmYB&9|Ey~3|ZW;LXL%-Cy zV>9jF1h1EmSvlzhJZ2atk0DR{jw9`-`kyG)G+n38`a%iRzE|)I{4j)f@_fkd@Oqstq4MX5!oF7lXp6xRWZ?=~`_2Q|n!NEe<*8S+!HU z+?$TJTH7(j?VI$l+W>psKFe1o?W^>#ixeTs1Aa52oNB#J%*E@=6GPpH{@hcdF#e0Z z4`&Rohp%dZ7dM}+)>bj|gv;Ho@%!x@TU~~$y(gzNC&%p#Et=)VoXH}el%>%9W9M0c z7jbE#4++4f-=U7bMnY;AmAvoiXOja)@Jkel%DAob7j;OIJSR58X)?dhJc^?VzDE3x zdcq`=r`|jWOs(}aq&7G4M0T$l<)yEy3DHXhe34?-K#*GIC?SZM3jziJb23EdX@xG#GK*OnA5HcR{wP612`?ItAq6c{?@ zB&b@%X36{5hl3rO*j^{;Lwy!>SQri>l_B?uCf=ARg%k3`izaI!!KBNJ(^kLJ_>!KF zLXM0VOJWFkWh5#UI7}oTB12U4pom2V_mKuqsOvy+Nc@b0L;CPPuUKGYazoC<%(Fwl z%VDMalw1?zB%>jW-Yb2Sw zB>2f)roK}mCf)K#vQUhbfS-wMxm&gsX>aABK6%H%>!(=yJB5f}I$LTO6`|3DbV%4( z3zvi%eSFR(f=4@D8RNB}piQ$}tXreJ@BK=brDdlR?fI;GPz%dkH{ph8u|@9g&|N|M z1lrq$E7xGuzCiBxwnJuZDq#sceKTfZS*-`<<_GM{#k)YTI*@bU88poqcq@y_M2b*+ zltM-UTz25=Ln#ZC1w1<#6SP4+Ob0&*pOH_9b(d20>HtoQY>8Z!W!k)Gm^pm*?~Kdj zpt+d?ss$Cz{untY3`&&b{MkO7rO>d(?YWm(^d$!wV(mY?@uYL~ zv3>8(U|vPfc_Nq5KJh!x!Ui3THS{tD;4KEiA(+rIaAi-@T*tteo8w);jlnsOAhAV) zo>XY=Oz2fWw*7sWZiAsXSfbTVuwiQreU@p^a_(z;E)vO$)Of;3iJ~mco{1C&DHb#= zNhc`v0Zx197pxB9iNN8B)Hc$`!$Ikw-au3P!FiSW>4QXFhV@+;CzG4Q0mSM*5iWfn ztYM@%!0G96f!HHEWw5}{Jei>w;YmE6vF|+%lJzs_MBUGM{hvTyYJGyqz%?Ke0}qHe zP8Vv0ER>zV8e=*3DDPk+VTQ!2fBh_uw?KkDIUueI)!egu?kHaN@TY=W9}sqS5&b*Y zt&{!0Iee!iGo!e`SK=cy%-Ccz$fcc=5U)!ItC2(JorM%v5GH|7TrcyqU?+Lf#X=OO zHXKWbi1rigvhQZ~0M@qE4-`2r<8vd`qr((hSOhMS)ILIn_$d1m3@pg9dg|f}`!#>8 zbVv>qn6l|dC!`#MZL4ajVjncBTf0xhoTsB=*%>!hyUwT?yh{`LB2Xq+4RB8~qt@2VaH z7g2}JZCl=>X4%#EW@H_U9(l)t^hzz~O&|+6d5|RPK|?vJH^1YFmocMBLJ=(#@Dx@1 z1`P2)=kO0=$mF^XB2hj?d-~e`;X$~#0slq^V}cPq!BXmLdx2pQnYY!e-6BEm{AHDP z&>yx}2BmW7MJp`Kn5{61++2r;loR1OV`jR?LAs}n)hZhxb`ypbMhFK>WOO2y#l37I z6oyPY5>LvKj4=H^4;=W9$>b9vogeYSRl9|t15(2kt`5(@A6uCAmwhi>d%Hn4R~jPd zM`RyO^GY1WiHc!5Pi!6&un~jh;fo_$wmXrm0~t~!6h?X$+#LE)IZLe6c`?;ljxZz< zyznsswOgFjNwPGUS^@9RE+?>BPIjpfStxgtDs{7Vhqqj9sYg||yyry`r^2la*1$iP zoZtnXW;A5OQ7hXYLPl+S8~oL{EbJJN{sj_^v4LlIolVo_pptlK3Q4z!N*=a5o`IpT zu+ERHRLZ-(79nFu61<+1yL{ zFMq^+nULcNbzC3?v89w}I=uK#YVq$p37h~0(~C-QaKE95SCqWz?@Ib+;wdpBRee>L ztXGMYS4q&L49|H+k|bj*b3Qf{m$48xrJ_*^26r4(51MRUfV)gW6O|(xg`|+9X?~la zl;48!=m;X5q}QXyy?y+S(K=&rwH!~0lv@kuddA^ctS5dfNf`xr*7!SkZNR;XKUNk) zvY@jBJ_E9fa@99yh0rHY6CTx+&O!o#1Md~1AiUtOZy@a4*tjYBOx?ofav9oqA z8Sk>Nfk7)1Aqy(X85QL88rnPto#6Gx6KHpZhemam>`05$NJ~((Ef4l)(im3g2oSvl zHE^b+2Z~~e2OasOat1W(-3>)Xb`U-V$y@;6lx$-F)xZXg@pS4E*n{Kb)X zCzqbvM)eoSLRRFpql!#GLlvd=G~Qh`EMe%=OnhWS9O8n(^g0YWuDxo(FY4^;^C6nG zMGGfx5(>$ojrBA&&*ro+IEyuq{UCCNeK{RQVm|gu+>fi^E{?w@?WgE-5{39xwFcjm zSZIsO6V<==V#tET9v$7znQLhFh;g%#P`H@dSn`2vE>nX8(<p->rI=$R2?X1{V`K^)Kb0cLbseQ=o1Zhjf6Kt$XQ+_nSi6BRBQI` z;nNoR@Qmm0odIB48JTS#o!k8TiHWmqze-OXVVWL=%zv@6_VjKnWlqzdwQ8MW zWZ&wwwY-q1davq^2;?)?o7%0xkxhnXy{-&O@{h3B(*7jY;svFU>b0B}_{BVbUKgEm zP-=TzwKRJ>p|zf|@(9EdVwI#0bakEE3xYVd0u;~&GXuWMm*yf&Frm^xxWS*b{5#H9 zc()G?k13Z3r2^FpVaSs~2Gf-v>tINKgFiooHqMuyFVgJx&7^}l_mv}Hd(rdTp9;;- z^5c(M4R6I;6`@UcU~mDtx{x;+KoK~SR6SQPmp1WLUtd3<=8<&ZvX}eg(dY5pPf#6- zfA3P8Mz@S1i#m3RqX`$<69{mr?5i`fQr}0gczm%isAIRYkD_b-)O_SB^2z?qu4~>8 z^N5C3wM_W}4mn}TRKa3Wg7=%sZhC4wlEO%5$$YD}+Gz^c_J9V4ijFEw_18WdnvRrk z5G=2CfPYguQyoPWgf@`=1PK@UD+v}8K9@1@=oWclN+wfT?GIkh1J?l`#T2d>wL*jf zEgkJ{sHM?k1`DBu$NVX%bq!B7*eUj_VFRholtF7Yu-*O#uqT&}K>diLi%oyJr*7y` z++XyYikY0LI5IHAxV+&G*JO+fS*;~@oH3@KmT3t;P_*AxZ%JY|Bd+soMw31VNbT^n zXf_=1WO@j|ivbiBH6<8QM>tP6iDwW?!3@Ne^8Uug{?|(|e9CaroAv$USK#>9o4i8$ zy{h|1{Ik|lab6$Cu}>VY4jIyB2pIQ&idW1B{+5-o{lJZga1d1`DR2;wCCu$^x*l^5 z1~7#u?C@KhcZl<~#`tu)$OlYN-+4moTAd8}@Qdy;g{Y~_7VNp;{3!4Rb9b@GA zS2sy)q`XMFlkqR~WW+%Nf!9qb42K&!CYC5kVT|gGTFQte!j41Ap*Xh1N^@&qaQ;bu zr3x3L|MFaV2TRpM8Omb8PJep6|wf-Fw_$Mi4|^N>O^y=@EH8gOCj=tKcgHDfSGuJ zn^mW2z6++u>YD)i$?*mKU2vftfIRY5EW{e<4(k`NWf!6)G%Jdy4%Q+Ac2mjHSu^nF zKML-u{5d95Xu7dLYso}*39Z*21GhPy^MY8y#GYqKUk5N0h_5HOZFm0Q=_3(n$z;F| zTZ|#|1siqHH9$na4>zgcO3LbP@iMe4i`=6N$8$G=FNF#UfxeDV$Rah0LZ5#SF%?#; zJ?sbxi^uQkvyR>Jk){$c*ac8pK7t$Bzm>TiKJuN!w;>&*u@U(;Pm-6UC!G-a@(nO1 zA?#y5iH6-x%7s4fBM1T;dZQb?t<9C*Q_W$6fKj=r7e~$2s`orx-69{pO!mE+ZbR?u zCMLnhBQbEzVLn9Z5s%m>AXOmc;GQV)IEnAcp*ny$;2<2T|EdCKk_81`*c^lDvrp&^ z1?uH3Tl%Ad^p~{bHvEPMs)LaSe6rE=A>pj2MbcEvMgKb5HtvR2q#O9f_4^CB&&L*+ z{Hot)RRZcpI~mqtSGrpQeEV16N9!P*apDUelxTiHy~Lm5SG z3_o>cfCdZU!RnljV(h?m(&&l?gn*3ki}7WC1A$Jq({sOoY2!BUypoana!;SsNx|-*fdAYg^|@y9pQY%;X!mMB z894GrHedx7eqRv#tG)oa8%9?EL%jYD1o8zkDEetY8U&;^3Yt&>93V-^40iW*7$1w& z7l#a@fgdMU5!y%cg)RuRE8unp1^l^2?1|F3kTyR0sh#OAlthh$4&76$&sO7foD(uV;6uS+v`E{``>B;GxCt%r+=Wc zyN)0isV30mjT4|qo0c6higkv#*|m_wQP5Mua|sJ7wQxV~{K!?&Kjq);gQ~pkU>22xwt9^WKs}1 zh%!NM1z;18ol>|lOEQ=^khSEKCOC%{8!i)VK|3pWh z3+?&+ZixZNN_^gSz6Q_cTsF%x4!lWXt)B6N5$%lKs0{uB08Fr<|=MkW_+ zk}!ip06URLhQVv7MTQ;`Kk@OMe^~nDjQP+T_br54HR&h!3;P(5^XEQ&NYM+tM_d)>{8EO15X||e*2uLf0(8C-k=b3sKRF|EiUG=2Q2If*+mdrV-NaxHzwq=?wf5ER@s&DFe zcX8X-f)hVhtlNMbS=JJ+BzJ#lRqZI+w`W4OpE9!}?saUthhRbwsG0E@3tkr@S= zBs$l1T44O9F9=r7vLcS*;FV+bI683S*LUA-K9?Q;;ee<2^q3?$)wID@B~jv-E=Pjd zoR$@(V|7|=uzoFl2Ris*w0owHD^Qy(>;B%CU+n#QefIyz75&vrkxD&{nku4S9E+vM z7RiN*{E4=}p=7TIIPMhqT)iaR#oNM}k|ZG&Q=teZ^0dK1jYt$G<1P4k1WHimPJ1s@ zR(kdo)U4Jrod5YHFGPO5T2bpQ*%`xAL9hQ@ygxYz_3DKA^zG9U`Cg}|Udwq~y;9S{ zk?VK1h^2P9tyb(*U0%^y_5sY!d1O~|bbE^8Q5r#8xoa5 z%Du5D)BSSK?Zs2sJt^D!T1MTwIINOi?(6n)AA57Xb94Ri*^J}%BvoO2)#}`=VWJ?* z#;aLNucqPh(h|=#&hATd&K2U1o)ZS9V_@G~N?my#TWaE1k*#nPM*yYX-#Hd}(t*Te zC84sG1X&g_r{O;CnIteZb?wQv6wGaz#$_u{4Pz2ndPu%?tV-}7Z!zFX_cHE?!)ewW zfDUp`9?Am~6-N?51pEgyceej8r^YTZRGNqDnmnM6Ml6l&KttqzVTb{L2h?FIKc}cZTVK#DerE1JZ`b4S1 zatcA&-RMW}=PN^2u}nD=TXSpEw_$Y%G+U*tB*jWgq^xmM0x0^9Kv6E`@^QJcA}PdO z7ons7P$G+(tW(J|G~|WX=MtMJeNqMKy-oO=NE5tP0jd$ZJp7&DWnGI~S%-cFBH|0; z;J~V*Yry~-S)dh@n4!f^ff_{CUZJJ1s~g#_Uz=aLNLsq+GT84WXw@8&4WjHixw4LY zuW3yRi_1)2O9X!!Sm?sqByi9I#g)}`Ni$}$ah;k-jqFpK3$DnxG@cqLu$CZzDmi>yJnND`qd8Mr1ZCWKpYl zG3|stoH<~z91Bn&bM@DY#nD`C?MZ6(WeBmP3PH4k3W$QTAPPLG=AY=^kiV7ZS)BHI zy`J7L@5`5*i+8;huA)%o6;i$mF^7@S_Dq4T967^)mKwtEkGNiMzAgc-e6b*I5NM!4 zphynLp{3LoNS4HKw5<0lyCcM1pN}y0$6I+;Zgq7K3sj>&D55B`7ADoSTD`gjHAdXO zKX!cpAFHet1@wBVYfX1x0$6Mv4imDD&!O=VyN1A6cN!4afphqE2W3Q z+}pMh?60JT`Ou+LD(k{B8i#r*uyL3OcFA7R$x+Rpe(Phz+JR|^gUx*Z1q2Hd-+=n?%lp9Rzn_od+`XreKrN&9-1K1(Ii8Q zWo=}zl*$s+x&#}rAm$(Ce9f}~$oadE0C~sqiTNXsjXW6n$u3gEfw|{)6wN2~w^O^_ z>v!8)dcbTX_xS8?xA(`h*54P}Q$Jzp?O6c5ViqnyVEm~y3*b$JaYju|Sp0P&cWpB? z-vd}pe^VN)twV6Lt@TTfIV=F3%F`D!xL2+V|-ler8jD>dSd;(QJC_mhELrr-1 zNyP3o3*Yp)=IvlR`d8&QbG|0sOE})*!B=Kp3hVYQiP5M%mGRg@KQmnaz~JcH)?dq# znRBv%gYM+04hYnN>kj^*vp+7f!Zgv>DBk?d!f2zMA$!HVhr>4$R=?P}X@;Z6G#R(( z1q-`i&2U3cH&*$^@%{LHSc}TjNfdK(KXdTuUv7U($gh5TGq~By|NY5SKWm1*Wkru& z;;uz6R$cx`hk3Yc{Pb%k$5_K(ZPPh7;tM@$-b%>t3#3VU`Kwd@2NZwPF>I0I&6AXQ z4bqm$-q{ADhmR5?Q@%;(U-^3HsU`75L&RQN2#ca-V`)J$Swo_DjVdZbvIl-OVM)b} z&lidD#K`%wbK1sm28fFxdTZQ0o$cB2ZQy|+8b6T8e24?J>Z5)4gXIJ0zaa|GmvRDf zDcir@p8RxAk4U5T@9C%!&w#qGE`W-=t3V$U0S=K-X;q-fYsf+aD0p2OD_jck~Y8jO>% zq}M%(jZZ^@a|Y#1KF4p*l4`wU2`WQ#L$ZaZPPzo(QZg>)o+86eZ8O&^GoBxvVjM7o zz4*OJf3yh=nnd}w@ZU9UvcpvHLseo9j=t{tQS^2gn)sk_R4X+GW(W^Ha!Xe;9wO)~ zoV8r-BBW{DnTO(j=3&%wdE;$@swUN>@?-Yjo-T9sJvjA64-EoB$07~;!;_*udR*>K zFW?O{;>0#h;QO6_h6i$Ltk@CJyqzl(UWgvMo%Q!c8(apZV%6yBXg2!b#w5oVd3vV~ z85WST!~BO*3%Fv3vtvn^uNNmIgSp%R4B8RlVR3L&$%E%haid~!t~aN5XNex>qX2%b zY>&^=MV$M!EO})f*qH)54zoBE157>`t`Eh|at|Loi2L;SV&1PvfLVWJ*7qrO&BMRl zXWzbK-;+t*k_z3O(b1p(Hx-}PCmXsp>fKy?%o&?0ap>;#5)E8bG&_{)+w2}DXwkz= zo5w3vrxokUq-1Ga2gkgSi81&xcp9rRzYN0zhyww)7y)ljE-0|@{7M{^oWx>c$rb9+ zzs5v3irV=fL=GW(67;FQf^)!E)z)3h zDfdW)oXsgu2HJ|YeRpFA5TDHodA=bd+)P@-8$}b;Ng$G@NlOW1Bn4E)|#!oaZd6_ihT6reDM>r^Tgl@*gOHy-no5atFe^Zq!zfNe}GgLRc=-XaXT2Q8) zjB6LGbc>r+@yipM1lbjrVu);V2l{vEk}jjT?F17J)4`3=*5-zw`w9rRKJ z?(WS=6BZwNSmnny=Y{A%VOpWjo`Kk{PImk?`mX)g3*veOprzY+_LFzi-2%9hY^RK} z>fbb-q`3tg_H-FAO0uM=m^G@p?+&G|uY!NyibEZJ0P;R^AT%84@b$%vtPZxM1MABy zW{K;qWNfw^wen~$dzX~5*8tdUZvg)Brx!!ODs-VHfnOUvx})bI+7C53 zLn>Ag0~{-p&5ueJK*o#aN}zP3Bw7&C0>$>9C(4Qk7G>o{R|~PnsL*OVJuEdF%+DBw zB9VU#&%hqufjy@#&4y5gVN?ZCZwjs|6NzP_Gap|wz7YD^@OAwndtwWpA4MvZ5Q+W^ z$$SNFoUxy`^gKhQTwt^6DzY{18JdyG+b;>r(o{;xP~0Yf1j z@aRD8R(Dpoal$o#a5zEl0`>bof&A=HTOwWYahERy!5I$U42XNm^NfjBNTPzB4H*?U z1chBPl|LDg7+RNdJ-9hP=oH>X9D)I7&;wZFr_VZg!1!*H>|QZmV-s%J1>U(Glu%^c2I^%nncAj&a&$A6)ZFyGxq2!IRrp4o> zMQ%_&Zh@;ZqG}T8KJN)J=G9DT?vw=ts=6clx@6Y%*Dh@FZ*#4Wa1`UX(MUu>SH+7rb9YyFw zam$lBD|TyIbP6VnfknyT)XHbzehOqJe5kcxJy2zD-P zD#un$>=&w@o!4!SQ!dX5KWCrM4ev{PN?UDtc416ng3vlQI2e?olQf;2)%lTqqmz58 z$+l)i=kW|JD&{qKKGcd<6J{{QnamsqtHR0XxI-P;j-K2FTg<~Y^l99xP={ys?55>* zjYppZT8pTe6ZLQY0wOA+1;ca8NFbXz3p@^vF0v=VbDYo#aG%G~< z58Uw%xg%%fWrpRh+q)LqHn-vf*2o`~Qv>2K#K0p9z?LVZ5RUAQ2(^^oKRIU)h|#dk zB}#RR4QZ*#)~fT#qt;$xbPQ&Z|vy_HCa|*hFk;&^$`mfPq4REK4@LZU}E=P zU5BVQyhxtBSId`U*2pcx=?-ixyY4_Ud`X8%E2sP$|4;%O228rK4BZSU$PIUlSiIE} z)k;)j^vRppi#2{=@xy|b9c=iOyY%${W>)KHZ2QIgo($~w*f=B>6rv=&nAGXyQA4CY z3_QqX;mVK|yYpA%+j~oJBJC?QUX5#rzZ@ukg9H-Rc6Smz*8Se5e0??C42zg zf=j5WWuXW(Z5s{1^TY1DXZAJ2N^2N8Hn%Hit(Eqr%bH+XV*DLjOtq&U`K+2pvDIk{ z9#cY~93q0~!Y;)?#nFtnKPGt8e7pa1CJ)lB>e9M) z_v&a6Wjm(yDfpa+B1`-nhgD`$6x-Ewv26iYEVn8*$<#*e&|CeSqhT|d6j?uzDYN_X zEpEh%x;p;fS8@QAe|?-;$5s1(2}kiCgu2=PKF#%+IzN^Iihuj!e|9MbPg8(!BEk8& zr1rT8=l{elPvMN~Mfm?|JoW$6H~+t+?Vy6y##yK8Fck5DzPh1Zzm{%;*P@i@er&4w zveQ3SR#g&pNVSB>4)iLrE3WkkV^zzl8EP>#l_PLd!$IrO@jn(fxd|>LC&6nCwU6Fe z`Xf|DgRX@L{z{WMT%^u}eXY$S;_UoX-9PLSeWO#ZmYlG>4xnSywTTdd^a8DNLs2!d zYbrRg*%`mSaM#oqA^#b9D*wSv{(FjR_WFMD2Q7Ao0Eqd7v+;*fhZ3?uAwqVpB4|(q7;IR@zD$t)F`49GvG|~JJ@k{Bqz9^iZGo*|Lt)gWZG$F} zrs%!-RH0%R>135pM(RenS}PlMB)G6Dpi^<}Fb|UPS{hlj1t$yTpj+5K z+IqST=D1>7%baM%x?=nUA8CJx?PTU|R8P`D9JOFn&aD%J>G3xG^9-gn(>NP05}(;S zt!?Wi&CU`e?-4fTFbN#+WIMMK3Wc)dsCJx8(5oB^kSAO7KA>RR`fRCg=;2cD32jwt z&P{xYv_G_dYjuevGZY$k#@>#qD*7)!m6P=B^c&X_%&g3_kmEQ(kqeS7e=T$h`$tr` z&a)DCSrb=P>(DSwW>|2`l{&rrEz=nG#4~wl<&-OUCTm6fCAS_#>P`z+%1rcz1lxig z&sw)fW)Q`8(b=O_EZ===g>4ihlx>&k;oqeQhy&ELo?%zBkW1p%y2lbqn6rHfX zjE#+u!q(BCYE+2ER~V=d);eK;Hs5P=WL9;tb7Nb~*>089{bJ_@ImY`@%3ava1*vbB z3fPB6EXaMkNWShOgk0bNxmU`yp-)EYeESmeX(G+>t2)d}rKyE)Ia0%&;?%ZnnbvTV zV-j%DZhaQ?Qo))l%MR9BXQ^R#2gUwLj(^*G?+h}WsLEkTR}L4HayLpG06r+ zt97iaisPGTR+(pR#{=Js0~#EPhv%arnd~`oK^&9SP+>tJleIu$Ng$IW zOo$JkCj!E$%6`a0`uNK;#Ri`PwSrW%Hs5K$R?w%vBsFlPlC05p*^i233A-b_#o)kd z`5Y_-c|)&RX%E{20Zq3eZzcG+z}lk!@)?LY*?Pm!-Wx7#zTrZk)+G?3g=i}Cf9zd* zbK6FezrXV-aN4`IT@k5yKkO(~j+{+$<)l(xZ{6OdQYt(pW+hS!Qnr;Ug^+s7CE zl0GL>f?M=3!XgnuDtb<6XgFWTDaD^+0ucT+OciLfF$}RcPAlNJ6a>lw>L2TX2o}|l z?V7xfGtdF?K?Mgy1~4^Rb&M4KV5{AbN2_%o3%<3dnA~1x@d$lgqh(f=Ev5czzIjlu zrR`RUQsX8!pVl+&=lScC1k_LXzkS>!cjtZY(zLRNv~PqV#no|P>;(b~5YDKv5ke3M zUzMR(t)y~i)B#H~VuG-S5Z;uI@E!9jhG4ww^&S;>bVH}EPGB!}DxP1Do#!%_#t9>& zVsYVJB3Y5SJjvqJXav^ml_A0&1=wAos0nN|01vGm)GA?dKMZMY)vNt_&x(enZahxI z)>u?=AmkLs}$5FmKYJOer1~AyQ04{sLFA(VY(&7kCi(eoVItm9w7>aO~ z9d)K;xIqDe7ola0BT98uhyo00k}%Gp<`v2Ym>3dBk&qRFi~~93qt(j$aBz--e^z}+ zRD|cTVao`{FHot|)U{`bu*|s#lFjSLneeNE7lB0?x){4(A^!4E1l4A``ZYMKB&t4? zCL-%-{^$sirwH}jp;Z*E*4+p9veCi2KyyqF9V~FIl@p%_RnhX$6Xe+3$I!9pYURg5yW9pZ(6sK8aP5jBR!$k8n3Q=N+gR%&1xJq9bNdxo6~;>|KV6j<_Db4bcL?59bA*K+aMeQK{XP}4%3~YAmb&igx_7Q4@Ynz*OU$+`R2L4wl$~>3dq~;- zxUM~>>>AgN#_)kRH{{hF$9WsTl857)vYuaOJ->tXd^79$POMk>gz+2{ob#Za(>V3U zDqFqq{y(KUjLqup^Q#-6e z2)WhD4ND(vW9ftKTKZsHmOfY~UWV>*z|e8VfH6{;##|VgXf29N=gRfG5Xvwp6!)F; zJkW3c8_t^jkxCUNyKNh$)E^U@)?rGkJbXWHuRvGF&|VbG^_$!AG6(+hfqAXCAUDm1 zQ7@2};UfvNT_7Ivl9yd@F43!0F|?U)?cWsn%SnafN&0?_tdujxF*q#56nHy{Q|3X`%f6xDajKBXM`TsDKX(Z40 z7JMI65D`&t7~sDx#;M{vZDsZXDj^Av*;h6 zMWFr5=qWyPbk1IkzNlAtG5Y-TP$`NQPx)!|^Kg_6r}qhb*Hd{Nv3%42q2!i<wje6t;mY*fB1%gOs)B-m=OZ*LlY6bvg+KJRSw{XkUP@4OD@ zUW?jxJcqQlYAj0q*{i(R-q^H+*px7Dy;fefPMUf=9 zscDwvLP`t%n{m0wGGk(6i=G#34NiN|h@es!CyuWcm)8#(F=jpq)%S?GE1}T`!Z0cK zXanXW1LQdH*f2ZJgO0p#QioY7gr9IY=j-MNJnY?s2OVdq@Qohl!9a|J61^atbv{~L z|1Bi58=;L#Rqo5#FG`AH#Ai*Q0h^v<$atDwaJET^0^S&?`Yex$}LxCIZNt&}2 zPzjE-87dtptGb3wSRv_Qm|5dwWQ7Y`j!|fCWP#^>wMDS9(Q4&KPnKP0PWamV@-iOB zHxIw&C7$^coOxLtf0K{D#gSO0ucxU=g~$u-T#=@Q%=64ANvds;n9Srob14FVRC=!} z2X$zK+c>D#I!He%y~zCNNkdXk&O7qJ4SZ|N+CfJ)QS7dqr1^AuiLL6KyShtz_L945 zjHRu%NPQY0ji0MegFAAn`2i5yh+fpES*#<0QB@V`71eprpvx+c4kg#5LQ!qj`7{J% zznY}0Oqyjemuboc&%BXJfYS)9YDHpX%$V&tqeKycPDDQ-+zd+C`EPal0ANQ|MPA6h zwB}A_+3;e~7EW@>@Ehc)IPhpez+1yg(w@aQxda|O&IcUH_nT00Mkeb^llVKfvRF%mwOB8^vS ze)PPtPY)FeGhu)xEM%UB14(;#JF|JPQjHy!q{`=Pp*rMEOzN7T4$u_>k$sbhKLev62Nkr^P9milUH~SuRu@ zE0?=G(T;Ow5@$T`o3DvsrDD;%=rF@qt`}<+)cycVjCY%7qnRGUvsz`u)f=JP255Ck zh+7B~sagkl)|~RoyeubW2pKzIqD=12Y}l1}BzwqgP~K1~wm=M6d!aB!S0a2frf_rG zR$6k4Azwk3R0_nAipI_4L1RnnhY}I?r9nUm;EEw#^q{%BW|eyvW(hFU%tabAA7qdv zV9tW4NOMGzfGbw2K2`!mXGv1{lzGM_(>hP3&oX$6NtCm3UZjOf{w0z`xTT;FOYyNR z)+#{pC`rOT0ZAhK$CV_&O?^m`_oLZ$@FLQiQ9eG>G}*}2*p($Ed&t!wBpG5zjIJgS z3+DrWf-Rz$pjmiK$dqBAIUDQ%*BKa3@gNBlCW0!>h6I#p5uB0$Zb&eoM*(83UiYz* zHM-~F=P}E?RC&${k$A2WmN*Y~o5@`PPDS6q6d@^*01XHwfy6$g0N0AO3RpY zw|5>oi-|=eWP9J?crnq`09=adSx!vG;}Cpsti?bq3#>OCQ8+u}j&cb->~Z!U)b9 z6|L5N%mkF~@+nmb&lPvxdJ)UQrkvw`HcA)Df{F7lF=IHGrSl@VmX+;NFV-rk{VCQp z3!;~N&#q=n`-IPa%owiw6Hl}!Zwo7?Az@}$?%Vp!?dDh*qx2HQ>@eUIVP*^_?F&r) zBxEZcGQ54I3AuNbTZAAU9Q+dQ$t|LVMlTTH8BWpI9J0<(Tktj~g4A#VoFX4)RB-K7 z!y%$DVB^)$=xDX_W8n^cdRSW+v!f)7=ocg}M;O#)VSYt!b9UQufu1hc>E#xjI)fDaQM^Gb2f z8W*@QM-?;H1cB2as+`4b59)Ov3xobQ2DF6{#Fk+Or=rw(TPsu-;OEfXPT3lRzN@mF zH=s2FeK#nrg&>fv&4uHjv{u>pDCGOKTiZ(j94ic*XLZ3V{7H1}y^1&}JVu8cF>En4 zG*o6iB!J>8=-C8;IhO#8kRXWVt2a3pt=4T&dF}DYbPr+_@qba}Xfx!3u(Tw{?R7)| zvEsA>s|-b&hP62pqG{+ZDuW5)=n)oIW)Zb4Xtg2lj;RH$!iOOs6*ebi$cJY~h)yc8 zXEoS6K=75yj}9l^C3Z>`Dl3X41@%JAt6*;cakUYE>T{ z+FM&mP>VeNwG?%7VNo+ue~d5V&m@C?1{5_jtvcQrwln zl$zDFeHM_Hf}q6E^}w09QxL*tE;%zmekximr6zC{t<-$N*169~JA^#E2atn6^hd9>SEX z9znwvlsmVkUB9~}>V246<6uVuQ%d3ify;=I!U#h;5I&-?C7endcHX3xrU`HcUSV_+ zPEWYd0^HpWx8@+^n4yhUDmJ3XtR>ct<9DO0cs40v%wr-YCi7J}l{fJ$e+q8(vw9M( z(5fMc_KPx4XY*QxC^RmN;Nf6$7pJ2cCgr1OVt{^~SVyru+J zDmP^gWAg7jtsJxEPgYZb7g_&=(PruS9w8(sNjICkAD^EDpZ0&DCZb84J{gUlJlp#& z$_Q_G8K$;}-J}nC*W`Y-=Vg>ry!N6+QgmQVdK2y#((tM`SoLZ1D=J}&x!`}fTYJSK zNxXSIs{l{f#SD&_#r@eZ9Tc-BbRQ^vOJAQ?DZ;(R{ zpc9zxAT}Mw%4`DSs|2G2dZzq9 zKX70Iwm_|a+@j;4xIu=_RwW|0t&%qkq(uj>y%UE_#9{O>#-u%!;Acyt8ILaTtOstf z>J&_T=B@UTz^ySP_>HG$qWDN^F<6j)6aL(RfyXtM08;`c$B|&J<$cHk^a6!tMKDSAC9K;D8@WHiN>TNkG&1XeO%^oG`)@y;Ryxl zNga!5G5r+9Hy|}nqI5DTGlUM1z_{L?dXPav2CsknlfWSjy5T>L9NyL3SL6U2JiXpK++}2D1jl_m3kjMKQ zsyjBcNEA3Fozmty7MvcvnN6 zCXP2w9l-IfV?)yz><_E8$fQk*%y14;L@LE&p_mhUd(?*>RXX(O8OYU-uG|m!1N}ci z$n^1Sdg<;Ss5AP0$8P;Egt2y2|8uFh{ayb*#@`ai87be0;pb406K@_U{cQ3V`HH@`@);}Tr^^8jUi*7T6S4*v3Ta51?Be`%E5)SvU+ z*XMqDPq28Zjj?boVNvhZJxOH+HUHtja(d;_E%?T44$vl|jOB0+& zgmLZB&15!>CPkFeO`~7KrMtKUs?73oI^5Qf`|_rtGs36S_x>2#1oS&wHZMF4Dfaab zueQ=_NzoZJ5}MIO&oFMP3V}M$r)ByvD74y?^|3V{_b=b))5&eV^}c4(Hc~UI9@&wq zb2>Elavhx&Y4D&&wnOseVSsA|{O=v=kU~G4x>qaod&QE^%`+Z(MAnxs#n*h1HZd{`4PTSla$Uca} zNE&2u`L|mz>jtyQ)zwYj!xM`#zQVCINGEp>gD`Q|!((ye5u*=~Ha$F$Ft20i$anbh zX%A1NA$I&@LeCGt*v-pv9NL3ydeo!Bv{xl3Dlze=iV_z)9_Goy`OXQ8<);K5Ca+HQy2bHgt=7QH+az z@U!9EkIO-|q{yCI$9@)v!sqFJG8tWe^a^i?(B2IU3v1g?!s|knmi9(|k&MQCLN95hb&Jn514w$ zd~p83w86_1KcuTaKzxVd{Q>j5!)?aXnD1Z2VJIdTPcki+k?O<kaJY1|)&PAvG>N-@0QtDdhv5cXU{4Li{Pd))FoMZ()3V6Q%j$a98+3GlBf@f&h?I+Xx!;f#pb%fpuxG{~A zf2#kb;EMX674IJu5fbX&2OVD8^WN?2Rw&N*KA2FzomW6p>HUWv$0Ce5+a2@wa>C)j zQei~x{n@))7>n?sUHUHF|4`?V3gau9zQyR{BT_SA0>V27aXtnxz$uI~289$B=L{}` zQIg3-V1?fMi_|$)J*YEqhM3}EDUDYkMk5RjploKiJ00#Xc^DS=AdVm9Qq93dT8ba3 z2@U{ylr|`{ALXH3B}V@%g0I60*Ymk%&+W3@kC0U$F|b;yd(;w;O&Zl^H@I zYGas(2*)r_<)1?T4yh}6K?Mm>ViGdc(v;vU&Fi^^R=%{>v{aGK>~>>)_*eGhC=LX; zatxfxiO3KB_CEh%nobVF4*GrYG7x2w zhv^S7EDZkkC`KEW3YW5Z8t;>1L<72fTR)QHv-}!gp)*rjTC>mhi`l0-HCn4kc0CEI zhUw<08lSD9T3%F8UykA&Oz%o4?2nT__Hi0+KNBMu`XoQWbSc9?=5%gfhPiDwS}6bA zKYuOejz5t%p7X0yK=1C(&E+IuG+;5}pjTyAOCIXSKhSnbw=yr}JFv48a1Ab!cbLdA zzYwV2ai%Y!X~wM0RL>-xqr|dNT0m zb}|zJ52z;U_!|2eO6%&h+wW zeo@mGuFm6${H&A0%VK?50n+qBN*ye1r22Wo@~nMqiie4k1g*{HlC?I#-M>{a+RR** ztG)E5yMZ%J^=5H?MfbAhIK(NBi4Y-Jao7raFF1$IO3Pc$e&EKJQQ@A9;znIyLN4Hy zFiy{W!`Jmt=e`5ZfR9mnzHT_e&<)KuHD9!(J5E(dkv@u#mT4t&-M}zhEzn$B^YQFS z46F@pBZzd<^sPnuc!_3i`WtP_tg3JpMUpVvN39u?8|xPhR)+TD@%hZ>(oil-WBgL% zivoMJ5>IzW} zOy4G^ZxhqEiRs(K^lf7LHZgshn7&O+-zKJS6Vtbe>D$EgZDRU1F@2kuzD-QuCZ_KT zis`%i64561Zxj3XiDLhdS?h3|p9|LgT)}^LpD%upk%28_7UXOrnBtupSniH@;=a%w zM>F(5sD7Ywz(eF&S`cZW5IPrkikf*268AI2%yfvgZ+moZl<@FOOs>u_V~b?9-M!AB zmt~Q*N?4O^Ssr)wQ1v4R8dZ(ZveXb979%u7sNXHD=_NQ?4}n14ojVu#Sy8d9qc4q? z#oJ1uX916NU$ylxGz?z@HgLi)aCF^_)F^VDJJIOzzR!~Mtk7nX zP8ndUc&9MvQK{>GKoQYR#AOk?3K30PbNm1dHCtG!9)Q7Sg@GD|Ts0g!jLbU`5xV;j zh}hk?j9&?vWVSKNa1wi@Fn$@+`MUB7jH7PCEsM-m2&beHiIH zR4rjSdI&Dk-E`ZNILQAEa!0|lm;d)65V5Gk%l?Du8*sc|rVc=T< z+;W?ns$~h&HG@e1LP*u!O(fNg;nq#7W%0KXtz0XN0>eZbNQAB`Y!JYn;rVuC1cnu? zvq0?bTk#jey+m0@Wemj|FVG;wJ=M5rT*Fc=8rXO-!)8Qc)S9jthKS@Rpfq}X^_vFRtPtSipd;I(3 zrzem9e)3bXCFwMsiXIwsIn=G>`}w-6tB%eMZuqXHS%DYmmTBv{@B-Jpn<4rTNYvdi zTyyWU6Le`DEx*%i!Qd?CGue}7pfQcUtzzJIYlmVu_faF1@3Dpjx>C+CV<*bTmm(c= zj0hv56*Jg9s{j65&vw+q?vG)>L!BuiHnnPcPFXPwIuWSt%)3 zzw6v4w9Z}UJ!z3mmIZ5~SG4tD2JCVzy;=Fu?wp4e8ZjnZwpospqrG{Rw4W7g_2qSI zt6&>7VG>Z5)U-lK8IQbu^cpw+WsEa~oKhmmy@Ik+Q{4K={_*tHV|bV6aFY!l4WXi= z)*?iBJ*gH%eihJ6oY8tuz(*q{cNfskK#Zv<*X|C=wS{&)jU}|^0)v>)9=PT+OzenT z-HNrKAWcRi3aywVH&=j)SkpU5k+V*QJ}c75w0F)mb54PT07x&79{ES7hyy=O-T|&@ z<7AREV%0pMr84&V_g@ZJp5jRjFrbq63Ol|?6P&?#%_Gpe3Ij~OfT0J&ev;*YcA$ul zkwZt-lGV%t?p#DKBpAT;<&!M#rkVBtXf{j2LezJ9YNe>};nJ-l>btA&5cP$Jx@MBT zfOJi)p9FbgKPaLNJ2pY7>|Z@Ij_F1KF#gIVqyKMr1mc&$Hn6~O(ysN zoMk!lf-<0p%qsZ>{OIXdDWAIpM-TaItLlT5&z;LAm9f{ozOs_B*IE5-^0~2Ibl-xx zz2w$kMmM^!UZ&qGk*Be^64H?`%{{pxJp$I9D`CDuN56~1dpP=qoL4 zg5R?5pJs~$e^=;sCHT8zyjK$Zoz>qa_*+ry_bvM|;J?4bZ-KscLVuc0Nj4@+%l3puYK`J=T1=A+zh)qNwvW%zK_p2g4 zgLLU&`*{k%bnIHTIG)M^%&697wvZap9p;m$5-5nmm!)1qC8YUptRI@BuCcX1|) zD!w}Bs!MY837>K9Up{|LI<=Ez>#b8e_b!(@wZ|ssRdi~1^^0_Bd(ZZLD^?V2{q$)Y z?)6ftCmjk9bsv-c0=zGHrw<(e(xQ=hCk9L>H@|#c89a1I#7z@uC#%6Y z+^W3zy7U~=sQJx+83XnT#5WZd@8b+nxK$?UO5~JC-P7GT!ubX&nC&5^fkYIgEvFFb z4LHmku-`62u(7tPD#~if$i%03w&hJi445@w{{oY+=mOOemS1oAJa}8K7Bo6y530Gd z(Y1mHUN1I<;p;JfE4G3QJ~>BIcua@C=3;cs_!W;wSPU5Fae7|NqJXHPLvr@y90~#b z+p80-$rr>@Wa74Al3x}AvH#%#FSU1`(^MMBJq~nQ#X#<^ z{#FC|!30??XCJQ`S#>vyjZXDiOFI+optS@Xn*1WnvXH0prcmEW-RU5^TK-FLqqqso5rd9ggwofJnA_k>oElTTS8Y@ zq%9*DjXj)@Y?`nwgHtJNNHFyBt(Nh5ql*enD!xPG6HBwEu_^6L01d35q%bfge79Pe ztiP2>Bfe?lk$qV7c?7jg`MHp#YQqo*Tk{*bN87Zq&{&to6~{*5auE{CVs>HZK`fn_ zWo<@W4<+NXX*hm;CS#X^+?b3H#$@ayRS%QVd4OAH7aY%0o`-bX@hqKZ`PAFEIuHF> zZ5vlt^^45RnK74No`rOe zgzZIB3FXHmV4W1CJj`CEBB-A?5W6`)Dt2E8-TPzDg>sKt2Bd5Mg%>_6zqh8o>}SV%J+|u?Y>iQ6m68Z zAHRWxCxTVSFWzW-7ITtbxCy(F*XTx;K?%SBQwySQ9iPv9E){868Z(DCz9`Z$QNG-^ zE;MUZXlQuIT3)4G+#Zs2U?tFxhDi2`lgrdi*x944`%c{ck$!{WVEE%nGC9W_tDmS1 z6@Ip9(qH(^{#8MBR@d}g16Nl2hMjyOcv`PQ2EJ;jj^lj8)X#x{uYCMJf}trBEg}aDi2MchEA4)h@-yW^ zaVF9Z)U7?4eZG&SU-9}ABnWh_rG|e_UVDoyw)_}{i0wV&yQ*~`Mw7Cu-skRpC zk#E~7H*O`RZ7I5@D~@d_x@C00WiF316Bx`eE!%ZH5bs9B9RxMdT%89dH^eQlxrPI5 zrm02`KC_pH%+muyn6@2iFd9`*R<;9V6+DPs%l9JtHpp}h`Ak!-9*pKL51I<2Gt_O( z2<%8eBfc$610+Z22`dP>-hnh^G(ua+X+se19iB>||7Rh?<-@aJ6oXTawyCFdb{7|3AmibA<^*G_ZWr;+m~v6oRD+2PBH_d4afZ z_%^>!`x^|qrPCR=Kzy5Os78UUM!u^?nqz5ZXsdo?T9Fo3>ke}z!t&$aGVRUy|13Yl zH%&+N9N!E<0C>K`ZQBn#jSl;>%;>)1+x$N5@0RgDO3vd+<=UKaVfvA0fOW|u5k;oZre!myMG13>_*at0Ot)r4<`=oIIfGmu2|XZT`J`Q@sOC1gq8$l$u9r* z>+S(akb+1`Vr17wa9JDxGlNFIre~(R5$j0$nXlrwrUaH&d)CRnW@1VHeZk~|{NKkh zoB!AMhb-kw!h6=O^%9cFwPteiBpMcC#6YiqNqdHvZR*VzAd+=s$*{BZkO{wgoN$GH1vv?8-O z30S+fyH5U<;7jtae4!rX|2~dJ`L}b@Cek;_|BBjoSh3?0CfXs0oY-9ciItySfc%p? z80|`~TARUT1|{2p{I3z`8y_pi|LuIeWw?I*pGkdX{U1z%2l>B;qf!1h{UlS9HrTlB zopgf_dI5g@b&GH}Ue3SWr(0Jo=hK>8TZQne)~)Anu$;M#FFUUR*MtPF;Oy?(58L<* z{0df3v?F17+wi-uVQ&EI`V=QCVdb0=w4ge-uz|9jt$=`mQ7hp;!!4(P|8>X0zv8js z_@CtQf**1MoNt0&tc_F>6phevph0MX0eK|!;!?nx@n3=HFOUCPvxo8jK91GnKa#zc zw9mThy+u#YRU`lPt!_W&2fQtnX#0U~%U}yD0@pHksZa&5Y}Dhjmt{T=(##KJV1g** zEM`5Qtr|lmGceSfwgzR-gLONY4cmlE&NxlrrLk|~7^Duj%8VZ>_>Ge&>BUi+F-%~8 z{SY65@x)==rCUeDKtvsAGpREZM37_6S2(2B{J2dnmg5kBNZf^RJ+a(*lL0vNnG3#3eYU}Gd& z`COYU${1HY$&+9We2Q88DHX1RuR&BcfKN)D`dOkvE_f)wRs(L#B=7aoUTgs7RqzF1 z41<-aCH&{>JR*35iMauMMscH)BujcQmE=(nC?PTyu#BZzgppi>KMm#(;!lTLaKPEl z+9O~~fV?7M&CM;{4N%tOAgVAy2owl{iCO4Jex!941H7?V>9Q2IK|2dvuMz9qs~XJO zOnm>Piv7SIC)()bJe7V zh14@O{4go_?>oHCqG=xt6JnihK4Z2051Lx~i}pWPT$%^_|2~exFP{Fhd;GtzpE*c% z=k?Fu{rIBmwA@bT7uoG}o*qAS{!PJH++)u1I2uj*He*qz^XwI94UE4j!*AY6FCU+D zj(_T0U|$>?mqoXzwe*rA!I=O(@M1U^O^zD6;b9os)>Jo*68IUWMdV;zH~r7Fe}2^J z+Q2dQ81pAoA!g`zd{NlO2k~h%o}|Um&&S`pR*hZhFgXoBg!7JZj}9`!O>$#k#JvU4wcNOD0 z%Y=xP7S}&c2@Li`1(wYyQ?wdCl);&xqY7fcmCiMtmo33k+7Zc1x5L2W6 zdwYvgXkc=*iFX|!)A67I8TQrbeP3IcYJp||p6v}O_UzTuYw0zoXaPWC*kS`cOXqo8 z!BS^`GLAn5g%&|s=BHvAErTME=W{yjR6?A0=u^7sEt)A6PE`vk+J?VZgUCYPg$O?NW6O>0YXH?myh zCeip0%oySp`N_#3-9nF5t{FGZ&o15Gv?%h?7P>{QBO!N@He2YBz6T!xBG2*V<1O?^ zEOzs5EaqL95@5zZ3lECujk>adzom{SRmArtCAvU}?<^f~;M?76sQVQ7;3e?Ev1Nm6 z>%FeXfHADsS9>u>?lIu@+Iq)`vhr^2RcmrPiq0`qd~?y=0OR9y(tm#&UN3<`<#zkl z%Png!J4qu@gB|;`)mL8V`Ihi6LU;XJlyb2d{7$E_aV1nYRN0MvxR_n47meL~G`QS) zhgVeS#t-O}mUbEJj>BkWYZRyX07f^mC+tWG>U0do@T6l$)#V8O^%hf=^rhb0Y)Rr@ zn2BMMPseeJ32LABiyx*vxJ$Wgk6LeggJ|?e`BtMG4K5hxNBJ0s+%cs9qPznz{yAuZ zf0thzwV1;kq3QoTml3OF$H4?Wh#@dMb30+#cR(NHgK3c-I7NQ8@2~^Mrt_iV7#mXQ zJ*e*_z1Vlc@Sx>j>Kga7pCsuBP&}Si={gSS({agB>m_S5=SR+U8~#HcuV>0?Ptx2-51X*U zwMWRbSWy5Co^ZfL;Q3HCo+i8mbX_6xCEfry5eL#B{D25}a)`wM>HtXqGoi(jL`(+( zVaZ42DXM{2bwE#50bJG+FKY$RXpY@!APyF>hG8DMgIB7#`K$y<~Ns0lm-CCIg z?s*#^0Jwor@Du~xb$KA+vL+$|?nT>hFK~DW#AzFRu`Ul4z+sR-I8elI`|v17FzB@H zBZazxxCZD6mjN+ATEJJm2sMCV+95m&8WL&@bSD@*0E^fMlrbz$z#|0^7?96=f`r(U zBisNiM?wI{0xuZ4A?Ss)Pef7l&TtYEg`g6=BnGt+t7$=H1PCOA<0GV@ZY9xC`pDF9 z1NYvD-QaIPTo`g!*pIN@!10E|5cF%E#VSeVf<+2#6(o z&QtV&Mr~DjfG7dkI2{5QHbEOyqK}0^F&^X-n<%Cn_r6$6^+RI@uAbv+QJF0%9Sm@t zoHDV2UdQvZC`rn5P{)Ubbe&_6CP9#f$2+!d+vbjKd&iy~+qP|U$F^)(5#7;I5nY{~ot62#c*l&sO2s~x68{ip3!C#<8AXj;M@Qan7{|gPz7prWewI;t zAnSl)@50$^v!iKV^3}OTn*C$p4`3il`3RS;fv!(J+1ixoAOSCSL2-W-)}kp%+|8IM zclw7>SluwJaq~Iw<}w?roHowISdLpf^v!`WH0Q*-euMV4@b#PA5LHYpR0}32csNa> zG(X}%upW#h_bH0q@Ku$Smq$WO{0tm2QC$ahdIDo)T7Wxtnq;y$CImZbXd0=w!Am*& zrrESb%chjqqRG`dIQto%PWt8&Z*k8F31jwQ%33VVSH{l5)@T7|+W*_B@!O_FO1-J$ z#0$u@zimPq$jQ~LG&)6`XCNx&DtlgnpNDTFeGl#SjMI0c8eQv|S4PI8ZIPSd+$$4 zePc?ky2UX0L#O2vb>f5~uP0+RZ_e0BK$%)F)}mRU4{*tg3{~sEXIG@O{WU3`-)Z7E z*h2Am#qzCVO?0NkQjWrxm&bQ|4i7(}U1!8}EO1u`&y==guXV5Kps0Xqt@hoVDX)q& z(h9Zn7SF$?2iK&M`gceS*t^#G)ZDe306NBH>4|H*Fx(!6jg(?Be(d9)2B>#?dz zU?DSOP6{$vTkC%5rbs#)R)eGR%|7ACt@_Tg7yc~#8v-*QP#Pra3+dC$;Ol5RL$=y* zu?4Q0Qb+A^U-l_|OAa-9HI8h{wn?eqpJ+Ps+7nWf0c;{R$z(1y7T*l7n0wVQhfl04nt-Xr<3;06R0W+j7#?v8B^suz-|de50T8cqx;$FB5m?z zwe7OyUUv>|7Q0vRN?|cL?#|QkUJ;MNXDI3d! zp5D9M@X*hm7e`#5zf8ECCueRTf4$S*JgSb03OQRkNS7_pS1`pSSx3dGyyuT`bUey7 zLmWK2#;jhadU6hwz}uh%Ebmc#VlL-mDe%hH`Z7-GVY?jkxFGe{76@awZ+dEXor6k? zMzVC9U(CDh9iswozD)_3xFjR*S&D1tJRNuTj?|z!RogK0oc$&MOO8Ms{8{`JZK!Th zT#w=h+YEnOnef{&bS~Cu{VsSKw*^(78D=XFJP6D`&=SN$DgKNj!mn;RgUI*omOX#R zXdMc4PT+N)OtK?geF5j}x-{If(orpM5pswwZpPoy66oaYQY@QWJ#AU^NW`lSD^zX{ z2}IhrG#zCfeJKL>wpUc+z8)Y$`qc&#Zz-|#oT!_>Yg%S4+VojoK}{du2qvH8twGFb zZ-AwiLPmbDbX-Ee>OV7oa`^gh6Gi~i0;kt&?tm3u;qFp#bQx4%Zd12`RybR5I_?eVip>L4u~)fh`<)Q zd7n#&u9sJV7jISXN{LT7GzgCdJLtXNbhQ@x6~kJhm$tS4t;LT_+sJx2zDYyE=1Yy4}_XkCXXGqRF5i`A`3e0m8rbU`T1&+x4?FvlWI8BQUqfu(E#HxfYcMF%qt=|yt zx9+36=)Vzr&}0Ufe15w*vb-%!+?R5s2zc|nq4)Aese#Sxn`R9!+!gue*pj;y`(80}&tM3#0C_fO2f^%9l8L$il^ge|c4drZhF6wfs@|n^+CNcQlvzLpDr5r@2Yn!f%QJCP zr_ui#*An-x^qPf;Y5_%*g*7uv$H;+B&8~r7sd!NL(FciU1+-o5- zlwiwdUl4BBJ|v=RHZ zcs2pCQaBVAj#@I!vmiQ1)BpzR_4hN}?j!|$NVDtl&nIp~_#B2)dB1TXiLoCmF4h*< zj9w*+c55V5|8w2@{qS|HHkKC`XIz7R{)<5BtNkWw;js6uRijX4LONMNdgdJP zym8>ZyL@gQ#D$4@890;9DK3X5;5WfN13`sOv7?JGPEjlPa(SI)fGQ>M*Tv?mw!0p# zONg7BO3p?G=AHb;DEEuRWmcd{o%7W9tEu{svq8`23UK^{V#j>d=Xq7%yw1bD-p9kE zsydRcnpHHESb+KBxd76ePvlanyUd?APC&2+fJQU%51_gkz{6U+ z;VOZyNa%ZZHS)f)0^wO~Zqx|sNuroU<6i!P@7wD(Cd%`9d}Iw1CWJ$C7>WHzO@ zV3{GOWbLV!y*{#)sb@1v7qW_`N~xzkK{li94=`LPUZuc_SbP4vcuS;y96Do_xedH2 zhA$xiwiO%fmq`)TP;IBg?)o&ZP(01*w2(-zIbJQJTdrslVVN=uh?IIH_(|z)i2e)g=?y4o@wrT(5 z_*)X^y82P!wvX~E&&vJ#pdL`b!#X^`M>T`NS0IX;sS(DyAQU&`K)%2V<=Lh2p*cfp zI+4kN>)OP6)DLNq4&Gwz*2UUU&S5|-11qzL;z%R&J1o<^+pg91pkX|GZ<&!b{=_h}jD1&K?SRmEkF2|0 zru;h)QR#pL9%PmZu*QVbgN*0SeQ$TRO-)+Wk_6g|A*l%3h@T{KrHve}?ei#=t{-^ZMU!S#2|0du*SBIm`H-fSp@UWel#TBb@YFy!Z@E zNax3fwf(p(I>)X<$1JR68+q%2bYOS9sWL59l}vNPWW|ICdr?xPZo#f#{&MAZHE_ae zYL%sx*xzOF;}uLDH8o0hb1NkMuG*(YNi-}5S; z`5I`wf^*1^E%~Bz_T&hKT{;3`B<=AQ)7ThXEg(Z3lIdNbwqzxnVI^Cnj%})kQicMl zL&ZIH6ru!MQ=}ftTZZ=XLW=oE$c3G>^LJv_l8|En(2#z?OtGz8^(rX&aG~eSeUy0T zM{3L`Nd6gTe^ZZ&veNQ*E+Ztf+jx8ycFt*FDgmENbTC$J`GWB5C_;rFK)cCvmt+!p zEGq7^8Cx>D47wZwp;5CHiDbucGXM#jrks2l)!~a#qNabo=-(nI;Fo*>Qs+H~>wU|? zW_uYCO)+!h=$vY1qoVG%QI0YeTX2;M>bm1U^7N;SsuH!OA@SJx%3UQiSq;~PWNP6J zHE!2Ykocs7MQpq1F{D$&eTRzj(`5Fs6RcFX1?1!6*DqR7S#BT+Y+q9QoiQq#v$SNYk$gncZhRLjO-;MpLQTKXK^JCnPEDJ3YZ z_Y)nZW+N^+Ec|3P!8vKIY?)aEJF}2ODJ2UmKj#X}K8fS6GzVcD;wR<$eZ`b`pcV-7 z#_qnJA!rpt9_US(zdrV2X%0s0@@V3iOvhsc!|JDiJgKofsZ>lr07H`9b*|SBUA6(3 zALh2!11$$p1E@kl(=h^^q$~a9f4!DasGCX;CMAcq1a;fA6Vnul7?jhOJ+)J+*$d^B6;ud?Te#lob!s{t;8npdsEsl2&o{N_ zohwMK>q=Iix0g`4^=qkuEwZsa;Wt8~$0>EGrBb&RD4Yb9dlF8sXq1^Fmj)D zfYYm`(a3HFr{Ul|;M+JkYn0Vc=a`Q2S(7f<`l>SP%c+|(@_AAWu`l3VQc!{YsBRg4 zHNRZS)&g!n?P$cqeOjh~5jqDmy<6Xw*fSr8A7Vpw1it<8?<)WdUa8+b!CvDJ1QY*b zfb$c9d8mIf8(M(fh#yLD$ zjd)s_NmXV>cnVZ$s49@1*1F9pZSQ$I)TFV@5EV`9$ywk8;?362x9AJ9q+*U?-bu*K zX#F9iRYGu!zTlVEd#FMa9TnZHNW!gC=Bs|3<{md)Ha?EJ42j!&Hhpzhz6Yx+igcJk z3ROS`m0`0eJCvYO%8$z(qI2Lk(6WAu{!mp6&0f-w?{gdbnLv*!sMe>T8l0piFQWEf~VSKvleIG2Vlr7LE3%cd_=PRa=~)LR}`$MIX$ z6tH8)a0f#f{IKKTG4jEFEjHP;_R!Id(dmI{oM$d?mY}I%gSJpF*-TtsLYS8+BRd;f zVm?+tk9m_c`8E}i@RoZ$xeA({yYYgvz@_7C8WxA<4rDboI!%KH|4V25(D<<4EOB^N zqMwY^T#?bjNIPJI@XrVY4}@7cl(oXAJb{xciqE%&(fdN~n$UoTHGh6=jAo+o1113> zO#{wm_H<`ki;iCvw7V&pM*F;yXYc$JyO{hlEo_Rc>7J!64+zQc#^#2?q)bEk1AcCL zX(QgoV@-(HL_Yoj!@D!E@3N}JaXP}bsnR3=5-+!u5D$*L1@XHNYY39hkHPMwcvN34 zEO#4;V6UvTm_wX7XtgRQ8c=+-Qr1QK*9}ha>y60-mLAG)F?#y z!IJXl@wlP?-8A%OE;OWc-I7awbO0w{#av$E_wyr;MiRYNroDFaCsO7*I@y zYS9-kI&^~Z@0;!OpKcJos={9M9o9G`DZzUiQ^$)uRr10JKUX{R_0}HRr<<1)Hfbku z&YL{8G@PZt2%6J&%WtZk{uI?z=R1BMA@EPxalv?y)WT!3U@?o}pnwn6UDw@nmV_qD z&Y+g;4R2%f5L7I--Fz6_%Dzy_|TYVO+4AotS zj_iakGnnN%gjM89nZ?_XT|r4PUB`BQO3HGSlH>%iF13Xn=tr)&W4$Blagjga~Q}Bol^`qgl67sj`E+d6|zsH>WPFB`Y8|f)uW>J}X zCAHPfhHvK_loMJ}mwXqNJWG@JP9dyQGIPWsKF+l+->T7kh{yrY2ygI( z2mDSi_CO#T2SL{+o<5^prMc)N=PVvB%mngnJjZ@w{!V+j!`838jxKCi`X!zgISNKu zMOf;Ii{fWbEV#rrMGOwb z#_PphLL|AP_)Xq->pMRGh3cuPocl>qj5Jtz#N%aSarS#kLuj1Qixmwtq=72;XQ$Qu zL2E-19e?#XawZoDC}rYiyoWe3!^T9>FAxRur@d#?n^p>?aAFeynN{o#uI&|v$$XzC z@#OfZ3J2(Ol|8&U^z>1jd=jWCFD1X~3nd3Jf479mV*#{>0V#JqCZ9L@eBT^C@66e+ zubtvGfl&3ZUvwhA6SF(ak1hW@Oijw~F*&uvde;v5PWjIv1J(at^tBN5&2ME~2Kz=Q z;^T^XANh&(`v5;@sL)Fv-RDEc_y&f=&K2hh>jGUa%}rggWy?&|jXK6UlbaR;Rb+`y zTm^M$J}E<)15CGK<rmIktrFMHdoP50^D_bZc82iLuMgiSkh!UsIF$xNJY=-#+l~ zH=M?Ow(qyMA+xuWk<)vKthpJW#e2AgRgucq8ia`tm6 zkfH$Wqz?jV@Ah6ILUuVn)XZV+K^@9^_r$l_1!;<$1v5qm)zAJ5Mu%f9Ie!^fH8rWd z490nAF~nI~>B2*nt+8DR1C<2VrO(2T>jV&^ahk|giunqt5x!3 zC@21gqNi;uNiX2VmAY?V0I?#@L8r7rQ=Jql??f&(rrw`b!|Nr5DWNQ9la6AoS%uOa2Eo-oh@R)zs}s-h9& zhX}AJtUybcQY9o6zTuCP6k4qunPojN=koMnmVU=y& zzyA^uNIT(5H(M{D%fOhMpBC(gr4*Zs$j-xB?Yxf9*a~od7a~z~lo@}$)-Ivi9DTYf zRxAxVeq!8lz14!AXAM<}(9X%HISfV@=fQ5ylW%Y0ts9nP>PLwej%2Ne{1YR*4#I)e z-3;Q+6D_#W4DIm&!x*tAFdi84LR5&eFfj&ti8S}3#l<#|dkEwd7J{rlYK{g<_%y3yd@1p_X zD(|>%99YxT8QO=yP~>eGuT#Dw&{SFL)g_pC2vr_kX5!XnAw-tRw*#O+loDx@8QBIW z`oUVs^USan%bVYkScrtaSO2v}$=_@SwX_Q#$aB*5o96qw_hCB7#^DQepVkzmY_Wtv z6W>W2ys{`gVpon=9_|zxJ-X>mp6d+`CA&A2sE_McU8AyK@L59RCxwO&h{wXQHw2mp z22MQ0lzFDV6$K`%ygfqdHBW7067#M}d-TP(-QjTnYmF}nV4<78Hf|ZP?V{a<-*%Spykt|l72tVwVR~}i>HT%& z=M{ocYv{2&{$Wk+~^FN7(Q_+-2zk#)31M7(LRDm*~D##wd~k# zJ7eoQdaiVJoi*isKY&ucw0nEc1$$_zS6}#`od1A|FfXq; zRdfrOb;AYVveoK{-U8OA__NBqvoEs>j;=A+hWiSC^=*dem6#at7 zIGMN@fNGWzjCq5b5E3ZwV?+}N*+*?HT1jI2;gb`Fb5$v z+x|s!k$=&_<}~LFy|W;ohc^Ru-B)db`zmUcesc9P+rwMC`yS%*XW4-o3}j2Mr)iu1 z>;z97k_*QNK(_c-SlpYJsDdi#a!Z%44gDGjq*N1cDi{}e{kx-;uwP5;XMdy@d@&$M zL}G8~O3Y#F=(22GC#n@$9onYQTs-H^F+vDsxs`FF$36{@Ww#6s73LQmm&pp_nb=2> zmO^7-1`>RH8T7&pdrsho0m^_Ksxjlk0OT_c0aatT*QC@b&0yYHVcjx6(QK zo*>`Qlnv82bdjqW5 zmfJGJFMiEkwp0Ge)F}rLM}#eE{6xv+u%wax{rUsN7z zj>4z-10?MoEG+#$EQrskgyr1^IA2o|%HdtD9#l2r8nn;x3Il&4#v>SGV6Y>?%_cUz& z7#|#ju}ovpO+-{O^hcnqG04W4$~(d-S1XdqunOMWXBuV1kX=*Eju+1_t0P7kwjY+~ z89NK&tS(AZ#8QkN!ZbwHlWr2mE(nSrx-T`~zh!OKfV!0j%A!-{I>JBIkWVuh1G(AU z3u~Lq)!*6>@~rLO$9aELIT76cb~}@}83Ot!_^Fnn3RHHs(QaqU5!)0tt}_u=xt_;P z`k3E4BN`})>|cEsn3vfTDGR2s`D4E_udtgDv_LA^T?(eFK}~zQ8df2Bhc9e=PJLc8 ziYPkCS`hZ@!V?H|P+3{{b{g!(U_MbH?`DE1@f8}=f*P~-(jasye%PyUroUYQt<*%V zERdMf?BGfY@=E_WLMfutn-F+CGVX%&rQ|w1fzzmVYoo^ccOyWw-teOpnZlUCKb6d{ z3JZ~a_SR@xb=Mvu7bPO#mKqxo{I19%l$ThS?+HRFcbL~eC zW``Y9WmPg4u)Ykd8im{*XI$GlCBPY&KtAv>cBGL{Eu`rVHz3e%zLcg1yCRjg0j~#1 zOV82fAV*+bloIFvIot5uEx`31h>J{8c4T4V)5t8GcZ7>tY>8%S+aEDP3)9d(DuS^a z?sc*@jx0HW%lk99Lz3tHtPsMu1L`TswZ~87xg_WB@iKfHK335Y4(=T?oM&@>hO;Ys zS$SQ!kW*Ru!e>YGoMT(*;Iky9IMjmWj8{&IUXXKc*l82#s&-T!GpPMHbF6}mOU^j| z?eR9e&?+{nEcZLgMp8pN+ zdaKFV*m`uSj-Z5mg5VGV4e;LC%@pX&U}AB$bst1|^f;9{OjF-A9~B++7!|6v$SO`v zASLi)K!a=3l+DI!d+q}b=lLdiP7`Hk&*0s)Y-bND$~HzdNIq&ucJwi8 zQW05HZyh5KxeNxo=&6DImL*{2lR#6P+@9h!aXiXyFQQK7;2EiKU>DNA_1du^&KcAvWTWR!W9hSW4isaV*uHRx0*r zPW|ENR!(jq2=s8hJx^T_bjQRLj>P$I*EZ@p_zF+p(kB|ShmjM6cDWwRA=(<<@$+Yl ze4bYxm95z;Pj+m#cf`|N&pIGH1mgW0#@>eT*?2<`D=YrmK|4S=5!f6Lp6{Us9y%Ub zG(ye7R5@^Bg={LTWJc-DIBuJ8rtaXnk-TVXp^nG@ckR3qab52WQOmF*cbVdMpfy%i z`7kJ%U8*CI36tDr%fJ$F=fvi3*ZuYEJKgQ!{C+?6u)@I6&GVO7K6#9lRc5mkN`2Wm zy}slEOnvKU8*sU0r{Dd3{rI*qb;BM$FPWgV{kI&oE9zm;!0?HA)H6l31k|@}Da2&p zjp63Q%*>zzp4D)=MAYse0kEBrlE#|U$(j_ebiG1^UL08!S}W4;7xvXIi15Q97vEt7kNw3q}|Ag!S zYA}0xf}>g-3C~$O%jqLCO8nqqdWDkcYr6=PhzAqd$a&Z1XSbEr2CWp`SC`K;HR!wo z@Il)XAC?@Y`51)9n~@tTlbIu+%dOr?m_b)Ry?aAA&{p$zQ;>pdhFqRRulw|6?lj=i z_gc3#d?&)pP>=M>uu{vs6HSN-o??V;2TH>bk9#;ZfcMLfqJ0JYaQg$EuQ*R0Druy8 zg2^d#SY49_8}3&jSi%j$#{$LL(jyRz1@l)}sfzF50=ENW@j|A|?c}j0T=3}65%N}{P=CpXTYy<oJIGCcW(!Qh2mel9?1Q^ zccNjK2=#k!k6S{I4F9_AoexmF%m8V4Pr0g~xKDulR7A>%@s`g*fb^!kG51e=5rkI} zcyKWCdU!``j+zXd|MKRgl~w(4$OI?E%TFszpt$QR&<|)R$cwGU{me0aEAn9Xa_Cqg zc*(0!@EiV$R9pNI49$7rpPzYcHMuibpqu+G%Zqifo+hNB7}bN*IRfgMDw0IBBVQjz zdSk)4^YnL|aGARmZNL|&Ahp&%ATmL7tSi6J{|=AtRC>S@cfhy0EHnEhlt@1{uJ+Xk zY^?Cna3ZmW*G-`Mqm_9IK4|SW?Ki&OdwVtf8qZ4xUh`6NruPP7Mxz?h`AGH7_ETwb z3m=aY4m5_r+{hN&#v0nVB~oq8D9;Jb#U5KD&dWb+`u730Ck5|$bJ0yvxT3GShdZ~& zjS}iSYdr?5S4Bd#ys#SU$96g+?^V+}ez+Govv1wM+JDfszs@3Q^>f#>9FSI0QZK?` zOsqszDqJ}tB)gJmQ3o32%mrG`(3Pl0Q9gN=!OPGp*A(3!GNa_MdBl$JuH~4q6}*%8 z5%u34G+sA8@8$~KN%*B3wQBM@84?XYXQ1$S`B*?kG5t+3mj)((#SVx}f=mVW;&Cs$ z*RHUN=Qs;DiqDu*bE#YeU<#K|gdXs$VyFGQc^9kA>SoCtid*O!_ zi509rJ=@o$V?Uj)A}L)Tm8vD1;mB$(fqk89UGZYubqEyLg`T3~S}ef+QJrOXoCa!D2@E zqW?$1kYy+kr*x#c;q0`&Ni{CzN2^Y36UW-Qt)7x2c%(p_y60RIG9;%ufh;XUm5$>* zW>8u~^N&y^#Nb8esb#h*%RjO9SBzX5@5iCHM|08TS-G4Rf>Uiv0rWyO>~`l041V{p zYIoOLewgzV77Q2^YzWVOvdCgk0`)q3B#v1klwCB$QL#;TduegiDq%EGY*8@0hFfIt zEs0-xC@hhBXcL6Mk;E-&(eIN}UH9&s)v0r(i3mLa9kPmg#oY zFVN)KP}^IC)0NBoNNh8L9Vxpn3evB3@>J${gX;m#9R(VLg*qYit61ZX0+d#g{RmBj zi%=XOh`{^=(tb7Iq$H%kbi*d+n(x5IY1vJbcza&gODBA4@Z8(?5V|{ zrNp1H6D}-~EL??74yBjqmhNB=lVScT6DD!gl&93OpUN$;`qeZJ3K3<49yZi%z2cw0 z-9wkAK5@T!{M37@_DH>f6@4vc9)x|EF?-7OYJG_W6A%ZiRxO$pwhDqx$EvnpV(x^z zNZdK0$c?WgnoA5O%#E!a9O5qyL!^FpntFH2u{*bNFvk)0^RSnu_L1oDLi|KRe=78} zos$vPI~+_Gf|MJug_LR z6!d>h4uX$LUCze^M}h!hvi0?XvuKX5zT#}O81xDA5Wx|rOl}aGi$VNdjz^fh3684_ zQ=JG?#X+n*N2KhZ)|`}DjK*yz=-cxuYO3TO z7az9~t;#5uKi%H0z|u|yH^#0rY}i9nBAgLB*vf!4akiMg=)#F+&0=b=_K$-hRG)wg z+MMO572T@zj+?!!>ple;DAO8I?hIxh>3&-e1!UAohmwMiT(6EAwnjPm00E_GyW9> z@45%?y4YQs6N?{__&Vvuvj&LWSl2P1!jvX?!X?VC;yu%Z*x0Xa{j`szXZxUV&rdp2Q}hGRhg2 zho;E3No_gBY&iw7nBlRQv85>8xeJn`_wwi3GlpwGDKQL|wREq1v}5?+@8hX{WlwOE zJj968{%g5E4iX0cHDxt7Z1M<6?m0+ak+rCX?T?@8(c~)#dE8% zDT{*_n}3TitIQMs7I6&PP@NexgpH+G*np%N9-R+EVjbObg?4&HQ^FZdAm+Ygd48eW@Db>hfOTe$j0)yO z3HQ&!K+a@^qX#ap5@$}V+EE&BQng zAO}awIGC)tCXM~w2hu6Tm*M{MKGb0-ayN|85>w6?okJuq^5aLy-+zgAJM9O4f}G@k zDwJD?6}~w#;>NSCqvK=Z2ay4JED|MaDCl*8)Lhc$sv^@K5FWi)~d?0+A zxx{BEXoHtD0vxaaI+O)QiM()#6mth0&~6e_)V2#u3kmAXIkfoTHLaqwWNRgCB6!e2 z{PMBi-%{c|aIxC{rT0CE$eQD!u^$5?zqA*KOAKX=B+^MgR4%P7bz4ml}DLA?;NSZ6TCDS@DfCY@fJ&7b(y^ayvhQ#=y%{G3s;N* zXt~Y(0PW767~s|vVh;q3RG8!!KH@*A?>GzVClon&zmqG#_=*qT+Ydu8yH&`%&An~Z z2)_1c9>G=m*v=C>f}w3dIXA{_gipGFDSRxvgVl0A_bwh-Cu#%b4O7oiC>mDO%|7sn zPfjD_a*sfE$kTWeJZRIFwhN~#_i&r3rXq!0bzz9UtAjQ205D@lL6*Fze5Sn>hs z)}I8ram9ZychZ7RB_!rk!v=+dLeT=V2yQZ%5@o2VG!sZ!G)<1iBq$g#^vf=BmGzye z^S_}YI3ZDL-Wx-aX{{_+59Xk@pMdaBZDAlxTY__9d#?izWeEC3sEQEdgK|<`meWLl z_o~&EL`#t#ozop+9z<-7^I4ZbZn(<8Tq%bNPEZpMLL8`=^tZVo@TwBmJ7$-j zx3!89f}^<(u}_w*uKU!5Mr1gz28qPk(~$$jXR8r&a88{e@nFW1R+>!iKa}?70y<`O zcszJ3h|}ylyw1EuKUxzxiKLprGyu`=Fw-(PXL|FH$5P?T#@vPnSurR zq}<>O`R;Fy>si8HRM(IJa#%bwvk4TYS1^uPn2(q2B)Tl4s?^iPldi^*rWPF&`l+V- zfFnP-hQQ-GXzzmn?D&Rz|2C(@AAf0C#`%5%^w0TrP8EQ{v z_HE7CPnGmC;AEi<^ts;uUZb!KXr{yO~|n`+JBswj63Eo#S=zflkO=AwSgvwj)6{f@jUbdmL? zoWw$7iOtv2MVngFzEyYNg0!}!b$ohojJ-k4v35zdrAI-@Gh;~DasaA~Qj6C=CrlfU zM3mSqD*_E62dDN(;kU9wNbBjadV*l=(;V+8fnoK5%|qW*RC_4=6|rp6_PioLb*pD) zxLHM>euekgD#uCSOg&+y(ALx2?!!^Gu(uI^>#8qZvAF?VaZ-Q=-m2OJO1Zm1F0+u6 zJx+@1UIB98rDzeuY{D5%LthuMk{HO;EiPy%y}JxCWx*hLgQ= znTBKhI@#fj?n5aL)h=>?Yq=i{qqPjMek3&gvwj6phDL?qE)4XRCvkk8@~J3P3RH~) zJboFmPSKnneu+9bAFcNuZ6c(H8~)++ThU7#xNX0qq~k2KRR8v-D*vVl-H{F)duNKH zKI}F(sLrK)Dk_}9TTvVn0$mAn9ya)%OlV5df+N}H%K+jD_8lde!NKsN?QBgBy0IfZ z)$FubsA@u76d@TDKHBS{NiUB+v2*I-wZgr`4m^#nLz%ex&%7N|>GEJ{NcA`xpcZ`& zZF#hT90P6gYGkj~J{WwI;Anm3huC@jIEh_91asJaU%NOMoS>90fn8Tw2W;Ae*Ta<~ zwrzl2(;^&R3;KrOGZkw=X$H1VnY8dQ`SjF_d^gjt4oO@;|6$ga+_Xg`7D@RH=7{E# zT`K=~wApkK+z**t&vkcAcoM>VE2ee56%%hkaqzqZ7kOl3mW0?@9mMuvsuuN%T&vzf zfi_Av@jylv1$E5(sY6(!47M8>8{O@F+2v6wU>58bN~@qRrLp1r!z(r6C& zzBzs&+Fex6^%WjbV&Cakedj$A7Iq(a7y6-7AWGZv=vjz5VQD5zf>GE8Q0c}jAx0+* z*VZT*lPG>T&-59RLpu$y71x$4AD-)lx(VQ=m}{4eIT5sJCOwh)BH$|9(xi>uJ%OdB zJ)zXrVd5p&3I-se)x`>+Vcqsf19bho@JxV?e^ZuBid;Jvh?55meUw?zZ9eVl8Np|I zXDd_B!h-L2=FM9hV|s0-C9W?8mVb=Y_lJLXe|Fs{x6@klO9ujNrd3qBHBK1#b=)cR zmOyV*OYhru*Udxpwbm+Ex%RMB_X-J$d9s8%n$he21i7wAWPNL;SnBP=Jg_7J^+D+8f{)HAb$|>^1F&pxcyKQHimP|@R4l}F$T+#u&M%RxWYb}}60BAE` z8yw&aEFX-qBWxUF9Duq;o6~pdyc+MS?@ziW(2``(8uL&K&%;twM61)WOM)=i;1}uK zp>6=r`$0sAnrd~bjb##SUK{vpjMxDxk6UOz0W>*+4HGAH`Zvn+69161z$?Hg88Ace z`jh{uKJeAoc`SAQwCmL0^DUKeZkxq23-C&r^-Oi!f8Q;F$1wPrkY^@@3ND-@XV~-;#<*1{3jqFW1>v7ktL4Wb?soJC+1fXkCZ{!==}OsOeVV5|4>F>%ODny$ zjh09T8E&irx^DFGS_Fw?8}=H%o)1hy4uTJ9;9-hK#k*X`+!ADC2UJ{2ugL_Oe7&|I zie1uWKDLCO_-gg=Kisnzk2NP1cKLlxS}_U{2<~7V@IN%@#3^S$vO^L6j$61a-Jo@p zTfe{5?5Vqj_wl4j$VbRA*`b=6N;pLzXDHASm%Th32 zjK`I*Q#GC05Kc^#PA6N9os1+A1m0e@P|_VKf0lwI_XOjiIV>xwFepw@y$en@~nq%)bou zaKb|sOs1xiGFBBi9{OXzsIpSt(^JL{{3W-3T)rM>TGA6nJ>7qBz@!Fe_@r@3>!I*e<&$77v_+N~19IJ2U2yDoa zd|lXV_Xh?bSLxste2}FSs>NQS7Q9xR07>P25Xig00#NAk!UO+K0T6;tV1BpKRRfc5 zeM{zDkA-t|v|OXVw3@z)aQ53KC+PHcR~IQg3Aq zw*3r1sYVNR_o@}utHw}KfBS@#$Jg`j|EDOLE2&q5l)k+W% zzK;->LX>D!hIkO-Pgftqs=U8YHqEJHWH3??V$}TMNqhU9@yK1vrQhV@{mUB-`1x%e z8G}WjownMEJZFt_^s=a5$tq+J#z9UgM^TE}CGdo^!8O#TGOYI{v@+g%XoikD{u4dB z*F8qhNF2*??>%6WHIN-2%GAz11`|UN7R@M!Z~#(>b%24lbqIcpP7)Of)pBQLyTVju zi+pasmz-nqYLBy3|Y2;gnNVEcK(v%{v~CdLwS+In{)4e|iqS3T(s0}MY1_7q z)3$Bfw(UM`+qUgKZQHi{n=_NSnq-py=B>)Qs9mY-?9^UW>v9q-X;=Yki!AqDK9|W z!Emd`q}jJxYK6hJ9-?>POvfDySp{-+^Y-*CRv2Gc(}J*N9U%5%LTtV8b|_{%C(S03 z3WY`-v!}~LuYDA+R9ff;b}mkStN`Z_Jxc-hZvTz!dOxJQ`Cne_7;f1*_yWJj_ux(U z$oc%={4$3%`{POnam z89vb!bnXK)19V77^UDOgq1q@RhTO9P;mW$>6_U(3(@Vi@Pm+;4`BzACh}eWlP&m?g z6)5i-!s@CJ?xl4`oW6?Gv`}Gr837rzT){Kv=3e%9Vbro^D=~lqi)(UDkgZoNqEf72e4`2<%=<=NA3oU*Fjm6~a$jGho3qc~hInKw!XT|muYYfE7FLM^^Wz0v~6*ZcF0pjCm z=wn8aJ1_Cx*JYX?gr(s60Rr30#e-9L#yABcnfVu<71{g8#Yg=wbu9VOUam?^u{ihu z1)trj#EV4S*Pn6a3mlu z-_1QGcbe&=5*E`-nJWk14SHnMI2>y|w8!7HR(dj+r||sV3N@&*Rdp1a;FazyR54}m z;Y{@Du~Q}>^JVX-D(M^U4}zzold4}rr|{2n>8EweTldJGhYSNVJXkwLLnXEZdn|j5 zM)`fqd^MUDEH8oTt0q+fyPe={Jdjg+)Zt5H^p6EDW8fXxYM@j6@;!>#KWUWr?$lM= z2G;7|l+W`&wFcuG?-OsA)!KJ--PdOx1$*6I&0F&QO*u}409BI!iKuUPC;ybKy#xZ* zn0&9i#Gm=go=PxMbFMrUGM6td6l=Ol@3v*(d(YRv-erA@l5HjCLuAA-F}fqRdr#iJIoKBn1%J{2&o2Jan)(h@6)M!J@ z-3q^c#zp0=oldE!Y8W%cpedlrXhC69x7)I&Yw19x;PtvwqG@B-K6c#fve!Iag(d}w z+EZf-v}^sPPaJOdj=WsJT=iq_oV4Y#>L6x=Y(Pt9bn8U4^%*+#Zri#^ zA^b0cH}Kd$OE=0T>JprdBc8@hqTnV)sXdy#HWdkyi%oJ9(&BioLM|XW&~bi1f+UEk zTu2!2bQ%wwGx--{u*e2T`QM>GzvYCwdd>YOqey3N#jg%3$IB)ndf@-&kBieXtmy-f z0lSn|_k#gf5%N-m_O%8Bxw-0(gGg#*?2?&oe-aKaE4W^qQs;**+$6{(8$k3;MtHm! z@fYw7KAP8A4B(uBlHE3lW2r6sdcvqK=bbu`$(d4Q@_ zTaRH&KEq*gk<9ZL88{3Ql5tA7x{QUo*VIaJwCXR$%$RSgsO8J7b*plMSOG;$_lMy* zdIp6NuLTd+wUj6(U5CdovIvq{k5*eX57Le-UvkQ$-4;6p#x53*C^&0oDzX$r_cKUt z=AaUnoIt_&sPV`Cw1ZCHDf_E-A}9BE8RSm~OTGZ(!=L|+B||4)wgoX0bIn>MHZyEL zCrbx6yXXU7w^Ufgt^}fDQ}L0s)}-{|W9SbEmN5vqDRG!ZU_F=OiS8^9Ihhn32ynT)_x&d9*OHc^)Meu>3Es@-s>cd+2e zTeYULs;TJN)f}*Hqdt4H&pd6nTIDMkgMZptFd-=;b?tR)D(bR|#&N5uOWzBtUCwIC zFuNv=WRu<}X2b_Kcm^rm5FNzIM(vs8naDK7^12-Gv{yGhj|twGW4bc{?Pkl;qeoLO zESrrrPvjwcGDFH)xr8B&%k{;nQ_%UOpEq`K5avnFghNYcA_Dtb!jWkI`Uw5{b$08I z;p?Bj8umIso3Z8p8>ajIwEBZ7-oVFy5cifOV|k~~fBHWB=W*>-;IAX*m;c^K-#?%A zIDz0FfrJmX`&j(ra9scD3E$qDF+{uA5O9DDf1{5pn7^x7A-~k;3?YLt<1#->5%PVd z9h0w7{p@Q5{LG#BRucf-H@^BF&_v#NZOq@aW3FqTaCy%V3O41hd0X+Ws`MUh@ z*EwFXSzBETI+Q3s70H#K2uf*P_X@6Vn?UR|9(}z!MQ+MPA-@-migJrxm|QsgnF8g$ z$=)iz7T*}rA4r@8T(?!` zGfA4IFQ;;|1;QL4ul(s@oomG0hBIGx->r~|VQcxy{5CUbP@EMxTTSFj8e`DMKS&

    bna7s=EVx1|fi3(Di5W-*+Y*!@9 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

    BH=l#W`#?aO0b8J#RW|rtGI0crb5X;U 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�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

    IEIeA!H-Wn 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%0A90_b^BbPo9Az2>Ie1x$?LA(|l=nujo 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 z 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

    f>*cK5&d?+9&TKT|T%0Y76x+t* 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