From 197399234d9173c57c5a37e1430e75e7d697e3f3 Mon Sep 17 00:00:00 2001 From: "penify-dev[bot]" <146478655+penify-dev[bot]@users.noreply.github.com> Date: Wed, 14 May 2025 04:21:25 +0000 Subject: [PATCH] Add architecture documentation --- docs/html/README_8md.html | 129 + docs/html/annotated.html | 159 + docs/html/annotated_dup.js | 44 + docs/html/api__client_8py.html | 145 + docs/html/api__client_8py.js | 4 + docs/html/auth__commands_8py.html | 149 + docs/html/auth__commands_8py.js | 5 + docs/html/base__analyzer_8py.html | 145 + 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 | 144 + 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 | 158 + ...k_1_1api__client_1_1APIClient-members.html | 140 + ...ify__hook_1_1api__client_1_1APIClient.html | 467 +++ ...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 | 139 + ...ook_1_1base__analyzer_1_1BaseAnalyzer.html | 307 ++ ..._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 | 137 + ...1commit__analyzer_1_1CommitDocGenHook.html | 485 +++ ...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 | 136 + ...file__analyzer_1_1FileAnalyzerGenHook.html | 361 +++ ..._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 | 135 + ...er__analyzer_1_1FolderAnalyzerGenHook.html | 300 ++ ...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 | 136 + ...ook_1_1git__analyzer_1_1GitDocGenHook.html | 384 +++ ..._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 | 146 + ...y__hook_1_1jira__client_1_1JiraClient.html | 773 +++++ ...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 | 136 + ...ify__hook_1_1llm__client_1_1LLMClient.html | 359 +++ ...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 | 144 + ...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 | 143 + ...ommit__commands_1_1TestCommitCommands.html | 790 +++++ ..._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 | 143 + ...onfig__commands_1_1TestConfigCommands.html | 885 ++++++ ..._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 | 133 + ...1_1test__web__config_1_1TestWebConfig.html | 267 ++ ...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 | 129 + docs/html/commit__analyzer_8py.html | 145 + docs/html/commit__analyzer_8py.js | 4 + docs/html/commit__commands_8py.html | 151 + docs/html/commit__commands_8py.js | 6 + docs/html/config-commands_8md.html | 129 + docs/html/config__command_8py.html | 147 + docs/html/config__command_8py.js | 5 + docs/html/config__commands_8py.html | 173 ++ docs/html/config__commands_8py.js | 15 + docs/html/conftest_8py.html | 139 + docs/html/constants_8py.html | 147 + docs/html/constants_8py.js | 5 + docs/html/detailed-usage_8md.html | 129 + .../dir_063e2d5fe58a131099a7fe4200cca78c.html | 151 + .../dir_063e2d5fe58a131099a7fe4200cca78c.js | 9 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.map | 4 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.md5 | 1 + ...r_063e2d5fe58a131099a7fe4200cca78c_dep.svg | 30 + .../dir_1648a057408aae8db85b8e3797335623.html | 135 + ...r_1648a057408aae8db85b8e3797335623_dep.map | 4 + ...r_1648a057408aae8db85b8e3797335623_dep.md5 | 1 + ...r_1648a057408aae8db85b8e3797335623_dep.svg | 30 + .../dir_624fa2a8bce97f0444ac5cca335d4e23.html | 151 + .../dir_624fa2a8bce97f0444ac5cca335d4e23.js | 9 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.map | 4 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 | 1 + ...r_624fa2a8bce97f0444ac5cca335d4e23_dep.svg | 30 + .../dir_b3b22d2ab7966b65f6b237e3231b41be.html | 144 + .../dir_b3b22d2ab7966b65f6b237e3231b41be.js | 7 + .../dir_f88c3381c1861b3f7ca1f3d63cf244b5.html | 174 ++ .../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 | 129 + docs/html/doc__commands_8py.html | 157 + 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 | 129 + docs/html/file__analyzer_8py.html | 151 + docs/html/file__analyzer_8py.js | 5 + docs/html/files.html | 165 + docs/html/files_dup.js | 4 + docs/html/folder__analyzer_8py.html | 145 + 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 | 260 ++ docs/html/functions_func.html | 229 ++ docs/html/functions_vars.html | 146 + docs/html/git__analyzer_8py.html | 151 + docs/html/git__analyzer_8py.js | 5 + docs/html/graph_legend.html | 188 ++ docs/html/graph_legend.md5 | 1 + docs/html/graph_legend.svg | 117 + docs/html/hierarchy.html | 147 + docs/html/hierarchy.js | 18 + docs/html/hook__commands_8py.html | 157 + docs/html/hook__commands_8py.js | 7 + docs/html/index.html | 128 + 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 | 148 + docs/html/jira__client_8py.html | 151 + docs/html/jira__client_8py.js | 5 + docs/html/jquery.js | 35 + docs/html/llm__client_8py.html | 145 + docs/html/llm__client_8py.js | 4 + docs/html/login__command_8py.html | 147 + docs/html/login__command_8py.js | 5 + docs/html/main_8py.html | 145 + docs/html/main_8py.js | 4 + ...nContext_Penify_dev_penify_cli_README.html | 243 ++ ...y_dev_penify_cli_docs_commit_commands.html | 254 ++ ...y_dev_penify_cli_docs_config_commands.html | 285 ++ ...fy_dev_penify_cli_docs_detailed_usage.html | 279 ++ ...nify_dev_penify_cli_docs_doc_commands.html | 362 +++ ...dev_penify_cli_docs_example_workflows.html | 238 ++ docs/html/menu.js | 135 + docs/html/menudata.js | 117 + docs/html/namespacemembers.html | 288 ++ docs/html/namespacemembers_func.html | 227 ++ docs/html/namespacemembers_vars.html | 214 ++ docs/html/namespacepenify__hook.html | 165 + docs/html/namespacepenify__hook.js | 56 + .../namespacepenify__hook_1_1api__client.html | 137 + .../namespacepenify__hook_1_1api__client.js | 4 + ...mespacepenify__hook_1_1base__analyzer.html | 137 + ...namespacepenify__hook_1_1base__analyzer.js | 4 + .../namespacepenify__hook_1_1commands.html | 145 + .../html/namespacepenify__hook_1_1commands.js | 38 + ...y__hook_1_1commands_1_1auth__commands.html | 228 ++ ...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 | 310 ++ ...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 | 566 ++++ ...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 | 278 ++ ...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 | 241 ++ ...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 | 137 + ...mespacepenify__hook_1_1commit__analyzer.js | 4 + ...espacepenify__hook_1_1config__command.html | 204 ++ ...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 | 168 ++ ...mespacepenify__hook_1_1file__analyzer.html | 158 + ...namespacepenify__hook_1_1file__analyzer.js | 5 + ...spacepenify__hook_1_1folder__analyzer.html | 137 + ...mespacepenify__hook_1_1folder__analyzer.js | 4 + ...amespacepenify__hook_1_1git__analyzer.html | 158 + .../namespacepenify__hook_1_1git__analyzer.js | 5 + ...namespacepenify__hook_1_1jira__client.html | 158 + .../namespacepenify__hook_1_1jira__client.js | 5 + .../namespacepenify__hook_1_1llm__client.html | 137 + .../namespacepenify__hook_1_1llm__client.js | 4 + ...mespacepenify__hook_1_1login__command.html | 195 ++ ...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 | 175 ++ ...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 | 794 +++++ ...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 | 252 ++ 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 | 172 ++ docs/html/namespaces_dup.js | 20 + docs/html/namespacesetup.html | 344 +++ docs/html/namespacetests.html | 145 + docs/html/namespacetests.js | 20 + docs/html/namespacetests_1_1conftest.html | 129 + ...espacetests_1_1test__commit__commands.html | 137 + ...amespacetests_1_1test__commit__commands.js | 4 + ...espacetests_1_1test__config__commands.html | 137 + ...amespacetests_1_1test__config__commands.js | 4 + ...namespacetests_1_1test__doc__commands.html | 745 +++++ ...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 | 137 + .../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 | 138 + docs/html/penify-cli-documentation_8md.html | 129 + docs/html/penify__hook_2____init_____8py.html | 129 + ...ify__hook_2commands_2____init_____8py.html | 139 + 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 | 167 + 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 | 145 + docs/html/test__commit__commands_8py.js | 4 + docs/html/test__config__commands_8py.html | 145 + docs/html/test__config__commands_8py.js | 4 + docs/html/test__doc__commands_8py.html | 165 + docs/html/test__doc__commands_8py.js | 14 + docs/html/test__web__config_8py.html | 145 + docs/html/test__web__config_8py.js | 4 + docs/html/tests_2____init_____8py.html | 137 + docs/html/toggle-alternative-theme.js | 11 + docs/html/ui__utils_8py.html | 199 ++ docs/html/ui__utils_8py.js | 29 + docs/html/utils_8py.html | 161 + docs/html/utils_8py.js | 8 + docs/penify-cli-Penify-dev-g.tar.gz | Bin 0 -> 789830 bytes 973 files changed, 72860 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..f2007af --- /dev/null +++ b/docs/html/README_8md.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + +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..9ec6a29 --- /dev/null +++ b/docs/html/annotated.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + +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..a543659 --- /dev/null +++ b/docs/html/api__client_8py.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + +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..240b5ef --- /dev/null +++ b/docs/html/auth__commands_8py.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + +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..d880df5 --- /dev/null +++ b/docs/html/base__analyzer_8py.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + +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..3e9d56c --- /dev/null +++ b/docs/html/classes.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + +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..f5b5f5d --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient-members.html @@ -0,0 +1,140 @@ + + + + + + + + + + + + + + + + + +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..9816843 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.html @@ -0,0 +1,467 @@ + + + + + + + + + + + + + + + + + +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..ca9d78c --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + +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..8005a7c --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html @@ -0,0 +1,307 @@ + + + + + + + + + + + + + + + + + +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..8b242fa --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + +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..738ad71 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html @@ -0,0 +1,485 @@ + + + + + + + + + + + + + + + + + +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..0dc1f3f --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook-members.html @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + +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..00c8167 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html @@ -0,0 +1,361 @@ + + + + + + + + + + + + + + + + + +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..3646ba3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + +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..d5accd3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html @@ -0,0 +1,300 @@ + + + + + + + + + + + + + + + + + +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..851e22b --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + +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..f04c5bd --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html @@ -0,0 +1,384 @@ + + + + + + + + + + + + + + + + + +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..c63abc1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + +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..c4bd928 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html @@ -0,0 +1,773 @@ + + + + + + + + + + + + + + + + + +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..5103a4c --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + +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..141d86e --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient.html @@ -0,0 +1,359 @@ + + + + + + + + + + + + + + + + + +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..1d07d4c --- /dev/null +++ b/docs/html/classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + +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..f87c021 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands-members.html @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + +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..3676728 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.html @@ -0,0 +1,790 @@ + + + + + + + + + + + + + + + + + +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..fd9977a --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + +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..1d988ee --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.html @@ -0,0 +1,885 @@ + + + + + + + + + + + + + + + + + +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..4cd0291 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + +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..3b0b24b --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.html @@ -0,0 +1,267 @@ + + + + + + + + + + + + + + + + + +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..3e2d4a3 --- /dev/null +++ b/docs/html/commit-commands_8md.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + +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..27816e8 --- /dev/null +++ b/docs/html/commit__analyzer_8py.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + +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..dc9515b --- /dev/null +++ b/docs/html/commit__commands_8py.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + +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..24acffa --- /dev/null +++ b/docs/html/config-commands_8md.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + +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..2344b24 --- /dev/null +++ b/docs/html/config__command_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + +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..d1a83cb --- /dev/null +++ b/docs/html/config__commands_8py.html @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + +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..2b06170 --- /dev/null +++ b/docs/html/conftest_8py.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + +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..db386d5 --- /dev/null +++ b/docs/html/constants_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + +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..8ef2818 --- /dev/null +++ b/docs/html/detailed-usage_8md.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + +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..b95b9dd --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + +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..1e6c930 --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623.html @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + +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..5606c76 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + +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..72cc632 --- /dev/null +++ b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + +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..356d532 --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + +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..a6e6e40 --- /dev/null +++ b/docs/html/doc__commands_8md.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + +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..b0f00ca --- /dev/null +++ b/docs/html/doc__commands_8py.html @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + +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..4e6d97d --- /dev/null +++ b/docs/html/file__analyzer_8py.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + +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..ccb382f --- /dev/null +++ b/docs/html/files.html @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + +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..8db90e1 --- /dev/null +++ b/docs/html/folder__analyzer_8py.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + +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..643ec6a --- /dev/null +++ b/docs/html/functions.html @@ -0,0 +1,260 @@ + + + + + + + + + + + + + + + + + +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..4371138 --- /dev/null +++ b/docs/html/functions_func.html @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + +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..9e36c24 --- /dev/null +++ b/docs/html/functions_vars.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + +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..96dd1ec --- /dev/null +++ b/docs/html/git__analyzer_8py.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + +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..43109e1 --- /dev/null +++ b/docs/html/graph_legend.html @@ -0,0 +1,188 @@ + + + + + + + + + + + + + + + + + +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..092a9c5 --- /dev/null +++ b/docs/html/hierarchy.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + +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..fbd82ea --- /dev/null +++ b/docs/html/hook__commands_8py.html @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + +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..0ebbd6b --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + +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..170e3da --- /dev/null +++ b/docs/html/inherits.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + +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..5f3db70 --- /dev/null +++ b/docs/html/jira__client_8py.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + +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..7ef3507 --- /dev/null +++ b/docs/html/llm__client_8py.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/llm_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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..babef7a --- /dev/null +++ b/docs/html/login__command_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/login_command.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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..7134e99 --- /dev/null +++ b/docs/html/main_8py.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/main.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
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..6569a28 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI Tool + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..d2fa24b --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html @@ -0,0 +1,254 @@ + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Commit Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..efe2f92 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html @@ -0,0 +1,285 @@ + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Configuration Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..26f4c45 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html @@ -0,0 +1,279 @@ + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Detailed Usage Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..084f411 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html @@ -0,0 +1,362 @@ + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Documentation Generation Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..6213355 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI Example Workflows + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
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..83a5f6e --- /dev/null +++ b/docs/html/namespacemembers.html @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + +penify-cli: Namespace Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - a -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - v -

    + + +

    - w -

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

    - c -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

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

    - a -

    + + +

    - c -

      +
    • 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..fc76960 --- /dev/null +++ b/docs/html/namespacepenify__hook.html @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + +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..b56edff --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1api__client.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.api_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..a838145 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1base__analyzer.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.base_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..45f2e1d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + +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..b548e89 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html @@ -0,0 +1,228 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.auth_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..f486e07 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1commit__commands.html @@ -0,0 +1,310 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.commit_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..2927d1d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1config__commands.html @@ -0,0 +1,566 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.config_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..8a77deb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands.html @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.doc_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..7401a80 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.hook_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..71d4ec9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commit__analyzer.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commit_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..ff57d54 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command.html @@ -0,0 +1,204 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.config_command Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..78939c0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1constants.html @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + +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..66b3a4d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1file__analyzer.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.file_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..eaf9b7d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1folder__analyzer.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.folder_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..c7d9712 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1git__analyzer.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.git_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..842a160 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1jira__client.html @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.jira_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..f3d4610 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1llm__client.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.llm_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..056354c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command.html @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.login_command Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..b005417 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1main.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + +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..a973a93 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1ui__utils.html @@ -0,0 +1,794 @@ + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.ui_utils Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..9d9ce29 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils.html @@ -0,0 +1,252 @@ + + + + + + + + + + + + + + + + + +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..d6dfa7d --- /dev/null +++ b/docs/html/namespaces.html @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + +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..659ae1d --- /dev/null +++ b/docs/html/namespacesetup.html @@ -0,0 +1,344 @@ + + + + + + + + + + + + + + + + + +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..b1b39ec --- /dev/null +++ b/docs/html/namespacetests.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + +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..8a842c1 --- /dev/null +++ b/docs/html/namespacetests_1_1conftest.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + +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..e0728ff --- /dev/null +++ b/docs/html/namespacetests_1_1test__commit__commands.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + +penify-cli: tests.test_commit_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..bb62914 --- /dev/null +++ b/docs/html/namespacetests_1_1test__config__commands.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + +penify-cli: tests.test_config_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..7e825db --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands.html @@ -0,0 +1,745 @@ + + + + + + + + + + + + + + + + + +penify-cli: tests.test_doc_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..fc624b3 --- /dev/null +++ b/docs/html/namespacetests_1_1test__web__config.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + +penify-cli: tests.test_web_config Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..ff26794 --- /dev/null +++ b/docs/html/penify-cli-documentation_8md.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/penify-cli-documentation.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    /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..0bcb0f1 --- /dev/null +++ b/docs/html/penify__hook_2____init_____8py.html @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    __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..0556d79 --- /dev/null +++ b/docs/html/penify__hook_2commands_2____init_____8py.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    __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..908f623 --- /dev/null +++ b/docs/html/setup_8py.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/setup.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    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..07474a3 --- /dev/null +++ b/docs/html/test__commit__commands_8py.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + +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..3514bd8 --- /dev/null +++ b/docs/html/test__config__commands_8py.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + +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..29c62e0 --- /dev/null +++ b/docs/html/test__doc__commands_8py.html @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + +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..d44ed2e --- /dev/null +++ b/docs/html/test__web__config_8py.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + +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..36c6fe1 --- /dev/null +++ b/docs/html/tests_2____init_____8py.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + +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..bbdf59f --- /dev/null +++ b/docs/html/ui__utils_8py.html @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + +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..3e8a999 --- /dev/null +++ b/docs/html/utils_8py.html @@ -0,0 +1,161 @@ + + + + + + + + + + + + + + + + + +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..156e5dac074086054a663cf8604bbbeba08880e5 GIT binary patch literal 789830 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�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�k@x~Riv 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

    D-!q%J2 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Ξ06jZ++@$8Nnc`}8Y>FzZs#>u8W{m+UJY+k3K+; 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

    p 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%0A`^U5O$)g(2Ze|Ofha)6N>k1V6 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 CF@Br7Q}3 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 literal 0 HcmV?d00001

    &z{fT3@IxL5_~D))ql!_|Zs{B^<5# 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�Ru5zMQ*h}fVKf)>bQa!JA0 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