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

+Classes

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

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.api_client
 
+
+
+ + + + + diff --git a/docs/html/api__client_8py.js b/docs/html/api__client_8py.js new file mode 100644 index 0000000..a3575a0 --- /dev/null +++ b/docs/html/api__client_8py.js @@ -0,0 +1,4 @@ +var api__client_8py = +[ + [ "penify_hook.api_client.APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", "classpenify__hook_1_1api__client_1_1APIClient" ] +]; \ No newline at end of file diff --git a/docs/html/auth__commands_8py.html b/docs/html/auth__commands_8py.html new file mode 100644 index 0000000..55bb3be --- /dev/null +++ b/docs/html/auth__commands_8py.html @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/auth_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
auth_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

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

+Functions

def penify_hook.commands.auth_commands.save_credentials (api_key)
 
def penify_hook.commands.auth_commands.login (api_url, dashboard_url)
 
+
+
+ + + + + diff --git a/docs/html/auth__commands_8py.js b/docs/html/auth__commands_8py.js new file mode 100644 index 0000000..3e747e3 --- /dev/null +++ b/docs/html/auth__commands_8py.js @@ -0,0 +1,5 @@ +var auth__commands_8py = +[ + [ "login", "auth__commands_8py.html#a78f375c58bb6f69f98675e6a9ac84655", null ], + [ "save_credentials", "auth__commands_8py.html#aa3956ca1749d4218ea1dc6e5b6218b24", null ] +]; \ No newline at end of file diff --git a/docs/html/base__analyzer_8py.html b/docs/html/base__analyzer_8py.html new file mode 100644 index 0000000..8694c99 --- /dev/null +++ b/docs/html/base__analyzer_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/base_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
base_analyzer.py File Reference
+
+
+ + + + +

+Classes

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

+Namespaces

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

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

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

+Public Member Functions

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

+Public Attributes

 api_url
 
 AUTH_TOKEN
 
 BEARER_TOKEN
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Member Function Documentation

+ +

◆ generate_commit_summary()

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

◆ generate_commit_summary_with_llm()

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

◆ get_api_key()

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

◆ get_supported_file_types()

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

◆ send_file_for_docstring_generation()

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

Member Data Documentation

+ +

◆ api_url

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

◆ AUTH_TOKEN

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

◆ BEARER_TOKEN

+ +
+
+ + + + +
penify_hook.api_client.APIClient.BEARER_TOKEN
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/api_client.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient.js b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.js new file mode 100644 index 0000000..be81d43 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient.js @@ -0,0 +1,12 @@ +var classpenify__hook_1_1api__client_1_1APIClient = +[ + [ "__init__", "classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086", null ], + [ "generate_commit_summary", "classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce", null ], + [ "generate_commit_summary_with_llm", "classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3", null ], + [ "get_api_key", "classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99", null ], + [ "get_supported_file_types", "classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402", null ], + [ "send_file_for_docstring_generation", "classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3", null ], + [ "api_url", "classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872", null ], + [ "AUTH_TOKEN", "classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237", null ], + [ "BEARER_TOKEN", "classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map new file mode 100644 index 0000000..05e004c --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 new file mode 100644 index 0000000..2c7b583 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.md5 @@ -0,0 +1 @@ +92a3e9cee2cd5e4975e6a42b548f0d62 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg new file mode 100644 index 0000000..fe24d95 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient__coll__graph.svg @@ -0,0 +1,36 @@ + + + + + + +penify_hook.api_client.APIClient + + + +Node1 + + +penify_hook.api_client.APIClient + ++ api_url ++ AUTH_TOKEN ++ BEARER_TOKEN + ++ __init__() ++ send_file_for_docstring +_generation() ++ generate_commit_summary() ++ get_supported_file +_types() ++ generate_commit_summary +_with_llm() ++ get_api_key() + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map new file mode 100644 index 0000000..86604e3 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 new file mode 100644 index 0000000..b12cf91 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.md5 @@ -0,0 +1 @@ +ea70dd7bbb840c4828c970ec1a8f5446 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg new file mode 100644 index 0000000..b3f0027 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_a7ff74798e7d428b4e2f20095287eb2ce_icgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary + + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map new file mode 100644 index 0000000..fa6ff5d --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 new file mode 100644 index 0000000..186981a --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.md5 @@ -0,0 +1 @@ +6b1ca4842de706fb2f00719bcb509a8b \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg new file mode 100644 index 0000000..7970d85 --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph.svg @@ -0,0 +1,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary_with_llm + + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node3->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg new file mode 100644 index 0000000..8567a2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1api__client_1_1APIClient_ac0ada470b897935f9fb372cd0e7e51e3_cgraph_org.svg @@ -0,0 +1,70 @@ + + + + + + +penify_hook.api_client.APIClient.generate_commit_summary_with_llm + + + +Node1 + + +penify_hook.api_client.APIClient.generate +_commit_summary_with_llm + + + + + +Node2 + + +penify_hook.api_client.APIClient.generate +_commit_summary + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.llm_client.LLMClient.generate +_commit_summary + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.llm_client.LLMClient.litellm + + + + + +Node3->Node4 + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html new file mode 100644 index 0000000..281d417 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer-members.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html new file mode 100644 index 0000000..689b1b8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.base_analyzer.BaseAnalyzer Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.base_analyzer.BaseAnalyzer Class Reference
+
+
+
+Inheritance diagram for penify_hook.base_analyzer.BaseAnalyzer:
+
+
+
+
+
+Collaboration diagram for penify_hook.base_analyzer.BaseAnalyzer:
+
+
+
+
+ + + + +

+Public Member Functions

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

+Public Attributes

 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Member Data Documentation

+ +

◆ api_client

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

◆ folder_path

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

◆ relative_file_path

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

◆ repo

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

◆ repo_details

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

◆ repo_path

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

◆ supported_file_types

+ +
+
+ + + + +
penify_hook.base_analyzer.BaseAnalyzer.supported_file_types
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/base_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js new file mode 100644 index 0000000..026bd02 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.js @@ -0,0 +1,11 @@ +var classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer = +[ + [ "__init__", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344", null ], + [ "api_client", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2", null ], + [ "folder_path", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25", null ], + [ "relative_file_path", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4", null ], + [ "repo", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369", null ], + [ "repo_details", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5", null ], + [ "repo_path", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499", null ], + [ "supported_file_types", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map new file mode 100644 index 0000000..da4b46d --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 new file mode 100644 index 0000000..8f67765 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.md5 @@ -0,0 +1 @@ +ba0c3a1d5b95dea65df70168e43976e0 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg new file mode 100644 index 0000000..c7b4e4a --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__coll__graph.svg @@ -0,0 +1,33 @@ + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map new file mode 100644 index 0000000..a407121 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 new file mode 100644 index 0000000..cb38209 --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.md5 @@ -0,0 +1 @@ +63e8393eea1557a855929943cd8aca92 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg new file mode 100644 index 0000000..7dc042a --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph.svg @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook + ++ llm_client + ++ __init__() ++ get_summary() ++ run() ++ process_jira_integration() +- _amend_commit() + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + ++ file_path + ++ __init__() ++ process_file() ++ print_processing() ++ run() + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + ++ dir_path + ++ __init__() ++ list_all_files_in_dir() ++ run() + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.git_analyzer. +GitDocGenHook + + + ++ __init__() ++ get_modified_files +_in_last_commit() ++ get_modified_lines() ++ process_file() ++ run() + + + + + +Node1->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg new file mode 100644 index 0000000..0ec411d --- /dev/null +++ b/docs/html/classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer__inherit__graph_org.svg @@ -0,0 +1,127 @@ + + + + + + +penify_hook.base_analyzer.BaseAnalyzer + + + +Node1 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2 + + +penify_hook.commit +_analyzer.CommitDocGenHook + ++ llm_client + ++ __init__() ++ get_summary() ++ run() ++ process_jira_integration() +- _amend_commit() + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + ++ file_path + ++ __init__() ++ process_file() ++ print_processing() ++ run() + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + ++ dir_path + ++ __init__() ++ list_all_files_in_dir() ++ run() + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.git_analyzer. +GitDocGenHook + + + ++ __init__() ++ get_modified_files +_in_last_commit() ++ get_modified_lines() ++ process_file() ++ run() + + + + + +Node1->Node5 + + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html new file mode 100644 index 0000000..877c41e --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook-members.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.commit_analyzer.CommitDocGenHook Member List
+
+
+ +

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

+ + + + + + + +
__init__(self, str repo_path, APIClient api_client, llm_client=None, jira_client=None)penify_hook.commit_analyzer.CommitDocGenHook
_amend_commit(self)penify_hook.commit_analyzer.CommitDocGenHookprivate
get_summary(self, str instruction, bool generate_description)penify_hook.commit_analyzer.CommitDocGenHook
llm_clientpenify_hook.commit_analyzer.CommitDocGenHook
process_jira_integration(self, str title, str description, str msg)penify_hook.commit_analyzer.CommitDocGenHook
run(self, Optional[str] msg, bool edit_commit_message, bool generate_description)penify_hook.commit_analyzer.CommitDocGenHook
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html new file mode 100644 index 0000000..928b461 --- /dev/null +++ b/docs/html/classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html @@ -0,0 +1,487 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commit_analyzer.CommitDocGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.commit_analyzer.CommitDocGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.commit_analyzer.CommitDocGenHook:
+
+
+
+
+
+Collaboration diagram for penify_hook.commit_analyzer.CommitDocGenHook:
+
+
+
+
+ + + + + + + + + + + + +

+Public Member Functions

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

+Public Attributes

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

+Private Member Functions

def _amend_commit (self)
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

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

Member Function Documentation

+ +

◆ _amend_commit()

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

◆ get_summary()

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

◆ process_jira_integration()

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

◆ run()

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

Member Data Documentation

+ +

◆ llm_client

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

+Public Member Functions

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

+Public Attributes

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

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+ +
+
+

Member Function Documentation

+ +

◆ print_processing()

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

◆ process_file()

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

◆ run()

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

Member Data Documentation

+ +

◆ file_path

+ +
+
+ + + + +
penify_hook.file_analyzer.FileAnalyzerGenHook.file_path
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/file_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js new file mode 100644 index 0000000..56b1d3a --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.js @@ -0,0 +1,8 @@ +var classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook = +[ + [ "__init__", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b", null ], + [ "print_processing", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073", null ], + [ "process_file", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e", null ], + [ "run", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1", null ], + [ "file_path", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map new file mode 100644 index 0000000..e20b867 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 new file mode 100644 index 0000000..b6c2c1c --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.md5 @@ -0,0 +1 @@ +98c7ce96bb60ecdbb8c57ef7c2bc6d59 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg new file mode 100644 index 0000000..1907db9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__coll__graph.svg @@ -0,0 +1,56 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + ++ file_path + ++ __init__() ++ process_file() ++ print_processing() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map new file mode 100644 index 0000000..e20b867 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 new file mode 100644 index 0000000..b6c2c1c --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +98c7ce96bb60ecdbb8c57ef7c2bc6d59 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg new file mode 100644 index 0000000..1907db9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook__inherit__graph.svg @@ -0,0 +1,56 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + ++ file_path + ++ __init__() ++ process_file() ++ print_processing() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map new file mode 100644 index 0000000..c05e761 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 new file mode 100644 index 0000000..416cd78 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.md5 @@ -0,0 +1 @@ +dd6dbfdde640f0bc6f1c0cc995a9b4fb \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg new file mode 100644 index 0000000..ebc39ac --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph.svg @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg new file mode 100644 index 0000000..e169853 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_cgraph_org.svg @@ -0,0 +1,71 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.ui_utils.print +_warning + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.ui_utils.format +_warning + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map new file mode 100644 index 0000000..b1658b2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 new file mode 100644 index 0000000..8da8816 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.md5 @@ -0,0 +1 @@ +dce29e772ed93d06e90894791ddc50ca \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg new file mode 100644 index 0000000..5462f2d --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a2cc6c22ef588fccf3eed9bbc57fb6d6e_icgraph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.process_file + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map new file mode 100644 index 0000000..d166069 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 new file mode 100644 index 0000000..f40daaf --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.md5 @@ -0,0 +1 @@ +5c58a576c4056ea132d5a9cca6880cb6 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg new file mode 100644 index 0000000..d480dca --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph.svg @@ -0,0 +1,292 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.run + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node5 + + + + + +Node7 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node7 + + + + + +Node9 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node9 + + + + + +Node12 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.format +_success + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node7->Node8 + + + + + +Node10 + + +penify_hook.ui_utils.print +_warning + + + + + +Node9->Node10 + + + + + +Node9->Node12 + + + + + +Node11 + + +penify_hook.ui_utils.format +_warning + + + + + +Node10->Node11 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg new file mode 100644 index 0000000..68f9912 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a4f4dffbc432fac3e259d957dd1e187f1_cgraph_org.svg @@ -0,0 +1,204 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.run + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_stage_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node5 + + + + + +Node7 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node7 + + + + + +Node9 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node9 + + + + + +Node12 + + +penify_hook.ui_utils.update +_stage + + + + + +Node1->Node12 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.format +_success + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node7->Node8 + + + + + +Node10 + + +penify_hook.ui_utils.print +_warning + + + + + +Node9->Node10 + + + + + +Node9->Node12 + + + + + +Node11 + + +penify_hook.ui_utils.format +_warning + + + + + +Node10->Node11 + + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map new file mode 100644 index 0000000..9da4fb2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 new file mode 100644 index 0000000..a24f9ee --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.md5 @@ -0,0 +1 @@ +e106885ca4b06113170f86da8447c21c \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg new file mode 100644 index 0000000..af5e14f --- /dev/null +++ b/docs/html/classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook_a6ab39391dfb7686f2a2d21a702dd3073_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing + + + +Node1 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.print +_processing + + + + + +Node2 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html new file mode 100644 index 0000000..fdd0465 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook-members.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.folder_analyzer.FolderAnalyzerGenHook Member List
+
+ +
+ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html new file mode 100644 index 0000000..66d606d --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html @@ -0,0 +1,302 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.folder_analyzer.FolderAnalyzerGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.folder_analyzer.FolderAnalyzerGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.folder_analyzer.FolderAnalyzerGenHook:
+
+
+
+
+
+Collaboration diagram for penify_hook.folder_analyzer.FolderAnalyzerGenHook:
+
+
+
+
+ + + + + + + + + + +

+Public Member Functions

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

+Public Attributes

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

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+ +
+
+

Member Function Documentation

+ +

◆ list_all_files_in_dir()

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

◆ run()

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

Member Data Documentation

+ +

◆ dir_path

+ +
+
+ + + + +
penify_hook.folder_analyzer.FolderAnalyzerGenHook.dir_path
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/folder_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js new file mode 100644 index 0000000..5b2a45e --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.js @@ -0,0 +1,7 @@ +var classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook = +[ + [ "__init__", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821", null ], + [ "list_all_files_in_dir", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec", null ], + [ "run", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc", null ], + [ "dir_path", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map new file mode 100644 index 0000000..1d2849e --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 new file mode 100644 index 0000000..320340b --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.md5 @@ -0,0 +1 @@ +2ce8b70614e0bc292a08fd5461334e23 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg new file mode 100644 index 0000000..7cce745 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__coll__graph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook + + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + ++ dir_path + ++ __init__() ++ list_all_files_in_dir() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map new file mode 100644 index 0000000..1d2849e --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 new file mode 100644 index 0000000..320340b --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +2ce8b70614e0bc292a08fd5461334e23 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg new file mode 100644 index 0000000..7cce745 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook__inherit__graph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook + + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + ++ dir_path + ++ __init__() ++ list_all_files_in_dir() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map new file mode 100644 index 0000000..b96ef6a --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 new file mode 100644 index 0000000..4aed41f --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.md5 @@ -0,0 +1 @@ +e2a0ef57ef0713a63ba1c8ee5591e9f5 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg new file mode 100644 index 0000000..dd93702 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_a70b845318fc7ac3b607daf26378e19ec_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook.list_all_files_in_dir + + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.list_all_files_in_dir + + + + + +Node2 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map new file mode 100644 index 0000000..fb5d687 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 new file mode 100644 index 0000000..88516d8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.md5 @@ -0,0 +1 @@ +a3c6817cbc08f61a1a5f2b81334ae3dc \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg new file mode 100644 index 0000000..3e978da --- /dev/null +++ b/docs/html/classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook_afd189d1b8c773bf710a899eb21fd76cc_cgraph.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.folder_analyzer.FolderAnalyzerGenHook.run + + + +Node1 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.run + + + + + +Node2 + + +penify_hook.folder +_analyzer.FolderAnalyzerGen +Hook.list_all_files_in_dir + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html new file mode 100644 index 0000000..1169e85 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook-members.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.git_analyzer.GitDocGenHook Member List
+
+ +
+ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html new file mode 100644 index 0000000..0852786 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html @@ -0,0 +1,386 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.git_analyzer.GitDocGenHook Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.git_analyzer.GitDocGenHook Class Reference
+
+
+
+Inheritance diagram for penify_hook.git_analyzer.GitDocGenHook:
+
+
+
+
+
+Collaboration diagram for penify_hook.git_analyzer.GitDocGenHook:
+
+
+
+
+ + + + + + + + + + + + + + +

+Public Member Functions

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

+Additional Inherited Members

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

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

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

Member Function Documentation

+ +

◆ get_modified_files_in_last_commit()

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

◆ get_modified_lines()

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

◆ process_file()

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

◆ run()

+ +
+
+ + + + + + + + +
def penify_hook.git_analyzer.GitDocGenHook.run ( self)
+
+
Run the post-commit hook.
+
+This method retrieves the list of modified files from the last commit and
+processes each file. It stages any files that have been modified during
+processing and creates an auto-commit if changes were made. A progress bar is
+displayed to indicate the processing status of each file. The method handles
+any exceptions that occur during file processing, printing an error message for
+each file that fails to process. If any modifications are made to the files, an
+auto-commit is created to save those changes.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/git_analyzer.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js new file mode 100644 index 0000000..553f118 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.js @@ -0,0 +1,8 @@ +var classpenify__hook_1_1git__analyzer_1_1GitDocGenHook = +[ + [ "__init__", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c", null ], + [ "get_modified_files_in_last_commit", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481", null ], + [ "get_modified_lines", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd", null ], + [ "process_file", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85", null ], + [ "run", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map new file mode 100644 index 0000000..4f48f5f --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 new file mode 100644 index 0000000..8b8aff5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.md5 @@ -0,0 +1 @@ +d285fcb980d93312bfad049f92895ba8 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg new file mode 100644 index 0000000..cae0b9c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__coll__graph.svg @@ -0,0 +1,58 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook + + + ++ __init__() ++ get_modified_files +_in_last_commit() ++ get_modified_lines() ++ process_file() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map new file mode 100644 index 0000000..4f48f5f --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 new file mode 100644 index 0000000..8b8aff5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.md5 @@ -0,0 +1 @@ +d285fcb980d93312bfad049f92895ba8 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg new file mode 100644 index 0000000..cae0b9c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook__inherit__graph.svg @@ -0,0 +1,58 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook + + + ++ __init__() ++ get_modified_files +_in_last_commit() ++ get_modified_lines() ++ process_file() ++ run() + + + + + +Node2 + + +penify_hook.base_analyzer. +BaseAnalyzer + ++ folder_path ++ repo_path ++ repo ++ repo_details ++ relative_file_path ++ api_client ++ supported_file_types + ++ __init__() + + + + + +Node2->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map new file mode 100644 index 0000000..f66377c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 new file mode 100644 index 0000000..bfda978 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.md5 @@ -0,0 +1 @@ +d30b2fe6c8ef2ddf32a8fa6ab13a25f2 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg new file mode 100644 index 0000000..78f9802 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.process_file + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map new file mode 100644 index 0000000..7d6cbb4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 new file mode 100644 index 0000000..519d9fc --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.md5 @@ -0,0 +1 @@ +4e6accfb0097a03bb56e2f390d46b980 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg new file mode 100644 index 0000000..41b0db0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a05313caa22b173ce75638f0db08eeb85_icgraph.svg @@ -0,0 +1,55 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.process_file + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map new file mode 100644 index 0000000..7d6a6aa --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 new file mode 100644 index 0000000..e94ad2c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.md5 @@ -0,0 +1 @@ +c545389fcb803268668d7fa34c6d8fd9 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg new file mode 100644 index 0000000..0c109b8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a17549766100e91eb94b5f1a1d34bf481_icgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_files_in_last_commit + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map new file mode 100644 index 0000000..2bd16a0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 new file mode 100644 index 0000000..cda212c --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.md5 @@ -0,0 +1 @@ +4498c89a026edc471fa55e435c85053e \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg new file mode 100644 index 0000000..684d392 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph.svg @@ -0,0 +1,356 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.run + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node9 + + + + + +Node11 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node11 + + + + + +Node13 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5->Node3 + + + + + +Node7 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node6->Node7 + + + + + +Node10 + + +penify_hook.ui_utils.format +_success + + + + + +Node9->Node10 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node11->Node12 + + + + + +Node14 + + +penify_hook.ui_utils.print +_warning + + + + + +Node13->Node14 + + + + + +Node16 + + +penify_hook.ui_utils.update +_stage + + + + + +Node13->Node16 + + + + + +Node15 + + +penify_hook.ui_utils.format +_warning + + + + + +Node14->Node15 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg new file mode 100644 index 0000000..91ef970 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a3beba14e92d717391a74bb70b1fab0ae_cgraph_org.svg @@ -0,0 +1,268 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.run + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2 + + +penify_hook.ui_utils.create +_progress_bar + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified +_files_in_last_commit + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.ui_utils.print +_processing + + + + + +Node1->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_status + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.ui_utils.print +_success + + + + + +Node1->Node9 + + + + + +Node11 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node11 + + + + + +Node13 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.process_file + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + +Node5->Node3 + + + + + +Node7 + + +penify_hook.ui_utils.format +_file_path + + + + + +Node6->Node7 + + + + + +Node10 + + +penify_hook.ui_utils.format +_success + + + + + +Node9->Node10 + + + + + +Node12 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node11->Node12 + + + + + +Node14 + + +penify_hook.ui_utils.print +_warning + + + + + +Node13->Node14 + + + + + +Node16 + + +penify_hook.ui_utils.update +_stage + + + + + +Node13->Node16 + + + + + +Node15 + + +penify_hook.ui_utils.format +_warning + + + + + +Node14->Node15 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map new file mode 100644 index 0000000..64415d0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 new file mode 100644 index 0000000..4c4eb97 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.md5 @@ -0,0 +1 @@ +eb87828bf186415180fe0c4a9a69bffa \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg new file mode 100644 index 0000000..cec3173 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_cgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.__init__ + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.__init__ + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map new file mode 100644 index 0000000..64415d0 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 new file mode 100644 index 0000000..756ea69 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.md5 @@ -0,0 +1 @@ +3a80069fcc09aa58b795925a04c3a1a9 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg new file mode 100644 index 0000000..caf1235 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a92275fddb43dbef6dfdb6c1ed6e96d0c_icgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.__init__ + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.__init__ + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map new file mode 100644 index 0000000..10ddcfb --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 new file mode 100644 index 0000000..5dc8e1b --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.md5 @@ -0,0 +1 @@ +1071229abc0a24fe1359fe7763b4c8d0 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg new file mode 100644 index 0000000..c278664 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph.svg @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_lines + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg new file mode 100644 index 0000000..b1e00b5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1git__analyzer_1_1GitDocGenHook_a974d2f51315ed6a1965a7fd7e2ced0cd_icgraph_org.svg @@ -0,0 +1,71 @@ + + + + + + +penify_hook.git_analyzer.GitDocGenHook.get_modified_lines + + + +Node1 + + +penify_hook.git_analyzer. +GitDocGenHook.get_modified_lines + + + + + +Node2 + + +penify_hook.git_analyzer. +GitDocGenHook.process_file + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook.run + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook.run + + + + + +Node2->Node4 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html new file mode 100644 index 0000000..cfd4cf1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient-members.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.jira_client.JiraClient Member List
+
+ +
+ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html new file mode 100644 index 0000000..c3e6427 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.html @@ -0,0 +1,775 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.jira_client.JiraClient Class Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
penify_hook.jira_client.JiraClient Class Reference
+
+
+
+Collaboration diagram for penify_hook.jira_client.JiraClient:
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

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

+Public Attributes

 jira_url
 
 jira_user
 
 jira_api_token
 
 jira_client
 
+

Detailed Description

+
Client for interacting with JIRA API
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Member Function Documentation

+ +

◆ add_comment()

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

◆ enhance_commit_message()

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

◆ extract_issue_keys()

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

◆ extract_issue_keys_from_branch()

+ +
+
+ + + + + + + + + + + + + + + + + + +
List[str] penify_hook.jira_client.JiraClient.extract_issue_keys_from_branch ( self,
str branch_name 
)
+
+
Extracts unique JIRA issue keys from a branch name.
+Here is the call graph for this function:
+
+
+
+
+ +
+
+ +

◆ format_commit_message_with_jira_info()

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

◆ get_commit_context_from_issues()

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

◆ get_detailed_issue_context()

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

◆ get_issue_details()

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

◆ is_connected()

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

◆ update_issue_status()

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

Member Data Documentation

+ +

◆ jira_api_token

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

◆ jira_client

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

◆ jira_url

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

◆ jira_user

+ +
+
+ + + + +
penify_hook.jira_client.JiraClient.jira_user
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/jira_client.py
  • +
+
+
+ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js new file mode 100644 index 0000000..f68eed5 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient.js @@ -0,0 +1,18 @@ +var classpenify__hook_1_1jira__client_1_1JiraClient = +[ + [ "__init__", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5", null ], + [ "add_comment", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1", null ], + [ "enhance_commit_message", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760", null ], + [ "extract_issue_keys", "classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7", null ], + [ "extract_issue_keys_from_branch", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c", null ], + [ "format_commit_message_with_jira_info", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23", null ], + [ "get_commit_context_from_issues", "classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd", null ], + [ "get_detailed_issue_context", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746", null ], + [ "get_issue_details", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a", null ], + [ "is_connected", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8", null ], + [ "update_issue_status", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826", null ], + [ "jira_api_token", "classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9", null ], + [ "jira_client", "classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6", null ], + [ "jira_url", "classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197", null ], + [ "jira_user", "classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c", null ] +]; \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map new file mode 100644 index 0000000..2bc82ba --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 new file mode 100644 index 0000000..fd79a8c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.md5 @@ -0,0 +1 @@ +6c94c8bb54063a87c9a021e499d2535a \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg new file mode 100644 index 0000000..9d17916 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient__coll__graph.svg @@ -0,0 +1,44 @@ + + + + + + +penify_hook.jira_client.JiraClient + + + +Node1 + + +penify_hook.jira_client. +JiraClient + ++ jira_url ++ jira_user ++ jira_api_token ++ jira_client + ++ __init__() ++ is_connected() ++ extract_issue_keys +_from_branch() ++ extract_issue_keys() ++ get_issue_details() ++ add_comment() ++ update_issue_status() ++ format_commit_message +_with_jira_info() ++ get_detailed_issue +_context() ++ get_commit_context +_from_issues() ++ enhance_commit_message() + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map new file mode 100644 index 0000000..0aabfe7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 new file mode 100644 index 0000000..15413c7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.md5 @@ -0,0 +1 @@ +e49f7a18c7f7394bc3ba168c4b7dfcbf \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg new file mode 100644 index 0000000..8976bbb --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph.svg @@ -0,0 +1,264 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.is_connected + + + +Node1 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node6 + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node7 + + + + + +Node8 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node1->Node8 + + + + + +Node2->Node2 + + + + + +Node4->Node3 + + + + + +Node5->Node3 + + + + + +Node6->Node5 + + + + + +Node7->Node4 + + + + + +Node7->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg new file mode 100644 index 0000000..3d42518 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a00d0f9ae006313a21576362d26ac5ec8_icgraph_org.svg @@ -0,0 +1,176 @@ + + + + + + +penify_hook.jira_client.JiraClient.is_connected + + + +Node1 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node4 + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node6 + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node7 + + + + + +Node8 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node1->Node8 + + + + + +Node2->Node2 + + + + + +Node4->Node3 + + + + + +Node5->Node3 + + + + + +Node6->Node5 + + + + + +Node7->Node4 + + + + + +Node7->Node5 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map new file mode 100644 index 0000000..d9cf631 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 new file mode 100644 index 0000000..bf358a8 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.md5 @@ -0,0 +1 @@ +c2b8f7eecd95ef8d0186d7f206ad610c \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg new file mode 100644 index 0000000..8f34c4a --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph.svg @@ -0,0 +1,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys_from_branch + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg new file mode 100644 index 0000000..b16e395 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a093d6456fe053ef7a7862d5d6851910c_cgraph_org.svg @@ -0,0 +1,54 @@ + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys_from_branch + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue +_keys_from_branch + + + + + +Node2 + + +penify_hook.ui_utils.print_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.format_info + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map new file mode 100644 index 0000000..18d2610 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 new file mode 100644 index 0000000..c70fc7f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.md5 @@ -0,0 +1 @@ +3fdd0ff288b79c613c0ccbdde81f6b44 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg new file mode 100644 index 0000000..da43481 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph.svg @@ -0,0 +1,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node4 + + + + + +Node3->Node4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg new file mode 100644 index 0000000..d90f209 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_cgraph_org.svg @@ -0,0 +1,78 @@ + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node4 + + + + + +Node3->Node4 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map new file mode 100644 index 0000000..9762fa4 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 new file mode 100644 index 0000000..58d4f7d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.md5 @@ -0,0 +1 @@ +e64b34f639342bc29f69697ff85b6115 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg new file mode 100644 index 0000000..bff31d2 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a49ea1149758f7f5212149d357b13cc23_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.jira_client.JiraClient.format_commit_message_with_jira_info + + + +Node1 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map new file mode 100644 index 0000000..3b9c39b --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 new file mode 100644 index 0000000..e84f7d7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.md5 @@ -0,0 +1 @@ +ce0d7d39675e66eb580380759195be0e \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg new file mode 100644 index 0000000..4ad6e4c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map new file mode 100644 index 0000000..7074523 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 new file mode 100644 index 0000000..584c012 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.md5 @@ -0,0 +1 @@ +b4d0f6392752d140ca4858cea5527f74 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg new file mode 100644 index 0000000..0945c22 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph.svg @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + +Node4->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg new file mode 100644 index 0000000..6d9824e --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a65f6924819084b7c8d268956a784804a_icgraph_org.svg @@ -0,0 +1,80 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_issue_details + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node4 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + +Node4->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map new file mode 100644 index 0000000..9fb10de --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 new file mode 100644 index 0000000..d953518 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.md5 @@ -0,0 +1 @@ +9194291c6b536fb2aa39473066ce3d57 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg new file mode 100644 index 0000000..036f520 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph.svg @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.enhance_commit_message + + + +Node1 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2->Node4 + + + + + +Node2->Node5 + + + + + +Node4->Node5 + + + + + +Node6->Node4 + + + + + +Node6->Node5 + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node6->Node7 + + + + + +Node7->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg new file mode 100644 index 0000000..9f7cbe1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_a70d2c5a6432aa6f238da0ff65d49a760_cgraph_org.svg @@ -0,0 +1,153 @@ + + + + + + +penify_hook.jira_client.JiraClient.enhance_commit_message + + + +Node1 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node5 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node5 + + + + + +Node6 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node6 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node2->Node4 + + + + + +Node2->Node5 + + + + + +Node4->Node5 + + + + + +Node6->Node4 + + + + + +Node6->Node5 + + + + + +Node7 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node6->Node7 + + + + + +Node7->Node5 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map new file mode 100644 index 0000000..f7e25fe --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 new file mode 100644 index 0000000..ea4f60f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.md5 @@ -0,0 +1 @@ +01a09828002214953a0e4ce5a004f82b \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg new file mode 100644 index 0000000..6bfdd52 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_cgraph.svg @@ -0,0 +1,45 @@ + + + + + + +penify_hook.jira_client.JiraClient.add_comment + + + +Node1 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map new file mode 100644 index 0000000..a54aa35 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 new file mode 100644 index 0000000..8cce519 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.md5 @@ -0,0 +1 @@ +be0799c63ed63825acfa4aefd053a607 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg new file mode 100644 index 0000000..dcc9f2d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa1f374116c64cd5f1492ec7f7e40f9c1_icgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.jira_client.JiraClient.add_comment + + + +Node1 + + +penify_hook.jira_client. +JiraClient.add_comment + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map new file mode 100644 index 0000000..2e5bc9c --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 new file mode 100644 index 0000000..562794f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.md5 @@ -0,0 +1 @@ +de5b0ac337604f2c79dc74aaee0a1763 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg new file mode 100644 index 0000000..d83a7d1 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_detailed_issue_context + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map new file mode 100644 index 0000000..7028556 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 new file mode 100644 index 0000000..cc19180 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.md5 @@ -0,0 +1 @@ +8ed68fcd41631bf9876f85ae6b4b3de2 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg new file mode 100644 index 0000000..06c5c4d --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aa967169a4b7970c67c0947b9ac56f746_icgraph.svg @@ -0,0 +1,58 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_detailed_issue_context + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map new file mode 100644 index 0000000..75c520f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 new file mode 100644 index 0000000..b855a20 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.md5 @@ -0,0 +1 @@ +2e42fe22a9070fc3f543991e99faf205 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg new file mode 100644 index 0000000..e1b859e --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_aca8837552d37bfd611de23441a240826_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +penify_hook.jira_client.JiraClient.update_issue_status + + + +Node1 + + +penify_hook.jira_client. +JiraClient.update_issue +_status + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map new file mode 100644 index 0000000..3722ccb --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 new file mode 100644 index 0000000..f452c00 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.md5 @@ -0,0 +1 @@ +f5fed9d6bb8f646e32b31343d031871d \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg new file mode 100644 index 0000000..b80a9d9 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg new file mode 100644 index 0000000..1e3bc11 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_ad2823ad1d3baaedd38039913c3a97fd7_icgraph_org.svg @@ -0,0 +1,57 @@ + + + + + + +penify_hook.jira_client.JiraClient.extract_issue_keys + + + +Node1 + + +penify_hook.jira_client. +JiraClient.extract_issue_keys + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.format_commit +_message_with_jira_info + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node2->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map new file mode 100644 index 0000000..b89125f --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 new file mode 100644 index 0000000..990f237 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.md5 @@ -0,0 +1 @@ +e8676c5f3006c0807c1fe30ed75a7701 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg new file mode 100644 index 0000000..0587bf7 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_cgraph.svg @@ -0,0 +1,85 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_commit_context_from_issues + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.get_detailed +_issue_context + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.jira_client. +JiraClient.is_connected + + + + + +Node1->Node3 + + + + + +Node4 + + +penify_hook.jira_client. +JiraClient.get_issue_details + + + + + +Node1->Node4 + + + + + +Node2->Node3 + + + + + +Node4->Node3 + + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map new file mode 100644 index 0000000..5f09a4a --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 new file mode 100644 index 0000000..3221326 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.md5 @@ -0,0 +1 @@ +8e9085e7e96a72eae434ab3b9bb34f71 \ No newline at end of file diff --git a/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg new file mode 100644 index 0000000..bd95f00 --- /dev/null +++ b/docs/html/classpenify__hook_1_1jira__client_1_1JiraClient_afb41ce6f13c30b1265d439ddf04bf2cd_icgraph.svg @@ -0,0 +1,41 @@ + + + + + + +penify_hook.jira_client.JiraClient.get_commit_context_from_issues + + + +Node1 + + +penify_hook.jira_client. +JiraClient.get_commit +_context_from_issues + + + + + +Node2 + + +penify_hook.jira_client. +JiraClient.enhance_commit +_message + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html new file mode 100644 index 0000000..e898b72 --- /dev/null +++ b/docs/html/classpenify__hook_1_1llm__client_1_1LLMClient-members.html @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook.llm_client.LLMClient Member List
+
+
+ +

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

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

+Public Member Functions

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

+Public Attributes

 model
 
+ + + +

+Private Attributes

 _litellm
 
+

Detailed Description

+
Client for interacting with LLM models using LiteLLM.
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Member Function Documentation

+ +

◆ generate_commit_summary()

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

◆ litellm()

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

Member Data Documentation

+ +

◆ _litellm

+ +
+
+ + + + + +
+ + + + +
penify_hook.llm_client.LLMClient._litellm
+
+private
+
+ +
+
+ +

◆ model

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

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

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

+Public Member Functions

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

Member Function Documentation

+ +

◆ mock_api_client()

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

◆ mock_commit_doc_gen()

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

◆ mock_git_folder_search()

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

◆ mock_jira_client()

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

◆ mock_llm_client()

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

◆ mock_print_functions()

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

◆ test_commit_code_error_handling()

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

◆ test_commit_code_with_jira_client()

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

◆ test_commit_code_with_jira_connection_failure()

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

◆ test_commit_code_with_llm_client()

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

◆ test_handle_commit()

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

◆ test_setup_commit_parser()

+ +
+
+ + + + + + + + +
def tests.test_commit_commands.TestCommitCommands.test_setup_commit_parser ( self)
+
+
Set up the argument parser for the commit command.
+
+This function configures an argument parser to handle various options
+for committing changes. It adds three arguments: - '-m' or '--message':
+An optional argument to specify a contextual commit message with a
+default value of "N/A". - '-e' or '--terminal': A boolean flag to open
+an edit terminal before committing. - '-d' or '--description': A boolean
+flag that, when set to False, indicates the generation of a commit
+message with title and description.
+
+Args:
+    parser (MagicMock): The argument parser to be configured.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js new file mode 100644 index 0000000..46b59e3 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands.js @@ -0,0 +1,15 @@ +var classtests_1_1test__commit__commands_1_1TestCommitCommands = +[ + [ "mock_api_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2", null ], + [ "mock_commit_doc_gen", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6", null ], + [ "mock_git_folder_search", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e", null ], + [ "mock_jira_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be", null ], + [ "mock_llm_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4", null ], + [ "mock_print_functions", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be", null ], + [ "test_commit_code_error_handling", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691", null ], + [ "test_commit_code_with_jira_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b", null ], + [ "test_commit_code_with_jira_connection_failure", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e", null ], + [ "test_commit_code_with_llm_client", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0", null ], + [ "test_handle_commit", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597", null ], + [ "test_setup_commit_parser", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc", null ] +]; \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map new file mode 100644 index 0000000..c06dd4a --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 new file mode 100644 index 0000000..9d383d8 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.md5 @@ -0,0 +1 @@ +01c384c51b9b9d20ecd5af3519740055 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg new file mode 100644 index 0000000..71f1b91 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands__coll__graph.svg @@ -0,0 +1,42 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands + + + ++ mock_api_client() ++ mock_llm_client() ++ mock_jira_client() ++ mock_commit_doc_gen() ++ mock_git_folder_search() ++ mock_print_functions() ++ test_commit_code_with +_llm_client() ++ test_commit_code_with +_jira_client() ++ test_commit_code_with +_jira_connection_failure() ++ test_commit_code_error +_handling() ++ test_setup_commit_parser() ++ test_handle_commit() + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map new file mode 100644 index 0000000..cb1751e --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 new file mode 100644 index 0000000..f317412 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.md5 @@ -0,0 +1 @@ +fac6736890d3e6569a3e562221e2e80c \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg new file mode 100644 index 0000000..9da54b6 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_error_handling + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg new file mode 100644 index 0000000..add0cc8 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a43c2ff3707124aa48e8eb581106b8691_cgraph_org.svg @@ -0,0 +1,156 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_error_handling + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map new file mode 100644 index 0000000..889f430 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 new file mode 100644 index 0000000..6ec9086 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.md5 @@ -0,0 +1 @@ +cae6ed50d17895098d586359b58517cc \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg new file mode 100644 index 0000000..390efd9 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_a4d04b125e102190a768f65f1948f15bc_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_setup_commit_parser + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_setup_commit_parser + + + + + +Node2 + + +penify_hook.commands.commit +_commands.setup_commit_parser + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map new file mode 100644 index 0000000..ae0be27 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 new file mode 100644 index 0000000..332ac4f --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.md5 @@ -0,0 +1 @@ +ef8182faf1bcd63d3487614530947b10 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg new file mode 100644 index 0000000..cd07d25 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph.svg @@ -0,0 +1,405 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_handle_commit + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg new file mode 100644 index 0000000..90c6c04 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_ac13e368262340af98b30fd8ebdac6597_cgraph_org.svg @@ -0,0 +1,317 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_handle_commit + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node2 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node2->Node3 + + + + + +Node6 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node6 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node11 + + + + + +Node14 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node2->Node14 + + + + + +Node15 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node15 + + + + + +Node4 + + +penify_hook.ui_utils.print +_error + + + + + +Node3->Node4 + + + + + +Node3->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.print +_warning + + + + + +Node3->Node8 + + + + + +Node10 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node3->Node10 + + + + + +Node5 + + +penify_hook.ui_utils.format +_error + + + + + +Node4->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.format_info + + + + + +Node6->Node7 + + + + + +Node9 + + +penify_hook.ui_utils.format +_warning + + + + + +Node8->Node9 + + + + + +Node10->Node10 + + + + + +Node12 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node11->Node12 + + + + + +Node13 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node11->Node13 + + + + + +Node13->Node10 + + + + + +Node13->Node13 + + + + + +Node14->Node12 + + + + + +Node14->Node13 + + + + + +Node15->Node12 + + + + + +Node15->Node13 + + + + + +Node16 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node15->Node16 + + + + + +Node16->Node10 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map new file mode 100644 index 0000000..24ac63a --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 new file mode 100644 index 0000000..9c174cc --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.md5 @@ -0,0 +1 @@ +acd28568eb3edcfc33ca2521297fd075 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg new file mode 100644 index 0000000..59cb486 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_llm_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg new file mode 100644 index 0000000..853b56c --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acc4b1e4189792a3f7c11d2a745f479c0_cgraph_org.svg @@ -0,0 +1,156 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_llm_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map new file mode 100644 index 0000000..9780c3f --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 new file mode 100644 index 0000000..080d356 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.md5 @@ -0,0 +1 @@ +8bc1cc2849f225faaeab1719b6c0a3d6 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg new file mode 100644 index 0000000..786afd0 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph.svg @@ -0,0 +1,245 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_connection_failure + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg new file mode 100644 index 0000000..4b43aba --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_acea0d934ee0f2b914b0b893736e8fe4e_cgraph_org.svg @@ -0,0 +1,157 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_connection_failure + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map new file mode 100644 index 0000000..2c56c22 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 new file mode 100644 index 0000000..a77222b --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.md5 @@ -0,0 +1 @@ +2b4709da9a40be7a45efe895e73cc31f \ No newline at end of file diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg new file mode 100644 index 0000000..1ed6c1b --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph.svg @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg new file mode 100644 index 0000000..b3aa423 --- /dev/null +++ b/docs/html/classtests_1_1test__commit__commands_1_1TestCommitCommands_af9c09013055ec39ddde86b487aefcf8b_cgraph_org.svg @@ -0,0 +1,156 @@ + + + + + + +tests.test_commit_commands.TestCommitCommands.test_commit_code_with_jira_client + + + +Node1 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.ui_utils.print +_error + + + + + +Node2->Node3 + + + + + +Node5 + + +penify_hook.ui_utils.print_info + + + + + +Node2->Node5 + + + + + +Node7 + + +penify_hook.ui_utils.print +_warning + + + + + +Node2->Node7 + + + + + +Node9 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.ui_utils.format +_error + + + + + +Node3->Node4 + + + + + +Node6 + + +penify_hook.ui_utils.format_info + + + + + +Node5->Node6 + + + + + +Node8 + + +penify_hook.ui_utils.format +_warning + + + + + +Node7->Node8 + + + + + +Node9->Node9 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html new file mode 100644 index 0000000..6ed6f51 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands-members.html @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tests.test_config_commands.TestConfigCommands Member List
+
+
+ +

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

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

+Public Member Functions

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

Member Function Documentation

+ +

◆ test_get_jira_config_exists()

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

◆ test_get_llm_config_empty()

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

◆ test_get_llm_config_exists()

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

◆ test_get_llm_config_invalid_json()

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

◆ test_get_penify_config_existing_dir()

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

◆ test_get_penify_config_new_dir()

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

◆ test_get_token_from_config()

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

◆ test_get_token_from_env()

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

◆ test_get_token_not_found()

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

◆ test_save_jira_config_success()

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

◆ test_save_llm_config_failure()

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

◆ test_save_llm_config_success()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_config_commands.TestConfigCommands.test_save_llm_config_success ( self,
 mock_print,
 mock_json_dump,
 mock_file_open,
 mock_get_config 
)
+
+
Test the save_llm_config function successfully.
+
+This function tests that the save_llm_config function correctly saves an
+LLM configuration and handles various mock objects and side effects. It
+ensures that the function returns True upon successful execution, writes
+the expected configuration to a file, and prints a confirmation message.
+
+Args:
+    mock_print (MagicMock): A mock object for the print function.
+    mock_json_dump (MagicMock): A mock object for json.dump.
+    mock_file_open (MagicMock): A mock object for file opening.
+    mock_get_config (MagicMock): A mock object to return a configuration file mock.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js new file mode 100644 index 0000000..88e855a --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands.js @@ -0,0 +1,15 @@ +var classtests_1_1test__config__commands_1_1TestConfigCommands = +[ + [ "test_get_jira_config_exists", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf", null ], + [ "test_get_llm_config_empty", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd", null ], + [ "test_get_llm_config_exists", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167", null ], + [ "test_get_llm_config_invalid_json", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd", null ], + [ "test_get_penify_config_existing_dir", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a", null ], + [ "test_get_penify_config_new_dir", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948", null ], + [ "test_get_token_from_config", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c", null ], + [ "test_get_token_from_env", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232", null ], + [ "test_get_token_not_found", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436", null ], + [ "test_save_jira_config_success", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375", null ], + [ "test_save_llm_config_failure", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac", null ], + [ "test_save_llm_config_success", "classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9", null ] +]; \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map new file mode 100644 index 0000000..b44b108 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 new file mode 100644 index 0000000..eb46690 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.md5 @@ -0,0 +1 @@ +2db6cf58d997b43a776fb21752d4aa29 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg new file mode 100644 index 0000000..9daa237 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands__coll__graph.svg @@ -0,0 +1,50 @@ + + + + + + +tests.test_config_commands.TestConfigCommands + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands + + + ++ test_get_penify_config +_existing_dir() ++ test_get_penify_config +_new_dir() ++ test_get_llm_config +_exists() ++ test_get_llm_config +_empty() ++ test_get_llm_config +_invalid_json() ++ test_get_jira_config +_exists() ++ test_save_llm_config +_success() ++ test_save_llm_config +_failure() ++ test_save_jira_config +_success() ++ test_get_token_from +_env() ++ test_get_token_from +_config() ++ test_get_token_not +_found() + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map new file mode 100644 index 0000000..078fe57 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 new file mode 100644 index 0000000..9e0bad2 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.md5 @@ -0,0 +1 @@ +fe055e22847261fb4e8e965247fa63e4 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg new file mode 100644 index 0000000..f4a0db4 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_existing_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg new file mode 100644 index 0000000..223d6fc --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a2e8162082bcdd5652bb37bdb14cf453a_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_existing_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map new file mode 100644 index 0000000..eda7789 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 new file mode 100644 index 0000000..9cef76a --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.md5 @@ -0,0 +1 @@ +28bc7f826bf5c37f1e543c6a2217c011 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg new file mode 100644 index 0000000..b978430 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_env + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg new file mode 100644 index 0000000..c5e3f5e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a3355f7d313bebaa71694387cf2bc5232_cgraph_org.svg @@ -0,0 +1,123 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_env + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map new file mode 100644 index 0000000..b8a69cd --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 new file mode 100644 index 0000000..179211c --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.md5 @@ -0,0 +1 @@ +66249d926cb6fd81bdf9ba46dc56d466 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg new file mode 100644 index 0000000..3c9de34 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_new_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg new file mode 100644 index 0000000..3b4f6d8 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a33d4760eee3b67e1cde3aed755ebb948_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_penify_config_new_dir + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map new file mode 100644 index 0000000..9ca3973 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 new file mode 100644 index 0000000..494b2db --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.md5 @@ -0,0 +1 @@ +fe3072609a9a0bf3d14e3143add0e6da \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg new file mode 100644 index 0000000..dd9b3ef --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_not_found + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg new file mode 100644 index 0000000..65b3e03 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a400ca5d9fcdc159714e8df54920f9436_cgraph_org.svg @@ -0,0 +1,123 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_not_found + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map new file mode 100644 index 0000000..bdcc413 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 new file mode 100644 index 0000000..bdddb02 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.md5 @@ -0,0 +1 @@ +6604e171883373f917ba1e50c7dcf2a8 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg new file mode 100644 index 0000000..803f331 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_invalid_json + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg new file mode 100644 index 0000000..4b1b7ba --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a473984d31452b56acd6ce4011a1248bd_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_invalid_json + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map new file mode 100644 index 0000000..8da2d5a --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 new file mode 100644 index 0000000..49db9b2 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.md5 @@ -0,0 +1 @@ +18a45266c6274df8d06c6771aea4d3ce \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg new file mode 100644 index 0000000..d4ab491 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_config + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg new file mode 100644 index 0000000..9a84079 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a6c0207be563c3de59a6d16277805114c_cgraph_org.svg @@ -0,0 +1,123 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_token_from_config + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node2->Node4 + + + + + +Node6 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node6 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + +Node6->Node5 + + + + + +Node6->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map new file mode 100644 index 0000000..27f9795 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 new file mode 100644 index 0000000..d5a551d --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.md5 @@ -0,0 +1 @@ +2efae0628f3580e167ff4e2e9744ff76 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg new file mode 100644 index 0000000..48f17d2 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_failure + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg new file mode 100644 index 0000000..f52311f --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_a73a264dfb21e16003e095b79f6eab2ac_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_failure + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map new file mode 100644 index 0000000..9e0e801 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 new file mode 100644 index 0000000..b6d0832 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.md5 @@ -0,0 +1 @@ +ccb36b28b36810b7debb14198aa8c840 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg new file mode 100644 index 0000000..8e3f6ab --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_empty + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg new file mode 100644 index 0000000..325a4d7 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_abd12f028b89aa9cd1152c0b9ece5d3cd_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_empty + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map new file mode 100644 index 0000000..cb3426e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 new file mode 100644 index 0000000..616400e --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.md5 @@ -0,0 +1 @@ +2dda560e911927ca62424d428f826e98 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg new file mode 100644 index 0000000..657b852 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg new file mode 100644 index 0000000..cf3f2f3 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_acd8df8219441b9e9871b903a681400d9_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_llm_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map new file mode 100644 index 0000000..98b03e3 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 new file mode 100644 index 0000000..5292fed --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.md5 @@ -0,0 +1 @@ +8a521fb6ddaca64c6678d226bec595a0 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg new file mode 100644 index 0000000..6c791c9 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg new file mode 100644 index 0000000..9c3f7c4 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_adf9f2233a3f4cc5725b9d4f05758b167_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_llm_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map new file mode 100644 index 0000000..d0930f3 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 new file mode 100644 index 0000000..904ab8d --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.md5 @@ -0,0 +1 @@ +6fbf377ddd24e2b0afa956a95f55e6c5 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg new file mode 100644 index 0000000..e31aeb0 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph.svg @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_jira_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg new file mode 100644 index 0000000..19057f1 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_aee37b97432821d19758c6325d4c74bcf_cgraph_org.svg @@ -0,0 +1,101 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_get_jira_config_exists + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node2 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node2->Node4 + + + + + +Node4->Node4 + + + + + +Node5 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node4->Node5 + + + + + +Node5->Node5 + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map new file mode 100644 index 0000000..7a6d255 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 new file mode 100644 index 0000000..68d6c1c --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.md5 @@ -0,0 +1 @@ +2e054bb79c0b6f45c4788678aac6e514 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg new file mode 100644 index 0000000..e18fa25 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_jira_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg new file mode 100644 index 0000000..eaa2159 --- /dev/null +++ b/docs/html/classtests_1_1test__config__commands_1_1TestConfigCommands_af8d62310da2d768e21770f8f01ff5375_cgraph_org.svg @@ -0,0 +1,62 @@ + + + + + + +tests.test_config_commands.TestConfigCommands.test_save_jira_config_success + + + +Node1 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node2 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node2->Node3 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html new file mode 100644 index 0000000..08f5b12 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig-members.html @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Member List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tests.test_web_config.TestWebConfig Member List
+
+
+ +

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

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

+Public Member Functions

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

Member Function Documentation

+ +

◆ test_config_jira_web_server_setup()

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

◆ test_config_llm_web_server_setup()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
def tests.test_web_config.TestWebConfig.test_config_llm_web_server_setup ( self,
 mock_resource_filename,
 mock_server,
 mock_webbrowser 
)
+
+
Set up and test the web server configuration for an LLM (Large Language
+Model) web interface.
+
+This function configures a mock web server for testing purposes,
+including setting up resource filenames, mocking server behavior, and
+verifying that the web browser is opened and the server starts
+correctly. The function uses various mocks to simulate external
+dependencies such as `resource_filename` and `server`.
+
+Args:
+    mock_resource_filename (MagicMock): A MagicMock object simulating the `resource_filename` function.
+    mock_server (MagicMock): A MagicMock object simulating the context manager for the web server.
+    mock_webbrowser (MagicMock): A MagicMock object simulating the `webbrowser` module.
+
+Here is the call graph for this function:
+
+
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js new file mode 100644 index 0000000..64ea648 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig.js @@ -0,0 +1,5 @@ +var classtests_1_1test__web__config_1_1TestWebConfig = +[ + [ "test_config_jira_web_server_setup", "classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a", null ], + [ "test_config_llm_web_server_setup", "classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35", null ] +]; \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map new file mode 100644 index 0000000..77d4a58 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 new file mode 100644 index 0000000..f0a528b --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.md5 @@ -0,0 +1 @@ +ab8cbd57a4ebb302c58c19a4efbc1c6e \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg new file mode 100644 index 0000000..acbac22 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig__coll__graph.svg @@ -0,0 +1,30 @@ + + + + + + +tests.test_web_config.TestWebConfig + + + +Node1 + + +tests.test_web_config.Test +WebConfig + + + ++ test_config_llm_web +_server_setup() ++ test_config_jira_web +_server_setup() + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map new file mode 100644 index 0000000..249e111 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 new file mode 100644 index 0000000..064b512 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.md5 @@ -0,0 +1 @@ +40be6a2b68a00531af40fd3546a6f158 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg new file mode 100644 index 0000000..ba12fb0 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph.svg @@ -0,0 +1,227 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_web_config.TestWebConfig.test_config_jira_web_server_setup + + + +Node1 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg new file mode 100644 index 0000000..6325fbe --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_a06e600222e426b003850509cb1d3190a_cgraph_org.svg @@ -0,0 +1,139 @@ + + + + + + +tests.test_web_config.TestWebConfig.test_config_jira_web_server_setup + + + +Node1 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node2->Node3 + + + + + +Node7 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node2->Node7 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node5 + + + + + +Node5->Node5 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map new file mode 100644 index 0000000..0befd5a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 new file mode 100644 index 0000000..2632d9a --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.md5 @@ -0,0 +1 @@ +5ca25c9e4be6eb96370b0328e2a5e679 \ No newline at end of file diff --git a/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg new file mode 100644 index 0000000..a5b8af9 --- /dev/null +++ b/docs/html/classtests_1_1test__web__config_1_1TestWebConfig_afc6440352201d207ea8b4d26f8ccfa35_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +tests.test_web_config.TestWebConfig.test_config_llm_web_server_setup + + + +Node1 + + +tests.test_web_config.Test +WebConfig.test_config_llm +_web_server_setup + + + + + +Node2 + + +penify_hook.commands.config +_commands.config_llm_web + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/closed.png b/docs/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/docs/html/commit-commands_8md.html b/docs/html/commit-commands_8md.html new file mode 100644 index 0000000..13de5b1 --- /dev/null +++ b/docs/html/commit-commands_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/commit-commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/commit-commands.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/commit__analyzer_8py.html b/docs/html/commit__analyzer_8py.html new file mode 100644 index 0000000..f600b7c --- /dev/null +++ b/docs/html/commit__analyzer_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commit_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
commit_analyzer.py File Reference
+
+
+ + + + +

+Classes

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

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.commit_analyzer
 
+
+
+ + + + + diff --git a/docs/html/commit__analyzer_8py.js b/docs/html/commit__analyzer_8py.js new file mode 100644 index 0000000..d7c51ca --- /dev/null +++ b/docs/html/commit__analyzer_8py.js @@ -0,0 +1,4 @@ +var commit__analyzer_8py = +[ + [ "penify_hook.commit_analyzer.CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook" ] +]; \ No newline at end of file diff --git a/docs/html/commit__commands_8py.html b/docs/html/commit__commands_8py.html new file mode 100644 index 0000000..6eaee00 --- /dev/null +++ b/docs/html/commit__commands_8py.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/commit_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
commit_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

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

+Functions

def penify_hook.commands.commit_commands.commit_code (api_url, token, message, open_terminal, generate_description, llm_model=None, llm_api_base=None, llm_api_key=None, jira_url=None, jira_user=None, jira_api_token=None)
 
def penify_hook.commands.commit_commands.setup_commit_parser (parser)
 
def penify_hook.commands.commit_commands.handle_commit (args)
 
+
+
+ + + + + diff --git a/docs/html/commit__commands_8py.js b/docs/html/commit__commands_8py.js new file mode 100644 index 0000000..823f902 --- /dev/null +++ b/docs/html/commit__commands_8py.js @@ -0,0 +1,6 @@ +var commit__commands_8py = +[ + [ "commit_code", "commit__commands_8py.html#a62564c4e8ad59fc46d56cb0f9122a71a", null ], + [ "handle_commit", "commit__commands_8py.html#af4f739f524c38b437e4e47673d683e23", null ], + [ "setup_commit_parser", "commit__commands_8py.html#a8627583116eb78e31a4d3cdc16d2f15c", null ] +]; \ No newline at end of file diff --git a/docs/html/config-commands_8md.html b/docs/html/config-commands_8md.html new file mode 100644 index 0000000..7851f33 --- /dev/null +++ b/docs/html/config-commands_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/config-commands.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/config-commands.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/config__command_8py.html b/docs/html/config__command_8py.html new file mode 100644 index 0000000..905a5a0 --- /dev/null +++ b/docs/html/config__command_8py.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/config_command.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
config_command.py File Reference
+
+
+ + + + + + +

+Namespaces

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

+Functions

def penify_hook.config_command.setup_config_parser (parent_parser)
 
def penify_hook.config_command.handle_config (args)
 
+
+
+ + + + + diff --git a/docs/html/config__command_8py.js b/docs/html/config__command_8py.js new file mode 100644 index 0000000..7d1ed0a --- /dev/null +++ b/docs/html/config__command_8py.js @@ -0,0 +1,5 @@ +var config__command_8py = +[ + [ "handle_config", "config__command_8py.html#a240e5331681eb574ac319d7458783bde", null ], + [ "setup_config_parser", "config__command_8py.html#a4f3eb92164a69df1446d745f8a09285e", null ] +]; \ No newline at end of file diff --git a/docs/html/config__commands_8py.html b/docs/html/config__commands_8py.html new file mode 100644 index 0000000..fd7d999 --- /dev/null +++ b/docs/html/config__commands_8py.html @@ -0,0 +1,175 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/config_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/config__commands_8py.js b/docs/html/config__commands_8py.js new file mode 100644 index 0000000..395f3fb --- /dev/null +++ b/docs/html/config__commands_8py.js @@ -0,0 +1,15 @@ +var config__commands_8py = +[ + [ "config_jira_web", "config__commands_8py.html#af115198ea5d6808ccb98733957f50b06", null ], + [ "config_llm_web", "config__commands_8py.html#a185dfc34a655ed80e6c95939b6f3c35c", null ], + [ "get_env_var_or_default", "config__commands_8py.html#a3caf2b062dd33b1f1d7ddc7224f0ff87", null ], + [ "get_jira_config", "config__commands_8py.html#a15bf3685c4dcb5c15ba6a4055e484cf2", null ], + [ "get_llm_config", "config__commands_8py.html#a6492bc8e7df6e38bb06ad05e572d4cc0", null ], + [ "get_penify_config", "config__commands_8py.html#a6559a82d0bf727703d550d1003d3ed20", null ], + [ "get_token", "config__commands_8py.html#a5503d51c905e2f1b299b12d2a73bd812", null ], + [ "load_env_files", "config__commands_8py.html#aabe277132ce0bc0aacef951cf1dee2ae", null ], + [ "save_jira_config", "config__commands_8py.html#ab2486ac2bf16b4a671e49625bfa4f9b4", null ], + [ "save_llm_config", "config__commands_8py.html#a4617bc5956e502c9555dc0dda0376df4", null ], + [ "DOTENV_AVAILABLE", "config__commands_8py.html#a152642ab83cf6219b604bda6122aba67", null ], + [ "path", "config__commands_8py.html#a4b202072a3a3b8515c9c254622e9c880", null ] +]; \ No newline at end of file diff --git a/docs/html/conftest_8py.html b/docs/html/conftest_8py.html new file mode 100644 index 0000000..4839d38 --- /dev/null +++ b/docs/html/conftest_8py.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/conftest.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
conftest.py File Reference
+
+
+ + + + + + +

+Namespaces

namespace  tests
 
namespace  tests.conftest
 
+
+
+ + + + + diff --git a/docs/html/constants_8py.html b/docs/html/constants_8py.html new file mode 100644 index 0000000..a415b9f --- /dev/null +++ b/docs/html/constants_8py.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/constants.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
constants.py File Reference
+
+
+ + + + + + +

+Namespaces

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

+Variables

string penify_hook.constants.API_URL = 'http://localhost:8000/api'
 
string penify_hook.constants.DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
 
+
+
+ + + + + diff --git a/docs/html/constants_8py.js b/docs/html/constants_8py.js new file mode 100644 index 0000000..adbd23d --- /dev/null +++ b/docs/html/constants_8py.js @@ -0,0 +1,5 @@ +var constants_8py = +[ + [ "API_URL", "constants_8py.html#af198b5d1fc2f44657a2061aa324af3e0", null ], + [ "DASHBOARD_URL", "constants_8py.html#a316c5a606e4440fb8224c6544c3a15f0", null ] +]; \ No newline at end of file diff --git a/docs/html/detailed-usage_8md.html b/docs/html/detailed-usage_8md.html new file mode 100644 index 0000000..0d65ed1 --- /dev/null +++ b/docs/html/detailed-usage_8md.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/detailed-usage.md File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs/detailed-usage.md File Reference
+
+
+
+
+ + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html new file mode 100644 index 0000000..fe79c69 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
tests Directory Reference
+
+
+
+Directory dependency graph for tests:
+
+
+
+
+ + + + + + + + + + + + + + +

+Files

file  __init__.py
 
file  conftest.py
 
file  test_commit_commands.py
 
file  test_config_commands.py
 
file  test_doc_commands.py
 
file  test_web_config.py
 
+
+
+ + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js new file mode 100644 index 0000000..176f804 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c.js @@ -0,0 +1,9 @@ +var dir_063e2d5fe58a131099a7fe4200cca78c = +[ + [ "__init__.py", "tests_2____init_____8py.html", null ], + [ "conftest.py", "conftest_8py.html", null ], + [ "test_commit_commands.py", "test__commit__commands_8py.html", "test__commit__commands_8py" ], + [ "test_config_commands.py", "test__config__commands_8py.html", "test__config__commands_8py" ], + [ "test_doc_commands.py", "test__doc__commands_8py.html", "test__doc__commands_8py" ], + [ "test_web_config.py", "test__web__config_8py.html", "test__web__config_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map new file mode 100644 index 0000000..599c63c --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 new file mode 100644 index 0000000..afb9081 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.md5 @@ -0,0 +1 @@ +fdbdbdbe253c547a3b41063e5036418d \ No newline at end of file diff --git a/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg new file mode 100644 index 0000000..08fb018 --- /dev/null +++ b/docs/html/dir_063e2d5fe58a131099a7fe4200cca78c_dep.svg @@ -0,0 +1,30 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests + + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + + +dir_063e2d5fe58a131099a7fe4200cca78c + + +tests + + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623.html b/docs/html/dir_1648a057408aae8db85b8e3797335623.html new file mode 100644 index 0000000..e1d59dd --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623.html @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
docs Directory Reference
+
+
+
+Directory dependency graph for docs:
+
+
+
+
+
+
+ + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map new file mode 100644 index 0000000..0f23bcc --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 new file mode 100644 index 0000000..2214ec5 --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.md5 @@ -0,0 +1 @@ +103c12b563793db32ed50b111f45bada \ No newline at end of file diff --git a/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg new file mode 100644 index 0000000..10a902d --- /dev/null +++ b/docs/html/dir_1648a057408aae8db85b8e3797335623_dep.svg @@ -0,0 +1,30 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/docs + + +clusterdir_b3b22d2ab7966b65f6b237e3231b41be + + +penify-cli + + + + + +dir_1648a057408aae8db85b8e3797335623 + + +docs + + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html new file mode 100644 index 0000000..e0c30df --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
commands Directory Reference
+
+
+
+Directory dependency graph for commands:
+
+
+
+
+ + + + + + + + + + + + + + +

+Files

file  __init__.py
 
file  auth_commands.py
 
file  commit_commands.py
 
file  config_commands.py
 
file  doc_commands.py
 
file  hook_commands.py
 
+
+
+ + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js new file mode 100644 index 0000000..94925e7 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23.js @@ -0,0 +1,9 @@ +var dir_624fa2a8bce97f0444ac5cca335d4e23 = +[ + [ "__init__.py", "penify__hook_2commands_2____init_____8py.html", null ], + [ "auth_commands.py", "auth__commands_8py.html", "auth__commands_8py" ], + [ "commit_commands.py", "commit__commands_8py.html", "commit__commands_8py" ], + [ "config_commands.py", "config__commands_8py.html", "config__commands_8py" ], + [ "doc_commands.py", "doc__commands_8py.html", "doc__commands_8py" ], + [ "hook_commands.py", "hook__commands_8py.html", "hook__commands_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map new file mode 100644 index 0000000..34cf9f2 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 new file mode 100644 index 0000000..597f466 --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.md5 @@ -0,0 +1 @@ +1c8b9302d49050442030c2a1fe004137 \ No newline at end of file diff --git a/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg new file mode 100644 index 0000000..866d63c --- /dev/null +++ b/docs/html/dir_624fa2a8bce97f0444ac5cca335d4e23_dep.svg @@ -0,0 +1,30 @@ + + + + + + +/tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands + + +clusterdir_f88c3381c1861b3f7ca1f3d63cf244b5 + + +penify_hook + + + + + +dir_624fa2a8bce97f0444ac5cca335d4e23 + + +commands + + + + + diff --git a/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html new file mode 100644 index 0000000..e526c4a --- /dev/null +++ b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.html @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify-cli Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  docs
 
directory  penify_hook
 
directory  tests
 
+ + + +

+Files

file  setup.py
 
+
+
+ + + + + diff --git a/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js new file mode 100644 index 0000000..f7aa196 --- /dev/null +++ b/docs/html/dir_b3b22d2ab7966b65f6b237e3231b41be.js @@ -0,0 +1,7 @@ +var dir_b3b22d2ab7966b65f6b237e3231b41be = +[ + [ "docs", "dir_1648a057408aae8db85b8e3797335623.html", null ], + [ "penify_hook", "dir_f88c3381c1861b3f7ca1f3d63cf244b5.html", "dir_f88c3381c1861b3f7ca1f3d63cf244b5" ], + [ "tests", "dir_063e2d5fe58a131099a7fe4200cca78c.html", "dir_063e2d5fe58a131099a7fe4200cca78c" ], + [ "setup.py", "setup_8py.html", "setup_8py" ] +]; \ No newline at end of file diff --git a/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html new file mode 100644 index 0000000..6464f58 --- /dev/null +++ b/docs/html/dir_f88c3381c1861b3f7ca1f3d63cf244b5.html @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook Directory Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify_hook Directory Reference
+
+
+
+Directory dependency graph for penify_hook:
+
+
+
+
+ + + + +

+Directories

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

+Files

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

+Namespaces

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

+Functions

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

+Variables

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

+Classes

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

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.file_analyzer
 
+ + + +

+Variables

 penify_hook.file_analyzer.logger = logging.getLogger(__name__)
 
+
+
+ + + + + diff --git a/docs/html/file__analyzer_8py.js b/docs/html/file__analyzer_8py.js new file mode 100644 index 0000000..a650b8a --- /dev/null +++ b/docs/html/file__analyzer_8py.js @@ -0,0 +1,5 @@ +var file__analyzer_8py = +[ + [ "penify_hook.file_analyzer.FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook" ], + [ "logger", "file__analyzer_8py.html#af419a4965f079d58cac5a5281ddb1828", null ] +]; \ No newline at end of file diff --git a/docs/html/files.html b/docs/html/files.html new file mode 100644 index 0000000..c775edb --- /dev/null +++ b/docs/html/files.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + +penify-cli: File List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/files_dup.js b/docs/html/files_dup.js new file mode 100644 index 0000000..dd5a1a9 --- /dev/null +++ b/docs/html/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "penify-cli", "dir_b3b22d2ab7966b65f6b237e3231b41be.html", "dir_b3b22d2ab7966b65f6b237e3231b41be" ] +]; \ No newline at end of file diff --git a/docs/html/folder__analyzer_8py.html b/docs/html/folder__analyzer_8py.html new file mode 100644 index 0000000..58d0357 --- /dev/null +++ b/docs/html/folder__analyzer_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/folder_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
folder_analyzer.py File Reference
+
+
+ + + + +

+Classes

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

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.folder_analyzer
 
+
+
+ + + + + diff --git a/docs/html/folder__analyzer_8py.js b/docs/html/folder__analyzer_8py.js new file mode 100644 index 0000000..f51e8e5 --- /dev/null +++ b/docs/html/folder__analyzer_8py.js @@ -0,0 +1,4 @@ +var folder__analyzer_8py = +[ + [ "penify_hook.folder_analyzer.FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook" ] +]; \ No newline at end of file diff --git a/docs/html/folderclosed.png b/docs/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/docs/html/functions.html b/docs/html/functions.html new file mode 100644 index 0000000..da63ac8 --- /dev/null +++ b/docs/html/functions.html @@ -0,0 +1,262 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- _ -

+ + +

- a -

+ + +

- b -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- j -

+ + +

- l -

+ + +

- m -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+
+ + + + + diff --git a/docs/html/functions_func.html b/docs/html/functions_func.html new file mode 100644 index 0000000..461b5c0 --- /dev/null +++ b/docs/html/functions_func.html @@ -0,0 +1,231 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members - Functions + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- _ -

+ + +

- a -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+
+ + + + + diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html new file mode 100644 index 0000000..5262aaa --- /dev/null +++ b/docs/html/functions_vars.html @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members - Variables + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/git__analyzer_8py.html b/docs/html/git__analyzer_8py.html new file mode 100644 index 0000000..212c61c --- /dev/null +++ b/docs/html/git__analyzer_8py.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/git_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
git_analyzer.py File Reference
+
+
+ + + + +

+Classes

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

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.git_analyzer
 
+ + + +

+Variables

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

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

+

Consider the following example:

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

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

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

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + + diff --git a/docs/html/graph_legend.md5 b/docs/html/graph_legend.md5 new file mode 100644 index 0000000..5543aee --- /dev/null +++ b/docs/html/graph_legend.md5 @@ -0,0 +1 @@ +2949d8d683b49299ad5e82dbf5d1be6c \ No newline at end of file diff --git a/docs/html/graph_legend.svg b/docs/html/graph_legend.svg new file mode 100644 index 0000000..5c7a71a --- /dev/null +++ b/docs/html/graph_legend.svg @@ -0,0 +1,117 @@ + + + + + + +Graph Legend + + + +Node9 + +Inherited + + + +Node10 + +PublicBase + + + +Node10->Node9 + + + + + +Node11 + +Truncated + + + +Node11->Node10 + + + + + +Node13 + +ProtectedBase + + + +Node13->Node9 + + + + + +Node14 + +PrivateBase + + + +Node14->Node9 + + + + + +Node15 + +Undocumented + + + +Node15->Node9 + + + + + +Node16 + +Templ< int > + + + +Node16->Node9 + + + + + +Node17 + +Templ< T > + + + +Node17->Node16 + + +< int > + + + +Node18 + +Used + + + +Node18->Node9 + + +m_usedClass + + + diff --git a/docs/html/hierarchy.html b/docs/html/hierarchy.html new file mode 100644 index 0000000..df2ed13 --- /dev/null +++ b/docs/html/hierarchy.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/hierarchy.js b/docs/html/hierarchy.js new file mode 100644 index 0000000..6af7a4f --- /dev/null +++ b/docs/html/hierarchy.js @@ -0,0 +1,18 @@ +var hierarchy = +[ + [ "penify_hook.api_client.APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", null ], + [ "penify_hook.base_analyzer.BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", [ + [ "penify_hook.commit_analyzer.CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", null ], + [ "penify_hook.file_analyzer.FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", null ], + [ "penify_hook.folder_analyzer.FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", null ], + [ "penify_hook.git_analyzer.GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", null ] + ] ], + [ "Exception", "classException.html", [ + [ "penify_hook.utils.GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ] + ] ], + [ "penify_hook.jira_client.JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", null ], + [ "penify_hook.llm_client.LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", null ], + [ "tests.test_commit_commands.TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", null ], + [ "tests.test_config_commands.TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", null ], + [ "tests.test_web_config.TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", null ] +]; \ No newline at end of file diff --git a/docs/html/hook__commands_8py.html b/docs/html/hook__commands_8py.html new file mode 100644 index 0000000..cef593a --- /dev/null +++ b/docs/html/hook__commands_8py.html @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/commands/hook_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
hook_commands.py File Reference
+
+
+ + + + + + + + +

+Namespaces

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

+Functions

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

+Variables

string penify_hook.commands.hook_commands.HOOK_FILENAME = "post-commit"
 
string penify_hook.commands.hook_commands.HOOK_TEMPLATE
 
+
+
+ + + + + diff --git a/docs/html/hook__commands_8py.js b/docs/html/hook__commands_8py.js new file mode 100644 index 0000000..7868841 --- /dev/null +++ b/docs/html/hook__commands_8py.js @@ -0,0 +1,7 @@ +var hook__commands_8py = +[ + [ "install_git_hook", "hook__commands_8py.html#adff8f5d3bf1c3795974a391ee95b72b2", null ], + [ "uninstall_git_hook", "hook__commands_8py.html#a81543eb5fa835fd1237f24e8bce6201d", null ], + [ "HOOK_FILENAME", "hook__commands_8py.html#ae82fd46e5a9219da1478b0476b8214b1", null ], + [ "HOOK_TEMPLATE", "hook__commands_8py.html#a6a45aad71c8d32ce11a6dff8cee8bee7", null ] +]; \ No newline at end of file diff --git a/docs/html/index.html b/docs/html/index.html new file mode 100644 index 0000000..fd5f286 --- /dev/null +++ b/docs/html/index.html @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Main Page + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
penify-cli Documentation
+
+
+
+
+ + + + + diff --git a/docs/html/inherit_graph_0.map b/docs/html/inherit_graph_0.map new file mode 100644 index 0000000..4d4472c --- /dev/null +++ b/docs/html/inherit_graph_0.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/inherit_graph_0.md5 b/docs/html/inherit_graph_0.md5 new file mode 100644 index 0000000..927ae02 --- /dev/null +++ b/docs/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +fbdbe5195fd7acea201510f0e9bb231e \ No newline at end of file diff --git a/docs/html/inherit_graph_0.svg b/docs/html/inherit_graph_0.svg new file mode 100644 index 0000000..af8bbff --- /dev/null +++ b/docs/html/inherit_graph_0.svg @@ -0,0 +1,38 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +Exception + + + + + +Node1 + + +penify_hook.utils.GitRepo +NotFoundError + + + + + +Node0->Node1 + + + + + diff --git a/docs/html/inherit_graph_1.map b/docs/html/inherit_graph_1.map new file mode 100644 index 0000000..e29f764 --- /dev/null +++ b/docs/html/inherit_graph_1.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_1.md5 b/docs/html/inherit_graph_1.md5 new file mode 100644 index 0000000..ea3634a --- /dev/null +++ b/docs/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +61b97d863a0d1fddd4dbd69906ebc213 \ No newline at end of file diff --git a/docs/html/inherit_graph_1.svg b/docs/html/inherit_graph_1.svg new file mode 100644 index 0000000..31bd0a8 --- /dev/null +++ b/docs/html/inherit_graph_1.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +penify_hook.api_client.APIClient + + + + + diff --git a/docs/html/inherit_graph_2.map b/docs/html/inherit_graph_2.map new file mode 100644 index 0000000..799bfbb --- /dev/null +++ b/docs/html/inherit_graph_2.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/docs/html/inherit_graph_2.md5 b/docs/html/inherit_graph_2.md5 new file mode 100644 index 0000000..4b44272 --- /dev/null +++ b/docs/html/inherit_graph_2.md5 @@ -0,0 +1 @@ +75e192bb568d3adda84eea21391817f9 \ No newline at end of file diff --git a/docs/html/inherit_graph_2.svg b/docs/html/inherit_graph_2.svg new file mode 100644 index 0000000..2677d68 --- /dev/null +++ b/docs/html/inherit_graph_2.svg @@ -0,0 +1,87 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +penify_hook.base_analyzer. +BaseAnalyzer + + + + + +Node1 + + +penify_hook.commit +_analyzer.CommitDocGenHook + + + + + +Node0->Node1 + + + + + +Node2 + + +penify_hook.file_analyzer. +FileAnalyzerGenHook + + + + + +Node0->Node2 + + + + + +Node3 + + +penify_hook.folder +_analyzer.FolderAnalyzerGenHook + + + + + +Node0->Node3 + + + + + +Node4 + + +penify_hook.git_analyzer. +GitDocGenHook + + + + + +Node0->Node4 + + + + + diff --git a/docs/html/inherit_graph_3.map b/docs/html/inherit_graph_3.map new file mode 100644 index 0000000..697011d --- /dev/null +++ b/docs/html/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_3.md5 b/docs/html/inherit_graph_3.md5 new file mode 100644 index 0000000..dc81dee --- /dev/null +++ b/docs/html/inherit_graph_3.md5 @@ -0,0 +1 @@ +fceca40b7ed3dc42e967f284c6fcc468 \ No newline at end of file diff --git a/docs/html/inherit_graph_3.svg b/docs/html/inherit_graph_3.svg new file mode 100644 index 0000000..8d32efa --- /dev/null +++ b/docs/html/inherit_graph_3.svg @@ -0,0 +1,23 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +penify_hook.jira_client. +JiraClient + + + + + diff --git a/docs/html/inherit_graph_4.map b/docs/html/inherit_graph_4.map new file mode 100644 index 0000000..8833eec --- /dev/null +++ b/docs/html/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_4.md5 b/docs/html/inherit_graph_4.md5 new file mode 100644 index 0000000..7b024dc --- /dev/null +++ b/docs/html/inherit_graph_4.md5 @@ -0,0 +1 @@ +78a208cc7ff8d5e3d76f7fe246474324 \ No newline at end of file diff --git a/docs/html/inherit_graph_4.svg b/docs/html/inherit_graph_4.svg new file mode 100644 index 0000000..f51c5c8 --- /dev/null +++ b/docs/html/inherit_graph_4.svg @@ -0,0 +1,22 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +penify_hook.llm_client.LLMClient + + + + + diff --git a/docs/html/inherit_graph_5.map b/docs/html/inherit_graph_5.map new file mode 100644 index 0000000..340884d --- /dev/null +++ b/docs/html/inherit_graph_5.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_5.md5 b/docs/html/inherit_graph_5.md5 new file mode 100644 index 0000000..a572e33 --- /dev/null +++ b/docs/html/inherit_graph_5.md5 @@ -0,0 +1 @@ +07fe5f1877ad04afe232476f3697a187 \ No newline at end of file diff --git a/docs/html/inherit_graph_5.svg b/docs/html/inherit_graph_5.svg new file mode 100644 index 0000000..d1eb1ca --- /dev/null +++ b/docs/html/inherit_graph_5.svg @@ -0,0 +1,23 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +tests.test_commit_commands. +TestCommitCommands + + + + + diff --git a/docs/html/inherit_graph_6.map b/docs/html/inherit_graph_6.map new file mode 100644 index 0000000..093c227 --- /dev/null +++ b/docs/html/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_6.md5 b/docs/html/inherit_graph_6.md5 new file mode 100644 index 0000000..37adffc --- /dev/null +++ b/docs/html/inherit_graph_6.md5 @@ -0,0 +1 @@ +df59af5d6cbe4d3df1d1ec09b3fe3a88 \ No newline at end of file diff --git a/docs/html/inherit_graph_6.svg b/docs/html/inherit_graph_6.svg new file mode 100644 index 0000000..6156f4f --- /dev/null +++ b/docs/html/inherit_graph_6.svg @@ -0,0 +1,23 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +tests.test_config_commands. +TestConfigCommands + + + + + diff --git a/docs/html/inherit_graph_7.map b/docs/html/inherit_graph_7.map new file mode 100644 index 0000000..f1fc41d --- /dev/null +++ b/docs/html/inherit_graph_7.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/inherit_graph_7.md5 b/docs/html/inherit_graph_7.md5 new file mode 100644 index 0000000..474c162 --- /dev/null +++ b/docs/html/inherit_graph_7.md5 @@ -0,0 +1 @@ +0da5838f91ae0c3b8f7bfe23d4aad90f \ No newline at end of file diff --git a/docs/html/inherit_graph_7.svg b/docs/html/inherit_graph_7.svg new file mode 100644 index 0000000..a9bcadf --- /dev/null +++ b/docs/html/inherit_graph_7.svg @@ -0,0 +1,23 @@ + + + + + + +Graphical Class Hierarchy + + + +Node0 + + +tests.test_web_config.Test +WebConfig + + + + + diff --git a/docs/html/inherits.html b/docs/html/inherits.html new file mode 100644 index 0000000..e6c36bd --- /dev/null +++ b/docs/html/inherits.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Hierarchy + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Class Hierarchy
+
+
+ + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+ + + + + diff --git a/docs/html/jira__client_8py.html b/docs/html/jira__client_8py.html new file mode 100644 index 0000000..c075098 --- /dev/null +++ b/docs/html/jira__client_8py.html @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/jira_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
jira_client.py File Reference
+
+
+ + + + +

+Classes

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

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.jira_client
 
+ + + +

+Variables

bool penify_hook.jira_client.JIRA_AVAILABLE = True
 
+
+
+ + + + + diff --git a/docs/html/jira__client_8py.js b/docs/html/jira__client_8py.js new file mode 100644 index 0000000..887fb38 --- /dev/null +++ b/docs/html/jira__client_8py.js @@ -0,0 +1,5 @@ +var jira__client_8py = +[ + [ "penify_hook.jira_client.JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", "classpenify__hook_1_1jira__client_1_1JiraClient" ], + [ "JIRA_AVAILABLE", "jira__client_8py.html#a5593ea3415081eca1eea92e4c1ad1aa2", null ] +]; \ No newline at end of file diff --git a/docs/html/jquery.js b/docs/html/jquery.js new file mode 100644 index 0000000..c9ed3d9 --- /dev/null +++ b/docs/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/docs/html/llm__client_8py.html b/docs/html/llm__client_8py.html new file mode 100644 index 0000000..ae0b9b2 --- /dev/null +++ b/docs/html/llm__client_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/llm_client.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
llm_client.py File Reference
+
+
+ + + + +

+Classes

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

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.llm_client
 
+
+
+ + + + + diff --git a/docs/html/llm__client_8py.js b/docs/html/llm__client_8py.js new file mode 100644 index 0000000..afd0616 --- /dev/null +++ b/docs/html/llm__client_8py.js @@ -0,0 +1,4 @@ +var llm__client_8py = +[ + [ "penify_hook.llm_client.LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", "classpenify__hook_1_1llm__client_1_1LLMClient" ] +]; \ No newline at end of file diff --git a/docs/html/login__command_8py.html b/docs/html/login__command_8py.html new file mode 100644 index 0000000..2dd860e --- /dev/null +++ b/docs/html/login__command_8py.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/login_command.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
login_command.py File Reference
+
+
+ + + + + + +

+Namespaces

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

+Functions

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

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.main
 
+ + + +

+Functions

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

Tests Coverage

+

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

+

+Features

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

+Installation

+

Install from PyPI:

+
pip install penify
+

+Usage

+

Penify CLI provides several subcommands for different functionalities, organized into basic commands (no login required) and advanced commands (login required).

+

+Basic Commands (No login required)

+

+Commit

+

Generate smart commit messages using local LLM:

+
penify commit [-m "Optional message"] [-e] [-d]
+

Options:

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

+Config

+

Configure local LLM and JIRA settings:

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

+Advanced Commands (Login required)

+

+Login

+

To log in and obtain an API token:

+
penify login
+

This command will open a browser window for authentication. After successful login, the API key will be saved locally for future use.

+

+Documentation Generation

+

Generate documentation for Git diff, files or folders:

+
# Generate documentation for latest Git commit diff
+
penify docgen
+
+
# Generate documentation for specific file or folder
+
penify docgen -l /path/to/file/or/folder
+

Options:

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

+Git Hook Management

+

Install or uninstall Git post-commit hooks:

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

Options:

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

+Authentication

+

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

+

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

+

+Local LLM Configuration

+

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

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

Common configurations:

+

+JIRA Integration

+

Configure JIRA integration to enhance commit messages with issue details:

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

+Development

+

To set up the development environment:

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

+Running Tests

+
pytest
+

+License

+

This project is licensed under the MIT License.

+

+Author

+

Suman Saurabh (ss.su.nosp@m.mans.nosp@m.aurab.nosp@m.h92@.nosp@m.gmail.nosp@m..com)

+

+Contributing

+

Contributions are welcome! Please feel free to submit a Pull Request.

+

+Issues

+

If you encounter any problems or have suggestions, please file an issue on the GitHub repository.

+

+Support

+

For automated API Documentation, Architecture Documentation, Code Documentation, Pull Request Documentation, or if you need a demo, please join our Discord support channel.

+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html new file mode 100644 index 0000000..282892a --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html @@ -0,0 +1,256 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Commit Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI - Commit Commands
+
+
+

The commit command allows you to generate smart, AI-powered commit messages for your Git changes. This document explains all available options and combinations.

+

+Basic Usage

+
penify commit
+

By default, this command:

    +
  • Analyzes your staged Git changes
  • +
  • Generates a concise commit title only
  • +
  • Uses local LLM if configured, or falls back to Penify API
  • +
+

+Command Options

+

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

+

Provide context for the commit message generation:

+
penify commit -m "Fix login flow"
+

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

+

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

+

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

+
penify commit -e
+

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

+

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

+

Generate a detailed commit message with both title and description:

+
penify commit -d
+

Without this flag, only the commit title is generated.

+

+Option Combinations

+

You can combine these options for different workflows:

+

+Generate Title Only with Context

+
penify commit -m "Update login UI"
+

+Generate Title and Description with Context

+
penify commit -m "Update login UI" -d
+

+Generate and Edit Full Commit Message

+
penify commit -d -e
+

+Generate, Edit, and Provide Context

+
penify commit -m "Refactor authentication" -d -e
+

+LLM and JIRA Integration

+

+Using Local LLM

+

If you've configured a local LLM using penify config llm, the commit command will automatically use it for message generation.

+

Benefits:

    +
  • Privacy: your code changes don't leave your machine
  • +
  • Speed: no network latency
  • +
  • Works offline
  • +
+

+JIRA Enhancement

+

If you've configured JIRA integration using penify config jira, the commit command will:

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

Example output:

PROJ-123: Fix authentication bug in login flow
+
+
- Updated OAuth token validation
+
- Fixed session timeout handling
+
- Added unit tests for edge cases
+
+
[PROJ-123]
+

+Configuration Requirements

+

For the commit command to work:

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

+Examples

+

+Basic Commit with Default Settings

+
# Stage your changes
+
git add .
+
+
# Generate commit message
+
penify commit
+
+
# Commit with the generated message
+
git commit -m "Generated message here"
+

+Full Workflow with All Features

+
# Stage your changes
+
git add .
+
+
# Generate detailed commit message with JIRA integration,
+
# provide context, and open editor for review
+
penify commit -m "Fix login issue" -d -e
+
+
# The commit is automatically completed after you save and exit the editor
+

+Troubleshooting

+

+Common Issues

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

The config command allows you to set up and manage configuration settings for Penify CLI. This document explains all available configuration options and how to use them.

+

+Configuration Overview

+

Penify CLI stores configuration in a JSON file at ~/.penify/config.json. The configuration includes:

+
    +
  • LLM (Large Language Model) settings for local commit message generation
  • +
  • JIRA integration settings for enhanced commit messages
  • +
  • API tokens and other credentials
  • +
+

+Basic Usage

+
# Configure LLM settings
+
penify config llm
+
+
# Configure JIRA integration
+
penify config jira
+

+LLM Configuration

+

+Web Interface

+

Running penify config llm opens a web interface in your browser where you can configure:

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

+Supported LLMs

+

Penify CLI supports various LLM providers:

+

+OpenAI

+ +

+Anthropic

+ +

+Ollama (Local)

+ +

+Azure OpenAI

+
    +
  • Model: Your deployed model name
  • +
  • API Base: Your Azure endpoint
  • +
  • API Key: Your Azure API key
  • +
+

+Configuration File Structure

+

After configuration, your ~/.penify/config.json will contain:

+
{
+
"llm": {
+
"model": "gpt-3.5-turbo",
+
"api_base": "https://api.openai.com/v1",
+
"api_key": "sk-..."
+
}
+
}
+

+JIRA Configuration

+

+Web Interface

+

Running penify config jira opens a web interface where you can configure:

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

+Creating a JIRA API Token

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

+Configuration File Structure

+

After configuration, your ~/.penify/config.json will contain:

+
{
+
"jira": {
+
"url": "https://yourcompany.atlassian.net",
+
"username": "your.email@example.com",
+
"api_token": "your-jira-api-token"
+
}
+
}
+

+Configuration Locations

+

Penify CLI looks for configuration in multiple locations:

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

The project-specific configuration takes precedence if both exist.

+

+Environment Variables

+

You can override configuration settings using environment variables:

+
    +
  • PENIFY_API_TOKEN: Override the stored API token
  • +
  • PENIFY_LLM_MODEL: Override the configured LLM model
  • +
  • PENIFY_LLM_API_BASE: Override the configured LLM API base URL
  • +
  • PENIFY_LLM_API_KEY: Override the configured LLM API key
  • +
  • PENIFY_JIRA_URL: Override the configured JIRA URL
  • +
  • PENIFY_JIRA_USER: Override the configured JIRA username
  • +
  • PENIFY_JIRA_TOKEN: Override the configured JIRA API token
  • +
+

Example:

export PENIFY_LLM_MODEL="gpt-4"
+
penify commit
+

+Command-Line Configuration

+

For advanced users or scripting, you can directly edit the configuration file:

+
# View current configuration
+
cat ~/.penify/config.json
+
+
# Edit configuration with your preferred editor
+
nano ~/.penify/config.json
+

+Sharing Configuration

+

You can share configuration between machines by copying the .penify/config.json file. However, be cautious with API keys and credentials.

+

For team settings, consider:

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

+Troubleshooting

+

+Common Issues

+
    +
  1. **"Error reading configuration file"**
      +
    • Check if the file exists: ls -la ~/.penify
    • +
    • Ensure it contains valid JSON: cat ~/.penify/config.json
    • +
    +
  2. +
  3. **"Failed to connect to LLM API"**
      +
    • Verify API base URL and API key
    • +
    • Check network connectivity to the API endpoint
    • +
    • Ensure your account has access to the specified model
    • +
    +
  4. +
  5. **"Failed to connect to JIRA"**
      +
    • Check JIRA URL format (should include https://)
    • +
    • Verify username and API token
    • +
    • Ensure your JIRA account has API access permissions
    • +
    +
  6. +
+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html new file mode 100644 index 0000000..201c404 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html @@ -0,0 +1,281 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Detailed Usage Guide + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI - Detailed Usage Guide
+
+
+

This document provides in-depth information about all features and capabilities of the Penify CLI tool.

+

+Table of Contents

+
    +
  • Penify CLI - Detailed Usage Guide
      +
    • Table of Contents
    • +
    • Authentication
        +
      • Login Process
      • +
      • API Token Storage
      • +
      • Token Precedence
      • +
      +
    • +
    • Command Overview
    • +
    • Commit Message Generation
    • +
    • Code Documentation Generation
        +
      • Use Cases
      • +
      • Authentication Requirement
      • +
      +
    • +
    • Configuration Settings
    • +
    • Git Hooks
        +
      • Post-Commit Hook
      • +
      • Custom Hook Location
      • +
      +
    • +
    • Advanced Use Cases
        +
      • CI/CD Integration
      • +
      • Remote Repository Documentation
      • +
      +
    • +
    • Troubleshooting
        +
      • Common Issues
      • +
      • Logs
      • +
      • Support
      • +
      +
    • +
    +
  • +
+

+Authentication

+

+Login Process

+

When you run penify login, the tool:

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

+API Token Storage

+

API tokens are stored in your home directory in the .penify file. This JSON file contains:

+
{
+
"api_keys": "your-api-token",
+
"llm": { "model": "...", "api_base": "...", "api_key": "..." },
+
"jira": { "url": "...", "username": "...", "api_token": "..." }
+
}
+

+Token Precedence

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

+Command Overview

+
penify
+
├── commit Generate smart commit messages
+
├── config Configure local LLM and JIRA
+
│ ├── llm Configure local LLM settings
+
│ └── jira Configure JIRA integration
+
├── login Log in to Penify account
+
└── docgen Generate code documentation
+
├── install-hook Install Git post-commit hook
+
└── uninstall-hook Remove Git post-commit hook
+

+Commit Message Generation

+

The commit command analyzes your staged changes and generates meaningful commit messages. It can:

+
    +
  • Use a local LLM if configured
  • +
  • Enhance messages with JIRA issue details
  • +
  • Provide both title and description
  • +
+

For specific options and examples, see docs/commit-commands.md.

+

+Code Documentation Generation

+

The docgen command generates documentation for your code:

+

+Use Cases

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

+Authentication Requirement

+

This feature requires authentication with a Penify account. Run penify login before using documentation features.

+

+Configuration Settings

+

Configure local settings using the config command:

+
    +
  • LLM Settings: Configure a local LLM for commit message generation
  • +
  • JIRA Settings: Set up JIRA integration for enhanced commit messages
  • +
+

For detailed configuration options, see docs/config-commands.md.

+

+Git Hooks

+

Penify can install Git hooks to automate documentation generation:

+

+Post-Commit Hook

+
    +
  • Install: penify docgen install-hook
  • +
  • What it does: Automatically generates documentation for changed files after each commit
  • +
  • Uninstall: penify docgen uninstall-hook
  • +
+

+Custom Hook Location

+

You can specify a custom location for Git hooks:

+
penify docgen install-hook -l /path/to/git/repo
+

+Advanced Use Cases

+

+CI/CD Integration

+

For CI/CD pipelines:

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

+Remote Repository Documentation

+

Generate documentation for an entire repository:

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

+Troubleshooting

+

+Common Issues

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

+Logs

+

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

+
export PENIFY_DEBUG=1
+

+Support

+

For additional help, visit https://docs.penify.dev/ or contact suppo.nosp@m.rt@p.nosp@m.enify.nosp@m..dev

+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html new file mode 100644 index 0000000..f206ae3 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html @@ -0,0 +1,364 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI - Documentation Generation Commands + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI - Documentation Generation Commands
+
+
+

This document provides a detailed guide to all permutations and combinations of the docgen command, including extensive information about Git hook commands for automating documentation generation.

+

+Table of Contents

+
    +
  • Basic Usage
  • +
  • Command Options
  • +
  • Option Combinations
  • +
  • Git Hook Commands
      +
    • Hook Installation
    • +
    • Hook Customization
    • +
    • Hook Uninstallation
    • +
    +
  • +
  • Advanced Use Cases
  • +
  • Troubleshooting
  • +
+

+Basic Usage

+
penify docgen
+

By default, this command:

    +
  • Analyzes the current Git diff (changes since last commit)
  • +
  • Generates documentation for changed files only
  • +
  • Requires authentication via penify login
  • +
+

+Command Options

+

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

+

Specify a target for documentation generation:

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

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

+

+Subcommands

+

+<tt>install-hook</tt>

+

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

+
penify docgen install-hook
+

+<tt>uninstall-hook</tt>

+

Remove the Git post-commit hook:

+
penify docgen uninstall-hook
+

+Option Combinations

+

+Generate Documentation for Current Git Diff

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

+Generate Documentation for a Specific File

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

+Generate Documentation for a Folder

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

+Install Hook in Current Repository

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

+Install Hook in Specific Repository

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

+Uninstall Hook from Current Repository

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

+Uninstall Hook from Specific Repository

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

+Git Hook Commands

+

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

+

+Hook Installation

+

+How Hooks Work

+

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

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

+Hook Script Content

+

The generated post-commit hook contains:

+
#!/bin/sh
+
# This is a post-commit hook generated by penify.
+
# Automatically generates documentation for changed files after each commit.
+
+
penify docgen -gf /path/to/git/repository -t your_api_token
+

+Installation Location

+

By default, hooks are installed in the current Git repository. You can specify a different location:

+
penify docgen install-hook -l /path/to/repo
+

+Installation Requirements

+

To install hooks, you need:

    +
  • A valid Penify API token (login first with penify login)
  • +
  • Write permissions to the .git/hooks directory
  • +
+

+Verifying Installation

+

After installation, you can verify that the hook is installed:

+
cat .git/hooks/post-commit
+

+Hook Customization

+

You can customize the post-commit hook after installation:

+

+Modifying Hook Behavior

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

Example of a customized hook:

+
#!/bin/sh
+
# This is a post-commit hook generated by penify.
+
# Automatically generates documentation for changed files after each commit.
+
+
# Generate documentation
+
penify docgen -gf /path/to/git/repository -t your_api_token
+
+
# Additional custom commands
+
echo "Documentation generation complete!"
+

+Advanced Hook Scenarios

+

Conditional Documentation Generation:

+
#!/bin/sh
+
# Only generate documentation for commits to the main branch
+
BRANCH=$(git rev-parse --abbrev-ref HEAD)
+
if [ "$BRANCH" = "main" ]; then
+
penify docgen -gf /path/to/git/repository -t your_api_token
+
fi
+

Documenting Specific Files/Folders:

+
#!/bin/sh
+
# Only document Python files in the src directory
+
penify docgen -l src/ -gf /path/to/git/repository -t your_api_token
+

+Hook Uninstallation

+

+Standard Uninstallation

+

To remove a hook from the current repository:

+
penify docgen uninstall-hook
+

+Specific Repository Uninstallation

+

To remove a hook from a specific repository:

+
penify docgen uninstall-hook -l /path/to/repo
+

+Manual Hook Removal

+

If needed, you can manually remove the hook:

+
rm .git/hooks/post-commit
+

+Verifying Uninstallation

+

Check that the hook was successfully removed:

+
ls -la .git/hooks/post-commit # Should return "No such file or directory"
+

+Advanced Use Cases

+

+Continuous Integration

+

Run documentation generation in CI pipelines:

+
# In your CI script
+
export PENIFY_API_TOKEN=your_api_token
+
penify docgen -l src/
+

+Batch Documentation

+

Generate documentation for multiple repositories:

+
# Bash script for batch documentation
+
for repo in repo1 repo2 repo3; do
+
cd /path/to/$repo
+
penify docgen -l .
+
done
+

+Custom Git Hook Integration

+

Integrate with other Git hooks:

+
# In .git/hooks/pre-push
+
penify docgen -l src/
+

+Documenting Release Tags

+

Generate documentation when creating a release tag:

+
# Document everything when creating a tag
+
git tag -a v1.0.0
+
penify docgen -l . # Document entire codebase
+
git commit --amend -m "Release v1.0.0 with updated documentation"
+

+Troubleshooting

+

+Common Issues

+
    +
  1. **"Authentication required"**
      +
    • Run penify login before using documentation features
    • +
    • Check your API token with cat ~/.penify
    • +
    +
  2. +
  3. **"Permission denied when installing hook"**
      +
    • Check Git repository permissions
    • +
    • Try running with sudo (if appropriate for your environment)
    • +
    • Ensure the .git/hooks directory exists
    • +
    +
  4. +
  5. **"Hook installed but not running"**
      +
    • Check if the hook is executable: ls -la .git/hooks/post-commit
    • +
    • Make it executable if needed: chmod +x .git/hooks/post-commit
    • +
    • Check for syntax errors in the hook script
    • +
    +
  6. +
  7. **"File or directory not found"**
      +
    • Verify the path provided to the -l option
    • +
    • Ensure you're running the command from the correct directory
    • +
    +
  8. +
  9. **"Hook uninstallation failed"**
      +
    • Check permissions on the .git/hooks directory
    • +
    • Try manual removal: rm .git/hooks/post-commit
    • +
    +
  10. +
+

+Debugging

+

For detailed output when running documentation commands:

+
export PENIFY_DEBUG=1
+
penify docgen -l src/
+

+Getting Help

+

For command-specific help:

+
penify docgen --help
+
penify docgen install-hook --help
+
penify docgen uninstall-hook --help
+
+
+
+ + + + + diff --git a/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html new file mode 100644 index 0000000..49ce651 --- /dev/null +++ b/docs/html/md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html @@ -0,0 +1,240 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Penify CLI Example Workflows + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Penify CLI Example Workflows
+
+
+

This document demonstrates how to use Penify CLI in real-world development workflows to improve your productivity.

+

+Workflow 1: Efficient Git Commits with AI

+

+Setup

+

First, configure your local LLM for offline operation:

+
penify config llm
+

Configure your JIRA integration for enhanced commit messages:

+
penify config jira
+

+Daily Workflow

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

+Benefits

+
    +
  • Consistent and descriptive commit messages
  • +
  • Automatic inclusion of relevant JIRA ticket information
  • +
  • Time saved from writing detailed commit messages
  • +
+

+Workflow 2: Documentation Generation Pipeline

+

+Setup

+

Login to Penify to access advanced documentation features:

+
penify login
+

Install the Git hook for automatic documentation generation:

+
penify docgen install-hook
+

+Daily Workflow

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

+Manual Documentation

+

For specific files or folders:

+
penify docgen -l src/components/authentication
+

+Benefits

+
    +
  • Always up-to-date documentation
  • +
  • Consistent documentation style
  • +
  • Time saved from writing detailed documentation
  • +
+

+Workflow 3: Code Review Enhancement

+

+Setup

+

Ensure you're logged into Penify:

+
penify login
+

+Workflow

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

+Benefits

+
    +
  • Improved PR quality
  • +
  • Faster code reviews
  • +
  • Better team understanding of code changes
  • +
+

+Workflow 4: Onboarding New Team Members

+

+For Team Leads

+

Generate comprehensive documentation for the entire codebase:

+
penify docgen -l .
+

+For New Team Members

+

Generate focused documentation for components you're working on:

+
penify docgen -l src/components/my-feature
+

+Benefits

+
    +
  • Faster onboarding
  • +
  • Better understanding of code structure
  • +
  • Reduced questions to senior team members
  • +
+

+Workflow 5: Legacy Code Understanding

+

When working with unfamiliar legacy code:

+
# Document a specific complex file
+
penify docgen -l src/legacy/complex_module.py
+
+
# Document an entire legacy component
+
penify docgen -l src/legacy/old_component
+

+Benefits

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

    - a -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - v -

    + + +

    - w -

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

    - c -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

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

    - a -

    + + +

    - c -

      +
    • classifiers : setup
    • +
    + + +

    - d -

    + + +

    - e -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - n -

    + + +

    - p -

    + + +

    - s -

    + + +

    - u -

    + + +

    - v -

    + + +

    - w -

    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook.html b/docs/html/namespacepenify__hook.html new file mode 100644 index 0000000..2d6d6c4 --- /dev/null +++ b/docs/html/namespacepenify__hook.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Namespaces

    namespace  api_client
     
    namespace  base_analyzer
     
    namespace  commands
     
    namespace  commit_analyzer
     
    namespace  config_command
     
    namespace  constants
     
    namespace  file_analyzer
     
    namespace  folder_analyzer
     
    namespace  git_analyzer
     
    namespace  jira_client
     
    namespace  llm_client
     
    namespace  login_command
     
    namespace  main
     
    namespace  ui_utils
     
    namespace  utils
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook.js b/docs/html/namespacepenify__hook.js new file mode 100644 index 0000000..3344578 --- /dev/null +++ b/docs/html/namespacepenify__hook.js @@ -0,0 +1,56 @@ +var namespacepenify__hook = +[ + [ "api_client", "namespacepenify__hook_1_1api__client.html", "namespacepenify__hook_1_1api__client" ], + [ "base_analyzer", "namespacepenify__hook_1_1base__analyzer.html", "namespacepenify__hook_1_1base__analyzer" ], + [ "commands", "namespacepenify__hook_1_1commands.html", "namespacepenify__hook_1_1commands" ], + [ "commit_analyzer", "namespacepenify__hook_1_1commit__analyzer.html", "namespacepenify__hook_1_1commit__analyzer" ], + [ "config_command", "namespacepenify__hook_1_1config__command.html", [ + [ "handle_config", "namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde", null ], + [ "setup_config_parser", "namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e", null ] + ] ], + [ "constants", "namespacepenify__hook_1_1constants.html", [ + [ "API_URL", "namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0", null ], + [ "DASHBOARD_URL", "namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0", null ] + ] ], + [ "file_analyzer", "namespacepenify__hook_1_1file__analyzer.html", "namespacepenify__hook_1_1file__analyzer" ], + [ "folder_analyzer", "namespacepenify__hook_1_1folder__analyzer.html", "namespacepenify__hook_1_1folder__analyzer" ], + [ "git_analyzer", "namespacepenify__hook_1_1git__analyzer.html", "namespacepenify__hook_1_1git__analyzer" ], + [ "jira_client", "namespacepenify__hook_1_1jira__client.html", "namespacepenify__hook_1_1jira__client" ], + [ "llm_client", "namespacepenify__hook_1_1llm__client.html", "namespacepenify__hook_1_1llm__client" ], + [ "login_command", "namespacepenify__hook_1_1login__command.html", [ + [ "handle_login", "namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd", null ], + [ "setup_login_parser", "namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a", null ] + ] ], + [ "main", "namespacepenify__hook_1_1main.html", [ + [ "main", "namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f", null ] + ] ], + [ "ui_utils", "namespacepenify__hook_1_1ui__utils.html", [ + [ "create_progress_bar", "namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c", null ], + [ "create_stage_progress_bar", "namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef", null ], + [ "format_error", "namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e", null ], + [ "format_file_path", "namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4", null ], + [ "format_highlight", "namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452", null ], + [ "format_info", "namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6", null ], + [ "format_success", "namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776", null ], + [ "format_warning", "namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2", null ], + [ "print_error", "namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f", null ], + [ "print_info", "namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44", null ], + [ "print_processing", "namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115", null ], + [ "print_status", "namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c", null ], + [ "print_success", "namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a", null ], + [ "print_warning", "namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa", null ], + [ "update_stage", "namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d", null ], + [ "autoreset", "namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71", null ], + [ "ERROR_COLOR", "namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe", null ], + [ "ERROR_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0", null ], + [ "HIGHLIGHT_COLOR", "namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc", null ], + [ "INFO_COLOR", "namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c", null ], + [ "NEUTRAL_COLOR", "namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5", null ], + [ "PROCESSING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756", null ], + [ "SUCCESS_COLOR", "namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4", null ], + [ "SUCCESS_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e", null ], + [ "WARNING_COLOR", "namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff", null ], + [ "WARNING_SYMBOL", "namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16", null ] + ] ], + [ "utils", "namespacepenify__hook_1_1utils.html", "namespacepenify__hook_1_1utils" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1api__client.html b/docs/html/namespacepenify__hook_1_1api__client.html new file mode 100644 index 0000000..2bae79a --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1api__client.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.api_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.api_client Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  APIClient
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1api__client.js b/docs/html/namespacepenify__hook_1_1api__client.js new file mode 100644 index 0000000..fb9b017 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1api__client.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1api__client = +[ + [ "APIClient", "classpenify__hook_1_1api__client_1_1APIClient.html", "classpenify__hook_1_1api__client_1_1APIClient" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1base__analyzer.html b/docs/html/namespacepenify__hook_1_1base__analyzer.html new file mode 100644 index 0000000..0555d7c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1base__analyzer.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.base_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.base_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  BaseAnalyzer
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1base__analyzer.js b/docs/html/namespacepenify__hook_1_1base__analyzer.js new file mode 100644 index 0000000..6701f69 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1base__analyzer.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1base__analyzer = +[ + [ "BaseAnalyzer", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html", "classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands.html b/docs/html/namespacepenify__hook_1_1commands.html new file mode 100644 index 0000000..9e14b0e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands Namespace Reference
    +
    +
    + + + + + + + + + + + + +

    +Namespaces

    namespace  auth_commands
     
    namespace  commit_commands
     
    namespace  config_commands
     
    namespace  doc_commands
     
    namespace  hook_commands
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands.js b/docs/html/namespacepenify__hook_1_1commands.js new file mode 100644 index 0000000..28e70f5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands.js @@ -0,0 +1,38 @@ +var namespacepenify__hook_1_1commands = +[ + [ "auth_commands", "namespacepenify__hook_1_1commands_1_1auth__commands.html", [ + [ "login", "namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655", null ], + [ "save_credentials", "namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24", null ] + ] ], + [ "commit_commands", "namespacepenify__hook_1_1commands_1_1commit__commands.html", [ + [ "commit_code", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a", null ], + [ "handle_commit", "namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23", null ], + [ "setup_commit_parser", "namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c", null ] + ] ], + [ "config_commands", "namespacepenify__hook_1_1commands_1_1config__commands.html", [ + [ "config_jira_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06", null ], + [ "config_llm_web", "namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c", null ], + [ "get_env_var_or_default", "namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87", null ], + [ "get_jira_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2", null ], + [ "get_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0", null ], + [ "get_penify_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20", null ], + [ "get_token", "namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812", null ], + [ "load_env_files", "namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae", null ], + [ "save_jira_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4", null ], + [ "save_llm_config", "namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4", null ], + [ "DOTENV_AVAILABLE", "namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67", null ], + [ "path", "namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880", null ] + ] ], + [ "doc_commands", "namespacepenify__hook_1_1commands_1_1doc__commands.html", [ + [ "generate_doc", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25", null ], + [ "handle_docgen", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704", null ], + [ "setup_docgen_parser", "namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0", null ], + [ "docgen_description", "namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948", null ] + ] ], + [ "hook_commands", "namespacepenify__hook_1_1commands_1_1hook__commands.html", [ + [ "install_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2", null ], + [ "uninstall_git_hook", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d", null ], + [ "HOOK_FILENAME", "namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1", null ], + [ "HOOK_TEMPLATE", "namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7", null ] + ] ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html new file mode 100644 index 0000000..89c79b0 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1auth__commands.html @@ -0,0 +1,230 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.auth_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.auth_commands Namespace Reference
    +
    +
    + + + + + + +

    +Functions

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

    Function Documentation

    + +

    ◆ login()

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

    ◆ save_credentials()

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

    +Functions

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

    Function Documentation

    + +

    ◆ commit_code()

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

    ◆ handle_commit()

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

    ◆ setup_commit_parser()

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

    +Functions

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

    +Variables

    bool DOTENV_AVAILABLE = True
     
     path
     
    +

    Function Documentation

    + +

    ◆ config_jira_web()

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

    ◆ config_llm_web()

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

    ◆ get_env_var_or_default()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    Any penify_hook.commands.config_commands.get_env_var_or_default (str env_var,
    Any  default = None 
    )
    +
    +
    Get environment variable or return default value.
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ get_jira_config()

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

    ◆ get_llm_config()

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

    ◆ get_penify_config()

    + +
    +
    + + + + + + + +
    Path penify_hook.commands.config_commands.get_penify_config ()
    +
    +
    Returns the path to the `config.json` file within the `.penify` directory,
    +creating it if necessary.
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ get_token()

    + +
    +
    + + + + + + + +
    Optional[str] penify_hook.commands.config_commands.get_token ()
    +
    +
    Retrieves an API token using a prioritized method.
    +
    +This function first attempts to load environment variables from all `.env`
    +files and checks if the `PENIFY_API_TOKEN` environment variable is set. If
    +found, it returns the token. If not, it looks for the API key in a
    +configuration file named 'api_keys'. If both methods fail, it returns None.
    +
    +Returns:
    +    str or None: The API token if found, otherwise None.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ load_env_files()

    + +
    +
    + + + + + + + +
    None penify_hook.commands.config_commands.load_env_files ()
    +
    +
    Load environment variables from .env files in various locations with proper
    +priority.
    +
    +This function loads environment variables from .env files located in different
    +directories, prioritizing the current directory over the Git repo root and the
    +user home directory. The loading process ensures that later files override
    +earlier ones.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    +
    +Here is the caller graph for this function:
    +
    +
    +
    +
    + +
    +
    + +

    ◆ save_jira_config()

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

    ◆ save_llm_config()

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

    Variable Documentation

    + +

    ◆ DOTENV_AVAILABLE

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

    ◆ path

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

    +Functions

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

    +Variables

    string docgen_description
     
    +

    Function Documentation

    + +

    ◆ generate_doc()

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

    ◆ handle_docgen()

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

    ◆ setup_docgen_parser()

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

    Variable Documentation

    + +

    ◆ docgen_description

    + +
    +
    + + + + +
    string penify_hook.commands.doc_commands.docgen_description
    +
    +Initial value:
    1= """Generate code documentation using Penify.
    +
    2
    +
    3This command requires you to be logged in to your Penify account.
    +
    4You can generate documentation for:
    +
    5- Current Git diff (default)
    +
    6- Specific file
    +
    7- Specific folder
    +
    8"""
    +
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map new file mode 100644 index 0000000..2c0a565 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 new file mode 100644 index 0000000..472a430 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.md5 @@ -0,0 +1 @@ +d7ee1e07127beb9f489b974a61acce5d \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg new file mode 100644 index 0000000..9ea3b5d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph.svg @@ -0,0 +1,258 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.doc_commands.handle_docgen + + + +Node1 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node3 + + + + + +Node8 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node1->Node9 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node3->Node5 + + + + + +Node7 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node7 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node7->Node7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg new file mode 100644 index 0000000..838bb12 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_cgraph_org.svg @@ -0,0 +1,170 @@ + + + + + + +penify_hook.commands.doc_commands.handle_docgen + + + +Node1 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node1->Node3 + + + + + +Node8 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node1->Node8 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node1->Node9 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node3->Node4 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node3->Node5 + + + + + +Node7 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node3->Node7 + + + + + +Node6 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node5->Node6 + + + + + +Node6->Node6 + + + + + +Node7->Node6 + + + + + +Node7->Node7 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map new file mode 100644 index 0000000..37a65e4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 new file mode 100644 index 0000000..9d429ee --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.md5 @@ -0,0 +1 @@ +ed70390d069e80c493faf1a14a7c6fff \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg new file mode 100644 index 0000000..6790fe4 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a2006ab13bff718ef783868a910c0b704_icgraph.svg @@ -0,0 +1,108 @@ + + + + + + +penify_hook.commands.doc_commands.handle_docgen + + + +Node1 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node1->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node1->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node1->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node1->Node6 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map new file mode 100644 index 0000000..3084ab9 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 new file mode 100644 index 0000000..171b82e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.md5 @@ -0,0 +1 @@ +5e9faa5a79a60188abcf0c90efae69aa \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg new file mode 100644 index 0000000..c5131ef --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph.svg @@ -0,0 +1,309 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.commands.doc_commands.generate_doc + + + +Node1 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node8 + + +tests.test_doc_commands.test +_generate_doc_error_handling + + + + + +Node1->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_generate_doc_file_location + + + + + +Node1->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_generate_doc_folder_location + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_doc_commands.test +_generate_doc_no_location + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_doc_commands.test +_generate_doc_with_file_exception + + + + + +Node1->Node12 + + + + + +Node13 + + +tests.test_doc_commands.test +_generate_doc_with_folder +_exception + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg new file mode 100644 index 0000000..4cf4b48 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_a4daac68bc563432bf25c85dc78081a25_icgraph_org.svg @@ -0,0 +1,221 @@ + + + + + + +penify_hook.commands.doc_commands.generate_doc + + + +Node1 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node8 + + +tests.test_doc_commands.test +_generate_doc_error_handling + + + + + +Node1->Node8 + + + + + +Node9 + + +tests.test_doc_commands.test +_generate_doc_file_location + + + + + +Node1->Node9 + + + + + +Node10 + + +tests.test_doc_commands.test +_generate_doc_folder_location + + + + + +Node1->Node10 + + + + + +Node11 + + +tests.test_doc_commands.test +_generate_doc_no_location + + + + + +Node1->Node11 + + + + + +Node12 + + +tests.test_doc_commands.test +_generate_doc_with_file_exception + + + + + +Node1->Node12 + + + + + +Node13 + + +tests.test_doc_commands.test +_generate_doc_with_folder +_exception + + + + + +Node1->Node13 + + + + + +Node3 + + +penify_hook.main.main + + + + + +Node2->Node3 + + + + + +Node4 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2->Node4 + + + + + +Node5 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2->Node5 + + + + + +Node6 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2->Node7 + + + + + +Node3->Node3 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map new file mode 100644 index 0000000..0ee99eb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 new file mode 100644 index 0000000..0dc7e32 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.md5 @@ -0,0 +1 @@ +0fa78969e5f8672d0da52972dd124680 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg new file mode 100644 index 0000000..998d629 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1doc__commands_acc7f4ead1b11951d885fa5c151c2cbe0_icgraph.svg @@ -0,0 +1,60 @@ + + + + + + +penify_hook.commands.doc_commands.setup_docgen_parser + + + +Node1 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node2 + + +penify_hook.main.main + + + + + +Node1->Node2 + + + + + +Node3 + + +tests.test_doc_commands.test +_setup_docgen_parser + + + + + +Node1->Node3 + + + + + +Node2->Node2 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html new file mode 100644 index 0000000..7b20460 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commands_1_1hook__commands.html @@ -0,0 +1,243 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.commands.hook_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.commands.hook_commands Namespace Reference
    +
    +
    + + + + + + +

    +Functions

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

    +Variables

    string HOOK_FILENAME = "post-commit"
     
    string HOOK_TEMPLATE
     
    +

    Function Documentation

    + +

    ◆ install_git_hook()

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

    ◆ uninstall_git_hook()

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

    Variable Documentation

    + +

    ◆ HOOK_FILENAME

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

    ◆ HOOK_TEMPLATE

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

    +Classes

    class  CommitDocGenHook
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1commit__analyzer.js b/docs/html/namespacepenify__hook_1_1commit__analyzer.js new file mode 100644 index 0000000..da2cbba --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1commit__analyzer.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1commit__analyzer = +[ + [ "CommitDocGenHook", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html", "classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1config__command.html b/docs/html/namespacepenify__hook_1_1config__command.html new file mode 100644 index 0000000..ee8b7e8 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1config__command.html @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.config_command Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.config_command Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def setup_config_parser (parent_parser)
     
    def handle_config (args)
     
    +

    Function Documentation

    + +

    ◆ handle_config()

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

    ◆ setup_config_parser()

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

    +Variables

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

    Variable Documentation

    + +

    ◆ API_URL

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

    ◆ DASHBOARD_URL

    + +
    +
    + + + + +
    string penify_hook.constants.DASHBOARD_URL = "https://dashboard.penify.dev/auth/localhost/login"
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1file__analyzer.html b/docs/html/namespacepenify__hook_1_1file__analyzer.html new file mode 100644 index 0000000..85c4ef6 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1file__analyzer.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.file_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.file_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  FileAnalyzerGenHook
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Variable Documentation

    + +

    ◆ logger

    + +
    +
    + + + + +
    penify_hook.file_analyzer.logger = logging.getLogger(__name__)
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1file__analyzer.js b/docs/html/namespacepenify__hook_1_1file__analyzer.js new file mode 100644 index 0000000..2fd7c22 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1file__analyzer.js @@ -0,0 +1,5 @@ +var namespacepenify__hook_1_1file__analyzer = +[ + [ "FileAnalyzerGenHook", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html", "classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook" ], + [ "logger", "namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1folder__analyzer.html b/docs/html/namespacepenify__hook_1_1folder__analyzer.html new file mode 100644 index 0000000..2d5a481 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1folder__analyzer.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.folder_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.folder_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  FolderAnalyzerGenHook
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1folder__analyzer.js b/docs/html/namespacepenify__hook_1_1folder__analyzer.js new file mode 100644 index 0000000..01d86ca --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1folder__analyzer.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1folder__analyzer = +[ + [ "FolderAnalyzerGenHook", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html", "classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1git__analyzer.html b/docs/html/namespacepenify__hook_1_1git__analyzer.html new file mode 100644 index 0000000..798eedb --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1git__analyzer.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.git_analyzer Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.git_analyzer Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  GitDocGenHook
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Variable Documentation

    + +

    ◆ logger

    + +
    +
    + + + + +
    penify_hook.git_analyzer.logger = logging.getLogger(__name__)
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1git__analyzer.js b/docs/html/namespacepenify__hook_1_1git__analyzer.js new file mode 100644 index 0000000..d89c507 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1git__analyzer.js @@ -0,0 +1,5 @@ +var namespacepenify__hook_1_1git__analyzer = +[ + [ "GitDocGenHook", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html", "classpenify__hook_1_1git__analyzer_1_1GitDocGenHook" ], + [ "logger", "namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1jira__client.html b/docs/html/namespacepenify__hook_1_1jira__client.html new file mode 100644 index 0000000..7f83b57 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1jira__client.html @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.jira_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.jira_client Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  JiraClient
     
    + + + +

    +Variables

    bool JIRA_AVAILABLE = True
     
    +

    Variable Documentation

    + +

    ◆ JIRA_AVAILABLE

    + +
    +
    + + + + +
    bool penify_hook.jira_client.JIRA_AVAILABLE = True
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1jira__client.js b/docs/html/namespacepenify__hook_1_1jira__client.js new file mode 100644 index 0000000..824018c --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1jira__client.js @@ -0,0 +1,5 @@ +var namespacepenify__hook_1_1jira__client = +[ + [ "JiraClient", "classpenify__hook_1_1jira__client_1_1JiraClient.html", "classpenify__hook_1_1jira__client_1_1JiraClient" ], + [ "JIRA_AVAILABLE", "namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1llm__client.html b/docs/html/namespacepenify__hook_1_1llm__client.html new file mode 100644 index 0000000..6bee151 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1llm__client.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.llm_client Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.llm_client Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  LLMClient
     
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1llm__client.js b/docs/html/namespacepenify__hook_1_1llm__client.js new file mode 100644 index 0000000..9f99a1e --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1llm__client.js @@ -0,0 +1,4 @@ +var namespacepenify__hook_1_1llm__client = +[ + [ "LLMClient", "classpenify__hook_1_1llm__client_1_1LLMClient.html", "classpenify__hook_1_1llm__client_1_1LLMClient" ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1login__command.html b/docs/html/namespacepenify__hook_1_1login__command.html new file mode 100644 index 0000000..0e48585 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1login__command.html @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + +penify-cli: penify_hook.login_command Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    penify_hook.login_command Namespace Reference
    +
    +
    + + + + + + +

    +Functions

    def setup_login_parser (parser)
     
    def handle_login (args)
     
    +

    Function Documentation

    + +

    ◆ handle_login()

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

    ◆ setup_login_parser()

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

    +Functions

    def main ()
     
    +

    Function Documentation

    + +

    ◆ main()

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

    +Functions

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

    +Variables

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

    Detailed Description

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

    Function Documentation

    + +

    ◆ create_progress_bar()

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

    ◆ create_stage_progress_bar()

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

    ◆ format_error()

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

    ◆ format_file_path()

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

    ◆ format_highlight()

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

    ◆ format_info()

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

    ◆ format_success()

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

    ◆ format_warning()

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

    ◆ print_error()

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

    ◆ print_info()

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

    ◆ print_processing()

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

    ◆ print_status()

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

    ◆ print_success()

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

    ◆ print_warning()

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

    ◆ update_stage()

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

    Variable Documentation

    + +

    ◆ autoreset

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

    ◆ ERROR_COLOR

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

    ◆ ERROR_SYMBOL

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

    ◆ HIGHLIGHT_COLOR

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

    ◆ INFO_COLOR

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

    ◆ NEUTRAL_COLOR

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

    ◆ PROCESSING_SYMBOL

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

    ◆ SUCCESS_COLOR

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

    ◆ SUCCESS_SYMBOL

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

    ◆ WARNING_COLOR

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

    ◆ WARNING_SYMBOL

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

    +Classes

    class  GitRepoNotFoundError
     
    + + + + + + + +

    +Functions

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

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Function Documentation

    + +

    ◆ find_git_parent()

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

    ◆ get_repo_details()

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

    ◆ recursive_search_git_folder()

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

    Variable Documentation

    + +

    ◆ logger

    + +
    +
    + + + + +
    penify_hook.utils.logger = logging.getLogger(__name__)
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils.js b/docs/html/namespacepenify__hook_1_1utils.js new file mode 100644 index 0000000..af7a599 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils.js @@ -0,0 +1,8 @@ +var namespacepenify__hook_1_1utils = +[ + [ "GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ], + [ "find_git_parent", "namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2", null ], + [ "get_repo_details", "namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3", null ], + [ "recursive_search_git_folder", "namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f", null ], + [ "logger", "namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01", null ] +]; \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map new file mode 100644 index 0000000..054f06d --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 new file mode 100644 index 0000000..1431c94 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.md5 @@ -0,0 +1 @@ +dd726258fb2e799d709d2647521b3371 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg new file mode 100644 index 0000000..058cc5f --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_cgraph.svg @@ -0,0 +1,29 @@ + + + + + + +penify_hook.utils.recursive_search_git_folder + + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map new file mode 100644 index 0000000..24785f5 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.map @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 new file mode 100644 index 0000000..768ce43 --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.md5 @@ -0,0 +1 @@ +7f750ca69d16550b240f7065f5db45d2 \ No newline at end of file diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg new file mode 100644 index 0000000..4b06faf --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph.svg @@ -0,0 +1,815 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +penify_hook.utils.recursive_search_git_folder + + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node10 + + + + + +Node22 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node22 + + + + + +Node32 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node32 + + + + + +Node35 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node35 + + + + + +Node37 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node37 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node10->Node11 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node10->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node10->Node21 + + + + + +Node11->Node3 + + + + + +Node12 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node11->Node12 + + + + + +Node17 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node11->Node17 + + + + + +Node18 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node11->Node18 + + + + + +Node19 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node11->Node19 + + + + + +Node12->Node4 + + + + + +Node13 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node12->Node13 + + + + + +Node14 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node12->Node14 + + + + + +Node15 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node12->Node15 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node12->Node16 + + + + + +Node22->Node11 + + + + + +Node22->Node22 + + + + + +Node23 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node22->Node23 + + + + + +Node28 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node22->Node28 + + + + + +Node23->Node3 + + + + + +Node24 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node23->Node24 + + + + + +Node27 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node23->Node27 + + + + + +Node25 + + +penify_hook.config +_command.handle_config + + + + + +Node24->Node25 + + + + + +Node26 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node24->Node26 + + + + + +Node25->Node4 + + + + + +Node28->Node3 + + + + + +Node29 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node28->Node29 + + + + + +Node30 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node28->Node30 + + + + + +Node31 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node28->Node31 + + + + + +Node33 + + +penify_hook.commands.auth +_commands.login + + + + + +Node32->Node33 + + + + + +Node34 + + +penify_hook.login_command.handle +_login + + + + + +Node33->Node34 + + + + + +Node34->Node4 + + + + + +Node35->Node24 + + + + + +Node35->Node25 + + + + + +Node36 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node35->Node36 + + + + + +Node37->Node25 + + + + + +Node38 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node37->Node38 + + + + + +Node39 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node37->Node39 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg new file mode 100644 index 0000000..8094fbd --- /dev/null +++ b/docs/html/namespacepenify__hook_1_1utils_a95c3f9c80860d6a2e2d061d2fb660a3f_icgraph_org.svg @@ -0,0 +1,727 @@ + + + + + + +penify_hook.utils.recursive_search_git_folder + + + +Node1 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node1->Node1 + + + + + +Node2 + + +penify_hook.commands.commit +_commands.commit_code + + + + + +Node1->Node2 + + + + + +Node10 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node1->Node10 + + + + + +Node22 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node1->Node22 + + + + + +Node32 + + +penify_hook.commands.auth +_commands.save_credentials + + + + + +Node1->Node32 + + + + + +Node35 + + +penify_hook.commands.config +_commands.save_jira_config + + + + + +Node1->Node35 + + + + + +Node37 + + +penify_hook.commands.config +_commands.save_llm_config + + + + + +Node1->Node37 + + + + + +Node3 + + +penify_hook.commands.commit +_commands.handle_commit + + + + + +Node2->Node3 + + + + + +Node6 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_error_handling + + + + + +Node2->Node6 + + + + + +Node7 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_client + + + + + +Node2->Node7 + + + + + +Node8 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_jira_connection +_failure + + + + + +Node2->Node8 + + + + + +Node9 + + +tests.test_commit_commands. +TestCommitCommands.test +_commit_code_with_llm_client + + + + + +Node2->Node9 + + + + + +Node4 + + +penify_hook.main.main + + + + + +Node3->Node4 + + + + + +Node5 + + +tests.test_commit_commands. +TestCommitCommands.test +_handle_commit + + + + + +Node3->Node5 + + + + + +Node4->Node4 + + + + + +Node11 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node10->Node11 + + + + + +Node20 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_existing_dir + + + + + +Node10->Node20 + + + + + +Node21 + + +tests.test_config_commands. +TestConfigCommands.test +_get_penify_config_new_dir + + + + + +Node10->Node21 + + + + + +Node11->Node3 + + + + + +Node12 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node11->Node12 + + + + + +Node17 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_config + + + + + +Node11->Node17 + + + + + +Node18 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_from_env + + + + + +Node11->Node18 + + + + + +Node19 + + +tests.test_config_commands. +TestConfigCommands.test +_get_token_not_found + + + + + +Node11->Node19 + + + + + +Node12->Node4 + + + + + +Node13 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node12->Node13 + + + + + +Node14 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node12->Node14 + + + + + +Node15 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node12->Node15 + + + + + +Node16 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node12->Node16 + + + + + +Node22->Node11 + + + + + +Node22->Node22 + + + + + +Node23 + + +penify_hook.commands.config +_commands.get_jira_config + + + + + +Node22->Node23 + + + + + +Node28 + + +penify_hook.commands.config +_commands.get_llm_config + + + + + +Node22->Node28 + + + + + +Node23->Node3 + + + + + +Node24 + + +penify_hook.commands.config +_commands.config_jira_web + + + + + +Node23->Node24 + + + + + +Node27 + + +tests.test_config_commands. +TestConfigCommands.test +_get_jira_config_exists + + + + + +Node23->Node27 + + + + + +Node25 + + +penify_hook.config +_command.handle_config + + + + + +Node24->Node25 + + + + + +Node26 + + +tests.test_web_config.Test +WebConfig.test_config_jira +_web_server_setup + + + + + +Node24->Node26 + + + + + +Node25->Node4 + + + + + +Node28->Node3 + + + + + +Node29 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_empty + + + + + +Node28->Node29 + + + + + +Node30 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_exists + + + + + +Node28->Node30 + + + + + +Node31 + + +tests.test_config_commands. +TestConfigCommands.test +_get_llm_config_invalid_json + + + + + +Node28->Node31 + + + + + +Node33 + + +penify_hook.commands.auth +_commands.login + + + + + +Node32->Node33 + + + + + +Node34 + + +penify_hook.login_command.handle +_login + + + + + +Node33->Node34 + + + + + +Node34->Node4 + + + + + +Node35->Node24 + + + + + +Node35->Node25 + + + + + +Node36 + + +tests.test_config_commands. +TestConfigCommands.test +_save_jira_config_success + + + + + +Node35->Node36 + + + + + +Node37->Node25 + + + + + +Node38 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_failure + + + + + +Node37->Node38 + + + + + +Node39 + + +tests.test_config_commands. +TestConfigCommands.test +_save_llm_config_success + + + + + +Node37->Node39 + + + + + diff --git a/docs/html/namespaces.html b/docs/html/namespaces.html new file mode 100644 index 0000000..0f64a9f --- /dev/null +++ b/docs/html/namespaces.html @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Namespace List + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Namespace List
    +
    + +
    + + + + + diff --git a/docs/html/namespaces_dup.js b/docs/html/namespaces_dup.js new file mode 100644 index 0000000..7fcb39b --- /dev/null +++ b/docs/html/namespaces_dup.js @@ -0,0 +1,20 @@ +var namespaces_dup = +[ + [ "penify_hook", "namespacepenify__hook.html", "namespacepenify__hook" ], + [ "setup", "namespacesetup.html", [ + [ "author", "namespacesetup.html#a3a57a4772d418a06835249cbade0d86a", null ], + [ "author_email", "namespacesetup.html#a5b08034343aa2be607722a8b315f3625", null ], + [ "classifiers", "namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785", null ], + [ "description", "namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0", null ], + [ "entry_points", "namespacesetup.html#ada7058afc98897f073d3f3b8b9157059", null ], + [ "install_requires", "namespacesetup.html#abead4f26b530856f858f0d44c7cf2588", null ], + [ "long_description", "namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde", null ], + [ "long_description_content_type", "namespacesetup.html#a3796ea10c998699d07d391414ff5d720", null ], + [ "name", "namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f", null ], + [ "packages", "namespacesetup.html#aff2375a361fd5865c77bd9aa093be747", null ], + [ "python_requires", "namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf", null ], + [ "url", "namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb", null ], + [ "version", "namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c", null ] + ] ], + [ "tests", "namespacetests.html", "namespacetests" ] +]; \ No newline at end of file diff --git a/docs/html/namespacesetup.html b/docs/html/namespacesetup.html new file mode 100644 index 0000000..a18468d --- /dev/null +++ b/docs/html/namespacesetup.html @@ -0,0 +1,346 @@ + + + + + + + + + + + + + + + + + + +penify-cli: setup Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    setup Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

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

    Variable Documentation

    + +

    ◆ author

    + +
    +
    + + + + +
    setup.author
    +
    + +
    +
    + +

    ◆ author_email

    + +
    +
    + + + + +
    setup.author_email
    +
    + +
    +
    + +

    ◆ classifiers

    + +
    +
    + + + + +
    setup.classifiers
    +
    + +
    +
    + +

    ◆ description

    + +
    +
    + + + + +
    setup.description
    +
    + +
    +
    + +

    ◆ entry_points

    + +
    +
    + + + + +
    setup.entry_points
    +
    + +
    +
    + +

    ◆ install_requires

    + +
    +
    + + + + +
    setup.install_requires
    +
    + +
    +
    + +

    ◆ long_description

    + +
    +
    + + + + +
    setup.long_description
    +
    + +
    +
    + +

    ◆ long_description_content_type

    + +
    +
    + + + + +
    setup.long_description_content_type
    +
    + +
    +
    + +

    ◆ name

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

    ◆ packages

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

    ◆ python_requires

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

    ◆ url

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

    ◆ version

    + +
    +
    + + + + +
    setup.version
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacetests.html b/docs/html/namespacetests.html new file mode 100644 index 0000000..fbb7c3f --- /dev/null +++ b/docs/html/namespacetests.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests Namespace Reference
    +
    +
    + + + + + + + + + + + + +

    +Namespaces

    namespace  conftest
     
    namespace  test_commit_commands
     
    namespace  test_config_commands
     
    namespace  test_doc_commands
     
    namespace  test_web_config
     
    +
    +
    + + + + + diff --git a/docs/html/namespacetests.js b/docs/html/namespacetests.js new file mode 100644 index 0000000..cc880ce --- /dev/null +++ b/docs/html/namespacetests.js @@ -0,0 +1,20 @@ +var namespacetests = +[ + [ "conftest", "namespacetests_1_1conftest.html", null ], + [ "test_commit_commands", "namespacetests_1_1test__commit__commands.html", "namespacetests_1_1test__commit__commands" ], + [ "test_config_commands", "namespacetests_1_1test__config__commands.html", "namespacetests_1_1test__config__commands" ], + [ "test_doc_commands", "namespacetests_1_1test__doc__commands.html", [ + [ "test_generate_doc_error_handling", "namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0", null ], + [ "test_generate_doc_file_location", "namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45", null ], + [ "test_generate_doc_folder_location", "namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186", null ], + [ "test_generate_doc_no_location", "namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8", null ], + [ "test_generate_doc_with_file_exception", "namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0", null ], + [ "test_generate_doc_with_folder_exception", "namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3", null ], + [ "test_handle_docgen_generate", "namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a", null ], + [ "test_handle_docgen_install_hook", "namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05", null ], + [ "test_handle_docgen_no_token", "namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c", null ], + [ "test_handle_docgen_uninstall_hook", "namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482", null ], + [ "test_setup_docgen_parser", "namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7", null ] + ] ], + [ "test_web_config", "namespacetests_1_1test__web__config.html", "namespacetests_1_1test__web__config" ] +]; \ No newline at end of file diff --git a/docs/html/namespacetests_1_1conftest.html b/docs/html/namespacetests_1_1conftest.html new file mode 100644 index 0000000..b2e33cf --- /dev/null +++ b/docs/html/namespacetests_1_1conftest.html @@ -0,0 +1,131 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.conftest Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    tests.conftest Namespace Reference
    +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__commit__commands.html b/docs/html/namespacetests_1_1test__commit__commands.html new file mode 100644 index 0000000..6897f38 --- /dev/null +++ b/docs/html/namespacetests_1_1test__commit__commands.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_commit_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_commit_commands Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  TestCommitCommands
     
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__commit__commands.js b/docs/html/namespacetests_1_1test__commit__commands.js new file mode 100644 index 0000000..03fd373 --- /dev/null +++ b/docs/html/namespacetests_1_1test__commit__commands.js @@ -0,0 +1,4 @@ +var namespacetests_1_1test__commit__commands = +[ + [ "TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", "classtests_1_1test__commit__commands_1_1TestCommitCommands" ] +]; \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__config__commands.html b/docs/html/namespacetests_1_1test__config__commands.html new file mode 100644 index 0000000..284fb8e --- /dev/null +++ b/docs/html/namespacetests_1_1test__config__commands.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_config_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_config_commands Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  TestConfigCommands
     
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__config__commands.js b/docs/html/namespacetests_1_1test__config__commands.js new file mode 100644 index 0000000..ae998ee --- /dev/null +++ b/docs/html/namespacetests_1_1test__config__commands.js @@ -0,0 +1,4 @@ +var namespacetests_1_1test__config__commands = +[ + [ "TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", "classtests_1_1test__config__commands_1_1TestConfigCommands" ] +]; \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands.html b/docs/html/namespacetests_1_1test__doc__commands.html new file mode 100644 index 0000000..88d4ea4 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands.html @@ -0,0 +1,747 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_doc_commands Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_doc_commands Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

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

    Function Documentation

    + +

    ◆ test_generate_doc_error_handling()

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

    ◆ test_generate_doc_file_location()

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

    ◆ test_generate_doc_folder_location()

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

    ◆ test_generate_doc_no_location()

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

    ◆ test_generate_doc_with_file_exception()

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

    ◆ test_generate_doc_with_folder_exception()

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

    ◆ test_handle_docgen_generate()

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

    ◆ test_handle_docgen_install_hook()

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

    ◆ test_handle_docgen_no_token()

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

    ◆ test_handle_docgen_uninstall_hook()

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

    ◆ test_setup_docgen_parser()

    + +
    +
    + + + + + + + +
    def tests.test_doc_commands.test_setup_docgen_parser ()
    +
    +
    Test the setup_docgen_parser function to ensure it properly configures
    +the ArgumentParser for docgen options.
    +
    +It verifies that the parser correctly sets up docgen options and handles
    +different subcommands like 'install-hook' and 'uninstall-hook'.
    +
    +Here is the call graph for this function:
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map new file mode 100644 index 0000000..f0f54c3 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 new file mode 100644 index 0000000..b280dc5 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.md5 @@ -0,0 +1 @@ +28c17f21f2a2a250d23b14c68e3e5d3a \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg new file mode 100644 index 0000000..c482b86 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0e74c920f258f442914771164fe26b45_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_file_location + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_file_location + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map new file mode 100644 index 0000000..a8ff77b --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 new file mode 100644 index 0000000..53e2e0a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.md5 @@ -0,0 +1 @@ +192fbe5412db3710d1849692c54ac106 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg new file mode 100644 index 0000000..6ca2ff2 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a0f27751d0ba2acfe40ef7e85bccf47d7_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_setup_docgen_parser + + + +Node1 + + +tests.test_doc_commands.test +_setup_docgen_parser + + + + + +Node2 + + +penify_hook.commands.doc +_commands.setup_docgen_parser + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map new file mode 100644 index 0000000..b5bbb57 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 new file mode 100644 index 0000000..300f399 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.md5 @@ -0,0 +1 @@ +aef759552fc6cc4d80899b0b13739a5e \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg new file mode 100644 index 0000000..94a320e --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_uninstall_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg new file mode 100644 index 0000000..fd67a25 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a1458af9ad0128c3ca1263b552fd5e482_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_uninstall_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_uninstall_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map new file mode 100644 index 0000000..f220740 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 new file mode 100644 index 0000000..ef64a42 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.md5 @@ -0,0 +1 @@ +10d76966ac7089e8706fb1aec3e4f9d6 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg new file mode 100644 index 0000000..b369e3b --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a335e7fd4912192c7276cf31bbebc6eb0_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_with_file_exception + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_with_file_exception + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map new file mode 100644 index 0000000..1cee3ef --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 new file mode 100644 index 0000000..076630a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.md5 @@ -0,0 +1 @@ +064f1a8c9470887507dea5cf5dd184eb \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg new file mode 100644 index 0000000..d9f33f9 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a4bb75610e40d94d42bc169b25403c186_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_folder_location + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_folder_location + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map new file mode 100644 index 0000000..6505473 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 new file mode 100644 index 0000000..314f15d --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.md5 @@ -0,0 +1 @@ +e42b926dad2f0ff5205af415d972f1da \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg new file mode 100644 index 0000000..f231670 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a64165ddfdb3071a88422f080f0e529a3_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_with_folder_exception + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_with_folder +_exception + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map new file mode 100644 index 0000000..73c8b64 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 new file mode 100644 index 0000000..99c08a9 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.md5 @@ -0,0 +1 @@ +d4d1f9d92eb42ae249ce3409ab7627ac \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg new file mode 100644 index 0000000..0ee0fcd --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_a806110833eb0aad547156faf014b31d8_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_no_location + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_no_location + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map new file mode 100644 index 0000000..86fe3ea --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 new file mode 100644 index 0000000..28ac74a --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.md5 @@ -0,0 +1 @@ +810237d2c8640fcab5bd4448f12a9692 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg new file mode 100644 index 0000000..ae76a88 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_generate + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg new file mode 100644 index 0000000..408dbc3 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab158ffa48469b6c097a7a55fcb20c21a_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_generate + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_generate + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map new file mode 100644 index 0000000..97c848c --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 new file mode 100644 index 0000000..56e1467 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.md5 @@ -0,0 +1 @@ +dc60bba75d6f8dafbd4701e4ac271385 \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg new file mode 100644 index 0000000..927f757 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_install_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg new file mode 100644 index 0000000..0258a01 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_ab74688baa8c9b5ba302c2877a9789d05_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_install_hook + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_install_hook + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map new file mode 100644 index 0000000..1b841f4 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 new file mode 100644 index 0000000..ef9f04c --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.md5 @@ -0,0 +1 @@ +7930a342103b95a29b43ca93e1212cff \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg new file mode 100644 index 0000000..9768a7e --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_aec76cc25c23476794234cdadbcaef0c0_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +tests.test_doc_commands.test_generate_doc_error_handling + + + +Node1 + + +tests.test_doc_commands.test +_generate_doc_error_handling + + + + + +Node2 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node1->Node2 + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map new file mode 100644 index 0000000..6b196ac --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 new file mode 100644 index 0000000..8969799 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.md5 @@ -0,0 +1 @@ +4dfa85ad92a13ab307edd504ab65bb1a \ No newline at end of file diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg new file mode 100644 index 0000000..b636d21 --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph.svg @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +tests.test_doc_commands.test_handle_docgen_no_token + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg new file mode 100644 index 0000000..0cfb00d --- /dev/null +++ b/docs/html/namespacetests_1_1test__doc__commands_af9b01e5fc89255cac96747fa081c442c_cgraph_org.svg @@ -0,0 +1,186 @@ + + + + + + +tests.test_doc_commands.test_handle_docgen_no_token + + + +Node1 + + +tests.test_doc_commands.test +_handle_docgen_no_token + + + + + +Node2 + + +penify_hook.commands.doc +_commands.handle_docgen + + + + + +Node1->Node2 + + + + + +Node3 + + +penify_hook.commands.doc +_commands.generate_doc + + + + + +Node2->Node3 + + + + + +Node4 + + +penify_hook.commands.config +_commands.get_token + + + + + +Node2->Node4 + + + + + +Node9 + + +penify_hook.commands.hook +_commands.install_git_hook + + + + + +Node2->Node9 + + + + + +Node10 + + +penify_hook.commands.hook +_commands.uninstall_git_hook + + + + + +Node2->Node10 + + + + + +Node5 + + +penify_hook.commands.config +_commands.get_env_var_or +_default + + + + + +Node4->Node5 + + + + + +Node6 + + +penify_hook.commands.config +_commands.get_penify_config + + + + + +Node4->Node6 + + + + + +Node8 + + +penify_hook.commands.config +_commands.load_env_files + + + + + +Node4->Node8 + + + + + +Node7 + + +penify_hook.utils.recursive +_search_git_folder + + + + + +Node6->Node7 + + + + + +Node7->Node7 + + + + + +Node8->Node7 + + + + + +Node8->Node8 + + + + + diff --git a/docs/html/namespacetests_1_1test__web__config.html b/docs/html/namespacetests_1_1test__web__config.html new file mode 100644 index 0000000..3d070ed --- /dev/null +++ b/docs/html/namespacetests_1_1test__web__config.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: tests.test_web_config Namespace Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    tests.test_web_config Namespace Reference
    +
    +
    + + + + +

    +Classes

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

    +Namespaces

    namespace  penify_hook
     
    namespace  penify_hook.commands
     
    +
    +
    + + + + + diff --git a/docs/html/resize.js b/docs/html/resize.js new file mode 100644 index 0000000..7fe30d1 --- /dev/null +++ b/docs/html/resize.js @@ -0,0 +1,150 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; SameSite=Lax; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height(); + var contentHeight,navtreeHeight,sideNavHeight; + if (typeof page_layout==='undefined' || page_layout==0) { /* DISABLE_INDEX=NO */ + contentHeight = windowHeight - headerHeight - footerHeight; + navtreeHeight = contentHeight; + sideNavHeight = contentHeight; + } else if (page_layout==1) { /* DISABLE_INDEX=YES */ + contentHeight = windowHeight - footerHeight; + navtreeHeight = windowHeight - headerHeight; + sideNavHeight = windowHeight; + } + content.css({height:contentHeight + "px"}); + navtree.css({height:navtreeHeight + "px"}); + sidenav.css({height:sideNavHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/docs/html/search/all_0.html b/docs/html/search/all_0.html new file mode 100644 index 0000000..bb9e364 --- /dev/null +++ b/docs/html/search/all_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_0.js b/docs/html/search/all_0.js new file mode 100644 index 0000000..66bb827 --- /dev/null +++ b/docs/html/search/all_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_0',['__init__',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086',1,'penify_hook.api_client.APIClient.__init__()'],['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344',1,'penify_hook.base_analyzer.BaseAnalyzer.__init__()'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e',1,'penify_hook.commit_analyzer.CommitDocGenHook.__init__()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c',1,'penify_hook.git_analyzer.GitDocGenHook.__init__()'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5',1,'penify_hook.jira_client.JiraClient.__init__()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764',1,'penify_hook.llm_client.LLMClient.__init__()']]], + ['_5f_5finit_5f_5f_2epy_1',['__init__.py',['../penify__hook_2____init_____8py.html',1,'(Global Namespace)'],['../penify__hook_2commands_2____init_____8py.html',1,'(Global Namespace)'],['../tests_2____init_____8py.html',1,'(Global Namespace)']]], + ['_5famend_5fcommit_2',['_amend_commit',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['_5flitellm_3',['_litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/all_1.html b/docs/html/search/all_1.html new file mode 100644 index 0000000..8989416 --- /dev/null +++ b/docs/html/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_1.js b/docs/html/search/all_1.js new file mode 100644 index 0000000..b6a2dbe --- /dev/null +++ b/docs/html/search/all_1.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['add_5fcomment_0',['add_comment',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1',1,'penify_hook::jira_client::JiraClient']]], + ['api_5fclient_1',['api_client',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['api_5fclient_2epy_2',['api_client.py',['../api__client_8py.html',1,'']]], + ['api_5furl_3',['api_url',['../classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872',1,'penify_hook::api_client::APIClient']]], + ['api_5furl_4',['API_URL',['../namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0',1,'penify_hook::constants']]], + ['apiclient_5',['APIClient',['../classpenify__hook_1_1api__client_1_1APIClient.html',1,'penify_hook::api_client']]], + ['auth_5fcommands_2epy_6',['auth_commands.py',['../auth__commands_8py.html',1,'']]], + ['auth_5ftoken_7',['AUTH_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237',1,'penify_hook::api_client::APIClient']]], + ['author_8',['author',['../namespacesetup.html#a3a57a4772d418a06835249cbade0d86a',1,'setup']]], + ['author_5femail_9',['author_email',['../namespacesetup.html#a5b08034343aa2be607722a8b315f3625',1,'setup']]], + ['autoreset_10',['autoreset',['../namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_10.html b/docs/html/search/all_10.html new file mode 100644 index 0000000..a7c1f9c --- /dev/null +++ b/docs/html/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_10.js b/docs/html/search/all_10.js new file mode 100644 index 0000000..7fb377d --- /dev/null +++ b/docs/html/search/all_10.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['save_5fcredentials_0',['save_credentials',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24',1,'penify_hook::commands::auth_commands']]], + ['save_5fjira_5fconfig_1',['save_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4',1,'penify_hook::commands::config_commands']]], + ['save_5fllm_5fconfig_2',['save_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4',1,'penify_hook::commands::config_commands']]], + ['send_5ffile_5ffor_5fdocstring_5fgeneration_3',['send_file_for_docstring_generation',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3',1,'penify_hook::api_client::APIClient']]], + ['setup_4',['setup',['../namespacesetup.html',1,'']]], + ['setup_2epy_5',['setup.py',['../setup_8py.html',1,'']]], + ['setup_5fcommit_5fparser_6',['setup_commit_parser',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c',1,'penify_hook::commands::commit_commands']]], + ['setup_5fconfig_5fparser_7',['setup_config_parser',['../namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e',1,'penify_hook::config_command']]], + ['setup_5fdocgen_5fparser_8',['setup_docgen_parser',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0',1,'penify_hook::commands::doc_commands']]], + ['setup_5flogin_5fparser_9',['setup_login_parser',['../namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a',1,'penify_hook::login_command']]], + ['success_5fcolor_10',['SUCCESS_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4',1,'penify_hook::ui_utils']]], + ['success_5fsymbol_11',['SUCCESS_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e',1,'penify_hook::ui_utils']]], + ['supported_5ffile_5ftypes_12',['supported_file_types',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/search/all_11.html b/docs/html/search/all_11.html new file mode 100644 index 0000000..8f86146 --- /dev/null +++ b/docs/html/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_11.js b/docs/html/search/all_11.js new file mode 100644 index 0000000..45646f7 --- /dev/null +++ b/docs/html/search/all_11.js @@ -0,0 +1,47 @@ +var searchData= +[ + ['conftest_0',['conftest',['../namespacetests_1_1conftest.html',1,'tests']]], + ['test_5fcommit_5fcode_5ferror_5fhandling_1',['test_commit_code_error_handling',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fclient_2',['test_commit_code_with_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fconnection_5ffailure_3',['test_commit_code_with_jira_connection_failure',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fllm_5fclient_4',['test_commit_code_with_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcommands_5',['test_commit_commands',['../namespacetests_1_1test__commit__commands.html',1,'tests']]], + ['test_5fcommit_5fcommands_2epy_6',['test_commit_commands.py',['../test__commit__commands_8py.html',1,'']]], + ['test_5fconfig_5fcommands_7',['test_config_commands',['../namespacetests_1_1test__config__commands.html',1,'tests']]], + ['test_5fconfig_5fcommands_2epy_8',['test_config_commands.py',['../test__config__commands_8py.html',1,'']]], + ['test_5fconfig_5fjira_5fweb_5fserver_5fsetup_9',['test_config_jira_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fconfig_5fllm_5fweb_5fserver_5fsetup_10',['test_config_llm_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fdoc_5fcommands_11',['test_doc_commands',['../namespacetests_1_1test__doc__commands.html',1,'tests']]], + ['test_5fdoc_5fcommands_2epy_12',['test_doc_commands.py',['../test__doc__commands_8py.html',1,'']]], + ['test_5fgenerate_5fdoc_5ferror_5fhandling_13',['test_generate_doc_error_handling',['../namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffile_5flocation_14',['test_generate_doc_file_location',['../namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffolder_5flocation_15',['test_generate_doc_folder_location',['../namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fno_5flocation_16',['test_generate_doc_no_location',['../namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffile_5fexception_17',['test_generate_doc_with_file_exception',['../namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffolder_5fexception_18',['test_generate_doc_with_folder_exception',['../namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3',1,'tests::test_doc_commands']]], + ['test_5fget_5fjira_5fconfig_5fexists_19',['test_get_jira_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fempty_20',['test_get_llm_config_empty',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fexists_21',['test_get_llm_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5finvalid_5fjson_22',['test_get_llm_config_invalid_json',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fexisting_5fdir_23',['test_get_penify_config_existing_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fnew_5fdir_24',['test_get_penify_config_new_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fconfig_25',['test_get_token_from_config',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fenv_26',['test_get_token_from_env',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5fnot_5ffound_27',['test_get_token_not_found',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fhandle_5fcommit_28',['test_handle_commit',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fhandle_5fdocgen_5fgenerate_29',['test_handle_docgen_generate',['../namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5finstall_5fhook_30',['test_handle_docgen_install_hook',['../namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5fno_5ftoken_31',['test_handle_docgen_no_token',['../namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5funinstall_5fhook_32',['test_handle_docgen_uninstall_hook',['../namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482',1,'tests::test_doc_commands']]], + ['test_5fsave_5fjira_5fconfig_5fsuccess_33',['test_save_jira_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5ffailure_34',['test_save_llm_config_failure',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5fsuccess_35',['test_save_llm_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsetup_5fcommit_5fparser_36',['test_setup_commit_parser',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fsetup_5fdocgen_5fparser_37',['test_setup_docgen_parser',['../namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7',1,'tests::test_doc_commands']]], + ['test_5fweb_5fconfig_38',['test_web_config',['../namespacetests_1_1test__web__config.html',1,'tests']]], + ['test_5fweb_5fconfig_2epy_39',['test_web_config.py',['../test__web__config_8py.html',1,'']]], + ['testcommitcommands_40',['TestCommitCommands',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html',1,'tests::test_commit_commands']]], + ['testconfigcommands_41',['TestConfigCommands',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html',1,'tests::test_config_commands']]], + ['tests_42',['tests',['../namespacetests.html',1,'']]], + ['testwebconfig_43',['TestWebConfig',['../classtests_1_1test__web__config_1_1TestWebConfig.html',1,'tests::test_web_config']]] +]; diff --git a/docs/html/search/all_12.html b/docs/html/search/all_12.html new file mode 100644 index 0000000..90b128f --- /dev/null +++ b/docs/html/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_12.js b/docs/html/search/all_12.js new file mode 100644 index 0000000..0d33c8a --- /dev/null +++ b/docs/html/search/all_12.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['ui_5futils_2epy_0',['ui_utils.py',['../ui__utils_8py.html',1,'']]], + ['uninstall_5fgit_5fhook_1',['uninstall_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d',1,'penify_hook::commands::hook_commands']]], + ['update_5fissue_5fstatus_2',['update_issue_status',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826',1,'penify_hook::jira_client::JiraClient']]], + ['update_5fstage_3',['update_stage',['../namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d',1,'penify_hook::ui_utils']]], + ['url_4',['url',['../namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb',1,'setup']]], + ['utils_2epy_5',['utils.py',['../utils_8py.html',1,'']]] +]; diff --git a/docs/html/search/all_13.html b/docs/html/search/all_13.html new file mode 100644 index 0000000..272d129 --- /dev/null +++ b/docs/html/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_13.js b/docs/html/search/all_13.js new file mode 100644 index 0000000..d9621d9 --- /dev/null +++ b/docs/html/search/all_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version_0',['version',['../namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c',1,'setup']]] +]; diff --git a/docs/html/search/all_14.html b/docs/html/search/all_14.html new file mode 100644 index 0000000..291e0d9 --- /dev/null +++ b/docs/html/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_14.js b/docs/html/search/all_14.js new file mode 100644 index 0000000..10d696f --- /dev/null +++ b/docs/html/search/all_14.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['warning_5fcolor_0',['WARNING_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff',1,'penify_hook::ui_utils']]], + ['warning_5fsymbol_1',['WARNING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_2.html b/docs/html/search/all_2.html new file mode 100644 index 0000000..98e648c --- /dev/null +++ b/docs/html/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_2.js b/docs/html/search/all_2.js new file mode 100644 index 0000000..56f2add --- /dev/null +++ b/docs/html/search/all_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['base_5fanalyzer_2epy_0',['base_analyzer.py',['../base__analyzer_8py.html',1,'']]], + ['baseanalyzer_1',['BaseAnalyzer',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html',1,'penify_hook::base_analyzer']]], + ['bearer_5ftoken_2',['BEARER_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0',1,'penify_hook::api_client::APIClient']]] +]; diff --git a/docs/html/search/all_3.html b/docs/html/search/all_3.html new file mode 100644 index 0000000..f4e8da7 --- /dev/null +++ b/docs/html/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_3.js b/docs/html/search/all_3.js new file mode 100644 index 0000000..45ec4ff --- /dev/null +++ b/docs/html/search/all_3.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['classifiers_0',['classifiers',['../namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785',1,'setup']]], + ['commit_2dcommands_2emd_1',['commit-commands.md',['../commit-commands_8md.html',1,'']]], + ['commit_5fanalyzer_2epy_2',['commit_analyzer.py',['../commit__analyzer_8py.html',1,'']]], + ['commit_5fcode_3',['commit_code',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a',1,'penify_hook::commands::commit_commands']]], + ['commit_5fcommands_2epy_4',['commit_commands.py',['../commit__commands_8py.html',1,'']]], + ['commitdocgenhook_5',['CommitDocGenHook',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook::commit_analyzer']]], + ['config_2dcommands_2emd_6',['config-commands.md',['../config-commands_8md.html',1,'']]], + ['config_5fcommand_2epy_7',['config_command.py',['../config__command_8py.html',1,'']]], + ['config_5fcommands_2epy_8',['config_commands.py',['../config__commands_8py.html',1,'']]], + ['config_5fjira_5fweb_9',['config_jira_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06',1,'penify_hook::commands::config_commands']]], + ['config_5fllm_5fweb_10',['config_llm_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c',1,'penify_hook::commands::config_commands']]], + ['conftest_2epy_11',['conftest.py',['../conftest_8py.html',1,'']]], + ['constants_2epy_12',['constants.py',['../constants_8py.html',1,'']]], + ['create_5fprogress_5fbar_13',['create_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c',1,'penify_hook::ui_utils']]], + ['create_5fstage_5fprogress_5fbar_14',['create_stage_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_4.html b/docs/html/search/all_4.html new file mode 100644 index 0000000..678d3a2 --- /dev/null +++ b/docs/html/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_4.js b/docs/html/search/all_4.js new file mode 100644 index 0000000..ccfe815 --- /dev/null +++ b/docs/html/search/all_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['dashboard_5furl_0',['DASHBOARD_URL',['../namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0',1,'penify_hook::constants']]], + ['description_1',['description',['../namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0',1,'setup']]], + ['detailed_2dusage_2emd_2',['detailed-usage.md',['../detailed-usage_8md.html',1,'']]], + ['dir_5fpath_3',['dir_path',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['doc_5fcommands_2emd_4',['doc_commands.md',['../doc__commands_8md.html',1,'']]], + ['doc_5fcommands_2epy_5',['doc_commands.py',['../doc__commands_8py.html',1,'']]], + ['docgen_5fdescription_6',['docgen_description',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948',1,'penify_hook::commands::doc_commands']]], + ['dotenv_5favailable_7',['DOTENV_AVAILABLE',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/all_5.html b/docs/html/search/all_5.html new file mode 100644 index 0000000..aa9af78 --- /dev/null +++ b/docs/html/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_5.js b/docs/html/search/all_5.js new file mode 100644 index 0000000..89b0ea5 --- /dev/null +++ b/docs/html/search/all_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['enhance_5fcommit_5fmessage_0',['enhance_commit_message',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760',1,'penify_hook::jira_client::JiraClient']]], + ['entry_5fpoints_1',['entry_points',['../namespacesetup.html#ada7058afc98897f073d3f3b8b9157059',1,'setup']]], + ['error_5fcolor_2',['ERROR_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe',1,'penify_hook::ui_utils']]], + ['error_5fsymbol_3',['ERROR_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0',1,'penify_hook::ui_utils']]], + ['example_2dworkflows_2emd_4',['example-workflows.md',['../example-workflows_8md.html',1,'']]], + ['exception_5',['Exception',['../classException.html',1,'']]], + ['extract_5fissue_5fkeys_6',['extract_issue_keys',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_5ffrom_5fbranch_7',['extract_issue_keys_from_branch',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/all_6.html b/docs/html/search/all_6.html new file mode 100644 index 0000000..d3026a7 --- /dev/null +++ b/docs/html/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_6.js b/docs/html/search/all_6.js new file mode 100644 index 0000000..9da4602 --- /dev/null +++ b/docs/html/search/all_6.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['file_5fanalyzer_2epy_0',['file_analyzer.py',['../file__analyzer_8py.html',1,'']]], + ['file_5fpath_1',['file_path',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32',1,'penify_hook::file_analyzer::FileAnalyzerGenHook']]], + ['fileanalyzergenhook_2',['FileAnalyzerGenHook',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html',1,'penify_hook::file_analyzer']]], + ['find_5fgit_5fparent_3',['find_git_parent',['../namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2',1,'penify_hook::utils']]], + ['folder_5fanalyzer_2epy_4',['folder_analyzer.py',['../folder__analyzer_8py.html',1,'']]], + ['folder_5fpath_5',['folder_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['folderanalyzergenhook_6',['FolderAnalyzerGenHook',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html',1,'penify_hook::folder_analyzer']]], + ['format_5fcommit_5fmessage_5fwith_5fjira_5finfo_7',['format_commit_message_with_jira_info',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23',1,'penify_hook::jira_client::JiraClient']]], + ['format_5ferror_8',['format_error',['../namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e',1,'penify_hook::ui_utils']]], + ['format_5ffile_5fpath_9',['format_file_path',['../namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4',1,'penify_hook::ui_utils']]], + ['format_5fhighlight_10',['format_highlight',['../namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452',1,'penify_hook::ui_utils']]], + ['format_5finfo_11',['format_info',['../namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6',1,'penify_hook::ui_utils']]], + ['format_5fsuccess_12',['format_success',['../namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776',1,'penify_hook::ui_utils']]], + ['format_5fwarning_13',['format_warning',['../namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_7.html b/docs/html/search/all_7.html new file mode 100644 index 0000000..b2ee042 --- /dev/null +++ b/docs/html/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_7.js b/docs/html/search/all_7.js new file mode 100644 index 0000000..d5e7346 --- /dev/null +++ b/docs/html/search/all_7.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['generate_5fcommit_5fsummary_0',['generate_commit_summary',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce',1,'penify_hook.api_client.APIClient.generate_commit_summary()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000',1,'penify_hook.llm_client.LLMClient.generate_commit_summary()']]], + ['generate_5fcommit_5fsummary_5fwith_5fllm_1',['generate_commit_summary_with_llm',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3',1,'penify_hook::api_client::APIClient']]], + ['generate_5fdoc_2',['generate_doc',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25',1,'penify_hook::commands::doc_commands']]], + ['get_5fapi_5fkey_3',['get_api_key',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99',1,'penify_hook::api_client::APIClient']]], + ['get_5fcommit_5fcontext_5ffrom_5fissues_4',['get_commit_context_from_issues',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fdetailed_5fissue_5fcontext_5',['get_detailed_issue_context',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fenv_5fvar_5for_5fdefault_6',['get_env_var_or_default',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87',1,'penify_hook::commands::config_commands']]], + ['get_5fissue_5fdetails_7',['get_issue_details',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fjira_5fconfig_8',['get_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2',1,'penify_hook::commands::config_commands']]], + ['get_5fllm_5fconfig_9',['get_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0',1,'penify_hook::commands::config_commands']]], + ['get_5fmodified_5ffiles_5fin_5flast_5fcommit_10',['get_modified_files_in_last_commit',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fmodified_5flines_11',['get_modified_lines',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fpenify_5fconfig_12',['get_penify_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20',1,'penify_hook::commands::config_commands']]], + ['get_5frepo_5fdetails_13',['get_repo_details',['../namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3',1,'penify_hook::utils']]], + ['get_5fsummary_14',['get_summary',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['get_5fsupported_5ffile_5ftypes_15',['get_supported_file_types',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402',1,'penify_hook::api_client::APIClient']]], + ['get_5ftoken_16',['get_token',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812',1,'penify_hook::commands::config_commands']]], + ['git_5fanalyzer_2epy_17',['git_analyzer.py',['../git__analyzer_8py.html',1,'']]], + ['gitdocgenhook_18',['GitDocGenHook',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html',1,'penify_hook::git_analyzer']]], + ['gitreponotfounderror_19',['GitRepoNotFoundError',['../classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html',1,'penify_hook::utils']]] +]; diff --git a/docs/html/search/all_8.html b/docs/html/search/all_8.html new file mode 100644 index 0000000..40a0b3f --- /dev/null +++ b/docs/html/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_8.js b/docs/html/search/all_8.js new file mode 100644 index 0000000..b83bbc6 --- /dev/null +++ b/docs/html/search/all_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['handle_5fcommit_0',['handle_commit',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23',1,'penify_hook::commands::commit_commands']]], + ['handle_5fconfig_1',['handle_config',['../namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde',1,'penify_hook::config_command']]], + ['handle_5fdocgen_2',['handle_docgen',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704',1,'penify_hook::commands::doc_commands']]], + ['handle_5flogin_3',['handle_login',['../namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd',1,'penify_hook::login_command']]], + ['highlight_5fcolor_4',['HIGHLIGHT_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc',1,'penify_hook::ui_utils']]], + ['hook_5fcommands_2epy_5',['hook_commands.py',['../hook__commands_8py.html',1,'']]], + ['hook_5ffilename_6',['HOOK_FILENAME',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1',1,'penify_hook::commands::hook_commands']]], + ['hook_5ftemplate_7',['HOOK_TEMPLATE',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7',1,'penify_hook::commands::hook_commands']]] +]; diff --git a/docs/html/search/all_9.html b/docs/html/search/all_9.html new file mode 100644 index 0000000..7c49144 --- /dev/null +++ b/docs/html/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_9.js b/docs/html/search/all_9.js new file mode 100644 index 0000000..bf0f94f --- /dev/null +++ b/docs/html/search/all_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['info_5fcolor_0',['INFO_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c',1,'penify_hook::ui_utils']]], + ['install_5fgit_5fhook_1',['install_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2',1,'penify_hook::commands::hook_commands']]], + ['install_5frequires_2',['install_requires',['../namespacesetup.html#abead4f26b530856f858f0d44c7cf2588',1,'setup']]], + ['is_5fconnected_3',['is_connected',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/all_a.html b/docs/html/search/all_a.html new file mode 100644 index 0000000..fc9d79c --- /dev/null +++ b/docs/html/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_a.js b/docs/html/search/all_a.js new file mode 100644 index 0000000..cb87635 --- /dev/null +++ b/docs/html/search/all_a.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['jira_5fapi_5ftoken_0',['jira_api_token',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5favailable_1',['JIRA_AVAILABLE',['../namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2',1,'penify_hook::jira_client']]], + ['jira_5fclient_2',['jira_client',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fclient_2epy_3',['jira_client.py',['../jira__client_8py.html',1,'']]], + ['jira_5furl_4',['jira_url',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fuser_5',['jira_user',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c',1,'penify_hook::jira_client::JiraClient']]], + ['jiraclient_6',['JiraClient',['../classpenify__hook_1_1jira__client_1_1JiraClient.html',1,'penify_hook::jira_client']]] +]; diff --git a/docs/html/search/all_b.html b/docs/html/search/all_b.html new file mode 100644 index 0000000..dafb1fa --- /dev/null +++ b/docs/html/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_b.js b/docs/html/search/all_b.js new file mode 100644 index 0000000..2024217 --- /dev/null +++ b/docs/html/search/all_b.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['list_5fall_5ffiles_5fin_5fdir_0',['list_all_files_in_dir',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['litellm_1',['litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e',1,'penify_hook::llm_client::LLMClient']]], + ['llm_5fclient_2',['llm_client',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['llm_5fclient_2epy_3',['llm_client.py',['../llm__client_8py.html',1,'']]], + ['llmclient_4',['LLMClient',['../classpenify__hook_1_1llm__client_1_1LLMClient.html',1,'penify_hook::llm_client']]], + ['load_5fenv_5ffiles_5',['load_env_files',['../namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae',1,'penify_hook::commands::config_commands']]], + ['logger_6',['logger',['../namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828',1,'penify_hook.file_analyzer.logger()'],['../namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a',1,'penify_hook.git_analyzer.logger()'],['../namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01',1,'penify_hook.utils.logger()']]], + ['login_7',['login',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655',1,'penify_hook::commands::auth_commands']]], + ['login_5fcommand_2epy_8',['login_command.py',['../login__command_8py.html',1,'']]], + ['long_5fdescription_9',['long_description',['../namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde',1,'setup']]], + ['long_5fdescription_5fcontent_5ftype_10',['long_description_content_type',['../namespacesetup.html#a3796ea10c998699d07d391414ff5d720',1,'setup']]] +]; diff --git a/docs/html/search/all_c.html b/docs/html/search/all_c.html new file mode 100644 index 0000000..9df619d --- /dev/null +++ b/docs/html/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_c.js b/docs/html/search/all_c.js new file mode 100644 index 0000000..885d3c4 --- /dev/null +++ b/docs/html/search/all_c.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['main_0',['main',['../namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f',1,'penify_hook::main']]], + ['main_2epy_1',['main.py',['../main_8py.html',1,'']]], + ['mock_5fapi_5fclient_2',['mock_api_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fcommit_5fdoc_5fgen_3',['mock_commit_doc_gen',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fgit_5ffolder_5fsearch_4',['mock_git_folder_search',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fjira_5fclient_5',['mock_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fllm_5fclient_6',['mock_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fprint_5ffunctions_7',['mock_print_functions',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be',1,'tests::test_commit_commands::TestCommitCommands']]], + ['model_8',['model',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/all_d.html b/docs/html/search/all_d.html new file mode 100644 index 0000000..95d8eec --- /dev/null +++ b/docs/html/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_d.js b/docs/html/search/all_d.js new file mode 100644 index 0000000..eb3ec51 --- /dev/null +++ b/docs/html/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['name_0',['name',['../namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f',1,'setup']]], + ['neutral_5fcolor_1',['NEUTRAL_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/all_e.html b/docs/html/search/all_e.html new file mode 100644 index 0000000..a54e120 --- /dev/null +++ b/docs/html/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_e.js b/docs/html/search/all_e.js new file mode 100644 index 0000000..c246db6 --- /dev/null +++ b/docs/html/search/all_e.js @@ -0,0 +1,43 @@ +var searchData= +[ + ['api_5fclient_0',['api_client',['../namespacepenify__hook_1_1api__client.html',1,'penify_hook']]], + ['auth_5fcommands_1',['auth_commands',['../namespacepenify__hook_1_1commands_1_1auth__commands.html',1,'penify_hook::commands']]], + ['base_5fanalyzer_2',['base_analyzer',['../namespacepenify__hook_1_1base__analyzer.html',1,'penify_hook']]], + ['commands_3',['commands',['../namespacepenify__hook_1_1commands.html',1,'penify_hook']]], + ['commit_5fanalyzer_4',['commit_analyzer',['../namespacepenify__hook_1_1commit__analyzer.html',1,'penify_hook']]], + ['commit_5fcommands_5',['commit_commands',['../namespacepenify__hook_1_1commands_1_1commit__commands.html',1,'penify_hook::commands']]], + ['config_5fcommand_6',['config_command',['../namespacepenify__hook_1_1config__command.html',1,'penify_hook']]], + ['config_5fcommands_7',['config_commands',['../namespacepenify__hook_1_1commands_1_1config__commands.html',1,'penify_hook::commands']]], + ['constants_8',['constants',['../namespacepenify__hook_1_1constants.html',1,'penify_hook']]], + ['doc_5fcommands_9',['doc_commands',['../namespacepenify__hook_1_1commands_1_1doc__commands.html',1,'penify_hook::commands']]], + ['file_5fanalyzer_10',['file_analyzer',['../namespacepenify__hook_1_1file__analyzer.html',1,'penify_hook']]], + ['folder_5fanalyzer_11',['folder_analyzer',['../namespacepenify__hook_1_1folder__analyzer.html',1,'penify_hook']]], + ['git_5fanalyzer_12',['git_analyzer',['../namespacepenify__hook_1_1git__analyzer.html',1,'penify_hook']]], + ['hook_5fcommands_13',['hook_commands',['../namespacepenify__hook_1_1commands_1_1hook__commands.html',1,'penify_hook::commands']]], + ['jira_5fclient_14',['jira_client',['../namespacepenify__hook_1_1jira__client.html',1,'penify_hook']]], + ['llm_5fclient_15',['llm_client',['../namespacepenify__hook_1_1llm__client.html',1,'penify_hook']]], + ['login_5fcommand_16',['login_command',['../namespacepenify__hook_1_1login__command.html',1,'penify_hook']]], + ['main_17',['main',['../namespacepenify__hook_1_1main.html',1,'penify_hook']]], + ['packages_18',['packages',['../namespacesetup.html#aff2375a361fd5865c77bd9aa093be747',1,'setup']]], + ['path_19',['path',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880',1,'penify_hook::commands::config_commands']]], + ['penify_20cli_20_2d_20commit_20commands_20',['Penify CLI - Commit Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html',1,'']]], + ['penify_20cli_20_2d_20configuration_20commands_21',['Penify CLI - Configuration Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html',1,'']]], + ['penify_20cli_20_2d_20detailed_20usage_20guide_22',['Penify CLI - Detailed Usage Guide',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html',1,'']]], + ['penify_20cli_20_2d_20documentation_20generation_20commands_23',['Penify CLI - Documentation Generation Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html',1,'']]], + ['penify_20cli_20example_20workflows_24',['Penify CLI Example Workflows',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html',1,'']]], + ['penify_20cli_20tool_25',['Penify CLI Tool',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html',1,'']]], + ['penify_2dcli_2ddocumentation_2emd_26',['penify-cli-documentation.md',['../penify-cli-documentation_8md.html',1,'']]], + ['penify_5fhook_27',['penify_hook',['../namespacepenify__hook.html',1,'']]], + ['print_5ferror_28',['print_error',['../namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f',1,'penify_hook::ui_utils']]], + ['print_5finfo_29',['print_info',['../namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44',1,'penify_hook::ui_utils']]], + ['print_5fprocessing_30',['print_processing',['../namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115',1,'penify_hook.ui_utils.print_processing()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing()']]], + ['print_5fstatus_31',['print_status',['../namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c',1,'penify_hook::ui_utils']]], + ['print_5fsuccess_32',['print_success',['../namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a',1,'penify_hook::ui_utils']]], + ['print_5fwarning_33',['print_warning',['../namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa',1,'penify_hook::ui_utils']]], + ['process_5ffile_34',['process_file',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85',1,'penify_hook.git_analyzer.GitDocGenHook.process_file()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.process_file()']]], + ['process_5fjira_5fintegration_35',['process_jira_integration',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['processing_5fsymbol_36',['PROCESSING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756',1,'penify_hook::ui_utils']]], + ['python_5frequires_37',['python_requires',['../namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf',1,'setup']]], + ['ui_5futils_38',['ui_utils',['../namespacepenify__hook_1_1ui__utils.html',1,'penify_hook']]], + ['utils_39',['utils',['../namespacepenify__hook_1_1utils.html',1,'penify_hook']]] +]; diff --git a/docs/html/search/all_f.html b/docs/html/search/all_f.html new file mode 100644 index 0000000..8d0aed3 --- /dev/null +++ b/docs/html/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/all_f.js b/docs/html/search/all_f.js new file mode 100644 index 0000000..11f8b78 --- /dev/null +++ b/docs/html/search/all_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]], + ['recursive_5fsearch_5fgit_5ffolder_1',['recursive_search_git_folder',['../namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f',1,'penify_hook::utils']]], + ['relative_5ffile_5fpath_2',['relative_file_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_3',['repo',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fdetails_4',['repo_details',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fpath_5',['repo_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['run_6',['run',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9',1,'penify_hook.commit_analyzer.CommitDocGenHook.run()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.run()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.run()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae',1,'penify_hook.git_analyzer.GitDocGenHook.run()']]] +]; diff --git a/docs/html/search/classes_0.html b/docs/html/search/classes_0.html new file mode 100644 index 0000000..9d4f871 --- /dev/null +++ b/docs/html/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_0.js b/docs/html/search/classes_0.js new file mode 100644 index 0000000..d470783 --- /dev/null +++ b/docs/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['apiclient_0',['APIClient',['../classpenify__hook_1_1api__client_1_1APIClient.html',1,'penify_hook::api_client']]] +]; diff --git a/docs/html/search/classes_1.html b/docs/html/search/classes_1.html new file mode 100644 index 0000000..0557f9f --- /dev/null +++ b/docs/html/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_1.js b/docs/html/search/classes_1.js new file mode 100644 index 0000000..740b36f --- /dev/null +++ b/docs/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['baseanalyzer_0',['BaseAnalyzer',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html',1,'penify_hook::base_analyzer']]] +]; diff --git a/docs/html/search/classes_2.html b/docs/html/search/classes_2.html new file mode 100644 index 0000000..fa20861 --- /dev/null +++ b/docs/html/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_2.js b/docs/html/search/classes_2.js new file mode 100644 index 0000000..8bdd859 --- /dev/null +++ b/docs/html/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['commitdocgenhook_0',['CommitDocGenHook',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html',1,'penify_hook::commit_analyzer']]] +]; diff --git a/docs/html/search/classes_3.html b/docs/html/search/classes_3.html new file mode 100644 index 0000000..98fbc87 --- /dev/null +++ b/docs/html/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_3.js b/docs/html/search/classes_3.js new file mode 100644 index 0000000..0ed9487 --- /dev/null +++ b/docs/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['exception_0',['Exception',['../classException.html',1,'']]] +]; diff --git a/docs/html/search/classes_4.html b/docs/html/search/classes_4.html new file mode 100644 index 0000000..3b6c51e --- /dev/null +++ b/docs/html/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_4.js b/docs/html/search/classes_4.js new file mode 100644 index 0000000..e90ffee --- /dev/null +++ b/docs/html/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fileanalyzergenhook_0',['FileAnalyzerGenHook',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html',1,'penify_hook::file_analyzer']]], + ['folderanalyzergenhook_1',['FolderAnalyzerGenHook',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html',1,'penify_hook::folder_analyzer']]] +]; diff --git a/docs/html/search/classes_5.html b/docs/html/search/classes_5.html new file mode 100644 index 0000000..51c2b30 --- /dev/null +++ b/docs/html/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_5.js b/docs/html/search/classes_5.js new file mode 100644 index 0000000..a6b1740 --- /dev/null +++ b/docs/html/search/classes_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gitdocgenhook_0',['GitDocGenHook',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html',1,'penify_hook::git_analyzer']]], + ['gitreponotfounderror_1',['GitRepoNotFoundError',['../classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html',1,'penify_hook::utils']]] +]; diff --git a/docs/html/search/classes_6.html b/docs/html/search/classes_6.html new file mode 100644 index 0000000..431fb05 --- /dev/null +++ b/docs/html/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_6.js b/docs/html/search/classes_6.js new file mode 100644 index 0000000..6f010a9 --- /dev/null +++ b/docs/html/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jiraclient_0',['JiraClient',['../classpenify__hook_1_1jira__client_1_1JiraClient.html',1,'penify_hook::jira_client']]] +]; diff --git a/docs/html/search/classes_7.html b/docs/html/search/classes_7.html new file mode 100644 index 0000000..0c76bf5 --- /dev/null +++ b/docs/html/search/classes_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_7.js b/docs/html/search/classes_7.js new file mode 100644 index 0000000..bd37889 --- /dev/null +++ b/docs/html/search/classes_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['llmclient_0',['LLMClient',['../classpenify__hook_1_1llm__client_1_1LLMClient.html',1,'penify_hook::llm_client']]] +]; diff --git a/docs/html/search/classes_8.html b/docs/html/search/classes_8.html new file mode 100644 index 0000000..5a392ee --- /dev/null +++ b/docs/html/search/classes_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/classes_8.js b/docs/html/search/classes_8.js new file mode 100644 index 0000000..ca590a4 --- /dev/null +++ b/docs/html/search/classes_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['testcommitcommands_0',['TestCommitCommands',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html',1,'tests::test_commit_commands']]], + ['testconfigcommands_1',['TestConfigCommands',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html',1,'tests::test_config_commands']]], + ['testwebconfig_2',['TestWebConfig',['../classtests_1_1test__web__config_1_1TestWebConfig.html',1,'tests::test_web_config']]] +]; diff --git a/docs/html/search/close.svg b/docs/html/search/close.svg new file mode 100644 index 0000000..a933eea --- /dev/null +++ b/docs/html/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/docs/html/search/files_0.html b/docs/html/search/files_0.html new file mode 100644 index 0000000..2dbb4c2 --- /dev/null +++ b/docs/html/search/files_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_0.js b/docs/html/search/files_0.js new file mode 100644 index 0000000..7b3d690 --- /dev/null +++ b/docs/html/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_2epy_0',['__init__.py',['../penify__hook_2____init_____8py.html',1,'(Global Namespace)'],['../penify__hook_2commands_2____init_____8py.html',1,'(Global Namespace)'],['../tests_2____init_____8py.html',1,'(Global Namespace)']]] +]; diff --git a/docs/html/search/files_1.html b/docs/html/search/files_1.html new file mode 100644 index 0000000..18ccd15 --- /dev/null +++ b/docs/html/search/files_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_1.js b/docs/html/search/files_1.js new file mode 100644 index 0000000..6d2b14e --- /dev/null +++ b/docs/html/search/files_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['api_5fclient_2epy_0',['api_client.py',['../api__client_8py.html',1,'']]], + ['auth_5fcommands_2epy_1',['auth_commands.py',['../auth__commands_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_10.html b/docs/html/search/files_10.html new file mode 100644 index 0000000..c6af52c --- /dev/null +++ b/docs/html/search/files_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_10.js b/docs/html/search/files_10.js new file mode 100644 index 0000000..b759a00 --- /dev/null +++ b/docs/html/search/files_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ui_5futils_2epy_0',['ui_utils.py',['../ui__utils_8py.html',1,'']]], + ['utils_2epy_1',['utils.py',['../utils_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_2.html b/docs/html/search/files_2.html new file mode 100644 index 0000000..a4c2be4 --- /dev/null +++ b/docs/html/search/files_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_2.js b/docs/html/search/files_2.js new file mode 100644 index 0000000..ba3909d --- /dev/null +++ b/docs/html/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['base_5fanalyzer_2epy_0',['base_analyzer.py',['../base__analyzer_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_3.html b/docs/html/search/files_3.html new file mode 100644 index 0000000..3ac4cfb --- /dev/null +++ b/docs/html/search/files_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_3.js b/docs/html/search/files_3.js new file mode 100644 index 0000000..bb00fd4 --- /dev/null +++ b/docs/html/search/files_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['commit_2dcommands_2emd_0',['commit-commands.md',['../commit-commands_8md.html',1,'']]], + ['commit_5fanalyzer_2epy_1',['commit_analyzer.py',['../commit__analyzer_8py.html',1,'']]], + ['commit_5fcommands_2epy_2',['commit_commands.py',['../commit__commands_8py.html',1,'']]], + ['config_2dcommands_2emd_3',['config-commands.md',['../config-commands_8md.html',1,'']]], + ['config_5fcommand_2epy_4',['config_command.py',['../config__command_8py.html',1,'']]], + ['config_5fcommands_2epy_5',['config_commands.py',['../config__commands_8py.html',1,'']]], + ['conftest_2epy_6',['conftest.py',['../conftest_8py.html',1,'']]], + ['constants_2epy_7',['constants.py',['../constants_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_4.html b/docs/html/search/files_4.html new file mode 100644 index 0000000..eb19ecf --- /dev/null +++ b/docs/html/search/files_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_4.js b/docs/html/search/files_4.js new file mode 100644 index 0000000..e7bf2b2 --- /dev/null +++ b/docs/html/search/files_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['detailed_2dusage_2emd_0',['detailed-usage.md',['../detailed-usage_8md.html',1,'']]], + ['doc_5fcommands_2emd_1',['doc_commands.md',['../doc__commands_8md.html',1,'']]], + ['doc_5fcommands_2epy_2',['doc_commands.py',['../doc__commands_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_5.html b/docs/html/search/files_5.html new file mode 100644 index 0000000..61d86d0 --- /dev/null +++ b/docs/html/search/files_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_5.js b/docs/html/search/files_5.js new file mode 100644 index 0000000..29d814a --- /dev/null +++ b/docs/html/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['example_2dworkflows_2emd_0',['example-workflows.md',['../example-workflows_8md.html',1,'']]] +]; diff --git a/docs/html/search/files_6.html b/docs/html/search/files_6.html new file mode 100644 index 0000000..333517d --- /dev/null +++ b/docs/html/search/files_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_6.js b/docs/html/search/files_6.js new file mode 100644 index 0000000..3d76b9d --- /dev/null +++ b/docs/html/search/files_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_5fanalyzer_2epy_0',['file_analyzer.py',['../file__analyzer_8py.html',1,'']]], + ['folder_5fanalyzer_2epy_1',['folder_analyzer.py',['../folder__analyzer_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_7.html b/docs/html/search/files_7.html new file mode 100644 index 0000000..ad481b0 --- /dev/null +++ b/docs/html/search/files_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_7.js b/docs/html/search/files_7.js new file mode 100644 index 0000000..4c89ef8 --- /dev/null +++ b/docs/html/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['git_5fanalyzer_2epy_0',['git_analyzer.py',['../git__analyzer_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_8.html b/docs/html/search/files_8.html new file mode 100644 index 0000000..2af8404 --- /dev/null +++ b/docs/html/search/files_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_8.js b/docs/html/search/files_8.js new file mode 100644 index 0000000..3d83c4a --- /dev/null +++ b/docs/html/search/files_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hook_5fcommands_2epy_0',['hook_commands.py',['../hook__commands_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_9.html b/docs/html/search/files_9.html new file mode 100644 index 0000000..8d5c07d --- /dev/null +++ b/docs/html/search/files_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_9.js b/docs/html/search/files_9.js new file mode 100644 index 0000000..fcddd7a --- /dev/null +++ b/docs/html/search/files_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jira_5fclient_2epy_0',['jira_client.py',['../jira__client_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_a.html b/docs/html/search/files_a.html new file mode 100644 index 0000000..806a999 --- /dev/null +++ b/docs/html/search/files_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_a.js b/docs/html/search/files_a.js new file mode 100644 index 0000000..876ef0d --- /dev/null +++ b/docs/html/search/files_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['llm_5fclient_2epy_0',['llm_client.py',['../llm__client_8py.html',1,'']]], + ['login_5fcommand_2epy_1',['login_command.py',['../login__command_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_b.html b/docs/html/search/files_b.html new file mode 100644 index 0000000..371cc0f --- /dev/null +++ b/docs/html/search/files_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_b.js b/docs/html/search/files_b.js new file mode 100644 index 0000000..01a0bf7 --- /dev/null +++ b/docs/html/search/files_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_2epy_0',['main.py',['../main_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_c.html b/docs/html/search/files_c.html new file mode 100644 index 0000000..5b93d7f --- /dev/null +++ b/docs/html/search/files_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_c.js b/docs/html/search/files_c.js new file mode 100644 index 0000000..6f265cb --- /dev/null +++ b/docs/html/search/files_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['penify_2dcli_2ddocumentation_2emd_0',['penify-cli-documentation.md',['../penify-cli-documentation_8md.html',1,'']]] +]; diff --git a/docs/html/search/files_d.html b/docs/html/search/files_d.html new file mode 100644 index 0000000..a9b1c64 --- /dev/null +++ b/docs/html/search/files_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_d.js b/docs/html/search/files_d.js new file mode 100644 index 0000000..9847676 --- /dev/null +++ b/docs/html/search/files_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme_2emd_0',['README.md',['../README_8md.html',1,'']]] +]; diff --git a/docs/html/search/files_e.html b/docs/html/search/files_e.html new file mode 100644 index 0000000..db2d31a --- /dev/null +++ b/docs/html/search/files_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_e.js b/docs/html/search/files_e.js new file mode 100644 index 0000000..d0dfcff --- /dev/null +++ b/docs/html/search/files_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['setup_2epy_0',['setup.py',['../setup_8py.html',1,'']]] +]; diff --git a/docs/html/search/files_f.html b/docs/html/search/files_f.html new file mode 100644 index 0000000..82b198a --- /dev/null +++ b/docs/html/search/files_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/files_f.js b/docs/html/search/files_f.js new file mode 100644 index 0000000..133fd11 --- /dev/null +++ b/docs/html/search/files_f.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['test_5fcommit_5fcommands_2epy_0',['test_commit_commands.py',['../test__commit__commands_8py.html',1,'']]], + ['test_5fconfig_5fcommands_2epy_1',['test_config_commands.py',['../test__config__commands_8py.html',1,'']]], + ['test_5fdoc_5fcommands_2epy_2',['test_doc_commands.py',['../test__doc__commands_8py.html',1,'']]], + ['test_5fweb_5fconfig_2epy_3',['test_web_config.py',['../test__web__config_8py.html',1,'']]] +]; diff --git a/docs/html/search/functions_0.html b/docs/html/search/functions_0.html new file mode 100644 index 0000000..3b739c7 --- /dev/null +++ b/docs/html/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_0.js b/docs/html/search/functions_0.js new file mode 100644 index 0000000..8362237 --- /dev/null +++ b/docs/html/search/functions_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['_5f_5finit_5f_5f_0',['__init__',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad9cb741a8baf2d13f845e25a36311086',1,'penify_hook.api_client.APIClient.__init__()'],['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab1296a3d1e9070d891801876b66f7344',1,'penify_hook.base_analyzer.BaseAnalyzer.__init__()'],['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#af127d86729e226d74dbeb095b008db3e',1,'penify_hook.commit_analyzer.CommitDocGenHook.__init__()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a190c473090b2a07e7cb43073a3211c4b',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a1bb0358140931d82c7616f12efe31821',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.__init__()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a92275fddb43dbef6dfdb6c1ed6e96d0c',1,'penify_hook.git_analyzer.GitDocGenHook.__init__()'],['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a47efc1ec07389c960f2dfb37ba8c09f5',1,'penify_hook.jira_client.JiraClient.__init__()'],['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76d92354f585ab4bb291169f9f530764',1,'penify_hook.llm_client.LLMClient.__init__()']]], + ['_5famend_5fcommit_1',['_amend_commit',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ac999c5cbc852a7ec3b412ccb43c274ca',1,'penify_hook::commit_analyzer::CommitDocGenHook']]] +]; diff --git a/docs/html/search/functions_1.html b/docs/html/search/functions_1.html new file mode 100644 index 0000000..2cef5e3 --- /dev/null +++ b/docs/html/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_1.js b/docs/html/search/functions_1.js new file mode 100644 index 0000000..6c71456 --- /dev/null +++ b/docs/html/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['add_5fcomment_0',['add_comment',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa1f374116c64cd5f1492ec7f7e40f9c1',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/functions_2.html b/docs/html/search/functions_2.html new file mode 100644 index 0000000..3308c65 --- /dev/null +++ b/docs/html/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_2.js b/docs/html/search/functions_2.js new file mode 100644 index 0000000..9ea0560 --- /dev/null +++ b/docs/html/search/functions_2.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['commit_5fcode_0',['commit_code',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a62564c4e8ad59fc46d56cb0f9122a71a',1,'penify_hook::commands::commit_commands']]], + ['config_5fjira_5fweb_1',['config_jira_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#af115198ea5d6808ccb98733957f50b06',1,'penify_hook::commands::config_commands']]], + ['config_5fllm_5fweb_2',['config_llm_web',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a185dfc34a655ed80e6c95939b6f3c35c',1,'penify_hook::commands::config_commands']]], + ['create_5fprogress_5fbar_3',['create_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a12b92532b1458af94f3649d411b5505c',1,'penify_hook::ui_utils']]], + ['create_5fstage_5fprogress_5fbar_4',['create_stage_progress_bar',['../namespacepenify__hook_1_1ui__utils.html#a3da02cd1140179a9ce60f62c85fccfef',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/functions_3.html b/docs/html/search/functions_3.html new file mode 100644 index 0000000..43ac697 --- /dev/null +++ b/docs/html/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_3.js b/docs/html/search/functions_3.js new file mode 100644 index 0000000..79bed7c --- /dev/null +++ b/docs/html/search/functions_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['enhance_5fcommit_5fmessage_0',['enhance_commit_message',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a70d2c5a6432aa6f238da0ff65d49a760',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_1',['extract_issue_keys',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ad2823ad1d3baaedd38039913c3a97fd7',1,'penify_hook::jira_client::JiraClient']]], + ['extract_5fissue_5fkeys_5ffrom_5fbranch_2',['extract_issue_keys_from_branch',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a093d6456fe053ef7a7862d5d6851910c',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/functions_4.html b/docs/html/search/functions_4.html new file mode 100644 index 0000000..d12c2df --- /dev/null +++ b/docs/html/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_4.js b/docs/html/search/functions_4.js new file mode 100644 index 0000000..3c2e1af --- /dev/null +++ b/docs/html/search/functions_4.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['find_5fgit_5fparent_0',['find_git_parent',['../namespacepenify__hook_1_1utils.html#a4ec5335a4026c22a34a3a8ccf665a5f2',1,'penify_hook::utils']]], + ['format_5fcommit_5fmessage_5fwith_5fjira_5finfo_1',['format_commit_message_with_jira_info',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a49ea1149758f7f5212149d357b13cc23',1,'penify_hook::jira_client::JiraClient']]], + ['format_5ferror_2',['format_error',['../namespacepenify__hook_1_1ui__utils.html#a4dd934568897433fa73f9cc182ac4a3e',1,'penify_hook::ui_utils']]], + ['format_5ffile_5fpath_3',['format_file_path',['../namespacepenify__hook_1_1ui__utils.html#af3441fb3c2c3850b8b3b6455a9fdaba4',1,'penify_hook::ui_utils']]], + ['format_5fhighlight_4',['format_highlight',['../namespacepenify__hook_1_1ui__utils.html#adcb97fc26b405d2b9cdf5eb7aecc5452',1,'penify_hook::ui_utils']]], + ['format_5finfo_5',['format_info',['../namespacepenify__hook_1_1ui__utils.html#a92c3e466d1912058167be2eacf85b9f6',1,'penify_hook::ui_utils']]], + ['format_5fsuccess_6',['format_success',['../namespacepenify__hook_1_1ui__utils.html#a532cdb4de7c679ce8b29c3e9116c4776',1,'penify_hook::ui_utils']]], + ['format_5fwarning_7',['format_warning',['../namespacepenify__hook_1_1ui__utils.html#a0a6fd2613c6fe053b6e4356cd9e5cda2',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/functions_5.html b/docs/html/search/functions_5.html new file mode 100644 index 0000000..7266236 --- /dev/null +++ b/docs/html/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_5.js b/docs/html/search/functions_5.js new file mode 100644 index 0000000..75c7e99 --- /dev/null +++ b/docs/html/search/functions_5.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['generate_5fcommit_5fsummary_0',['generate_commit_summary',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a2ad3014dac466ee1d8e00306d0cf2000',1,'penify_hook.llm_client.LLMClient.generate_commit_summary()'],['../classpenify__hook_1_1api__client_1_1APIClient.html#a7ff74798e7d428b4e2f20095287eb2ce',1,'penify_hook.api_client.APIClient.generate_commit_summary(self, git_diff, str instruction="", repo_details=None, dict jira_context=None)']]], + ['generate_5fcommit_5fsummary_5fwith_5fllm_1',['generate_commit_summary_with_llm',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac0ada470b897935f9fb372cd0e7e51e3',1,'penify_hook::api_client::APIClient']]], + ['generate_5fdoc_2',['generate_doc',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a4daac68bc563432bf25c85dc78081a25',1,'penify_hook::commands::doc_commands']]], + ['get_5fapi_5fkey_3',['get_api_key',['../classpenify__hook_1_1api__client_1_1APIClient.html#ad15b790608e703c8c122aa2ead7dfa99',1,'penify_hook::api_client::APIClient']]], + ['get_5fcommit_5fcontext_5ffrom_5fissues_4',['get_commit_context_from_issues',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afb41ce6f13c30b1265d439ddf04bf2cd',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fdetailed_5fissue_5fcontext_5',['get_detailed_issue_context',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aa967169a4b7970c67c0947b9ac56f746',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fenv_5fvar_5for_5fdefault_6',['get_env_var_or_default',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a3caf2b062dd33b1f1d7ddc7224f0ff87',1,'penify_hook::commands::config_commands']]], + ['get_5fissue_5fdetails_7',['get_issue_details',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a65f6924819084b7c8d268956a784804a',1,'penify_hook::jira_client::JiraClient']]], + ['get_5fjira_5fconfig_8',['get_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a15bf3685c4dcb5c15ba6a4055e484cf2',1,'penify_hook::commands::config_commands']]], + ['get_5fllm_5fconfig_9',['get_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6492bc8e7df6e38bb06ad05e572d4cc0',1,'penify_hook::commands::config_commands']]], + ['get_5fmodified_5ffiles_5fin_5flast_5fcommit_10',['get_modified_files_in_last_commit',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a17549766100e91eb94b5f1a1d34bf481',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fmodified_5flines_11',['get_modified_lines',['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a974d2f51315ed6a1965a7fd7e2ced0cd',1,'penify_hook::git_analyzer::GitDocGenHook']]], + ['get_5fpenify_5fconfig_12',['get_penify_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a6559a82d0bf727703d550d1003d3ed20',1,'penify_hook::commands::config_commands']]], + ['get_5frepo_5fdetails_13',['get_repo_details',['../namespacepenify__hook_1_1utils.html#ae236f3c4c8bf5dcddbb92b4c2065eea3',1,'penify_hook::utils']]], + ['get_5fsummary_14',['get_summary',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a8496194276441fa2eb2fa014eaab9a37',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['get_5fsupported_5ffile_5ftypes_15',['get_supported_file_types',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5d2b4a26b24352d951ea79ecc4ff3402',1,'penify_hook::api_client::APIClient']]], + ['get_5ftoken_16',['get_token',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a5503d51c905e2f1b299b12d2a73bd812',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/functions_6.html b/docs/html/search/functions_6.html new file mode 100644 index 0000000..7f9fc45 --- /dev/null +++ b/docs/html/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_6.js b/docs/html/search/functions_6.js new file mode 100644 index 0000000..6ef2054 --- /dev/null +++ b/docs/html/search/functions_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['handle_5fcommit_0',['handle_commit',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#af4f739f524c38b437e4e47673d683e23',1,'penify_hook::commands::commit_commands']]], + ['handle_5fconfig_1',['handle_config',['../namespacepenify__hook_1_1config__command.html#a240e5331681eb574ac319d7458783bde',1,'penify_hook::config_command']]], + ['handle_5fdocgen_2',['handle_docgen',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a2006ab13bff718ef783868a910c0b704',1,'penify_hook::commands::doc_commands']]], + ['handle_5flogin_3',['handle_login',['../namespacepenify__hook_1_1login__command.html#ae4bf932fbafeff834b0a0c5a37f74ccd',1,'penify_hook::login_command']]] +]; diff --git a/docs/html/search/functions_7.html b/docs/html/search/functions_7.html new file mode 100644 index 0000000..ad0f88b --- /dev/null +++ b/docs/html/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_7.js b/docs/html/search/functions_7.js new file mode 100644 index 0000000..f0f0714 --- /dev/null +++ b/docs/html/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['install_5fgit_5fhook_0',['install_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#adff8f5d3bf1c3795974a391ee95b72b2',1,'penify_hook::commands::hook_commands']]], + ['is_5fconnected_1',['is_connected',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a00d0f9ae006313a21576362d26ac5ec8',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/functions_8.html b/docs/html/search/functions_8.html new file mode 100644 index 0000000..ea7fa74 --- /dev/null +++ b/docs/html/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_8.js b/docs/html/search/functions_8.js new file mode 100644 index 0000000..8934697 --- /dev/null +++ b/docs/html/search/functions_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['list_5fall_5ffiles_5fin_5fdir_0',['list_all_files_in_dir',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a70b845318fc7ac3b607daf26378e19ec',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['litellm_1',['litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#ad6f06658ca922793f879474f2234518e',1,'penify_hook::llm_client::LLMClient']]], + ['load_5fenv_5ffiles_2',['load_env_files',['../namespacepenify__hook_1_1commands_1_1config__commands.html#aabe277132ce0bc0aacef951cf1dee2ae',1,'penify_hook::commands::config_commands']]], + ['login_3',['login',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#a78f375c58bb6f69f98675e6a9ac84655',1,'penify_hook::commands::auth_commands']]] +]; diff --git a/docs/html/search/functions_9.html b/docs/html/search/functions_9.html new file mode 100644 index 0000000..d831dc7 --- /dev/null +++ b/docs/html/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_9.js b/docs/html/search/functions_9.js new file mode 100644 index 0000000..70a2559 --- /dev/null +++ b/docs/html/search/functions_9.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['main_0',['main',['../namespacepenify__hook_1_1main.html#a16838b20df4bd14ee4b5e1dd2906738f',1,'penify_hook::main']]], + ['mock_5fapi_5fclient_1',['mock_api_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#abcd2354a2af4afe19e57877628d3acc2',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fcommit_5fdoc_5fgen_2',['mock_commit_doc_gen',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#aa9b25a4bf692b8736164695072a398f6',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fgit_5ffolder_5fsearch_3',['mock_git_folder_search',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a2842f456a8c0f1bf0f4def17c183c04e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fjira_5fclient_4',['mock_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a05adaa9a713ff1be657455d0667bc6be',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fllm_5fclient_5',['mock_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a20e78370ff5bd6223cc1dd4323a86ea4',1,'tests::test_commit_commands::TestCommitCommands']]], + ['mock_5fprint_5ffunctions_6',['mock_print_functions',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#afafbae3c9aeb0e50a75996256c02c8be',1,'tests::test_commit_commands::TestCommitCommands']]] +]; diff --git a/docs/html/search/functions_a.html b/docs/html/search/functions_a.html new file mode 100644 index 0000000..7018fc6 --- /dev/null +++ b/docs/html/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_a.js b/docs/html/search/functions_a.js new file mode 100644 index 0000000..0283fbe --- /dev/null +++ b/docs/html/search/functions_a.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['print_5ferror_0',['print_error',['../namespacepenify__hook_1_1ui__utils.html#a6f0acd7dd91abfe67d0807803bc3b65f',1,'penify_hook::ui_utils']]], + ['print_5finfo_1',['print_info',['../namespacepenify__hook_1_1ui__utils.html#a811f0adf6e9bf71510c379b6fa155e44',1,'penify_hook::ui_utils']]], + ['print_5fprocessing_2',['print_processing',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a6ab39391dfb7686f2a2d21a702dd3073',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.print_processing()'],['../namespacepenify__hook_1_1ui__utils.html#adfcbbfe39029ab6d1dd33e7bf75ae115',1,'penify_hook.ui_utils.print_processing(file_path)']]], + ['print_5fstatus_3',['print_status',['../namespacepenify__hook_1_1ui__utils.html#aa6e684c00e26199440137a87ed9b195c',1,'penify_hook::ui_utils']]], + ['print_5fsuccess_4',['print_success',['../namespacepenify__hook_1_1ui__utils.html#a2b16aa6b68a9edea5f29f84f1c4be79a',1,'penify_hook::ui_utils']]], + ['print_5fwarning_5',['print_warning',['../namespacepenify__hook_1_1ui__utils.html#a1ffbb9671dbe233770268e2dd66a67fa',1,'penify_hook::ui_utils']]], + ['process_5ffile_6',['process_file',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a2cc6c22ef588fccf3eed9bbc57fb6d6e',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.process_file()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a05313caa22b173ce75638f0db08eeb85',1,'penify_hook.git_analyzer.GitDocGenHook.process_file()']]], + ['process_5fjira_5fintegration_7',['process_jira_integration',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#adda13cc121d96342476ccf72b63a007f',1,'penify_hook::commit_analyzer::CommitDocGenHook']]] +]; diff --git a/docs/html/search/functions_b.html b/docs/html/search/functions_b.html new file mode 100644 index 0000000..c0660b0 --- /dev/null +++ b/docs/html/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_b.js b/docs/html/search/functions_b.js new file mode 100644 index 0000000..aa36dc7 --- /dev/null +++ b/docs/html/search/functions_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['recursive_5fsearch_5fgit_5ffolder_0',['recursive_search_git_folder',['../namespacepenify__hook_1_1utils.html#a95c3f9c80860d6a2e2d061d2fb660a3f',1,'penify_hook::utils']]], + ['run_1',['run',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#a6370a03f7ed9175ef6f81e931a105ea9',1,'penify_hook.commit_analyzer.CommitDocGenHook.run()'],['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a4f4dffbc432fac3e259d957dd1e187f1',1,'penify_hook.file_analyzer.FileAnalyzerGenHook.run()'],['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#afd189d1b8c773bf710a899eb21fd76cc',1,'penify_hook.folder_analyzer.FolderAnalyzerGenHook.run()'],['../classpenify__hook_1_1git__analyzer_1_1GitDocGenHook.html#a3beba14e92d717391a74bb70b1fab0ae',1,'penify_hook.git_analyzer.GitDocGenHook.run()']]] +]; diff --git a/docs/html/search/functions_c.html b/docs/html/search/functions_c.html new file mode 100644 index 0000000..b642767 --- /dev/null +++ b/docs/html/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_c.js b/docs/html/search/functions_c.js new file mode 100644 index 0000000..8de5e4c --- /dev/null +++ b/docs/html/search/functions_c.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['save_5fcredentials_0',['save_credentials',['../namespacepenify__hook_1_1commands_1_1auth__commands.html#aa3956ca1749d4218ea1dc6e5b6218b24',1,'penify_hook::commands::auth_commands']]], + ['save_5fjira_5fconfig_1',['save_jira_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#ab2486ac2bf16b4a671e49625bfa4f9b4',1,'penify_hook::commands::config_commands']]], + ['save_5fllm_5fconfig_2',['save_llm_config',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4617bc5956e502c9555dc0dda0376df4',1,'penify_hook::commands::config_commands']]], + ['send_5ffile_5ffor_5fdocstring_5fgeneration_3',['send_file_for_docstring_generation',['../classpenify__hook_1_1api__client_1_1APIClient.html#ac5aad61508c2cafdf6e88e6c7d6c82b3',1,'penify_hook::api_client::APIClient']]], + ['setup_5fcommit_5fparser_4',['setup_commit_parser',['../namespacepenify__hook_1_1commands_1_1commit__commands.html#a8627583116eb78e31a4d3cdc16d2f15c',1,'penify_hook::commands::commit_commands']]], + ['setup_5fconfig_5fparser_5',['setup_config_parser',['../namespacepenify__hook_1_1config__command.html#a4f3eb92164a69df1446d745f8a09285e',1,'penify_hook::config_command']]], + ['setup_5fdocgen_5fparser_6',['setup_docgen_parser',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#acc7f4ead1b11951d885fa5c151c2cbe0',1,'penify_hook::commands::doc_commands']]], + ['setup_5flogin_5fparser_7',['setup_login_parser',['../namespacepenify__hook_1_1login__command.html#aae63db4c484797bead34b7d874020c6a',1,'penify_hook::login_command']]] +]; diff --git a/docs/html/search/functions_d.html b/docs/html/search/functions_d.html new file mode 100644 index 0000000..16464b4 --- /dev/null +++ b/docs/html/search/functions_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_d.js b/docs/html/search/functions_d.js new file mode 100644 index 0000000..36538fa --- /dev/null +++ b/docs/html/search/functions_d.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['test_5fcommit_5fcode_5ferror_5fhandling_0',['test_commit_code_error_handling',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a43c2ff3707124aa48e8eb581106b8691',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fclient_1',['test_commit_code_with_jira_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#af9c09013055ec39ddde86b487aefcf8b',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fjira_5fconnection_5ffailure_2',['test_commit_code_with_jira_connection_failure',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acea0d934ee0f2b914b0b893736e8fe4e',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fcommit_5fcode_5fwith_5fllm_5fclient_3',['test_commit_code_with_llm_client',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#acc4b1e4189792a3f7c11d2a745f479c0',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fconfig_5fjira_5fweb_5fserver_5fsetup_4',['test_config_jira_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#a06e600222e426b003850509cb1d3190a',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fconfig_5fllm_5fweb_5fserver_5fsetup_5',['test_config_llm_web_server_setup',['../classtests_1_1test__web__config_1_1TestWebConfig.html#afc6440352201d207ea8b4d26f8ccfa35',1,'tests::test_web_config::TestWebConfig']]], + ['test_5fgenerate_5fdoc_5ferror_5fhandling_6',['test_generate_doc_error_handling',['../namespacetests_1_1test__doc__commands.html#aec76cc25c23476794234cdadbcaef0c0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffile_5flocation_7',['test_generate_doc_file_location',['../namespacetests_1_1test__doc__commands.html#a0e74c920f258f442914771164fe26b45',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5ffolder_5flocation_8',['test_generate_doc_folder_location',['../namespacetests_1_1test__doc__commands.html#a4bb75610e40d94d42bc169b25403c186',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fno_5flocation_9',['test_generate_doc_no_location',['../namespacetests_1_1test__doc__commands.html#a806110833eb0aad547156faf014b31d8',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffile_5fexception_10',['test_generate_doc_with_file_exception',['../namespacetests_1_1test__doc__commands.html#a335e7fd4912192c7276cf31bbebc6eb0',1,'tests::test_doc_commands']]], + ['test_5fgenerate_5fdoc_5fwith_5ffolder_5fexception_11',['test_generate_doc_with_folder_exception',['../namespacetests_1_1test__doc__commands.html#a64165ddfdb3071a88422f080f0e529a3',1,'tests::test_doc_commands']]], + ['test_5fget_5fjira_5fconfig_5fexists_12',['test_get_jira_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#aee37b97432821d19758c6325d4c74bcf',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fempty_13',['test_get_llm_config_empty',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#abd12f028b89aa9cd1152c0b9ece5d3cd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5fexists_14',['test_get_llm_config_exists',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#adf9f2233a3f4cc5725b9d4f05758b167',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fllm_5fconfig_5finvalid_5fjson_15',['test_get_llm_config_invalid_json',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a473984d31452b56acd6ce4011a1248bd',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fexisting_5fdir_16',['test_get_penify_config_existing_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a2e8162082bcdd5652bb37bdb14cf453a',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5fpenify_5fconfig_5fnew_5fdir_17',['test_get_penify_config_new_dir',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a33d4760eee3b67e1cde3aed755ebb948',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fconfig_18',['test_get_token_from_config',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a6c0207be563c3de59a6d16277805114c',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5ffrom_5fenv_19',['test_get_token_from_env',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a3355f7d313bebaa71694387cf2bc5232',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fget_5ftoken_5fnot_5ffound_20',['test_get_token_not_found',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a400ca5d9fcdc159714e8df54920f9436',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fhandle_5fcommit_21',['test_handle_commit',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#ac13e368262340af98b30fd8ebdac6597',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fhandle_5fdocgen_5fgenerate_22',['test_handle_docgen_generate',['../namespacetests_1_1test__doc__commands.html#ab158ffa48469b6c097a7a55fcb20c21a',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5finstall_5fhook_23',['test_handle_docgen_install_hook',['../namespacetests_1_1test__doc__commands.html#ab74688baa8c9b5ba302c2877a9789d05',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5fno_5ftoken_24',['test_handle_docgen_no_token',['../namespacetests_1_1test__doc__commands.html#af9b01e5fc89255cac96747fa081c442c',1,'tests::test_doc_commands']]], + ['test_5fhandle_5fdocgen_5funinstall_5fhook_25',['test_handle_docgen_uninstall_hook',['../namespacetests_1_1test__doc__commands.html#a1458af9ad0128c3ca1263b552fd5e482',1,'tests::test_doc_commands']]], + ['test_5fsave_5fjira_5fconfig_5fsuccess_26',['test_save_jira_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#af8d62310da2d768e21770f8f01ff5375',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5ffailure_27',['test_save_llm_config_failure',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#a73a264dfb21e16003e095b79f6eab2ac',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsave_5fllm_5fconfig_5fsuccess_28',['test_save_llm_config_success',['../classtests_1_1test__config__commands_1_1TestConfigCommands.html#acd8df8219441b9e9871b903a681400d9',1,'tests::test_config_commands::TestConfigCommands']]], + ['test_5fsetup_5fcommit_5fparser_29',['test_setup_commit_parser',['../classtests_1_1test__commit__commands_1_1TestCommitCommands.html#a4d04b125e102190a768f65f1948f15bc',1,'tests::test_commit_commands::TestCommitCommands']]], + ['test_5fsetup_5fdocgen_5fparser_30',['test_setup_docgen_parser',['../namespacetests_1_1test__doc__commands.html#a0f27751d0ba2acfe40ef7e85bccf47d7',1,'tests::test_doc_commands']]] +]; diff --git a/docs/html/search/functions_e.html b/docs/html/search/functions_e.html new file mode 100644 index 0000000..e55bbf1 --- /dev/null +++ b/docs/html/search/functions_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/functions_e.js b/docs/html/search/functions_e.js new file mode 100644 index 0000000..60953c2 --- /dev/null +++ b/docs/html/search/functions_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['uninstall_5fgit_5fhook_0',['uninstall_git_hook',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a81543eb5fa835fd1237f24e8bce6201d',1,'penify_hook::commands::hook_commands']]], + ['update_5fissue_5fstatus_1',['update_issue_status',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aca8837552d37bfd611de23441a240826',1,'penify_hook::jira_client::JiraClient']]], + ['update_5fstage_2',['update_stage',['../namespacepenify__hook_1_1ui__utils.html#a5a7340d0fc60fb80f17514d60bf45f1d',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/mag_sel.svg b/docs/html/search/mag_sel.svg new file mode 100644 index 0000000..03626f6 --- /dev/null +++ b/docs/html/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/docs/html/search/namespaces_0.html b/docs/html/search/namespaces_0.html new file mode 100644 index 0000000..b2d68fe --- /dev/null +++ b/docs/html/search/namespaces_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_0.js b/docs/html/search/namespaces_0.js new file mode 100644 index 0000000..3a1e6d3 --- /dev/null +++ b/docs/html/search/namespaces_0.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['api_5fclient_0',['api_client',['../namespacepenify__hook_1_1api__client.html',1,'penify_hook']]], + ['auth_5fcommands_1',['auth_commands',['../namespacepenify__hook_1_1commands_1_1auth__commands.html',1,'penify_hook::commands']]], + ['base_5fanalyzer_2',['base_analyzer',['../namespacepenify__hook_1_1base__analyzer.html',1,'penify_hook']]], + ['commands_3',['commands',['../namespacepenify__hook_1_1commands.html',1,'penify_hook']]], + ['commit_5fanalyzer_4',['commit_analyzer',['../namespacepenify__hook_1_1commit__analyzer.html',1,'penify_hook']]], + ['commit_5fcommands_5',['commit_commands',['../namespacepenify__hook_1_1commands_1_1commit__commands.html',1,'penify_hook::commands']]], + ['config_5fcommand_6',['config_command',['../namespacepenify__hook_1_1config__command.html',1,'penify_hook']]], + ['config_5fcommands_7',['config_commands',['../namespacepenify__hook_1_1commands_1_1config__commands.html',1,'penify_hook::commands']]], + ['constants_8',['constants',['../namespacepenify__hook_1_1constants.html',1,'penify_hook']]], + ['doc_5fcommands_9',['doc_commands',['../namespacepenify__hook_1_1commands_1_1doc__commands.html',1,'penify_hook::commands']]], + ['file_5fanalyzer_10',['file_analyzer',['../namespacepenify__hook_1_1file__analyzer.html',1,'penify_hook']]], + ['folder_5fanalyzer_11',['folder_analyzer',['../namespacepenify__hook_1_1folder__analyzer.html',1,'penify_hook']]], + ['git_5fanalyzer_12',['git_analyzer',['../namespacepenify__hook_1_1git__analyzer.html',1,'penify_hook']]], + ['hook_5fcommands_13',['hook_commands',['../namespacepenify__hook_1_1commands_1_1hook__commands.html',1,'penify_hook::commands']]], + ['jira_5fclient_14',['jira_client',['../namespacepenify__hook_1_1jira__client.html',1,'penify_hook']]], + ['llm_5fclient_15',['llm_client',['../namespacepenify__hook_1_1llm__client.html',1,'penify_hook']]], + ['login_5fcommand_16',['login_command',['../namespacepenify__hook_1_1login__command.html',1,'penify_hook']]], + ['main_17',['main',['../namespacepenify__hook_1_1main.html',1,'penify_hook']]], + ['penify_5fhook_18',['penify_hook',['../namespacepenify__hook.html',1,'']]], + ['ui_5futils_19',['ui_utils',['../namespacepenify__hook_1_1ui__utils.html',1,'penify_hook']]], + ['utils_20',['utils',['../namespacepenify__hook_1_1utils.html',1,'penify_hook']]] +]; diff --git a/docs/html/search/namespaces_1.html b/docs/html/search/namespaces_1.html new file mode 100644 index 0000000..a4b1530 --- /dev/null +++ b/docs/html/search/namespaces_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_1.js b/docs/html/search/namespaces_1.js new file mode 100644 index 0000000..fdca1a8 --- /dev/null +++ b/docs/html/search/namespaces_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['setup_0',['setup',['../namespacesetup.html',1,'']]] +]; diff --git a/docs/html/search/namespaces_2.html b/docs/html/search/namespaces_2.html new file mode 100644 index 0000000..a89a756 --- /dev/null +++ b/docs/html/search/namespaces_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/namespaces_2.js b/docs/html/search/namespaces_2.js new file mode 100644 index 0000000..10ec4ce --- /dev/null +++ b/docs/html/search/namespaces_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['conftest_0',['conftest',['../namespacetests_1_1conftest.html',1,'tests']]], + ['test_5fcommit_5fcommands_1',['test_commit_commands',['../namespacetests_1_1test__commit__commands.html',1,'tests']]], + ['test_5fconfig_5fcommands_2',['test_config_commands',['../namespacetests_1_1test__config__commands.html',1,'tests']]], + ['test_5fdoc_5fcommands_3',['test_doc_commands',['../namespacetests_1_1test__doc__commands.html',1,'tests']]], + ['test_5fweb_5fconfig_4',['test_web_config',['../namespacetests_1_1test__web__config.html',1,'tests']]], + ['tests_5',['tests',['../namespacetests.html',1,'']]] +]; diff --git a/docs/html/search/nomatches.html b/docs/html/search/nomatches.html new file mode 100644 index 0000000..2b9360b --- /dev/null +++ b/docs/html/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/docs/html/search/pages_0.html b/docs/html/search/pages_0.html new file mode 100644 index 0000000..1981712 --- /dev/null +++ b/docs/html/search/pages_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/pages_0.js b/docs/html/search/pages_0.js new file mode 100644 index 0000000..3cd36ca --- /dev/null +++ b/docs/html/search/pages_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['penify_20cli_20_2d_20commit_20commands_0',['Penify CLI - Commit Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_commit_commands.html',1,'']]], + ['penify_20cli_20_2d_20configuration_20commands_1',['Penify CLI - Configuration Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_config_commands.html',1,'']]], + ['penify_20cli_20_2d_20detailed_20usage_20guide_2',['Penify CLI - Detailed Usage Guide',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_detailed_usage.html',1,'']]], + ['penify_20cli_20_2d_20documentation_20generation_20commands_3',['Penify CLI - Documentation Generation Commands',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_doc_commands.html',1,'']]], + ['penify_20cli_20example_20workflows_4',['Penify CLI Example Workflows',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_docs_example_workflows.html',1,'']]], + ['penify_20cli_20tool_5',['Penify CLI Tool',['../md__tmp_github_reposRepoArchDocGenContext_Penify_dev_penify_cli_README.html',1,'']]] +]; diff --git a/docs/html/search/search.css b/docs/html/search/search.css new file mode 100644 index 0000000..648a792 --- /dev/null +++ b/docs/html/search/search.css @@ -0,0 +1,263 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 19px; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/docs/html/search/search.js b/docs/html/search/search.js new file mode 100644 index 0000000..607f4e1 --- /dev/null +++ b/docs/html/search/search.js @@ -0,0 +1,802 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var width = 400; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/docs/html/search/search_r.png b/docs/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/docs/html/search/searchdata.js b/docs/html/search/searchdata.js new file mode 100644 index 0000000..37552a5 --- /dev/null +++ b/docs/html/search/searchdata.js @@ -0,0 +1,33 @@ +var indexSectionsWithContent = +{ + 0: "_abcdefghijlmnprstuvw", + 1: "abcefgjlt", + 2: "pst", + 3: "_abcdefghjlmprstu", + 4: "_acefghilmprstu", + 5: "_abcdefhijlmnprsuvw", + 6: "p" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "files", + 4: "functions", + 5: "variables", + 6: "pages" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Namespaces", + 3: "Files", + 4: "Functions", + 5: "Variables", + 6: "Pages" +}; + diff --git a/docs/html/search/variables_0.html b/docs/html/search/variables_0.html new file mode 100644 index 0000000..fd893a6 --- /dev/null +++ b/docs/html/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_0.js b/docs/html/search/variables_0.js new file mode 100644 index 0000000..ee0a9ff --- /dev/null +++ b/docs/html/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5flitellm_0',['_litellm',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#a76c2e9805f805624ab9c55a9f1f8d362',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/variables_1.html b/docs/html/search/variables_1.html new file mode 100644 index 0000000..5f8e440 --- /dev/null +++ b/docs/html/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_1.js b/docs/html/search/variables_1.js new file mode 100644 index 0000000..a34ece5 --- /dev/null +++ b/docs/html/search/variables_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['api_5fclient_0',['api_client',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a81e9c55709205aaf4ebbe2b41683baf2',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['api_5furl_1',['api_url',['../classpenify__hook_1_1api__client_1_1APIClient.html#a130cf688ed35dc0e8cbd8320b6b2d872',1,'penify_hook::api_client::APIClient']]], + ['api_5furl_2',['API_URL',['../namespacepenify__hook_1_1constants.html#af198b5d1fc2f44657a2061aa324af3e0',1,'penify_hook::constants']]], + ['auth_5ftoken_3',['AUTH_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a5bb502603717946ad710b49ad9d95237',1,'penify_hook::api_client::APIClient']]], + ['author_4',['author',['../namespacesetup.html#a3a57a4772d418a06835249cbade0d86a',1,'setup']]], + ['author_5femail_5',['author_email',['../namespacesetup.html#a5b08034343aa2be607722a8b315f3625',1,'setup']]], + ['autoreset_6',['autoreset',['../namespacepenify__hook_1_1ui__utils.html#ab560cfade398ac1e0bd47befb52d9f71',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_10.html b/docs/html/search/variables_10.html new file mode 100644 index 0000000..943cbd1 --- /dev/null +++ b/docs/html/search/variables_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_10.js b/docs/html/search/variables_10.js new file mode 100644 index 0000000..28d0871 --- /dev/null +++ b/docs/html/search/variables_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['url_0',['url',['../namespacesetup.html#afc13124aa5c0124e84e1d965e3f4b0fb',1,'setup']]] +]; diff --git a/docs/html/search/variables_11.html b/docs/html/search/variables_11.html new file mode 100644 index 0000000..47f1ec5 --- /dev/null +++ b/docs/html/search/variables_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_11.js b/docs/html/search/variables_11.js new file mode 100644 index 0000000..d9621d9 --- /dev/null +++ b/docs/html/search/variables_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version_0',['version',['../namespacesetup.html#a2aa722b36a933088812b50ea79b97a5c',1,'setup']]] +]; diff --git a/docs/html/search/variables_12.html b/docs/html/search/variables_12.html new file mode 100644 index 0000000..2842f66 --- /dev/null +++ b/docs/html/search/variables_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_12.js b/docs/html/search/variables_12.js new file mode 100644 index 0000000..10d696f --- /dev/null +++ b/docs/html/search/variables_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['warning_5fcolor_0',['WARNING_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a177bc9b44157844c999e0c1c2c6936ff',1,'penify_hook::ui_utils']]], + ['warning_5fsymbol_1',['WARNING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a6eaea98f1a8cbe16a181647da2fc0a16',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_2.html b/docs/html/search/variables_2.html new file mode 100644 index 0000000..77a7f48 --- /dev/null +++ b/docs/html/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_2.js b/docs/html/search/variables_2.js new file mode 100644 index 0000000..d02ac2e --- /dev/null +++ b/docs/html/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['bearer_5ftoken_0',['BEARER_TOKEN',['../classpenify__hook_1_1api__client_1_1APIClient.html#a7d7e2cf42c54eb4f25adee96a09ee7b0',1,'penify_hook::api_client::APIClient']]] +]; diff --git a/docs/html/search/variables_3.html b/docs/html/search/variables_3.html new file mode 100644 index 0000000..3ee62ba --- /dev/null +++ b/docs/html/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_3.js b/docs/html/search/variables_3.js new file mode 100644 index 0000000..c6d851a --- /dev/null +++ b/docs/html/search/variables_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['classifiers_0',['classifiers',['../namespacesetup.html#abe96a9c38c1c61f9f0fdb002c482f785',1,'setup']]] +]; diff --git a/docs/html/search/variables_4.html b/docs/html/search/variables_4.html new file mode 100644 index 0000000..640713f --- /dev/null +++ b/docs/html/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_4.js b/docs/html/search/variables_4.js new file mode 100644 index 0000000..ea198d0 --- /dev/null +++ b/docs/html/search/variables_4.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['dashboard_5furl_0',['DASHBOARD_URL',['../namespacepenify__hook_1_1constants.html#a316c5a606e4440fb8224c6544c3a15f0',1,'penify_hook::constants']]], + ['description_1',['description',['../namespacesetup.html#aedf461ec52a946bda975938ba0b93ec0',1,'setup']]], + ['dir_5fpath_2',['dir_path',['../classpenify__hook_1_1folder__analyzer_1_1FolderAnalyzerGenHook.html#a53f73d69cc0f00763ee4830e4f0f7393',1,'penify_hook::folder_analyzer::FolderAnalyzerGenHook']]], + ['docgen_5fdescription_3',['docgen_description',['../namespacepenify__hook_1_1commands_1_1doc__commands.html#a3e42540047da37565afffeaf106cb948',1,'penify_hook::commands::doc_commands']]], + ['dotenv_5favailable_4',['DOTENV_AVAILABLE',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a152642ab83cf6219b604bda6122aba67',1,'penify_hook::commands::config_commands']]] +]; diff --git a/docs/html/search/variables_5.html b/docs/html/search/variables_5.html new file mode 100644 index 0000000..7b2ba97 --- /dev/null +++ b/docs/html/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_5.js b/docs/html/search/variables_5.js new file mode 100644 index 0000000..0ca10cf --- /dev/null +++ b/docs/html/search/variables_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['entry_5fpoints_0',['entry_points',['../namespacesetup.html#ada7058afc98897f073d3f3b8b9157059',1,'setup']]], + ['error_5fcolor_1',['ERROR_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a4ab4e61dfab7973c87bef59c6e1977fe',1,'penify_hook::ui_utils']]], + ['error_5fsymbol_2',['ERROR_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#aa564e1e1d016c8227d076542e74cecb0',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_6.html b/docs/html/search/variables_6.html new file mode 100644 index 0000000..fb1de8f --- /dev/null +++ b/docs/html/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_6.js b/docs/html/search/variables_6.js new file mode 100644 index 0000000..6f038b5 --- /dev/null +++ b/docs/html/search/variables_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['file_5fpath_0',['file_path',['../classpenify__hook_1_1file__analyzer_1_1FileAnalyzerGenHook.html#a9b03b88a9ce1b9af945279375048dc32',1,'penify_hook::file_analyzer::FileAnalyzerGenHook']]], + ['folder_5fpath_1',['folder_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#aa67c06dd12b1bafaeaee81c41dcb7e25',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/search/variables_7.html b/docs/html/search/variables_7.html new file mode 100644 index 0000000..cf8dcf4 --- /dev/null +++ b/docs/html/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_7.js b/docs/html/search/variables_7.js new file mode 100644 index 0000000..05d3ba9 --- /dev/null +++ b/docs/html/search/variables_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['highlight_5fcolor_0',['HIGHLIGHT_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aba01b8259f0d66cdc2b4a1b58f9736fc',1,'penify_hook::ui_utils']]], + ['hook_5ffilename_1',['HOOK_FILENAME',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#ae82fd46e5a9219da1478b0476b8214b1',1,'penify_hook::commands::hook_commands']]], + ['hook_5ftemplate_2',['HOOK_TEMPLATE',['../namespacepenify__hook_1_1commands_1_1hook__commands.html#a6a45aad71c8d32ce11a6dff8cee8bee7',1,'penify_hook::commands::hook_commands']]] +]; diff --git a/docs/html/search/variables_8.html b/docs/html/search/variables_8.html new file mode 100644 index 0000000..88cbb01 --- /dev/null +++ b/docs/html/search/variables_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_8.js b/docs/html/search/variables_8.js new file mode 100644 index 0000000..6c4b704 --- /dev/null +++ b/docs/html/search/variables_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['info_5fcolor_0',['INFO_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a9fdcb180915696f5d217032a62c3857c',1,'penify_hook::ui_utils']]], + ['install_5frequires_1',['install_requires',['../namespacesetup.html#abead4f26b530856f858f0d44c7cf2588',1,'setup']]] +]; diff --git a/docs/html/search/variables_9.html b/docs/html/search/variables_9.html new file mode 100644 index 0000000..36c49bd --- /dev/null +++ b/docs/html/search/variables_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_9.js b/docs/html/search/variables_9.js new file mode 100644 index 0000000..4d28226 --- /dev/null +++ b/docs/html/search/variables_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['jira_5fapi_5ftoken_0',['jira_api_token',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#afc5c90e53b702f9fc27e2ee7d3f991b9',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5favailable_1',['JIRA_AVAILABLE',['../namespacepenify__hook_1_1jira__client.html#a5593ea3415081eca1eea92e4c1ad1aa2',1,'penify_hook::jira_client']]], + ['jira_5fclient_2',['jira_client',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#aefb3f96c79358cf3a95d96d3747235b6',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5furl_3',['jira_url',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#a3c0cfecff02a75cb7001509a595b8197',1,'penify_hook::jira_client::JiraClient']]], + ['jira_5fuser_4',['jira_user',['../classpenify__hook_1_1jira__client_1_1JiraClient.html#ae56104d5aa7bda7bb26d169c4b46038c',1,'penify_hook::jira_client::JiraClient']]] +]; diff --git a/docs/html/search/variables_a.html b/docs/html/search/variables_a.html new file mode 100644 index 0000000..0005c6a --- /dev/null +++ b/docs/html/search/variables_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_a.js b/docs/html/search/variables_a.js new file mode 100644 index 0000000..1b06afc --- /dev/null +++ b/docs/html/search/variables_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['llm_5fclient_0',['llm_client',['../classpenify__hook_1_1commit__analyzer_1_1CommitDocGenHook.html#ad93360e31f2ec58a0d7c9f08b219028a',1,'penify_hook::commit_analyzer::CommitDocGenHook']]], + ['logger_1',['logger',['../namespacepenify__hook_1_1file__analyzer.html#af419a4965f079d58cac5a5281ddb1828',1,'penify_hook.file_analyzer.logger()'],['../namespacepenify__hook_1_1git__analyzer.html#ac4ce143fdca789a79c66852c37d7363a',1,'penify_hook.git_analyzer.logger()'],['../namespacepenify__hook_1_1utils.html#a0c0c1ed6b197038085c94a90ceedfb01',1,'penify_hook.utils.logger()']]], + ['long_5fdescription_2',['long_description',['../namespacesetup.html#a4cda9dbfb952875376a0749fe08a5bde',1,'setup']]], + ['long_5fdescription_5fcontent_5ftype_3',['long_description_content_type',['../namespacesetup.html#a3796ea10c998699d07d391414ff5d720',1,'setup']]] +]; diff --git a/docs/html/search/variables_b.html b/docs/html/search/variables_b.html new file mode 100644 index 0000000..757c068 --- /dev/null +++ b/docs/html/search/variables_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_b.js b/docs/html/search/variables_b.js new file mode 100644 index 0000000..0081627 --- /dev/null +++ b/docs/html/search/variables_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['model_0',['model',['../classpenify__hook_1_1llm__client_1_1LLMClient.html#abc2cb6b1d6d9b5dc16401ca078ec8c10',1,'penify_hook::llm_client::LLMClient']]] +]; diff --git a/docs/html/search/variables_c.html b/docs/html/search/variables_c.html new file mode 100644 index 0000000..451a136 --- /dev/null +++ b/docs/html/search/variables_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_c.js b/docs/html/search/variables_c.js new file mode 100644 index 0000000..eb3ec51 --- /dev/null +++ b/docs/html/search/variables_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['name_0',['name',['../namespacesetup.html#ab3a7a0638d76a01367c5bc3cc699447f',1,'setup']]], + ['neutral_5fcolor_1',['NEUTRAL_COLOR',['../namespacepenify__hook_1_1ui__utils.html#aca0fcee81606857497520ae4290bc9f5',1,'penify_hook::ui_utils']]] +]; diff --git a/docs/html/search/variables_d.html b/docs/html/search/variables_d.html new file mode 100644 index 0000000..aea4286 --- /dev/null +++ b/docs/html/search/variables_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_d.js b/docs/html/search/variables_d.js new file mode 100644 index 0000000..e4b61ad --- /dev/null +++ b/docs/html/search/variables_d.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['packages_0',['packages',['../namespacesetup.html#aff2375a361fd5865c77bd9aa093be747',1,'setup']]], + ['path_1',['path',['../namespacepenify__hook_1_1commands_1_1config__commands.html#a4b202072a3a3b8515c9c254622e9c880',1,'penify_hook::commands::config_commands']]], + ['processing_5fsymbol_2',['PROCESSING_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3b208e2750a38dd09467a73e4afd9756',1,'penify_hook::ui_utils']]], + ['python_5frequires_3',['python_requires',['../namespacesetup.html#aa7ca7bc9391b217e81efeb03689d8dbf',1,'setup']]] +]; diff --git a/docs/html/search/variables_e.html b/docs/html/search/variables_e.html new file mode 100644 index 0000000..ec3793e --- /dev/null +++ b/docs/html/search/variables_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_e.js b/docs/html/search/variables_e.js new file mode 100644 index 0000000..90e3cd7 --- /dev/null +++ b/docs/html/search/variables_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['relative_5ffile_5fpath_0',['relative_file_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#ab702c0c3ba81d159d7c3bcd7ea2abba4',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_1',['repo',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a3a9ddfa1dfba81fe21214fe486389369',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fdetails_2',['repo_details',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a9cca3465b0cc00d78324b0a9eac1d7f5',1,'penify_hook::base_analyzer::BaseAnalyzer']]], + ['repo_5fpath_3',['repo_path',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a957e81a1ab561f6cecfbe999e7b85499',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/search/variables_f.html b/docs/html/search/variables_f.html new file mode 100644 index 0000000..ee82fce --- /dev/null +++ b/docs/html/search/variables_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/docs/html/search/variables_f.js b/docs/html/search/variables_f.js new file mode 100644 index 0000000..2dcc04a --- /dev/null +++ b/docs/html/search/variables_f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['success_5fcolor_0',['SUCCESS_COLOR',['../namespacepenify__hook_1_1ui__utils.html#a22c450c5e2b5394618ecf9b636560df4',1,'penify_hook::ui_utils']]], + ['success_5fsymbol_1',['SUCCESS_SYMBOL',['../namespacepenify__hook_1_1ui__utils.html#a3c6fe4bd17c1a5fe76587225ae4beb3e',1,'penify_hook::ui_utils']]], + ['supported_5ffile_5ftypes_2',['supported_file_types',['../classpenify__hook_1_1base__analyzer_1_1BaseAnalyzer.html#a0cac0310ec635aa64a34857cf30ce1eb',1,'penify_hook::base_analyzer::BaseAnalyzer']]] +]; diff --git a/docs/html/setup_8py.html b/docs/html/setup_8py.html new file mode 100644 index 0000000..0b2996c --- /dev/null +++ b/docs/html/setup_8py.html @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/setup.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    setup.py File Reference
    +
    +
    + + + + +

    +Namespaces

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

    +Variables

     setup.name
     
     setup.version
     
     setup.packages
     
     setup.install_requires
     
     setup.entry_points
     
     setup.author
     
     setup.author_email
     
     setup.description
     
     setup.long_description
     
     setup.long_description_content_type
     
     setup.url
     
     setup.classifiers
     
     setup.python_requires
     
    +
    +
    + + + + + diff --git a/docs/html/setup_8py.js b/docs/html/setup_8py.js new file mode 100644 index 0000000..241d406 --- /dev/null +++ b/docs/html/setup_8py.js @@ -0,0 +1,16 @@ +var setup_8py = +[ + [ "author", "setup_8py.html#a3a57a4772d418a06835249cbade0d86a", null ], + [ "author_email", "setup_8py.html#a5b08034343aa2be607722a8b315f3625", null ], + [ "classifiers", "setup_8py.html#abe96a9c38c1c61f9f0fdb002c482f785", null ], + [ "description", "setup_8py.html#aedf461ec52a946bda975938ba0b93ec0", null ], + [ "entry_points", "setup_8py.html#ada7058afc98897f073d3f3b8b9157059", null ], + [ "install_requires", "setup_8py.html#abead4f26b530856f858f0d44c7cf2588", null ], + [ "long_description", "setup_8py.html#a4cda9dbfb952875376a0749fe08a5bde", null ], + [ "long_description_content_type", "setup_8py.html#a3796ea10c998699d07d391414ff5d720", null ], + [ "name", "setup_8py.html#ab3a7a0638d76a01367c5bc3cc699447f", null ], + [ "packages", "setup_8py.html#aff2375a361fd5865c77bd9aa093be747", null ], + [ "python_requires", "setup_8py.html#aa7ca7bc9391b217e81efeb03689d8dbf", null ], + [ "url", "setup_8py.html#afc13124aa5c0124e84e1d965e3f4b0fb", null ], + [ "version", "setup_8py.html#a2aa722b36a933088812b50ea79b97a5c", null ] +]; \ No newline at end of file diff --git a/docs/html/splitbar.png b/docs/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/docs/html/svgpan.js b/docs/html/svgpan.js new file mode 100644 index 0000000..2678d38 --- /dev/null +++ b/docs/html/svgpan.js @@ -0,0 +1,323 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + The code below is based on SVGPan Library 1.2 and was modified for doxygen + to support both zooming and panning via the mouse and via embedded buttons. + + This code is licensed under the following BSD license: + + Copyright 2009-2010 Andrea Leofreddi . All rights reserved. + + Redistribution and use in source and binary forms, with or without modification, are + permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this list of + conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, this list + of conditions and the following disclaimer in the documentation and/or other materials + provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY Andrea Leofreddi ``AS IS'' AND ANY EXPRESS OR IMPLIED + WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL Andrea Leofreddi OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + The views and conclusions contained in the software and documentation are those of the + authors and should not be interpreted as representing official policies, either expressed + or implied, of Andrea Leofreddi. + + @licend The above is the entire license notice for the JavaScript code in this file + */ + +var root = document.documentElement; +var state = 'none'; +var stateOrigin; +var stateTf = root.createSVGMatrix(); +var cursorGrab = ' url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAMAAAAolt3jAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRFAAAA////////c3ilYwAAAAN0Uk5T//8A18oNQQAAAD1JREFUeNp0zlEKACAIA9Bt9z90bZBZkQj29qFBEuBOzQHSnWTTyckEfqUuZgFvslH4ch3qLCO/Kr8cAgwATw4Ax6XRCcoAAAAASUVORK5CYII="), move'; +var zoomSteps = 10; +var zoomInFactor; +var zoomOutFactor; +var windowWidth; +var windowHeight; +var svgDoc; +var minZoom; +var maxZoom; +if (!window) window=this; + +/** + * Show the graph in the middle of the view, scaled to fit + */ +function show() +{ + if (window.innerHeight) // Firefox + { + windowWidth = window.innerWidth; + windowHeight = window.innerHeight; + } + else if (document.documentElement.clientWidth) // Chrome/Safari + { + windowWidth = document.documentElement.clientWidth + windowHeight = document.documentElement.clientHeight + } + if (!windowWidth || !windowHeight) // failsafe + { + windowWidth = 800; + windowHeight = 600; + } + minZoom = Math.min(Math.min(viewHeight,windowHeight)/viewHeight,Math.min(viewWidth,windowWidth)/viewWidth); + maxZoom = minZoom+1.5; + zoomInFactor = Math.pow(maxZoom/minZoom,1.0/zoomSteps); + zoomOutFactor = 1.0/zoomInFactor; + + var g = svgDoc.getElementById('viewport'); + try + { + var bb = g.getBBox(); // this can throw an exception if css { display: none } + var tx = (windowWidth-viewWidth*minZoom+8)/(2*minZoom); + var ty = viewHeight+(windowHeight-viewHeight*minZoom)/(2*minZoom); + var a = 'scale('+minZoom+') rotate(0) translate('+tx+' '+ty+')'; + g.setAttribute('transform',a); + } + catch(e) {} +} + +/** + * Register handlers + */ +function init(evt) +{ + svgDoc = evt.target.ownerDocument; + try { + if (top.window && top.window.registerShow) { // register show function in html doc for dynamic sections + top.window.registerShow(sectionId,show); + } + } catch(e) { + // ugh, we are not allowed to talk to the parent; can happen with Chrome when viewing pages + // locally, since they treat every local page as having a different origin + } + show(); + + setAttributes(root, { + "onmousedown" : "handleMouseDown(evt)", + "onmousemove" : "handleMouseMove(evt)", + "onmouseup" : "handleMouseUp(evt)" + }); + + if (window.addEventListener) + { + if (navigator.userAgent.toLowerCase().indexOf('webkit') >= 0 || + navigator.userAgent.toLowerCase().indexOf("opera") >= 0 || + navigator.appVersion.indexOf("MSIE") != -1) + { + window.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari/IE9 + } + else + { + window.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others + } + } +} + +window.onresize=function() +{ + if (svgDoc) { show(); } +} + +/** + * Instance an SVGPoint object with given event coordinates. + */ +function getEventPoint(evt) +{ + var p = root.createSVGPoint(); + p.x = evt.clientX; + p.y = evt.clientY; + return p; +} + +/** + * Sets the current transform matrix of an element. + */ +function setCTM(element, matrix) +{ + var s = "matrix(" + matrix.a + "," + matrix.b + "," + matrix.c + "," + matrix.d + "," + matrix.e + "," + matrix.f + ")"; + element.setAttribute("transform", s); +} + +/** + * Sets attributes of an element. + */ +function setAttributes(element, attributes) +{ + for (i in attributes) + element.setAttributeNS(null, i, attributes[i]); +} + +function doZoom(g,point,zoomFactor) +{ + var p = point.matrixTransform(g.getCTM().inverse()); + var k = root.createSVGMatrix().translate(p.x, p.y).scale(zoomFactor).translate(-p.x, -p.y); + var n = g.getCTM().multiply(k); + var s = Math.max(n.a,n.d); + if (s>maxZoom) n=n.translate(p.x,p.y).scale(maxZoom/s).translate(-p.x,-p.y); + else if (s'); + d.write('Print SVG'); + d.write(''); + d.write('
    '+xs+'
    '); + d.write(''); + d.write(''); + d.close(); + } catch(e) { + alert('Failed to open popup window needed for printing!\n'+e.message); + } +} +/* @license-end */ diff --git a/docs/html/sync_off.png b/docs/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/docs/html/sync_on.png b/docs/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/docs/html/tab_a.png b/docs/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/docs/html/tab_b.png b/docs/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/docs/html/tabs.css b/docs/html/tabs.css new file mode 100644 index 0000000..fb0977a --- /dev/null +++ b/docs/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:#666;-webkit-transition:all 0.25s;transition:all 0.25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked~.main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px, 1px, 1px, 1px)}#main-menu-state:not(:checked)~#main-menu{display:none}#main-menu-state:checked~#main-menu{display:block}@media (min-width: 768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked)~#main-menu{display:block}}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/docs/html/test__commit__commands_8py.html b/docs/html/test__commit__commands_8py.html new file mode 100644 index 0000000..12e6626 --- /dev/null +++ b/docs/html/test__commit__commands_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_commit_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_commit_commands.py File Reference
    +
    +
    + + + + +

    +Classes

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

    +Namespaces

    namespace  tests
     
    namespace  tests.test_commit_commands
     
    +
    +
    + + + + + diff --git a/docs/html/test__commit__commands_8py.js b/docs/html/test__commit__commands_8py.js new file mode 100644 index 0000000..1aa1dc7 --- /dev/null +++ b/docs/html/test__commit__commands_8py.js @@ -0,0 +1,4 @@ +var test__commit__commands_8py = +[ + [ "tests.test_commit_commands.TestCommitCommands", "classtests_1_1test__commit__commands_1_1TestCommitCommands.html", "classtests_1_1test__commit__commands_1_1TestCommitCommands" ] +]; \ No newline at end of file diff --git a/docs/html/test__config__commands_8py.html b/docs/html/test__config__commands_8py.html new file mode 100644 index 0000000..cef0d61 --- /dev/null +++ b/docs/html/test__config__commands_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_config_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_config_commands.py File Reference
    +
    +
    + + + + +

    +Classes

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

    +Namespaces

    namespace  tests
     
    namespace  tests.test_config_commands
     
    +
    +
    + + + + + diff --git a/docs/html/test__config__commands_8py.js b/docs/html/test__config__commands_8py.js new file mode 100644 index 0000000..2eebb0e --- /dev/null +++ b/docs/html/test__config__commands_8py.js @@ -0,0 +1,4 @@ +var test__config__commands_8py = +[ + [ "tests.test_config_commands.TestConfigCommands", "classtests_1_1test__config__commands_1_1TestConfigCommands.html", "classtests_1_1test__config__commands_1_1TestConfigCommands" ] +]; \ No newline at end of file diff --git a/docs/html/test__doc__commands_8py.html b/docs/html/test__doc__commands_8py.html new file mode 100644 index 0000000..e52afc8 --- /dev/null +++ b/docs/html/test__doc__commands_8py.html @@ -0,0 +1,167 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_doc_commands.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_doc_commands.py File Reference
    +
    +
    + + + + + + +

    +Namespaces

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

    +Functions

    def tests.test_doc_commands.test_generate_doc_no_location (mock_getcwd, mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def tests.test_doc_commands.test_generate_doc_file_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def tests.test_doc_commands.test_generate_doc_folder_location (mock_api_client, mock_folder_analyzer, mock_file_analyzer, mock_git_analyzer)
     
    def tests.test_doc_commands.test_generate_doc_error_handling (mock_api_client, mock_git_analyzer, mock_exit)
     
    def tests.test_doc_commands.test_setup_docgen_parser ()
     
    def tests.test_doc_commands.test_handle_docgen_install_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def tests.test_doc_commands.test_handle_docgen_uninstall_hook (mock_exit, mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def tests.test_doc_commands.test_handle_docgen_generate (mock_get_token, mock_generate_doc, mock_uninstall_hook, mock_install_hook)
     
    def tests.test_doc_commands.test_handle_docgen_no_token (mock_exit, mock_get_token)
     
    def tests.test_doc_commands.test_generate_doc_with_file_exception (mock_api_client, mock_getcwd)
     
    def tests.test_doc_commands.test_generate_doc_with_folder_exception (mock_api_client, mock_getcwd)
     
    +
    +
    + + + + + diff --git a/docs/html/test__doc__commands_8py.js b/docs/html/test__doc__commands_8py.js new file mode 100644 index 0000000..31809a6 --- /dev/null +++ b/docs/html/test__doc__commands_8py.js @@ -0,0 +1,14 @@ +var test__doc__commands_8py = +[ + [ "test_generate_doc_error_handling", "test__doc__commands_8py.html#aec76cc25c23476794234cdadbcaef0c0", null ], + [ "test_generate_doc_file_location", "test__doc__commands_8py.html#a0e74c920f258f442914771164fe26b45", null ], + [ "test_generate_doc_folder_location", "test__doc__commands_8py.html#a4bb75610e40d94d42bc169b25403c186", null ], + [ "test_generate_doc_no_location", "test__doc__commands_8py.html#a806110833eb0aad547156faf014b31d8", null ], + [ "test_generate_doc_with_file_exception", "test__doc__commands_8py.html#a335e7fd4912192c7276cf31bbebc6eb0", null ], + [ "test_generate_doc_with_folder_exception", "test__doc__commands_8py.html#a64165ddfdb3071a88422f080f0e529a3", null ], + [ "test_handle_docgen_generate", "test__doc__commands_8py.html#ab158ffa48469b6c097a7a55fcb20c21a", null ], + [ "test_handle_docgen_install_hook", "test__doc__commands_8py.html#ab74688baa8c9b5ba302c2877a9789d05", null ], + [ "test_handle_docgen_no_token", "test__doc__commands_8py.html#af9b01e5fc89255cac96747fa081c442c", null ], + [ "test_handle_docgen_uninstall_hook", "test__doc__commands_8py.html#a1458af9ad0128c3ca1263b552fd5e482", null ], + [ "test_setup_docgen_parser", "test__doc__commands_8py.html#a0f27751d0ba2acfe40ef7e85bccf47d7", null ] +]; \ No newline at end of file diff --git a/docs/html/test__web__config_8py.html b/docs/html/test__web__config_8py.html new file mode 100644 index 0000000..1fbe614 --- /dev/null +++ b/docs/html/test__web__config_8py.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/test_web_config.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    test_web_config.py File Reference
    +
    +
    + + + + +

    +Classes

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

    +Namespaces

    namespace  tests
     
    namespace  tests.test_web_config
     
    +
    +
    + + + + + diff --git a/docs/html/test__web__config_8py.js b/docs/html/test__web__config_8py.js new file mode 100644 index 0000000..d691683 --- /dev/null +++ b/docs/html/test__web__config_8py.js @@ -0,0 +1,4 @@ +var test__web__config_8py = +[ + [ "tests.test_web_config.TestWebConfig", "classtests_1_1test__web__config_1_1TestWebConfig.html", "classtests_1_1test__web__config_1_1TestWebConfig" ] +]; \ No newline at end of file diff --git a/docs/html/tests_2____init_____8py.html b/docs/html/tests_2____init_____8py.html new file mode 100644 index 0000000..a1c6cd9 --- /dev/null +++ b/docs/html/tests_2____init_____8py.html @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/tests/__init__.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    __init__.py File Reference
    +
    +
    + + + + +

    +Namespaces

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

    +Namespaces

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

    +Functions

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

    +Variables

     penify_hook.ui_utils.autoreset
     
     penify_hook.ui_utils.INFO_COLOR = Fore.CYAN
     
     penify_hook.ui_utils.SUCCESS_COLOR = Fore.GREEN
     
     penify_hook.ui_utils.WARNING_COLOR = Fore.YELLOW
     
     penify_hook.ui_utils.ERROR_COLOR = Fore.RED
     
     penify_hook.ui_utils.HIGHLIGHT_COLOR = Fore.BLUE
     
     penify_hook.ui_utils.NEUTRAL_COLOR = Fore.WHITE
     
    string penify_hook.ui_utils.SUCCESS_SYMBOL = "✓"
     
    string penify_hook.ui_utils.WARNING_SYMBOL = "○"
     
    string penify_hook.ui_utils.ERROR_SYMBOL = "✗"
     
    string penify_hook.ui_utils.PROCESSING_SYMBOL = "⟳"
     
    +
    +
    + + + + + diff --git a/docs/html/ui__utils_8py.js b/docs/html/ui__utils_8py.js new file mode 100644 index 0000000..04380b0 --- /dev/null +++ b/docs/html/ui__utils_8py.js @@ -0,0 +1,29 @@ +var ui__utils_8py = +[ + [ "create_progress_bar", "ui__utils_8py.html#a12b92532b1458af94f3649d411b5505c", null ], + [ "create_stage_progress_bar", "ui__utils_8py.html#a3da02cd1140179a9ce60f62c85fccfef", null ], + [ "format_error", "ui__utils_8py.html#a4dd934568897433fa73f9cc182ac4a3e", null ], + [ "format_file_path", "ui__utils_8py.html#af3441fb3c2c3850b8b3b6455a9fdaba4", null ], + [ "format_highlight", "ui__utils_8py.html#adcb97fc26b405d2b9cdf5eb7aecc5452", null ], + [ "format_info", "ui__utils_8py.html#a92c3e466d1912058167be2eacf85b9f6", null ], + [ "format_success", "ui__utils_8py.html#a532cdb4de7c679ce8b29c3e9116c4776", null ], + [ "format_warning", "ui__utils_8py.html#a0a6fd2613c6fe053b6e4356cd9e5cda2", null ], + [ "print_error", "ui__utils_8py.html#a6f0acd7dd91abfe67d0807803bc3b65f", null ], + [ "print_info", "ui__utils_8py.html#a811f0adf6e9bf71510c379b6fa155e44", null ], + [ "print_processing", "ui__utils_8py.html#adfcbbfe39029ab6d1dd33e7bf75ae115", null ], + [ "print_status", "ui__utils_8py.html#aa6e684c00e26199440137a87ed9b195c", null ], + [ "print_success", "ui__utils_8py.html#a2b16aa6b68a9edea5f29f84f1c4be79a", null ], + [ "print_warning", "ui__utils_8py.html#a1ffbb9671dbe233770268e2dd66a67fa", null ], + [ "update_stage", "ui__utils_8py.html#a5a7340d0fc60fb80f17514d60bf45f1d", null ], + [ "autoreset", "ui__utils_8py.html#ab560cfade398ac1e0bd47befb52d9f71", null ], + [ "ERROR_COLOR", "ui__utils_8py.html#a4ab4e61dfab7973c87bef59c6e1977fe", null ], + [ "ERROR_SYMBOL", "ui__utils_8py.html#aa564e1e1d016c8227d076542e74cecb0", null ], + [ "HIGHLIGHT_COLOR", "ui__utils_8py.html#aba01b8259f0d66cdc2b4a1b58f9736fc", null ], + [ "INFO_COLOR", "ui__utils_8py.html#a9fdcb180915696f5d217032a62c3857c", null ], + [ "NEUTRAL_COLOR", "ui__utils_8py.html#aca0fcee81606857497520ae4290bc9f5", null ], + [ "PROCESSING_SYMBOL", "ui__utils_8py.html#a3b208e2750a38dd09467a73e4afd9756", null ], + [ "SUCCESS_COLOR", "ui__utils_8py.html#a22c450c5e2b5394618ecf9b636560df4", null ], + [ "SUCCESS_SYMBOL", "ui__utils_8py.html#a3c6fe4bd17c1a5fe76587225ae4beb3e", null ], + [ "WARNING_COLOR", "ui__utils_8py.html#a177bc9b44157844c999e0c1c2c6936ff", null ], + [ "WARNING_SYMBOL", "ui__utils_8py.html#a6eaea98f1a8cbe16a181647da2fc0a16", null ] +]; \ No newline at end of file diff --git a/docs/html/utils_8py.html b/docs/html/utils_8py.html new file mode 100644 index 0000000..fba5373 --- /dev/null +++ b/docs/html/utils_8py.html @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/utils.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    penify-cli +
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    utils.py File Reference
    +
    +
    + + + + +

    +Classes

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

    +Namespaces

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

    +Functions

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

    +Variables

     penify_hook.utils.logger = logging.getLogger(__name__)
     
    +
    +
    + + + + + diff --git a/docs/html/utils_8py.js b/docs/html/utils_8py.js new file mode 100644 index 0000000..073b162 --- /dev/null +++ b/docs/html/utils_8py.js @@ -0,0 +1,8 @@ +var utils_8py = +[ + [ "penify_hook.utils.GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ], + [ "find_git_parent", "utils_8py.html#a4ec5335a4026c22a34a3a8ccf665a5f2", null ], + [ "get_repo_details", "utils_8py.html#ae236f3c4c8bf5dcddbb92b4c2065eea3", null ], + [ "recursive_search_git_folder", "utils_8py.html#a95c3f9c80860d6a2e2d061d2fb660a3f", null ], + [ "logger", "utils_8py.html#a0c0c1ed6b197038085c94a90ceedfb01", null ] +]; \ No newline at end of file diff --git a/docs/penify-cli-Penify-dev-g.tar.gz b/docs/penify-cli-Penify-dev-g.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..27e4845e2c88d8f292e5d07b87bc14efd0ddd381 GIT binary patch literal 791577 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�X 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∋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

    WQKnvs5Om;EIk7=QSA5VC} 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�TUzCXdAjc7*vJowUAIaeG9EeB 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 Q!v8_|53MUs+5l)#07*vMI{*Lx literal 0 HcmV?d00001

    F{iukI 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≀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%0D+H)f{jXz2-8FD&;sCt6=P3fanJ1ZY&vUPX@<$c! zBW5(=nu|GqCAINE1%op8QwHFaB5D5`q7jw2?l zk3kf~(V^5lB`&G(sq*4p&k!`-W;BB!GFsr|w8v@PbF_D}?BVG*kRm$aFkNg+#S|U! znPy^>PGC0V%yAX?>UXLR42zzy6}RSQ}9cv82&V zYdh#d0RLF{kna6vvowaMBrr;)AcB}xF}4Ro^bJe?17)1KF^SH|B)lPFP2s9i;sis| zG;?Vp{Uc#=^rJvm95)z9OS8&3tp1#w0+UMK7`!I^Ij-pqZC4M&xAXpp9ct}8`Xd!1O35)~IUaL|3LTGC z3SSc#0k@}T6B221a#MMR%}?X|{rP7a6Rr8i)!=cE?myCW;_MGNdU`dik?r+~vu4*l zvWE@#a_g!@)@U)a^V=*M6qhK$Ybq;#uj*m5w*B{aOnL~|>XhrT zY`mo>ALaFYU##;de~7@%U)RIJj{yMya@e8Fg2HmJJ=diZ9S)6%zya>NhEI{kfFWE- z8}cZnT`m35vo&s3TsbkAkl9vsJ#8~c!!I;(SiIot$EkM_6PWIV*)JwRK7OZJy^-Y~ z2*7y4v%gBf1Zv!zfvtl)P(kl<9UQ?+8!f^Dp6Ym@)P_%}MCory zleDV6riLhkd7UqvpBGls3-#(;o%e(#($%@w%eq=L)hi2C!?tJ^AO|UEnuF1j?DjD* ziUtsELtWrqNI@9NWa(Taek$!tLwGbtDI~Ajw$L|>W7U?bi$`iIGm#y5b*>p`E~>pL zw{!HSa?0!GtGQd!7D{Cc-CsF3Au|BnbjDMdy1G@)A=pDwvRnCe2*z(9{?U)ZFGdl`R%Q{3Eu5Eu;UIbbWt^22GytA z(KR1Z4~qU~U;KRjosJs9*`8rAiBv7(xKJ#?JMs833(DEfx_e6EFz@^eaUF~DS>6U2 z`ZTqW2fUk^Zg&GS{*AnIQtlCR8B7F0fB6UEvYpq7j?XO=LlXA)9842-BELcmsKQHs zYsLN9tU`^Xw;gSVs76ieF6p})Ieqb^w~|+T*6+n~NETyRlBQsuF%h}*_H=*k3!C9Xr&quPE_V09i} zJv98<0UK(Bmtl|MB0lF<#KtW99BfQjmTOT|ax7eQt&l$zaYK??5Qa?zcx++lv z!lXg+1$g-))(ClaV&PZZJ)(gyu|}Eq|8RCqU7|EW@{VoWwr$(Cb;q`CTX$^Rwr$(? z%+9y_5B8-`Kh^0|omH6`nHgc5p!x^Ki2(^!A_f{dH>4mQ^(9a4F6_ModO%%P6SBSd zK~f+vo4@?ai7DXEA@&Ow6vbv0;d(ZgWpMiRZre2f>dxOi546zFg z(d-%o;QbYs8C@Yj{>g^K=xum{D_+=;9!qu7hw%`-HCml+Oz;GwdpSrX&zgd`B1%#9^ zijoP>RWN6yGDh*JYjMmz*5yl({bR8SYlN^{oWR;s{Sf-=zyN}noO5Mby0IZ0M?)6kI|nM6 z4_Eg0B`rllLQ;xywkKnH85+ttdLG!y_~_;GEN9+t%*xT#+2=a@1t>-h_EK7QR%?GR zG;(21=e{csxXLV4{bW1h{IS*~;NKR}m{Aj`aFzNDbAklrEy$9`eBw=0!}g9?ucv+n zTJ7Epzwy-Ab#s4CJU?}R+?a6pJYZ>;|EQ_wm7=KsAo6q#*oB4oRCHfZfR603EznPrM$5AbUOp7+fOsn zOwN%P>gm{Y2Vf?36@{CTR3+`-m3m+Rgv5LUNRrM0E%D7S^%7LeSbY9uLPN%0gihXw zh~j_Md!(e_J=RCgNCh_R>>U_y z@`-(OiYp&##-9mq6zTzjk}Y~Tkr9$-P4B!nlD_ZfSO;8;@tqwE7a5fQdX;|qSW-SH zqow-T*1G(|;CbkG-7H}>i;(rH}(Lrp3=D{O8tHM zQGj@{8~eT{>HrLqTO%mzbz19*sy2ynh0oA*r`aqAQI~RkbjU85S#8mDneM9r*H*rB%veB+Rb5OYn{rk;( zYjm<$&6r-dd-Qc28=c5E`V3A@?#=fM)^t6+K+MK~H!4Ux@DS!d%GAGoqHiIb)TGQ1 zjboKC6PDms2?P3P&1KxZ{4al)kyMWCZh%v!q{;qH!p&0KAo4NCPoueq?+i$JvC!Rt z(mAUauxEmF#jCBDv#QQW=IZ!o@H!;X8L^2IiVaqW31$FCIi4}BjY9d8$#c5934qhs z)!Gh#L**iP?=kd}7x_Gt`#_*&UtVxE8({nErg1siMrTl3u5fN**_pPHAb&SA9vbFb zw8k!(Vo#!Rq*YDzdU1gk`|B}g*m6vBjL!Eu@B?>1y9WRRuKtz~SG!4oON~eNu}6|M zyL*_l6iwZA18?Y+0<2%>kNKtiYg@a~P(>`}DSIZYc*H&fYasY{rW6;sLAbT2cNauFq1e&^0gI!E#aYPNH4;J5RTf z!qZKexSuc^Bh4vk;+0RjGA!mJMABX;($>(8xuqK0Z>;iwUt0_pLVu*+ONiuEe#e(9-Do@yZ(I%}d&j?uu|c$ps{(0OoB$cVEuT8^+RhEH@1_ zhU=&>2FMq*`RQj;XD#7?J>e6@r?(Lr9Jt!-t3PeZD8p^)*L5wayE@NY@7TKeDc;AW zA&xbcr_$DfNJ=MMhYb+*RFx2X@* ziXn}?ckEy`E29geK8Yvec2q!JMmT3F)hz~AnLga~uF~mWuIOLl^{(Qz&qAsywK6Ne zur7K*%(-L@`Br^Ey|nS7j|${eZxSYW+T(!g4Gli*nfLRDTlvB2-vN@{Uz^di%|RQ` z8FGTo|GeLSm?SE2d#@nR&(O6Uu-z1qu&vemWvG9u>gb!~KiN5J3xrN+c#8!$O4W@o zQx@Vh4@;>`s{0+)k+J9%yteV4b=Wh0tQ?U~GviYM=Mxk0CA6V~XawpjXW9Pc36IR0 z>;XD!^>fk=bn^Oh=0;w~v8v9di+VbZWm*5yZ7sc_8x@&<6|0+RfMTXqX(Z)BpSB~m zGIP(AU(#onaTG~&q)cN#b<_DrBMxj}&HYU+ zOXJS%=}lB4*962xRY*|P>;{fMJyEHXLx3w~)k!fH`VFiNu`Z>LTm!>|^9`0AZB;w) z7|0kG6ZN_+mi8s5)xOLWjq92{##@#Pw_x@ zPyct`HIE*O3vTq$r$mCDF8_TH^Dr`x?=(t0{pXy zZ^Zr!yAER@0uTxnIj)U^N+Eu4TwM#StNU5+N|fw(%(x6S@p1b zaVWAdi<*_dyhin-04+EvTo?QD;>6Ti7{}ERl+}=rS{SI+bGFaZ@7Mg-!QCtC7)7sp z*SEvUpC4{5WgQ{!n}6XcuMT^QMb*y`mC7afRvUdT^~F~S+>Ge`NBlPE(8fL7Y0?9I zNT`mj9C>}&&4!vcrxLa&G$V|g%_!14JkF_)wi1H?(dCaqC66@(62J*)v1jWkRQ`)Hi&sJkG4m$>8a!Ap zDd2+;3ab%tc1Y4w$k9`X;v@0$MuIa#C*#Us?Xu}yT*9eUEt6dzN$XUGhIXj$1Mnht zP|kSk<5u1BYfT5d$B10!3WT;W7gxve8zik&3SBE4hubrWJZb#hz8}jhMSN>k#v#BT z%~S$BbGbdfM zh%B2rr~5R9)%eC**#?JDvYRT$KnlD#wMG;*9m)Yc>_-4)kHbCOIL z?bAqoz}trHHveH10AgrzFb4#Kw9C@6P5;<#!KX?|C5dsO|qZ00>H!b&~p*+Xc7(T zJ>U=X++QR#c6R~sMAdq?wgw?f0Y{8}d=2pdiwFR^)Yb8Om+Z=JE3XL8L@ZjgA)a|s z>3|<~CrSO#LgY}tLS1llTkf}M%nsQVD@+((zv?Oq_h0pfC7zv_!*v|BHejPexQYPG zL3ECSI#lSfq@Z{xc!u$+;8%!><7=%-XVCY~#i9hyFkpqZbIH$&LO!a`nI)(5?1VrQ zgDp#wt%7+@&r-qxPi2f%Qmh>XTdVQ5X5f*LCF}Y}3PP&fEfpb>N?#S#=#T;kMlTU# zl*?uHL3=`~#%}h1kGr9p{cuy%R>dYjk>k7_n&`}Yo<`J5Nou*`e{&rX`Hg9dQ&%;^ zB0Ta$3;wAfdjYnj0~dD~6{>ne(tQV+MF+Gi_WiR7c0+^rDYHY$jUn5iU{hZNp3{_p z=P8BwXCgD}jb#xr;)(_F<7-N!kop%tvD9XL8BEUk%5ZBrB{QdstJRWjSK~geExJe; zseA7)d&aG?;Y;~DA7xdA>+O=?;1i(>nKRjpg%Eqd3$Zg=k%aBmPm1Z7?Nw@Qq<=|m ziAX+T)tD%%nJp0vDT^990~i6!;GbP(fFcy*g&?9Jl7GeaP3Iz;4PW*UZ8r+O6hsz* zm%K37TD0ya^9kgF$7a7y$%0zdSyOB2tgl>lLdBcSf_=pSy7+=qEp&BF^m0pTMf9el zeR}o+M-sFDE3VhXB-kNuIE!@b7%b7kK7MYU8U?qf}>h%2%P{A)`b_X?5up6t#oVi zyrjH2vaK(l?<_xP-Vy$!S6_yDq<}&gbuR29H|AhI+9OOEUUIt6{%9=~Y_L)>e-=Q= z*isK(_ObnK#>7CPZE|+r5zB1n9rr|>C(&9+RplVVX^H@nv*m$f@V@<1SdkRid_4&?~b5m*{yfjG-R??Se@X)d2dD=LSN| zz+y082a*7}B3;Rar+u(KeIjK()E1%eSC$HPX>Qg@1p2Ci5!ohrq!jUN&W;&i zfQ;X=W^C)qV7aS!_Cw^-?$iZC(5QTMZ>DSOAC0Z~%iCX(N$4vmh)kWUvR^C5QZuhb zP`=4Ggi==I_t!^(2+_czE}hDVXqK2RHEtW>PZZbHrVNq-608y=FX98<7Tlg9kC8JG zkerR;Z;g}8f}2a<6+bw(1N{3N9^BB63-+6?F#mn_51ZnxF!UUoyYG&zYFKA^L9`yd zRQ&5vj%BX`8Mpv#quT4ScbQ1!!zJrEyL7MOPlTb@H@3@r(=tEHRe%NHym&wpM)M6UoW8-L(Z=c0k<#B*0^OWCIBX-8~Hsuq4lL(%~nGj&jL@)IutuO zRp2lEQcX`~H*{I-hnm>y*mQSp>ry*S$sG#q_-m)o{=x6 z`kl2bR(ym$o290yrWEf};U5x7XIJgsgQ1gLB4s)uek+SokqvB+Bvq=?0a`q{{$M6* zzZ4*0nU72%{o*DG`)rWQ5<&w6!s-FC+MtP0MeF_$|7IIlP5&%KRHPq{mSdn|Y*y1n zS7LfLTg&p7C zomb@!S<>iI@0%3Qht@WpW`(H3z<3&|*joZ|+w~2D?%9K4|7>b=)XC2|vH?efQ;i2! zE=@O3-T_ilf>>uoBonCy#MAkY1LzU53a?w~mF;WPtP}Kr@-#l9gH9VE@Shk8CDi;L zuU#*KFx^KGr8T)nWnmI>Me@Im#LyL0*6aF(zTFuSXeQ=x`}VlgHzjG zTo^H=SBkd>&-599qqq-y+|OfCGo>uwkMBZQ+mQKS*tKdEX1eL^m^*b;PDqi6ET}(( zC|Q)lOqQwH@cx82?MIzhX+C*KjXd)D$5iy$`0=5&h=ByZAM?j?&U~oaS+fpKvuf3( zCRxqTVvS7Tq=+R&@gO5Id8Ohx=Y83AzX}gp8a!LF*ae-?^MZZm*Zs~AJ6gA+{IQlh z!G)TmN z4I&Sui)$FL)#g(e8#mtW!rjChjoh*<2zgt})M7zSr^ue?5Gk+$hO&KACfTf0_sDf1 z_mr?p`hgRHZ|nsX$fr~|J31ZfRVL3aMfYGXAixwZ8KRBs9yHE#4`-A~Q!+Dc4>5mc zapK3*4}qUngOpP;p#A^yB&GIw5F=Ttza!u zqgS=%-b7NW-4VHDe4X9V74|l(IT?yO=wjda!2>*tLkeVtrj;uYDA)%By2*i_3iG)v$RF9zf>0TU zcLobck317cgQ&TyNpB`B#&^jC5BTrgya#2RiSJ6cP*L9*7QwV$(6cT{-l9sgI^olB zQ7*VZ=f9&;3>EyRiURo5U(hcF(qG53-LAM@Lg()XexvpZX_&+r7hc)X@oP6Ch{suo zU^Cm_nEws3K#Dupe7N9?-_X-|cfMR=8blnntDe`ga=SF{E3ry31i*3^j`hWnUs>uXI|J!`Kp{H=1uG)| zed02tPHyX%5+6m4%NK;^HAz+gVY{tcNPw((q~_C*IoWo{kCbPt3T{6WD9zM0uf78| zd0zI&RC2wu7AIwq$xc+?UmMxZT*s!hqW>jY;qDJbC-zSHFGK&4X4=mO&fS;W&@(F} z&a3UgxVw#8EPS(7^Bql6N}DHKmZ`87`n4G$4zQADGU6t{vMuYEyS$P}=F*of|uY}6a z7Pp4On90C7Ek8nVUQ|2QO)F%%+;wSX7RW`%C8Jf4Ic#BXa*Bb7$v(xJgl(uJ zOZ;auAv2MQSsUAm2lV!cy79R*vVdVO;fbQ%3S}B!c5-HZr-5?4FJapo%iE zge=OE982BoC7xku{4p+o49MDxp7(-1$G%gE{b(fR)1TjPwkyyb|La4QCK#mW|& z$J+*xBEyl(jJl8b2O@M=4@~({R_@4|(-SPA#vSWo-OSU+to3pXZJN~wtE-#|FhSAr zPQBF*;7na`Hh62XDpbax^a)(W3xf|(ALJ3TjV(iiAEZEXZ+r{5bd94nbC&3CKF`OZ zTvHZN~Ajg zdxRY#R%Y~|2a9}S1ti6 z=_%_YBQ@jCy~vQARFMA#)6;*T-J+N*#f5!uP^SeBy{BNUEjb-j`OhcNtY0wdYsx&m z0vY$RwjsUs7Y%2}`-ln$slO=K)ge2;0}g0Eb`|ceXPyv>&6zu+Ju4%hP!8tT{G&h7 z{Q#%1ah|f{5NHixt`epF_qZe27-Ry_kuYM(`KAl~76`ti`F8VpI7PzVo{BuyQv^7Y zN>hWF3W=@8n&MCgT$Z-G35_u;%?TE*Jlm+abX@?R+$LI@P`T&~I zW$1(Z+%sO}gQsSV!HN7SqXFk^6?JyV6>F^ED`fS=_L%n_!khnHY(w)DqL_Vul#scs zDHmPlxZ>39Ec1auYt!mpO9EKob7lTtzKW*3`AOBCu|CWo{68+biYf|V&Qq0o6LOzSMNF%1k4L+LKre*%gpXQXxEhtTpIj7 zhb|Sg``-Ag-Dojc8yHc$Ha5%k^?ja2iH0oZA+U5q@|HaOBa`ua6(Cs6%oLSAk_Kfdwwl$pm9j$bBHv?(yu94b%?UCz^?+(|Lt_F%Mgcj=Ro(+c#Yxo94 z4LnMcZ)I5v{__ljT$jE8+X_c}Gsift*f+n>*~-yH>hqPJuh)X zi`bKt)azf{&s)kV1@wWOVL-d#ZAF^X7zXn8@nt{Zqx>LdrsOL>jJP{O40fGcHoQZ{*vZ_=1uf0j`JS(ktO)3(|RbC$o?8AH4UiU zpJabx94Fx^6a(54tLRhAap*Vo7cQA>kGG3lcHFdw{p{k!m$$BO`0vNINNvE%yy0&s zNC_6XPu52ueln;)Bm!Z8`^ZNe-JFNeP-KueUHBCUf{bp(&GWA;o!8#Hu>w7-x{Klg z0O#M4Z0$PzzwlSVG;9Ao8B=k14dBG zHlBr~<%#&aMvlanXKZ=1@us6=NUQz6p|#8ptJBOFOk`doF380I10@~0;xwYIM$ibY zP|3RcJh|gA@jSw>pS6zVlV*EjzT5}3U9S!_GdVawV7+N$-EnDB=dr(*BMlv{dfHxo z&8Eh4Qe!UMWuG@IJ)jiv#l#Z{ruAA)l0$$)px}U~qOJvawX%=yYC+)egzbRJzO33B z=w$#K(QN)|`8z-yl&r_doWd!PARPQe2sHDc(RQOiIIdyz4YNUFmox#V4eb$52(vd% z7^-t(@ZULLxP~zyxZF-~$j5>bSS~=qD^J0S9`LtCk*hKhZY0>Q_$K)A`>eMS`Omnu z`}0@}<(oBK4Wi>mfs2&z#mCH2;LMOk#o1jiADICkq1TPt3w;>*;&Ep zs(ROOh3nL^p@aAOoltT7_sWgP;@%Z>XbjY%j87Ifx121mt2tO)Tew(!lY+8CG49Id z#|)Ey)sw)N0LkDS#g5xfK*3BiH7rwf)uCn?BP{FMHU9o_yI>lsg10e2_ws81oZlvBaU9qqAIP}}B zuxmGW@P(~*hsRema>y+TZ`iBt3F#pIZL-<_+XoU`E4|mm-?Pp>5F}I*%KrN2JQuW& z+!iYygm7&$@7T+YF7O(@p#R!otC6C}mXxn`4A3Knw;3ap)-sk_rsP?JjZQpoVH*!f zv>%wj2?VN4IRT6wucXy=c>;HgP(-*!rg_{G=9L8%DA*fHsQ3@0IY8B^l5f^g$Ks&c6O@q z2LKqs4-8oEFur5k_stKN@Tj+3i5UV`IgfE7_9IW9+jKjhSb$bgXZZbwdh+AUUEKB` zy7#xwiI-F)d!zBS)-=Rm4EO^5VvG3bk`uZZAI`68JV4j5(IF&3Yy8)_)I18hA8yXC z9oHSm4C}k=65H)g-0*^LyH_?>X6#=QUJ9Sj3n~II2lmhB&;qjkQ$yY!P7GLETU)S} zYrmASTNKnu_G}mk2XOIn5MaVR;!HC!lr0aHA=)Wn2Qs(lt*GB39#vd}?QWRS$r_T> zg!~b*@|iF*%0pw4I|*F1WdBRUMr+pmN4V=zEGP9VTq&xzJ*gxnC*~wYeB$*6rRJGi2jpQ;%bAKFal5Ecw`XJC z)aSMoYz&>n4xL5nXyko@ODl6uni0hzlLD$ECM_m{r*8n1%oh>i+h2)UJlrf$=bb^m zTcPUxdFc}=%k>o=n)fUMg?g=SOVqa%6*<~{182cX>xkNB(q7HL7tNXPPqT!B9S=}& z0$zPx@>XJNZGbge+8eNqLZcU<9?qyOozMoK{$^t?C-q#Xt3B5`bftmDkE(5uwlMCfc`sq$`xu#rqpA2?);^c@xA+gfs*;sPpKZwoXEVv94?K;1A z%0?@q1zma9o2%=d#=*?a_}?CT0)ig5sZmeQ*V|1`b{#V~uu>bVK2CuL)}cu&wXJYh zm?UlUtR${`plNEsET|Y-{eMxrsPfX5F?D_G0&+`rVlHN~@gRWF5@!t}fP^)#$+*(t z{DQ?znmjmRzc;a63QmD>+Zee9C*VP%O z46N{zJMo48Ch>K(=rYggcR5A}B~)0J+3C{3tg4H2(9y86;0xuAOV}>hsDsXB;Xq4mVg`3a3f*!g<)iTtnJ z`;@~_;L^0eEh_j4pqh9fRi?LA}IoSmc7o znSTlqaYz!l`$UcP1kD)2WqlA6d3@&LAZgsTz%X!hVuiuDEoHgD?!4Pcc&vM$PSm4SI!kTJ058|GO)#Jfyq zp)M$=-ay9g?08^iaJB>DZs6-D8VWHk_BHi7NWb3^;N!RGG*7aDLMy!ohOY&HO zsU^~{U)_2!ndRKBKxA=}BXzJc=7@Aj^LL4}v4{D0>%+^lF{P3Dg&a;dXjp&N*8nro zxLc%*eEo=uB^kXZ5tJH`bX!*-l&o@^`3yASk6BJB3bPM#TS-)Oo5u<_74qB{S)yBege!=a32z*rh#TZrvVdU8H z#ZqRyYz1FN2&a_!Sf$xWkTv5x0GfiA)G^ccdxYzrSdCH=oOREv!RuN`7PcGwp0Rnv z?n#{SL^?s=vRmX6j7aa{uz{@9vbOJF)!u&DAVlp8?yZ^fG zAJ{fFoP%(6UE8}eHdFyyympztI2C5d&S)(9yP9Blg@9q}&E!}(8G8XndS*gnfS_$Z)=x(4D&S-Up;1JBSmt)aPAtJ^ajf{F1`ztRAKaTZ78 zVemkvizD-3=*LYKzAT{*`QxeKKrW{a?8{}`5DnKvB=Kzs2v_I&vDvQy3iIVP91tiI zLjF3T@G?K0&YQj}YdWI#pxULTId$fE43 zauYQ~5wr2x4FKVVi(~N$-m=AOTQI3F1;591$c|g!i?!NuE?-v@|10}AWa!HUqfub% zn6`P$;t4vaJg6uAqgAX(BvHu}3b-$v96*l3^ej)?fg94)PVD2W=jhDMQHogcMnF}e zgM~d99`>M|HHT~O4M?(Hy9KfXk=sS#@tm={wzazUag#I8QjJHc*R~%1KrXFKHY1p5 zY=7=K=Pwk=F&eoK4rbar&&fdtxdij>Vb=nEkr$XNxmv>o?}I4dD*?Wl?H=49md)8X z*LnccGMC$-5S_uE#?GErR7Tl=8w48~_vO7WN9H*d~thkB9v(wy=Iopm7HGhhD6It^%gfL_=Lm zG-Rh;ni{;smJk5IU+relmKTWD~T#;b{ zeRNs`iE>>scmEyAUf{Y~YIViZl7fl7g9<@)O5Oddb}HzBKSZl-Zv4*YY6}^vTJIy+ zl0`7fIClz0XO~4VSM)OYf&i63&iN>*;(3{7HZWg0PB@u}wPoQ`{}-zC z!w2>W9YS?x>czrap}g7p`M!05p!Y~OWnw5TIZUqcXOr}ax<6WeA+bh-Ko&va&rV$ z?VQ%+Q|o7-j%4=eY;j!o=kLzvfrr<_zPYd#M9R_G7K*~~qHY&^zmEYGpB&x3gXpj5 zlL>CM<>Ad&Zuj-Vu+X7TmUPBd=l8QnV`X52ADY<7GEo~jmK|N>i|Zp7j3V>w3stYx zYk99|mtTv`aC#d?N%0IC4@1uU>tG`9$9;Dk)X%DIxA)UKm;!uA{Z0-4gobq01L??2 z8|9e`M+r;|dkeP2fd*>RN6_THIJBB7hTibW6eW5VhK!g+HDpH9zs?J$QE0FCA!i33 zCKC{7S%cGad9m^Efc)vA+@t&jxB+egf^Fh2az_$o3*8*5WJ|fK3lURO3y$u7LXEAj zZghlZ)KtUAgIGf!16r6mL=w79AJxK@RAql0Bw*RI!NRl|;rPfTs%YP)mg@ZkQxjOs z=4zsqBjX|cRkf2BZ?g~K2R3b&ndT6TkLS=-s}n1Z0>^V=XQL&rb!R1j)isXv6IrnktViUvDeZp&|_}+o#3qtf@*%hZ&8kU(yS5w(MO7SF(MY8>{`PG?inNA23)w z^)o|UvIYUpOq}p}>0b98naRt3^!{^>xtxf@KlU5x7BM2(4S#_KITNYkTbuk-w&TSa> zi~Mif2b5K^0dUs4p1(4pQ?t`srRhSRFY;m8z%V~N+O zHcn@T(D&H?^2KOU0>~)GoXKg+$xqrUfEzWYK_s{5-v}B-eMH^RSq0R#+ zq%21g@M3x!qUwmS0WL&>TRByVuiJ14!(!jCnk{rtgB_V@Roo0I}RSP??MI_alc9e zE|fv4JRbEr^Ld|V)o9uGe`*^Q-Xcwq*fAVE5dk`e#3fzfpX0(*@ZZZ9gbIqi zHzwqgWH-3(W0TWoH@{^T+Et@FEa`XY2o2ODFp$`IAkKK$)jgF6x!wCyNW}ljOv+P! zRX& zJ!0Y%-XLs{$SyCeZP(o?KXDL7(h`3Qya&CJ zd~r;~UZ~Jio~{q>E~(Y780D2B`s8clbr}EW@<=+(4Rp9#PkV;X=P9ynf}2gVgyoF=={2Awy%K+)hs?o8VhexGni~mt5$T{U z&ybVClvP)&>E#)Zz1O)5cMm z-0I%QH2~?HrxeEg`Q#xAPhkIZhWKzW@$Sv3O==bN11Zr64c+Z{ei<>cTIC796PIOB zC$<2Hwxa zS4&1&m~e-Hpz*TwT(38u@BQ|y9O8$&A&FyC1?-`2H20hY_rnjL%XIM)i&IXGtRS0x zPaotjH81xk?#yob8;Eq!hZo1Y=clsQh1)S1>4M29%&VdO;I#SgZzFGSuf|sAMWm%6 zg_|-Ew{_3)^}Ujr9JY_OU&8;1*aHlS@7C@3E#W1xasHmS+V4H~o}Bty?@wv3ydmJV zBO2$&*Rus&_E=q9In&~oM#F>}+UgwI;pAbZFh1-R&UiB*!TihWCBhb0Qz|?@Pg-8Z z>{z&Ip{{p>whb~0AR*Hgdf&SMl0#b~1~+xkYKw=b)|mhVA}4Rxx5S~Dc2*mKv@(vW zkDeDQlDSI2Rxrkn%;HF}haohm&%gPWI_i(_mW(+_7hU*}UlaQ)yp1Mb>FMz2Okc#y zMIPtnsTW#8BL%}q=QVOY-ODvGaOzlmgKQgf!X9<2V-`v)!pYb^^pO?Br7jJ=2-6bMhrDD*4JihPxO+O5-BgdeQ4vp#*&sQUp z`immZ9{;RnN}miMo}p!_pwOY~t*&l5$Qv!R5uw)r;Pg+lyFw>IKho8lW~ za;rA=pFj5v=%%~TC=^c))LD5TLv{X^@69$)k&v4m6~(g zaA3x6*5S&vuE>E4N5o?+gd!VK*70+XgH>+ARV87?cFAdooem zP8fsJi5xf_9YKRy%qCx~`VX6X`d+Vn8nlLp(8)7&4wy(Lz=Ya8S#jX*GUh*b^w+z# zTSiPd1Tx64nSW|E0b{aVf&2^P4PjC6K6po!!a0uY9?$w!lr%TJpJWniV-rk~Hr2M5 z3|BC_dHOx)5P~_^9rj4B=~YSH_7vT^$0{O(E3OKrUw-}pepoO^ zZ{f3jA3qbLPWN`Z7ixLOwB^3}p%b+oNT)!4yhIrBCl^6C4G^G*2^32B%FC1ncE=h| z53u6Rv@l0sjF%oue8eH1L0u1=7DGC*ak7ynQqXM%#Gnq3%#{uORJr{R)TS7V+kFz( zQ+`=PoW?P7@*r~MXy-$DkVrOVqf)Q|2Y4!k`9d9&0Lob)APgaHQlJkB3m~l|k**-e z;*N)NlnfkmhE=O8T2d$pQr`l4(t7iHz1Y&a_F_oMixz80SrZE|{repF7338&wUQx~W*}&;LB9H@aY0T5zPLRAr z=7U|Xq2gqZ6fd{Dr)dlw_qV6W=MU>g@q0RgssdG7$XpR_iVDXAM*hFa`b|^q7bDf$ zN6HTO%bUxXqY;K-U!Wf)!NI@ZY_KiupSEHg+kb3DS6=$Bdss5>_YL_@+su+j^iOt- znAck;6UJ&VJf>z-yqBkemM?3gE)b*e@S<_{9bSxMC6<)zYX;9#Ydt_d;4&R?RH+<= z%D|@ZP!CyOFiFW3?W`S-m?%vs1~W|U2|c17f5oEm*&3sEdQ4JKI*}!RRceXm<%=E= zk=OgN(zR-qozsd}8HF-Zx&r2IQmpmv>vX>5(k*81aqfZ%dD#Y)Xv*v&4t2%lws_z8 z6h0f?K63@fWxw$bUiqm7t&PL_!y?JNC8+{BfpFjeKG4O z9?UwlU=v;!^dY&IKRxFu_=uhxsul7ODp=#ggjjeoc}=uPe2G{p_x+K4hV9p3QvmvS zt>jyH9DJ6U>u`@B1sHv~ql_pc&NLq6Z3Kjo8D5C0UkV5e z7<7mX>X628-5v{b)3hmx5%wsW(6lq-pn{5|2h!HloWK+355P;ZK!DNe=-^dH&4X_g zDFWV0BGeNHAC?&W zVuB#)mYA%H!Dg&gmB5~UcABX7SOPrAFN||`!AOKswIT}T44IS2+^EejO8)l+2+&cg zr~0iIwa%(M>!2i)xX46*!6v)Q9@ljOwy_#wuV7iHVf_;-q(?=>oh^?;V!nCW=WZhX)budmH{ZQ+X{^+R|AgZ^e!@kTPycu(2^}?#1|du) zXOQPI$%PfO(m6={HN79P(R1a#jPG^`wAW+UV*(w}NmBJB3>t;hK*l(k4^O!3rm|hf z_U<{@{*+4|e65N3!TZh&9-|?fgn+uBCqUmT)W>)tfrdJIuiIF`f%B|P`?1fJu==)T z&Ep3CrZWI$CbQR zZtVK_gw|Fz?B?$9Kr3F{#E@m(3sYD`OfnYJyohS$2b=w7Lom`bG%4)RghzKDxA|qf zbn5XHS)A}!ZB8I60kece>q+1_kji+*FX2+jupGZivzIYdF~57rE#}vf73j1pny`78 z7amc&|EGx=iRF9d9)0g)>U9*6b|pl=VXOPG9$g z5{K&Lk9ust+)Qaozhx0QK~a&3jR-BzROtcXOaH8?K$w0U)?rWYR8GTvF8K1*F9GVE z$u8eCfAZ%8Ao3lGS2dopg%s&mpEI7@esldrRY>@uAtLSjfbvL%T0 zA#ax}JhMc89+bwzjYNTj;-Di$8n+uEx#5rf0K!U#m*@I965e3j56|`qb z3-*8wT1_-t;t)!`KXA}0`aBh6%M(PNBE55k;CNhNklys)a8qpym&e2-p-qvRXed7x z*wiDVRZ}q`qQ@p~{y#c0F8US%c5NFi|R8ZZg2$|b1)PYN# z;<4lU-)aHco1~n|5)?XWmCUpcX+cXz3O8dAzPJ6C6QxAA{y)Y+iKdL%46OxB_>yvI zeW|tLxhRY~$`EwN;~i`4zkW1y!2Hu$_rE8*)v<~HIhS+(A0l*z|8kTA1HHGVfaLA7 zpM(4P=j7~<;n^IDFouIKhliefQvirw_J-*F-}^OZ$uG}-dHvX(`vi^^^M8mpYDH)K zD_qwIa0C;<*sKJm=9FiQN|-Gab4+E0EDJMZ`@>^B|HDtkJpQ9rvYY>pa(o%~zZgCj zBZ#J?oDL@Fj=C-jeE+PO4_@@YqtR7}v*m(KZGZJfiL-X6(F0rcu;@2IB;%f>a#D^z zf$BB79*#1oK5Td|KgD?Ru#aJWd+@tAfB*Bvckh3C|MRmH70qhDSWqPYuTt#3Nyepn zo&0UKM5PbT6+-o}DgVna@1~o>*6(#ySv(_wjidHZYJH-k}9FYuj%x8(KUO}oJB!5{t*3nfYOmY)Z| zqyv{u?sE997o;a%zJ2=~pFFRNCP`CpQr^D5y&VtoyW4uF#PeQN`gJJ$w`cgb?uu%k zLmff?#+80Dy=-n5gK+^vg#U;%d);w-@8lQ_E`PKY@nI1lwv!&*g8C%$S9pi>J zq+s+Y$LC=i$E5n*vMxu{#+q^X0p!LB4#U;pdc`=jpB!``9%BUDVEleO4*O%)H}if? zivR)VFcE#y$q(l&mBFR8?UvJyms<9~bZ@(-3>c%c57j|!YxgWWNW-X9P`|esY zSxzN0-SFmBl%E@S)1mlBXWM_^SirQR41e9+{8Mns!CjcVUsu~%Ln!UPIJo(Iih^`b z#q-xocBQsE7H038ET9m*YOMk)7u$@(tugjCpl?e(YFn&F4&pfD9Idb_7R;5~ANDUenI-7KAQ5uj`1s{`5 zK~a;$VwOgXwjiMtjGH!zz&GHfAt_!FJQeW!J>6i^!u%eZW5&KHu9_{jukRfg0n1Bo^j(c;=Phi*i0*Oa6dCOEGA-OnC~#5!CyH&Z61e{ ztv%0_9wcgFOI}^9pOBsFZw*O#{VP;a&W9|lcYcdHYGe1nk$$yhanHnX>oP1IA~Bpq zM}Ocl4iex(N*0(7(~W81L5@TPU!+wf9H;`pZ&HPBa71|G2}h(XberQ(bwYy+o%4hu z91~_o;v}^up%RloB3#TLre0Clu$~N0lhk z792*VU{GMT5Cyd%3hRI}rH^R7{m>1AYd^Z5h*?PDwteo&-IBOT1c}3_7ED^GFC>?# zVsT!Vz@3by7HP>Ms-BFDY7-$8W?f?hGgcYBEv+{cu7-b zE2$v~NDUD(wNlV)gaxrdLh43Dx(pOy1lt_>$3KVEcAh$xhuo0l1pxlrt z4ejHYcY3z)qTEpPazm|=8)~`SP=_)&SfydTs|kAd81Oj(67fy84FGSMKK4ky9mPg1 zN$w{-)V%aCTT2hMqgDfRj*R@LENC?|A(aesA%L&Z_Hp<-o3%4C!s285YL1u4k0pn}a5UX&erUUuj;vO_PI z9r{4BLrJeJ69zOb1M;IVjwxfM%Cv$06WO6<2Z=WAcw*{#pgCzCZDH;PrS@^n-7PLX zh`}4>L}b|t4e5R?s~60aWNV()yYVb^K+xK?xR4B)E}SPaBzUgQ5du79fEN4mAk-Gt zp(vjdTy2=Tj^+tYH#6lHxzEgVpIO6wW;yqn194xG83T%vWRC0HJ4LB08G?^wOc28! zX69~9$)Yt?x6fNe?m1~6Xy4X8llC4Pw^{>qcjFMQEb!yK#laqPHhj|U-90(qEO7qz zHb}D@=c76;;*3YpMWIuLOpXBiz?v!~cE{CIWgn2Rq9!8cNM{;t2uNr+g8~-|4p%(2 zD$ts06$;c==)y~FC*aA8u8K8kkXMPb3#JA&AnZe|B?1PR2-2OWwt z_*Y#B1w3ldxeecB5`obD8ZXh(7s#)ZqPjl*Y+Sxg{2?^?jz-^qD+FpP`x-^k!t}3v?j_ zNq{@^aQmbVlt(r8W`a2uG>ukhVfO7m;9c}qP=#@^33gUg;6ahF3EKZ8ih~v1@u!9l&6IgeV7qR}XVp8_l<_ce;ZYCCFB zKwL_NNk4dSL23$?a1fdrs)DYy_^@4eiC(kbXie9-&GiAS)?C=s1WPbXF%~)z#G{Co zU~5A!Mw>RlJ_QLxRkU#HePtkrSx{ClBiL&;>VHOtZmUhupfpk#zL~AE>b zAA}S|s!h~h4Rj)leF}Feb|Q%@eu+wTAVpHmrhCU0V8yI5xiO?RXoslma|XIi22w=( zK%mTa;ia2x=OPTRvrmJ|n8>sR6EQ`EAV~lUZ=wm&jJqU+5rKi~Ql5E+jBAcz&DCwyO85ll%R(qI3bKx`#jxSC*_g;C{5e>{qaoa$ z)v)goz&!%`{}+_Ru=?Kf!S(Z(8|w<8u}dn$7~in^Wn0xXy1U&_SqQG2tEh<%4NLvl zYg{d@>LV6?vAl{(g~OoOzue4K(L~EGrw&dMCSESB@z2@y3p820TpE13XO#2(!d0tJ zTL@U4y}v4Cb!ANR34{sH4BkiNkZs1VLVmF`&@Wsi=Yp>uOWGr+GL+#%myc%q(UTw0 z?_db-F`m@S4Cpy9=eaQJxbtL~6Tfu%fVQ4I`SJWv`up%F({tmA>E>1s=lKb7D1Pbk z@oYVLQsX&$v5=#ZVqUx!BsTfS7A7{i`3&p1Y6su@$qlTPK4Sj0w`ZS!$UgrktQC?g z%0{p_#XZ|m)k#+MNVe45@fo0PLu6jz1#9WjIRSu%zd z3Ut%>bNB}?RE&^sb(U#*5l$DzWbY*=?rohN>qu2iZ_m|<^pjw?7j9D4Jx)PsQIgQ) z0`FR29axPsk`k*yy~ccVMyLQ~E-gC#jjVXdx}>S274wt|cQXYX2iB*&4n&-*Kc zfiDA;H6(*i*asVFc=s?z1A9#9LCuuWTivMcp2hC3cSKOiOyxtVl+>BoGt!|%Ni2y; zGJ-)ezAv($GjO@E-s8+%I-HJKX&t`t++DioJ$U~Ds(j^`^YN6@!F#__+~MidqC-UeBeO|-5?y^q}s%8EjgH7Ah&-f;#0 zueCYm{~+;Q@&ETY{uuaw?8=Fb_|y9_$!^c)|G)1PmS)k?EelvO9|_-$i2kw z5%{Z4Rygl${hQ2GU&G5yG!kSfRfp}E?BCS&g$Ka-M}`{V=$6N!MyxVcS33HlHleAs zt&Ocp(FCbf;pD=8vYNO1v3H~d_7}@ggx-0xf_e7IR zQ7_-Ukoj}OuhETz&={pF@TCS9b=1x}sI7;%G^$ofV4e)Dw=U@+18*S+E5kxzVC|Wa~DTrxPW^8bQVNbR3&Xm(U)pXE#Q0y_Dd$rL{va_EIw9?D& zlZw&p?5PHc$DNv*5by+TrL*;*2Bp~FB@Nskmfx-%?zL?*J#ewxf|8mY8&PFepn1S9V&mO z)u>E2suXruougFRK|NWCTh=bGZ@=88SWcj8L%>(H0CY{877gY^?qH);3O~X46Y{o} z$rX^i)(8~e_AouyUrrmt^c#T?odbcE_&JEMuj2mQz#5VZ#-CGz(NXRPp?t6@zQTm z87I)WA+LG00CG+%>@hk`3$zG%Yo!xVBZ1_BJDP(fW(D*yZ@O85hVBaOitY)|3VQkO z3Y?pxC8}76I)IK*G^z|zm!k9m9N6d^oF*)+B?LB!l^LHU8G#)Ar%QBC+5o77awxlL zxtKZ^n5_!BB7~_kf!npfnXkLBum(u1k*^=$Zq!BuD4rN=t$6+L_5JE%gc^qJ4Porn z0;oMr7@fqXA>>AbP2#S6u2iP+w{Txpf=Iz=ifcW0?b&t;zCZ9<70y}`28_M~E&;~y zb6hCq1?gu#RYKud355YA6wWK5@C}qurAryL^uYyHK;tSYYgIUH8tu@G`6i}{*jpee z++s3K4$}u&#sGN_Clk{L<|QqZ=~&)n43rs2-V^1-@xUioC*c+}+R?vGTq$wPoB=4B zexq^Hpj-<^Bm2ST0xzAyhiTL^63>DGY=rJr-1}&QLu=0C68w}p=4`lW(8(%7D~4Em zL<<8#Wnx=C5J)PG*GUdD--|c!;yNd})wKEor)l6zCF(|(wM5%RmnO=(RzX+?zFC^; zi=%aOFu5YX^cDf*-{G@keK z-j(@o)<`NLg7wNO(4uI9FF`c5k7Zp{))2MZ!c4qMbxgdL>35l2`5?J_tZrfAHIJL% z@50bNXmWp`7-kp|+ncr)U>GzzL>vGMU}jk(P-h{`tlki`S25kL$+ga;3n>UKG0rLK zR&8dL+qv5YEcEnlGNWOq5zvYjGN}Om63{r@&wGu1;U>~iy?|PkidQf}_}rpaCB_J1 zj*v|9N!WLqtbh_(GHoe^_C-i3fJ7{Ty+;%AF|WYV@MdR6{v~1~ei@^=C0Wy|dv``0 zk3jw?SU!PG-OIefl2=&r3QJyL$tx`R`)tq^mb}7}S6K3MwCDE;OI{LfxFV5PB=U+x zo_FLwt~6N%y-Yux$ZQYiC7_5f!tGvZ^B#v3AD9vJBd9`-=L}KXyG%j(fEK75TSD+CKgt zq?RlG|1QVx7ysYeHQ?^N+ch}t$|)c5&9`=G`!8?t?^~P^9dQNFZ*EOFW7MZF2aAD# zSARON#B+hhIQ^lhba=98-;0IG19pqjTtDInp?GSiqb>Dg)=ueq6FQw4G`xP?uVgP- zhl{`+seGBCrR-hmsR557d7OyW2}Ke*VxMXsjd4Wr%Q~U-+wzuOwAl_QCtYSF)N+TH zo8f^n)H$CQf7u_4cX3KgD7>mg**N8#fZ7;Q<2)Z~h_zbS!Ab^-SCsJyYzj%zo!i^? zx-*r4ZYOqGtQS?#$WUYlQ4yvFao)GYNq2g3>?Ki>rwFJU+H)nKHBGFY;pl~w^qSqR z)$Bb&e350G80osuUZf9L#$BZNo4ZU8$6O}tcap7ODriFGg}0)%g^DO8o7nH438SkU$ zLmjW{<;Nl@i2z=*6m2M?ut}YqLa!*9lHO1NuG#WL?@0hmj$YATr1!IrvSSz5eWo+= zG(AW&ECDtJ%K#6cc&8h!e6F#m+Atyv0*6yI^y{!2bt#HiAiIkYI4q)(Sp9Ug!V!IQ|gxf9lFrZI@|y4&K9* zfc8F&fD=rTMOMvaAoNCH4vt;&+1JgPTtcJ>a0ETEy=3>)!T81Vum}X@q~*qfK-wVg z(?KYgyU4SyUH9gY?cy5R!WL(fP&SQ|J~qySx4sBcRHAgWjI}I1foeMor&13Bj;p>; z?w^n9PD+Z|9qQ~#HdfczWo+LqW6$YN$E;N(n~Z&!Np6@fO<)2`Pnpr z!nN;qD505_UASx7|H_DJi228~%tgrhnIDdiAF&N=4DI~NDhLx*BTE%RDHSnoKv{dD zCtg;Xc_tH56LOl`mgLu+TpZ>Kev~MSohVDYtSH~INxYY4FFP!?G}Cp#zFA)1@W*}lziN+EI&?drOVw|zLBRNUT*$$PJT40}<+(K}ELEmW!f{E|O@^?()xe;mSd6)B4 z9;G;0OAteg3F5+Pf>=-{Jz8fFOVbn{OjAn*u2DLoDI6^t_Vv;-DU*jECqS?uhQrkE z;TQ)%2w}DZ-ckZNlLLxB`}J*}MD{z_)j;sa|2)~)rCA;hh8oz|B`G8$mrY%8Nx7=F z$wO!8(gjUy*v`dFkh~tq%q40B$n9+ETe4%5*8<8d8@Z0VnuTQ4G6e$};k}&qBEgws z;X+k3suWh$H9#pFNyxy;DWw~MgY3fmHzx3Gz-KApL*~fGai7>d(jy|2bb}~Pa_?%) zo-2Z#8tbBO$;P+ew!anc+k==TgG$35cwCyvYNL)#@%6)1)*C&{dNZD|Wg6>^K@oGI zod&_ipfa#L3LzoFokPwHpbdqcULH#G$`+`T3eT|<_ag-=kzLvJ*G`|-{1?ePo7zG`Zg@n zbL6ooBZ{E}RYg%&qQJK_!N>}S<``A6Fu^oS8OToFh$ueE;6Al~N~!VEsF$H>oGXkl z-J;(&4Y`H!;EZ(|Ki?*ZH}Nj(1$dW@ayfBqqVm*wV~F^eR4I;xjOk)xGaMhiP7@{G zZ82W5S2dnwz#-0blTqU{t1NRSTa$~q3sM%#MyLeqbBYpWm`08I8h(^0*!aS!>@eTG zB1k+TdciS1fjqQ16*RjS=)=_hsnuh4>pLg|)2==U%-}mPgPXp`dpn%L4hLZviraGZ zuam^mwQvR$%K#gPJ(~#61IlXVP+e&jQIBm&Km*TB40BhUoVOgw3BTg-GcB}%b`5~P zLz8E;Soy05InPMk^Z*uafx7c8zJah#cH>)ogA|&g&-fPLKw%L);Tt&7!W%fng)k>NT%SmHaaWWQhswZyHx z>!4QQ&8~-9pf!)KhvI-B=l4*k(m1h23@PM zFX~iQyP=Vdeh2C|?4TBBid3;)WNetERIoY4YQm($jzJr{j$$BWPD<|1PR{S0P8!~4 z!gpckbQE*Jwq?YxdZJy&N7y%e8CN3Fl}L0Y5?zTzS0d5xvq4uP(UnMaB@%s(_WaI? zL>GZAuT-KdmFORmO7uDSKh-J!r(F3z?{UoIf7C)$g{ebR)s-~CNgaLN7#);oP&3$$ z6yk5ir$_(L^*DRnqy4YQzY@+I^M6WVSN@NC9RGo$$;QG&sz-Kg-@bjM9geSW^$*z_ z8_^5B4TsC(Jr>#LUkk$jlKu6=AvkrnX_XZp(AfGRt3G~wuW8fx#RW7_+>2}hB$r>K z&{$)O@?XC(4&zc;l{GKkzG#nDmU3503yYL?giqbYnngPdYuCU_8%XMMS@j}i9pU{m zR9386D(v-|wTqN?gm1)9X{AebtK_xfn(M{AaZ~tGxx7I89pp<00n69!b)(vN9wT-= zCLd2>|LZgS|9Z9m?{OUPzultkwneG5w?(DOM%q#r*2$=YRiu;N036#8D+A!A(yk1E6Bz)Vf^!Uj#tt(8N^>6yz)4ogG9-Y8+$+OA@zex>#xTMs z<8zSY{kcDP_uCc7Auxe4E%~1d4@3HZ>X1Ix&&K(j=^M|={&!)Cw2{)t;A3HGi&~|s z%HSP9Fs?D86n0@62F>uDjL+DCjMV#ccYj1j0^=Utku;;*mg-1t>u^{4dn})v_0K?H z$8cvi2CD&>{UkF=$H-TFHk6t^O$4d`lwI_MB^JFo5p}!nx2#3O3Xt<364x?q&!UR9*!a@vf|-! z3U_6ARHVX#VR{Bp(y^Vl{rt76;^(W#ZaGY`Fa(2?OHeFW#}r4#=gMpd%T16ogQ^78 zg|bYKqRA~ZGr}_Jo4T5xs}!tdVh4ha`OG-ip#+0N72%nv%xEsdVa`*f@MtzwQoV%D zgdF?^ZDQ7{fx?MppkyMK5i(ag17R3>$Pm%lB#fvknQGAzjFHv1OiEQ{Oho5dsd|_7 za^8zR>YP$VlXa(ATYdW1SSF!uRjIJi3ZayWTG>(v@J1LBs#4Zy3yETB6Nu=)INqUU zQfN|~#P_pL?Vsu~KzO<1TZ1LEDb-l2F!sS3rA&84u+y>l`(`;*>ZICkw8P8{C_epo z-avWB)0eNGZX=sJVUikRs!o{Su&ddb~mdD(zETr4ts3gl&&SGjWN&$TWO)9Hs{0s3JIPRq-a zN^B&~yAzR`$cQ7H#ve|jX_W}Y#avE*{2CA$n@S-?x+}svwP~X2%6j?EboAjm8&5bl zt7Mgb3qQ(d_Y+6l}rr-7(6yiL`neMX%srJ$v?!lX*GJmzCZVNX;F)N^Mqp%6*5 zXWlzYr0PWJth!fcIFBSw0cus8vGudAsQwkzzoPnARR4+5#Q5VCDyKvi|A>*y-$LKS_fLIpA49J$iY*`2fh zS)lh7{EswB_Wl2rLD^mX|L<|^@V`CA)YsJTIjQgBOSkpZfqTbfosQgv@Z#i)!;@^O z8)sp6cfGjtizuZn3R_ah(OAdAG%7S+H?q=YbfFk18fp+KnhtVA(e^-HUI98T7O^yM zx5ZoW;UE8u?{w#X@Xmj=*ME+0f1%oKBQ`d=Zkn>vpqc{3PMJ^#0L8an_ym0 zPb&MOui;7caCwQtwpZLgzkd1ek5#{*P{y*5ItEoci7hA#r_0ibQZ_{?2EnhWkg;l& zG9#+i3>THmg5%O|_})o@EjUpKXk4s=bS5^o@iGRG1rCO>2!jZ72{f?S7uiJ${2no} z`A@HJzs7g0uVf&ZZ-Cdk#{Zy>^}ht|#H#=Aar}PqU+w#g57~yaMD~|ge9?RL>pzY# zUi1SxE8Ce*Uk;4=fLDJym^bADr%v<-GtvnH?Y1ln`r7Ru@Q)Qop5>>rDl~I{%-RWf zZ~Cn>FhB0M94=PJBF^Q2mbH_+^BLFj(|B+LTY{IO!HsmcO8WoQ-HPt_+^rVh4Qx02 zIK~@q^zT#cqcLt&ezpTs&xwkwV~i73FI@e6AEwhvzqAGU(|0su`h6Ww!T+%Gzdh`j z$NyEmnZ&wb8CqM4d{#W=Pj0APe|Da*zf4Ix>`?dck zQqX<)@V731{M)B5$FqeVBZTxTBgD!Gu`)tjIaWr9l@VfWL#&JtmrA=bLQG|ZFlQMd zq#tI4Q1>B(SjbFSh9ZLF(mF!K?~_kW6T!h>X<5xFa@F3S(_OfZ>u=ZE$mQZ8a7EvR zqJ0EZk@4$o4BDy4nhU-0J0qpAI;gVp(bbKO;LB3jq826^r)phQ3&$9j9IKe|1sv0u zQou2dcd7kTN?q;7s*7oC^y6Y0t36y_Plv4ag1EKEFcf(+t|s@EIhr*vlHTSnOdBdmS_kiV~~6lG!;wG zk}rvUPl+aNmR>m{G6CMJv{xFK@Fn3>ZN_3}Ru#PyBe1ZD)KMaFbdDZgUPofyjqT2h zCd)ngcmDn9+jY>)PrzuqL@SYi2!?6yYcvhK&!iO3lNxq5egIx=$^#{8v)K5<%5C7sSDY2Veli(^h|JGq;2Ry&^; zswaF4SY7%tF)09wQ5)o&5YthkVgUps`btU2&`C12G?K@pa|&T5X`~}~nS)MpL1<j2m2}gwTr3PYA6!BtHs2O9|qj$s0)p;tX+=5E?I8 zqWtRJxE2+~Qpq+JRB75Z(Iu&p6d6Uw_iEk6F)9t1UR0&k59YNB@2_u<|ExxGCK^7U zL8qelrU!~#jW17S^*W@=)O5}VwE*V>TAv!+j>_U*6G@t@8<|E4ByzjDLFT@$&y_S= zOFTz$c1^YIAvMIVdW!4i^5eQhQ>GVqTp&$i6|1!u2=vN2?FIM(we|v2D=Z*Vu)1mp zbl&MM!*s3b7SLUkuwHk%%P`#Pb-K$ioM{nYC_i&mT2?`D+DTVH zltJonnG#|vH&WJ^{~`Vlw3~hX@_(F7Ox3h0Cg<0xIK>At_D?7CgDAuA zw7UZ$;b21<=tuB_OwOKiZh%4(kHwwhI7oRN>BjXG=P{sQF{y=MycEn--WIA95N!z2 zOMPja!rq}SBJa(C1`PA%%-Ip7LKU{;UIRnZ%#?+i-*sEDV zYZAc!t-ike&&#*}e0hH^|3;Sm115p9CN4KsQe2x*vR~^ij)`#N%zZ$FTk|Z&#kX-I z=Ek?}J@lc)!S({K_%+y=gFl@Vt3`BaO?274l_^17iZpW~Z^POs69}Q57Km%3-gF9I zgQi9uwC}pEb~^Ctvn}$vrQv@$l<<^z@F6@sqPnN{e`EW;Zh7y(aByA~#u*mC1m=_} zoJZ$48U@`>u+()QL;F9b*unnKNWJa7>Ao0<$YB#&ke}W9^Y0z zwv6Ndj#4Qe3mHV9B#MPCWC2QR?_%i--|_38-aHQQKXIkaA^$h6yiNXBD8JwR-zApv z#J-*UmkaDpjBV^r8@toS?le#~cBhTqY3xL7>`v!KyRkb>WOvdnkJCQ86JwXzo%A~F zPNSTVMSg*G3AxAnwVP&cs!48SLwh4}z`fV@eJKZj%#&c-?BGlMl(#=eBk}jLCB2zS zBDJ>`ZizYRFndlJLs7&^IwqVipyb5VQkfze?JG{9^^5-QYZ<9g;8|01Jd@&}wz~?$ zY+u~&s1l|!Zk=2&Ute*^BUzF(YsUbSS+~BvzEGYe+@;+(Es~^E-Z(cbck*6Jm*B)e z8@DW_wWoQLcr8sQ5Z{i@>kk!W(mQiA}nO;sezu)AsFy4bibHm-|}>tf@&_&z6e@75BebfTQV?ui~n4sOyYk?=zxg?5Z&Ky3=oSjKrpC)F(E{y1Qh5Ap}(w|3k5H6 zz|3z95L>xW#>M|@DMDGOvN8dT3l&bS3$k+Ps0C#V%!>b)T*6`eKj=;WuTuV)@&9k{ zfsV~DMgL2)MgMQn|6BC`K-r@Ix9I<|6R}1ApBwEK{XaGOU!RQrm*#Txzxn*=|HcJb zCU3Kp_#}Fjn~wZfj1)2j45eBM9nyNQw!5m_h=@|f+APk~Ln-H@08A5RreQ|Ts%}-> zG73Nx9K44Dtanvec^!p|Rz)6EQ5ol#jX)GB)|ggAs-;yTVXwBkI%>TLDL!VsToeE6 z)N0G+vmpT1Y#a-cQyN|(Z1J2 z{Hv(S7>l5!h(5?lXjeLI%92;yn#h+HxrDK?NviV1l|yw7`l!*niK@eRtu7pw^XV&p zQv82U`dZ=ROfL!mxc%5*fpbNPJ5dasy%!9p17*${d^6()awBjeC57d4t#eYYIIXku z7YiZlUMV|jhWa<@08-%C5}Xi1lx0+9dpCY69_I#Q@$uQ{*4U+L9d=F1ZNJ{TWt2gb zyo-@v#v)FL(_g?I&WzJvJ$bRg@jNF-&Ei##^6iTn!2K}!WF^s84oh&0snrRJj z_defMPZ-CK$*Fr%{OC09Py+AMdq+YD(lF0tG*#)i(N%JH# zgPbyn?rP1YF*rE8c;@iOk-lduYBPXmop2w`$<<g&fUVqMS!4dM&i^1eS6lvvRfY+KBL$mSbzf`9{fY*J%WF#PN*sQ~SoV*iCj|Ku>x!~IX99MZXOSoaQ(L^n{ zz(y&xDYy(l$V)go&F`$dQ@HEm4Yld{aq5}lWUOS-`3gl&a_I%9Tq+<+0Y2y|*bCz{ zO5SnYF5;%~PROCGsxWh)u~0lz5b^OzR&YW3L%OnzOchat^5O$EY33CHEeB^_&Kzhd ztdPFsr7XO!%2HY;ougrUXJTnCK~*i~eg&t8lhmr2qXZqn31zusRuv{#oN?JkoA5t3HOJG}pn!w?YE%pB-Y`mjs#j*?FE4#srzzQIFhl{5B#O!Niq2A-ZC9xfn1 z>oQ>fjaEnbzfomw_J57?$H0F!%lT~3%K4PQ+?ak!VBy5MoWOWzN)7D9O(z8w*8b%* zLS^V7Edo`+?(s>qkecG`1ixZpZ_w7-QKp@ zNM>~Tr6P#hFTeQL->&O*2C4s#+3WlBb-m39p8PRu$n$GT8iJalIwg4EbwijQM43Vv zvj^NgKbOs(xYzZn(65tDAe{~GyMX_J@3fGI56JUv6S^b?ucxZ8wXm_HM(-v*D#E?S znxqA4ri)@<1E;5RWsLhy6APFwo&8yuq{ixptNRaEk5Xp6r>N#AwD|H=;)>c!cr>zK zIY+C#R$pHx^~z^ywaaPYPj<-WD7N%9%j%nde0saGV?rU!=@`At$A4BQ@>z}S-cCn< z{FwQ#kB8QMWVdEI4D843?fom^zN@nS+Js$yn=Y3eY){Xn#uakOXTWDpIvS%w`1v)E z(t|&p6vA&4%!x~vOMTxqSgx|BF8HpF?z$Bxg7+`=(ai|2dr`doG*vh3?)~nTlfn9* zy}=(SHxd7#<#GIn*y2CdC})2E8wE{%@FD~VLR3*(8$*b)s!CTBL7P}W3Dp(^a_eP{ z`JWK~0en0EU8R(v60R~v;Ka$2LFJfr$~az@L9^gLdwg5@*pmPC@%d+T2*1_GI1l;* z__~MWUrMnr|6D3%Hu+zpbnzd}ag2Y;?#Uoz|MghC`q%LDZ*6?X`5T7fH!ctyx95!g zSVLktu76{`Z@HtJpPJ6cf#^FTGj0yqw4CI4$X5eEUD_Umu?|Gh2J$FTe#@c(kH z1#I%aMj@8G^D7|x_doqTK|B7Q{g5O#Pxl^DyVnv+@3j*9!(H~nX?Z{Bq?7mlU)Smz>1e)`i-|MuBW_x8($`0xFn|7R$JA^8_Z9mId22e8F|tWrq+N3MXrGUy*cbb>nN z{Ak+WZqmI}xjO!Pf*u%Y!{9m~O`g))}FgPp6!*SK7ih);w8EIW` zz@jK)Ax+_JU@mI>%RAV?hoD`X7ylVr81apmR#+ zX7!UvPin>-4MxbH97%odTb0d3H6xlKDMRtvCr43t-kd>C?|d+-{iyTDH~PxYRrpqw zGZy6#isGo>_phb@RyE%nZOXUz8DBeiYo)AC*I>D^YS@}q-boYXc%R6@FRfZtvj zA$4)?3%|df_aF!Rl!1jE+AgbGOfa@D*wuCq*oLtYWlM70ffVU=ppS3ZXp0 z{k3Jl|KsBD_g`U{+t+ zpF|06(N`%0RH!1cQ3!SEnS!ICqU9VOsu~_@KOunA0o8Y~%mORHi%OIXc!|0KfO&Z- z-Jg{rCH!MFG`{_QzjC>a_#eITzkE`egZ~>OUVhl89sBI>x|QRy#{6HFf85sq9LE1J zB{%exNVd>OnDzVoJX0x`cT&B1>toCkTb~wM8W;?u;Sz~3L?pwg}D{I{Hmcs6^ThrHf z51D!6Io7z4x!{d5viAg2VG^4fUkxdz1YR*VcXggT?qo_4)cln*xxg!mfccE&4(nQ^ z+%$rz1=2sEU9_b0naM5j+LGa}n@(U?D(7Sd7*C_vyZKWyv|XV%ta8Ae5(Yh89=)gv z5k2Fo^1g7Mq;T0xPz|;TosFidd8V3VZM|ym2F`{RhY}r-OuCg7N3U;TmscG4?61}x zoKMxBEqMMqwQ*H8IKDtOI8qEk*5EmvQsFSuv@*f#95qc#s5~hS*|J^CNrj`DPgZGl z9`up`d?xGNwN@gy(HT%J=aKm`Lgk8RP~cdQ#uX4fCk9ltthB2{J0ei3Q$?{1r0iF^ zOM;(~@!tB@n$H!p^T|)s;rn%q{wVF59=+(NrCsC7)C-GjCBNsyD3WX?r_@ZG@*N6l z;wBCnYe{I_OmfHtdHDu+c`lQRB|F89$hpi^nu&CyLaVErkKouuA)_o(WRy*&af8d# zG~(73W=fLgwVGFuOOa`T1B0|MXn?pXbJYM<0k8J&J(egqlqk3$QE*zK;Je8wtZkDv zB5SHi{YZCI@7*$n=0`ve%l>J}g?lD!Mvk{h*@fXynqjmw!!&8eWzCwsw?b)_P1aJK zOOx^_a!N4F(9AU%qSK7Z+Q*cTJG3Xfv7I%d|^Sq@;N3u`6^ZplgtZbIWWJ=(7OoO@e~9 z-u9AOxJl^UwN|>?(JqY>K~@T&PKid3D9m5tdjjocWKNf z!D#r9O+pj9J7$-lre}#&3uKAKomI};WquFDcO}{t2pWY}?pk&y9y3=xeU_;gJwQ`! z`!MyA-`#S&;?3cTHy2jCIlbb|^c6pph-~3)v4Pq@PnG&HiM?8Pag6J(toj(oy4 zVg|C2B=mGu-mZV3MGyba-m|pGk)-EYv)Bl)VT})qACT_FD~ZXfj`u^Y9?-Pp8QB^! zXtfW|Flh4;*{Yf9s@kmT9`!5>_FxPKGx+4!UVStMvj-n+Fc|-V!ROtBFNOsl%wSmX z#org1Rh3npRaspsb+=|Jgt{U#BO|{2zAs*1e2N5_+L$CiBINz{x#`;pYi|3v=&?c4;PZ0QCcN3<3OT>7@`xJIZj-vWdy4udfD)8 z(~C`I|6j{3*K7cw#eU0#*!KU6NE7?N8TU@5E&Ggnrz+*gW`O5=>9zH( z0So_boNgVwZ8%*C`>$>M?@LQ-$A8W!mDCy+p{EXFk|ef9b8e;1B#DWdxPIOmeqH5s z5%h1c|6-KP&HtQePPX&^MWio|{g+>r%zLgZul;uSLl@84fI)2^_4`Lr+;st^Y-$*W zilNng+*`qp1Hp>$lcK8CvGR`_qzQEnn%A|H{8j{n{f?CrvM@b9>F!) zv(aucgyq)l-+A}o?w!YX-o4gFxy`MoeSkLbVwoS5B9dD{?$W*BhqEP0$;wX<9tR)C;r!E^#FDJK?PM!d%kb&~f5iD`heh_|6{ZGEX<5##1ud$lwx8bAL@ar z0{-m;u{-Sa3b+OUSNo_B%_H~W@ROc-a6GE}xJjG4P-e+v&+;f|Y>ALOHE)ryB~Hvv zt#EQi+T0pP0Yw?C7azL3zDaC3JYpJ4U&3WH{>d7SN&kWTS+*3<{*3 z{7#1nULZqe&|*QSH`xX~(JVe%eCz4rS!#ddY@yW|KHJ>=5WqkW*!-i=`G(!l_NQkVYFG0~8xQ4yMZD zP^)NA<}3|3C9}EdQ?*DHvJzWQ>xnJJW;DiE=N^VU^L#4fbAH+8TECjc%$%FH#DiFh zw#=N_Hbq)7R4@YOLG4E+(7eOb6U{s1SlMX(Q(=z51btmFz8HVjtN@25KxjBzNmE>n zi(QmaV%-4^bpA;sgz{|WJ1#ClAdJ;8lv5~OVNNg=6T*!olGr4sDd3Q7Sk;N5`U~-a zD zp!n@xc96r*=y>p)#+l31t~X(viM1diVOO)nj!`4`^jGaS}Ccu`3%eHOXRb6(MZC96V+qThV+qP}nw*9|;v!98H$W=ye za&r>*p6}HD^ZY-#9HLjBi5^d!j?8wk8yD6GBqm|IveKv%(7&B}8(Pnr_|9?|`Z89x zg0Djki#}>dWJ>tL^Nt;uZRuhI!!kQa+=k9+?RRhzT=7&N!`*7>s{r!UZDg#-O6AIncjWN46SL4UQA(qO@=l|!id_~IfjiqQ&5 z&2MJ^I|iU#NB*&sK^{qxI1|@wk~e@ z7%dDP=^8Ss$&dJ_4T7*$4yv0=q;#HzJrR!lf|ARv5Kgi(q8iUz{gQn{(;FDOv7VfB zJnPe15pzzF1hbSPGy>PrXcjL&B)=Afg$~iDkq^OCtBum*<)u4@&b+FCZol%DGj*0ms(Ik-COKaD5gn9`XpHVwfsgGR z2~i+0aAHsa_`hst+Y{?{`1?9BxZ^R1MdT&43RVX>kh4*+2SjGLjDXE-Xkyf8j1}~> z`^D~v_HbUXM-*_BwoQcj( z*l5roFiK?XI0Dx|%so(qAju<(sZW`w%_|n!=A$E`jWgyanP8>W`)ZEzHw2;T(G66U zHpc3bhcZmHNHfVL4H-w3Zi)4{aRWFa@qr|NN#jMJq6pDvfcF5Q@r;tJ z0?{vn+hW^*sO#x?bAV_Q$cb3d_l>r`xaHP1E&Z5Jz95S>-(;!o4nW{jAc=Lc&r zjcDe$Fp+|b3TG5~vp#v;o$xgMHXE??sMff~e=wwAdIRlVl3A`P%?wPKFn%*1JEU4z z>Xg89VmT!w1`lP1o78EcD^-d}N{qEx96)yb@>Td3ZaySOlXJJ!KUJu-XITxOfX3xP zJx6C82|5SjnPUTzX_FX{Mmx#|6f>9wxxoQ4%?a5=L>6Ie*+?c^)|3fjwjcvDDFLxp z36Td*>yOa^eTKdS%Hbpxbb2uq+9yDKY{Bq3FNSP!JWHg<|Us)Cg&6WON%>?xVNO|O6>pNAw z6zpHIp*c~g7Hd3^J?ns9Gg+Y?aO?FD&MFe1MB>!>Q)IjmRB+z)$#l}isHW#1WJgM% z&UaSR(q8H9vZwztjGB@Jh+$Hx%ct;|kdB#jHYCjC`m~58No*1+%W^uQBm=1cWZ+ zTp<@Hi#FGv3vaU3HNFlOjK?GU%`J&c$aQop*YcX7p}z=ezw{$wX*e#)Tn_^K4@0Ng z3wW&Z#6dk-scf*#=&;2Mx{oc+n+=`THp2n`lD?!z1kiU~hFd9h&xVytRel=gIA}5% z?DixuAJg|!`Bv1*HO6Iz;a;rpC{8ry*8V<^DXH<_CYq#7e06m#-A>RASn?jXvyo=h ztj(mP<{NFcvjw7y=KLn;U$|v#cdL zJ8KeLHR~q)4j50W;ydeZqk@+`^<&aeTk*r21q7#VKJSVZ33z?(0zSowKfSb&WKu(mC?SBsrIh{R?Lz&#&Vy>KHc=w?Q~zYs3!fCpy4}BVvjjTPqf#*IcP+tnJxnCK=C%qHN90jJuu-x9jXy|{JZ3)?MudUM-zk-gEXboz48=${ACc`MXEl5h~-ZGs%0SPF!9?Rdno*#jIJ$u=0`C&cfyL~)6`?HrK zFWn65^!yboR-;*G2^ z>=6}zm_Io=(6+aEJdhVqx76qP5j%{0yf zYMkhKr`-?ywDO~9e>ZIhQCNC22Cgaa8oep?Iew4acU-XmyI`xP4Mo|r zx9_e6N6Vk;jK{23DW3PNVwm`;3g{<_4^fZLS)B^Mak%{5X}H?Q=~h$cR%Iq@PuM1sDWm+4F9WU*ki)2`Gly2iJu5x8AGsA$ktBu)3{5s}B9>_fu0g z%;;sv{Gu=B%eJqqLKT_;*R-J!&lbJuNLjG;v+Aq{c(c}~ap#YX#wWz!j|0NLV3b8W zXK_1%(dDt^?Xp*)chzowhD?K+n`ftNM<=@hZNiNtNq`?p{6BAF0;Xv)e^`6s`&nVJO^Q5>a8#PF zI?%`u;C$hqJV9i9OLH0nFdBGvr89qz8eq=>8$q~uj62n7VQ7Q&Ibr3yg5NQL7gzxh zOi?a^IR&&V=83=o!0)1761-kY!MOg#5>R^@d*H`}b;1H7UIkEqX?sJykUS*sB5{X? zS=QX&{&`^v)`7J8^smlGI2kwuK%LODws)&&-9llH1|1NXKQQhEWv%T~5tCEnG1 ztis!#kwWo7|BxjcS(_sXUw|JpUK7R^H}Xt((3Zo$I;N)-UgKA4iIvrz<lre`v86j!^^yfuNj0w*>)nzH))N1Hcmdu2p^7id^SkI6D+M z@%_(h(gVyeu7CHPAKp6wviv1wHvTwDQt#Ans~jCzKPq!S7KZMCi~$kN*D4XQY#n^R zlX$^Za-smApZCs7vYU{dd6&0-daUe7Ag+tI#f{t$Q@Y&Ba?ba!*}1wFKE#>BooXk1 z&aME{R)Zg6xE)linc94uyrt)nf7CRu?g+^KG66guqTd|1-%(jkk>2(*eaEI&g{ZEd z5t!uP{Fa6oF@f%o;k&^O*~5lh{JCuw2q1;tZw{>e)Jp`vaq${wDeE_nao_=v$=P+g zoj6mb&}oLHxkX&CZzS!mb{=BO4X+B7HYrcyStnp9>nw5<%qxe+ERF)}UtWI%z(G0k zZOV+1ytt%A2>n4=GOFQK?if-`is2F)bTkCs3tx46G0F2LJn~c!635ST1!Qt$e+Mnz z6uthinbt$gQiUJ~CN4?*L-t}3h-HF1tSwj3hOnJjxcfL^Am)%0`e%HNhef=89P`}9 zQ9`y7H#MLy88E!$cz~ww?w;His@<0@zcffx`kbNQwIE(QKJ4FXw&&nm!;ZcCvXGt; zF2WDXdOzoI&tclF2;dbj2B`ML#dgaJ%9M3>g+>zK6SOEkn3o#*Wj7(R62G5(PaDqH z%;n^~h823(AFV-RL<*=mHofb1q{YR~cFo?+oThxoD+@4$I}1+sQ8=+#`_c7-JgT>2 znP_Bj5oVQk$ErrtiJZ!twc`1m*d3Cpm^%K$()v%kWgavuL{uT3Xv#eu%m- zBENslW4=>3xV$MO=q~7(TCj7Jo3ps&`2^-N{>eQ0{te^!ilh?qDgvdu?@1*0+UCgF zG#PqGlhEy21XyvM7P#un2zuP#^Mu+CT_mD8LNy;;_df>MDEQvfC%ZcHz8*L?JaiKV zgiGHB2m&1=s`b1Oj*k`|VSMJPDujN1yz+mtf3-SH&$F63&}?V`(*IgMz; za9NP>I9P0YD9=#X23fP=fbzWEsMsDkSE;~&dkqWqbA*W=GygDvKn-qp!cW|p-z`y^M8zL6qh(hD# z2iwLn^lyKnTz+8PvnlkR`2MU5p6z{OmadlEj7<~Fs2v_=+ctZM7eUtFqtDmOa`x+P zEO^_!Vml|bEi^uwwm|Ay#4p?PlODYR$?6+Nb${LC75i{p@nY##-eF+b(wD*c$xm^< z!oOZ*SvnB#SKLQZt&9Or5eYP0UfgG~b~9BgE`jSCHGO)0wH0@Y;)&H!@0~=J@}Z6E zJ~^Y=P_18FuTDfF3peMZ)EVQt|FD9X zDRlassNEwVxr0AGtqE|shgohIb6p)WoYBkJ7%_Iys&C~_a`ZVA;OG}V9MJh7_&bfZ zfv>-0LoYiAOMc|ZyztcOb-xht+}1Mg^4e`GP^Xz=QRUqb?uI30l)U>b5;Up#xr0{+y@%f0KpA=J$oj=oibl-9mNE?@AaxwVctJj13-J8C zQVH<$v=9i^0#$omp`87-kIehd=I>lZF zcDRK=zu*>zy#~?j>A2Ha`p&B|T}sA~LRn~RfXGd^`)Okix$3z}(Nm@KeOao~W z1$;odS0iBx-00DvHJ@->sn`vjS;6nYE&`Q2_4iz0%^ty24v*NE$% zo~i;pZLlNNAw?MtWXANAM`i>QUAH8Vl4vuq0fJ9?A2wR+{RbCnyCsG_HZ;@n2mz6|mI8vuS!q)|0j{%9Zoamh=4fZr~vKQy$@* zXM!{tPr(!+34-dPK0##6!ygxU;J_n+!(mW9{1-(lI5O-~;UBomO_Ha^P>>>XAlx&n z%HtzzBgc8`=j9k(LixOokg||Z-~(A>i@;qhm{AXj7h$R`{I`D!)i^0dpE411*EO-6 zIY^`?w$-JDN;w#Aeq){{FIp6XUClEh(q>gVRZi^~eTMXVAj^ppuP-vUzGt$NzOb_6 z8w>eXZ2$y0#~8?s6}-^CG(59W7XA*~CPCEjT=?=@7gtDj^Q?)QNVt&0OG2o`ul-gZ z28=TRlb$xX%&zwq^p@AYRsaBjE5+$YAFDV9&<+4&#B+jjxSa`xRraP0t%;_kWs?~}VI_TGks<^2(yT=$H@sEk*< zM5`ck-S9Hr>l@d4frHZY@y~+ovQ_Y6?S^V3gHf&5S})>EcOn6HVMmVnMGVM&mB@NOU zQdlNMlaid}ecuYiZJZm3($Hkm=5!09XYouZSf~|j`~Qliie=7CW6ZBq28R5#(TVWk zcbjc2U$b4^MJ`7^(9Y1=5%;~qUm;N;TV%wJACg5kZ7&XzV zZ@K=Es-J!pRAhEnegu1eEbt&Lq?$wXX%gpxm|UF?x#qz}=*~h;K1yoY?*-idh+}^j zI!`2r2j94w(8yXgsgNY(S&C;$6HA@tF2DFCGw%5Xo8S2%I)2aG38cnGrSq_tM7{;! z-GQN3c0sd?03T0kRy!Ic;2(N1otK-4>->_da(hbU#Cr-OMzfnnNz`toGf>Yu;dBsc z`FQct7*T&!$`?>`F$?WkZ_9L{?U+va+(oj_mBE`U zBi?=E9C)cog^AzNxMaq0e+v3Fn?<5sLlf%}ndGd)4^7jF|16H|jE*u_<_7;U2H8q_ zKmQY*(~M@@Q|lhH(lv@VVz4j!yGml%?^fRI@^94YyK}b69jm-GI4ctx;+@_2r5MMY zymL3+f(+dM$2QntoO9emE*4Z@SzCe+|_m*aDr0&K0Da zJCA#z@R|Q(ii9_NC|rXvZll1@5-OU z?JHB$%nz1OuP|2SWjT9ywMHimTeb8~J7FtoPo+d)mNFY~cWt6d7-c|I@z@3qwXwQ} zR=?)`r>dbv2tybFp>&i_69JA=#`eCslhzvL)z!AA0Yn*m1~Lmw!~w-g@);SK0~zXk z3eve!kG3E^^VWPAJQr3q(y_w5J)a=Gk2Od^M0n9y<5(_6K8^x?)+ujG@S_IbX?-nl^NdWWRx9wN zR$zu>nR^>T5_2PDnF|9UaI@a9QscDYnlQ+Vp|2TGx#gO1_ za61!i5zHQgX@h}YaLk-$U2K0UC#Lp-jy2@;F!p`(xZ-6t%kEL0%S>CG6AULo8bZ^I zVV(iP=*;|*+HszXZBy-$t>7g|o-2}bp3785JYLfbJX}1$re0AQas=dIGyVkNpXo}K^dWlt zw&$3u7PyH~sMQOlGK6QTOUUX9N0q7|gBQ{DFIig7LkEaoGd~x-#N;)#&4^w>gNG?5 zn)vM{Oe!ze?jox+uxO>|A)547HF?6aO@ozI>=af}oy$mxGsggMI;3d%C1}jVd85>pFj=>2oeI-==~9mT7jqIgKwpKgagY$1=61 z{!{kZD$wK5p>Na(PP-4{L`8zqG5l+U;S#hx$#`f?x@=@%m>nio)TpnmmD|@)mF9Qt zED6E9AWLXqz{)lXh+Ih|L_4ruR{maScFGD!(I_J#!Q^E~zy;hwtOjVw_zI1|YI(Yf z618w;$UC%iJ%Yt^IAk6L-V@{rFpgE7QLjy=TCLdC;(CS-?h4#S8jOX`MDRySZfR1x zSjBDT%Ezc>&GF5zdzFGhrCR12p-3s&N(aa%$|6Mpc75O(KufV39Pc(Y_bh_J+oCg} znT?j0+STt2C5<$bt*$#OJ-YvpRzrhjyfUH*QXVKHMbhEOWGh-l`QhP2$T1y~3hpHJ z9R9B@0Hc89rh0%!IIV=?6z2jNNl1Rqh!7r(B@q%TR=`t`vyc8s3 z10n^Aoj6*f@8q*?CGZ6p69Who+yfqwR$YJe3&Pzb2O=P*At2&Z#Da&|z=}zZCq(0N2~5f~_q8*VUcbKqdp9qz1#pa? z;KUqSmsns*2Z;3opO@Id>3K&u#;wzBsI0%sh?-28V6Qs!3s20aB&fJy6pQ^kYu`6G zVuNkW+Zu{6)39dg)PQ1+IV$?_n;J@LQBpTYu^VDMwzfsvYhO~`-f)vtBna+B!|ItV zhD_*;m*AB|sHS?zwwhs4Ayh1@vQXGYNk?#y#-;3E@I)%78KB1{EuEaIc(V5llBz8{ zEG{poq;LA38bpmhZC$8SaMBGQA+*`+7f4?i`z}gDIB?VGYy7!b5jjkf`FF37-4Akn)OKj8dd$|KWsU%W)El5!(B- ztV%*qT+19A193EV4$Rtav2#;Rnd5&KNHR- zIKm;QJw{Z4my87su|^B1u4;53!=wc_22)xkf@4Fm?+*=}5@D~0=*+XU-Zpy3S@)5N zzWz=qIZ~g27N_Jeh+*Ij#-YIF{~GF0GTH4@JKVLdS}0o5F<(-*N5c?EXLvKH^o7w% zXeR3ws0X^FHpCv(ACGEN<9jP8{hEKhC$U|-#;B0pP$V-KgV4ALA8Je}R5*`1=KpmO zj2$~6EPRl(z{unqp8H5bm9vlI+TlEsCv5&((Ywu_is;te7mze;@$A@wP>L#Vt_jW}x-GtP0J ziW>U~5hzYBki+2HKzf$#UINfc0g*R$E=ZwfzLmE4VB<+Z>z%VR5lX&~EdIH{FZ1nx zBofDXhDmD7^_ba4T>SytuAJ?+lO!C-kSK>dR~s~_9*eSgP|^YmtowNKPLp51lsk`P z{_*e`G^FZMH^_U_H$o~q_A{Nb=fcTz7Jn)$Y!iqqHM-()6-l=U@kI?Jh&K#M+9x@i?xi|e$ARYLKlvEiYH~UX67SHw1RB`M%4(l@ZI$4Q`jBIn7P5^gNDI+uQs zK9|Oor9sSNDu*dN^B_=`cDKG+t~N!NeUtz z=LKw+t$euy^iCU?pL^P#e6D|&yP8y#@umYqJMl9jHnQENfcJaF?d@cg`}&>fu8wiq zrP}?V^(}9z*}WK=y$RIzsd!cS&7aN>RSXX(#3TK551K-W5&q?bVHO1ocg=ADVtLI4 z_B`iDg-kB;>`5$n<#|JcGK_I?W1zyH!Y4oyJO8OIjF4OOV%Fr<3H;4L+!d715klyg zEq-l5fmiD}#ulCu0a+k33A<#6@IBL?Ap;Ao0C#jhoA1^Sr_`rhRO3bjXFkl>nvqJL ztDYG5U5ETCk0Yn*q;S($X~z?p+LlnJ84(|o+RQie5e>4&mkf`N3{yQdW_uS4({r4i zjW*hL%tMw@BFR7T>vd>L8ur^8lf^cz2LWbYuYlZct6PUni3h-`@*Rbn6=W*cx9^ZE zkXfQE2$@j)^uY@Q6c~S|kqLXDrsUz;uPe9S3fn{y_GD4T2X_>>zXosS4ce-@y35m{jTVR6228g5zWll}N;xd4jbzJAzc#V6<@e%}61~W`%s!Uc_VfPTC0syN7v0&7PPIG*74wWU3Cqpz8r9JI zvwREa4zNFz1s?Jg<1Q>-ubtX^e`oh+Dla@)x_z%Ppkx*xcWvSTgy_jOdww+eg!jES z$8V1Ze(dZ?w==4Cv01tvkTsaZvO0`%Z)!S>2LSu6JNLdey{Qd|8g+q(Y_M8bnph;h z9)6EGcU?HpCngP8k=6;=&`z_2JFl$kC^crkdcu#fIT+{gjD17*P3$#B>!2u{&u|Ow zHf-E(a+PQ_NRGA{g#cU6!Sr3C`d+T^L`N?2TruKs_dqobMy@8);Xhp0Ibvs)Tvb|f zu~jd7IOTjVVJEgJGPux^pDQw6hl7SMDNi? zK>B?u$sv+&HI{+8JoLTLXtQj-*w!wUqID6VNA81xFlQux@`Npq$0;DUu7)kMbB%mq zi)R|!wr78F>yn{5KSD_JTjvvi4RNDEtw6epCml`bo|02s{4hU*8mShrkMWrXMmBdD zoZSuwHBYC%3M7SN`iEk53|rLZrTZ(p&yKdU2G@via_7orzhkL5^N|k3<=nNB);X&; zT5gwV0KtO#m=E&$8^%De28hX&YY^pOZ?*7RV)ih)Ps%MH%Lb+%417;a#QOPlMB&7R zoGFTbV{`vF$Z^Q6&U#IimQ~BZv20P;R9cx9vx&!@rt+<1)l$MBSxE^GlHZ@7@&VED+MxF^j@8(zqO8bmObqRM0WN~QZao#s6kWuT zIsbR*l>1CH~*NqZa&0mop(?ORd3l~T!SQ^hA*(FU`Yvoht0-@t??=bL~yRn&? z2!r8&%lpHRB9APE=Id_2+S**@FB$3)YmiC!i$C2{gwIm(*~3FL)a5UN4XKe^@_7dJ z7{t_XN2XsqkL}WU>mzOcHTpb0d00`u^{|na!eNsAh7Qddm(X0{t|ok4w@zpn2q_$l z89cF%CHrM>o44kP{uE9O?ZbtAwsg2jr}ef~Q%T)-$QY~{JQ}#Nvr@R*lHZbJ;bVP`Gc`=jZ^_%Z zkFKibEnPPTc;bOb!PgT+!FLLVeCL)YH;jjcwoC>m75N!M-D_-YJtY(s#B%ym{$hVpJ>X|4 z+Bz7E|GsPXD2;_;3FsJ#XsXLbw@_*;VA3ffBhHX%V`v&{@J_Umgz|C!F)Jo~6xf-~ zN6Gwk3S)%|@+6OH0q3-0p+&|qy%lD=dwA~~_vS4!H6Qb`dMtUlMhVEa8xueeuKQ=C zj{_B{zkTsPJN_-;rGK7V*tih0i#gzb75jq{2>x;o>HhxV$`R#@t(uE~Ot2qBoM~hR z9-+)DFGdkPr&h`^o{#VsmmZ2VL+S#C|Ks>QtmKmL*d6PAcYXWo_K6wr>4T^J1@O8? zlt)nv@1k0e@n56Fc9YrIlKOkP6tJ&5w?QUj%m0Mv!^<7_xd$M4Kb4xF{<<|s;k^KO zaq0P+L)d3lBOvMK5JzoZ(i}bCVH!@v0P)Q~xCBaIz@}BtWcmW04;;cH2FiNgNk*6Z zkUe`8E5)m1L|VRisv=Q8XLr_#+;fmpkI|;&D{TI-mP+Jnm>MUT7%X0yV^3-Pb|g#2 zg6=LgJh%%bpP(jX5yn$q(gMCd7@@G&?sXP-3~%=vIgHSQd63-Bv#>g?Aojuj_fL9 z_!OS@p6mv-0~C=EaT0h`G$yE|Bmz@Gj^0jUL2NAasM}C=7VdPGEvQlRikwWi(?YNw z-O?i4Co%Y23v~M`C$$_{<&bHj2;{@Lge{td!USW(vj1v2c!ftBLPaEF{>`m+Djjt! zdYQy5q$pb|tr84E-@r4$YLq1{$(k~%{fVV8=A4){8BcDU;9ag&dBJ^uPU!_1!PEWF zlMHiXg$tB!WJHlE_G0C4PzC=xi;K~>+i_|o`419rhRlP9n*2ao64|mab`nLzxHZjU za8QM@xYZfa$cd<0iSKW$JKImhDFG6WRX^%2&nCdl{@ddS;Nu4GvnN`&{bGDyuDuK# zkzxDU*b~0jp5rmG3mFNH@XLq4_d$?lDbpp{9^Arhg^YmD;fWFBdkL1Z;CDx{b{BAn zKyS`8YT1rRQYR-c>J;gW4ahIQmjeOcp0|T#`C8u}s*&q{l=VeBz_)&T?~6r~{rltD z?lsD>>y|k2*5ArWz{8}O71r$bn)9XUo+s%_W3-+)dZv!|xtjhAUJiqR->b4?M7pwk zt_}&sep7f(=!4(8v^#T7`{m^FrN4dn8-{X0sS-t|=vi`frhcxf> z;js-&?J+pwdL=I%^M6r4r~zBzMupb)@Dklg1KK&O}E(cE*&zH(21_`~G31NRrb^B%Er zll^3W`*8Srp*cH{{{^1zumrr{k4LXo05mu%G174t(tzv@f~xD6_bAer8%FVsqbL4` z3+Q#E)g2#RzylAWt-7v2P0b_T#Fe{_k#O8_co)ZR!n{Tov)SLzX?o0Jhmh5P&oAHG zb@~y4NIT7*RWZjc^_~8(+mcnp1bFquOL}i}{$JFj{9up|=LgGw_L&jfI3Mduz^PuD zsfswcKWwkQWhLo);a_{IYd%|Atm$GuDj9X^yX*gMhv0ANBV01{Xu5SsJ>JaNE^JF{ z8M`|WjLdeom2!QN(v13%G745}jOVO!_P*TV+hZobKBBm<1yT7V4Ng;Ddb1mSA9+A} z+b7lJb=jfhGMsc7f+b7f(d)!+h?LHJt9~BCu}RB;3<-6Q<~|c!Jf89V*M|Ta));vF_qx38M3r zx}0D8v**B7U3rIjsXTc@JLFdP6~QaXVzMAZ!@wmCOTkL|C=*mu3Y|n5yV5`mA#IR& zc>yxmJpUJPBUYJymV}@k&mA06v1mNRuR{=0lSvde7N)zZU4r`z((dL=NWd~Khs**U zV^-|Bf|=czURW#y9xCHFY;*zoOJ<7cBqY>a%D5heE_5Dt&`#qm+<<7BA15qNyB3LA zK+PR|y|J$C3dE78JDqU1VNhDV0wyIZz>Drx|Y1(G(+R7cyQ zS;FAUX=XyD@#)ABnk972H$mW0P*xF@Zu~IJ%~P|Di}U135kw$FS)pt1=9eSc#Gi^X z_S0@%-$r0_bx1934};tn639=ul+_)o9OzF;p=(XakHX}tzjtLoI|$c9pVDDU{S}wO zw=vPo{{-KtUSV)#xx36Hg%G24Slb6>m(o=$_-I6@lS2+J9r4Fw#zP7=^AgXrGCCsA zKXI87LA=$M!=S+ak985cMb1)O@H%Z{g;K#;i&O51wL0pOf=*Nm`DM+n%nn)9co$_? z#6kzh#qpkDq0FCVyKtnzL(^gC15@(w^p<0`aD53Zxa8c2g5cjui|K#B=tjM}P}HMU zpbAYcB<|DFpHtrDuxYWW>n6Vg1!RoqgDTPqTZC~3sDYMp7 zt2fMlGrp^2Jy3g1mf}$4wlVE9ce>Ltl98~hsT2JrFEVbUvC;K&sj@HdxdGkHA5AV* z#s3MclIK~;o+{zZ#D6gFIG)c|AxK&Zz*3rF`MnTLc9$|Bl^I~^8cTk|H%3~T(nYN` zzV~7Mo%{+MS5>SCH(JY8%=EC2@tw(jMsSkigez2(MwBTl#MTWy4~HsRVr2NeM?Dk* zcDROEoCh5cmzM^oH@_Cnr1;QDzc7~`z`+i61V$sLmZWGwGORKsR7#DVWQ19S)--KI zpOyX_M#jZRL_bI>Bf7nJj?OZ*leXDY+432oe0f``@>AMo5?ar+t1g3BJVA$iD&Rzg z%}lHUP14;#>wYOb;!K(IjWw5Y5N4iNTVS~Ho9Cqs@~V|XK8cES&UC+FbJ+1?6@{RL5daR1Wns=tPoZ+^ZRZ5;{ym}QY+ z8;YJN{J)^^HJsT$zE_b+95gEfs|EQuWqlt$DolAkd;~p_!CJWFJY=?<*G~u==csct zM8Ym-FH*W#Oz0u{)fnMCHgiX2diTHQ8YfWkR?IzYZ6dfJ!DWs2*?S!z{I2VhKw%&K z5GO$iQQ>-~jq)c#2hbx_-A(T*G@Ax7)@2VzPyxh0uetR1sD2R(UH3 zU|<3Wc14O`$^172AyxR$qDL#_S!z)XLRV?p<2>DxYp!Lx45iee_xoq-t1m#4&n_T0G6ED+2G08^ZO{N+r{H`H+Et!ZoL+wQO{-CPTh;<5uped zeVL%n_nb!|rgEmjcc?(Vvy!Ts+WG7Ib6Om|`M15>?H<{mgQOW8KZ%;$1FRp((xB^v zoUO3-qf~+GSY_MKACA_oYTr%7KJ<>^E|$$}-=7rCJ8N2a0`+-~yX&qZ(gy{Nb3b!V z&aAkfJGgHU4SOJgatmf>xPf07rfJUnSo=fz8`El2A@5({1$}f$!{_x|HdGYwl*bR+sZZ6LyGRFd2a<*wL}2mTnLwGcSS zIOmh)&x7wY6EQLkj~Gj;4H`oR=zy1s#_kcDW!Hxf8cX9;BgKJJAgS3S``|jjH$oXv zk)RF9P*t#b*IzR1u!asAr!~F|w`$-Q_&da2gFqmsE9*M%n9#JSSrPw+qhOe`Ea$%M zuMKR+VqK_17879U$BLmcwJu0cNgYpjAgQ`48o$LIdJL#F41R0E)5&Qqzr}QIiO9$; z;srWd$A7EU{yR$Pb;v=nNP%(H|5lrA{}B#wXAGNU-%mXvl9-8?(a<9Umo1ZUE{QC7 zo4fYn-MPJIx+6T-{rdgzZzbU<##b+YxeaB+K_*!+CX}dnvvUXyoJ;E9n^2MTm73_? z=wUwIYd>J{S%CaX5wJT+49zK8w1m zEG3-XJ!l2VQ|H33#j#Vn)9V?iw$}s(pESc7Y+xAQpH0ywM^44>^xKx(?c(iB*RS1r zw)|S`#0|Ui_^AMczGoDe)g!I@x-ju);ko@76BzOHV~4nQO{yw6uX_J$*W+!mdJERI z$wGwLigM|wKegKv^eIS&8#Rq-2^a73UT5&{$+1|a(~T__e!?zmYSer6oVenTm+SYw z%(?s9DPFEthV;uZr*HK;wZ8V$6gUpEO@^%(ZiXkOBTyr*ah;7jYKBKYLytUdT0Ndi z+F*2Gdn&-{ak#Udv0>=Stk!OEvsgPhWPblT8r1{voUvS?gbVzNF=Z*RXq_mZU6?_i@s8t^53} ziGHI$)1C5#)l@6wl1_vJ!^1&EuCymBPxh!>(Z0vatBNo?}w%=INqKQAef?OBj{Hp zmQIY&0>w^$O1NbH19w1(zpsxXSAQ}Oc;(V^AJ-S4 z1hYvp8^b&b^Y!a^dNk{mcUT8L`n#o8jS|$JVCo$uW1MowP>vEmi#yW7qW|-aRarVj zCuxV2w&_Sqf*Ea(fjmeCvuX5#O_Q5FX1rj%WE_Hyg2^#vq||2+-(mD|k9ppUI`hY| z-@J~)FdE^xuvxYlTzIoIG=m*;j+>(vBupbsNTI?1>=9fm@HAjnaP4 zxAU6`^lc3N&+(i9C{&={oSMaE(Mt`wIQupWwhrV!iN25!0)GsbQ zm)Q9xz5qP25Abd?_M>2U*AkL0z@T#>fk}eEp2nEl47&q5PZ9(^wOp!|qR3-#ZiYUc z49((LoCSk}NrbQs=tt=xgbjV7L2f+8!l9F-0m!yXX%2nQHNXJyhJk`wY$&dc9?Lk^ z2pOU8g=TZzWgKs4YBn~k&G8zAW+Q!YJov6TP!$sf6skEmLTy1*1LFygp<`fZp})#W zfB=HgJiMkZ4C)#iiW3G@fJrO^(j2-^K$QXp7&_l@2ooYtj(E2*jw%cUP%O}bO)msB z$Z}{=fE)Dw z?w4T{#y)Ed{f}zpV9zpuqjtV*+$=m(bXSGmrulb;^Y1Xer9&ooh3J5$nJ@w2Jq2+- z1T?_9izf_#G!{=8B!fXRQ6AmXdG9~foRgP>a|Q-upo8z^dp(E-1GK`(Ej?Z>fZsQM z7^c5L9RD;`(;OtmnfOsN!5(0b(gtPrPt#C^I~pf{fRW=5;;T_HOQ-^ygQ$c5*PF)Id!ZS6zUSMPXIX;xJ=?Z@ zEAnIzxTX>MJ=g5nmhE}p`@@?T;b=el2+X8UKTg@3PM7_#o4V3PMGfX+w$DZ|zn^En z8}e_P!@LYRNtI6m^y@Y2I`vOXSn9d0H$81Y=6SF?h2Kvjp^}9xYHX`G@ zp*+%~?eYc?Z9IRjq2{6W{lO&Co~KIk&GpUmykE&H{dbLQ)nrEp779OAN~H4A%V>?A z7wiu5+^rpljQTO)K@+SD>@r2e^hE><%wOeV)L{uYlg+cZNrn+IboRD*r1&$-jjzy{ z$uzC`=go8(sqklC0hxRn1$o8v;~?kH3ae&`9P67wJO$M|7YfZ`^0|rYY0XJA0M;k@ z393tWm}^Pnn(DY}y;MW?_4m`)YU=ocv~l9!cA70TP?P} zq$+BQs-@H_L@Q+$HRBZwpYiEzIP}M#>Lv5@*(jR8B-kW~2ug0N1nP6_`)8m;z9<31 zq|_Wn!ycHi^@9tv+IoW&c8=96h^S@lgYt{?(F2!-Nf^#cMpZ{XGHC@R@s+7K>V?8T zjDmrBH!kA}qyTt=4ihA(4grCoH|}duxSvmEH(BpOzmPbr_Fy`S^ZiPvRrAih76+uo zC>^GR1Yj3Wqv2kPMgFh@57ohcQmHUT30>2eXw(&w0zfi_mHCr#4PLm-u zCA$xquZur2v|jyS$r~~gmNtA6;R5kA880;bJbP2Gj7qtgs<2f5`-_LW%mdjDWSK2! zpi8{5cBuWn*&xOjQD~{-s@m3t)uZ&gM{96|JRw1_m0hMk96!py+igV2XO{tDeuIiPA z9-d7sN*5@emo%)x%A}(m{UkxHs=WKkb@W@2gONjy46d+K%L+HHwG?hm{9F31YK}uR z`bSX|g0_OSp#F}lxGd8>mHm%bxCW_$K8QJ4gNkLpu+FY3)NyegP>Y9GbJ>;JmO}7NQ%jbvA@MZc zWIEXOUE*PuA^p=XjzUgY+2RE@_3yo_^6m5VAANVj?e$00vF7}*<8V=`TdcA1qw6h0=Wc}Nv(#93&+aFuhsB00BL++q3&QP9l@IT zWwNZ0TJ0@p1M!4nc*4|h4fc}??+MdWsDS|*MRdmJ8n*{EHcgm6`outmm_UZ4H}&HY z8pR;Ep{^Q0(hBn==}$lS;|PF51~M}VViL2}Q$*wwjWy7quAiql>N`|P82N)*JR)N| zdqt;?k{PaLPp0FTrYk(G7Yt^op69OzF{mA?2Fy+!FsVVIvk9~S@zmHb2|+x=cSOy) zne_(oZ~RYsI2OrXoCMqJXyC$z?r3Pj)lEBJZm4p z&(^P<<4*TCt@f(ZJ;5?xou084d)qqecG~ZbTW9R;yR)~a=Z8@JODOiFbMop8YB_v! zc+%COR(Qq^FW?6|KWZHxV^y`*JHY-7@nh}Nx4)frULSSY(dqHaLwNY>Az;?}_4rU# z1&wMSw>ob$_OkV+_4<%e&Se|K&QGD5+=y1H%+&3z%^&Wty96XKQ02$HV*Gc_c|agcH1SzeTsVP&xtf>*|9u`p4*STx zZ~zzz_)J(g&m&abN|-Og2RBg-^l%1={b!qgUq>wW!l~9_{+2g zND-Lp8E}1PX^CLUHL9he+|FxQg~%c@@5lbl4cW^%N&&Qg8l_k@>R^kkK!OmdmZJw* z6Of5l>bD;h^r9n%bNAh1KF7m%C_hwVb7e-Yq<>KDjH(NRxN9 zS~_**^G}7f70G4GH2Z4ix*12eaWb2n$DkUHu7JEjreS|Ja6`DLV|O>-AR~oz6tU3^ zSAC)7pbMhn3r{CgC}UEtk!}glX>qkFm5f`1L8Go?2_sMt_31RI@94nphkkI~XrMpZ z9kzck$KNA0!g%7NvCwe*3?k)YwVgLFtGx8I+?wq8$k>mu;dsUXaRT-B+MhBUK8*Z6 zTG2ABPPPBE-%X1+$x7H~Mh^G^C;jN@t4h4RX+p4XvBupUE4 z>wXwE>gnWH5@-bVAdywl5Q+hztxA0oO}p_Bw_h8LCG<9jQA&ABklGHh1zCEhZQPnn z9Z37{t_FOsF05qptR6;v7?cfXjP*6|Y`HS`@8SPJEc$=o-~2y(jZb?2f6j5%yt99N z(}g!}dfv|c0EK<8FNA6OW?u$@PaX=;|{Sf*yL>sk3E zxNZ<-=003OoDjC$T8FN+9^D6q*I0#@YjDEL^Sm6dU0}wqyv2Ht|BpZ7u@56Lh|#)u z%m&~({ZG#O|KX117~kao*ZANu{*5Sr?brTE#>_ui{lDRPo1Wt7{-x*e%31Mukwu-E zczC`#`(4Ws=$y4KTNka)F>Z=rVVhBL7AM^^Bj1!jb1shppGT4JiAVuo(AIyfFf8+nJ@%icJkHZ1GjmEfZt6T`PXcQ#sVwG~5gIgJ+(8pCroF(f& zE>IQ2VJGJ6WTNkI?sz(nXWi@TzjAM{1@u;7$x9BcqkMZ<6)$LWb!{k~9UJ)un zahUM4R@#%&4TI4ifW$A`5ISB#-e6;kK=#OY^=hX_>Xc*_4o11qE3Q}L&n14cIpaGl zzi3!;s4kg>aVd9-ATn!urW8=-zSv(>gIe1!BDgfACK>!`Qk~4j;6g=`Udi0E5k+5K z2n~K;WbhS%!Ar5xR);Qo*6ZWHmBGtw$5pX?DIp9OP!^>`{t6N+;+BFGS4oLUTgYm%1i&|my)LaZ_PP{L9DH5%+GZi?Fic_^F%koOKR#q+I%FXD zqjiMEEAgkqLg24^LRZaY-7fBz6uJo`C%A>Ns~ikkh74=La7c=8jG@;|+rvOnmSyTZ z9cF1hHawNYkdjz4hE!(`h72`HLSU>)2Z+kB@U752k5z#e1Av+H>}lS^p5}7)G@q0` z`?BwtUf&WjFx{Rsok&K~u^ltCT{9Bq)3PVJDuCXyaM)P(gMxdSuD$r90%mOzXITiI zv54h7d8FmdS=BVsnZUB2BF?h9T6#H$!A7iVF0iV(F|V52@v4qrpD{oDf4pRQMV_IurGTdmr*2p zR>Z?lcm{B=`^14>v4>1NJ_X;>5R790-#n4Mf$#N-l56Ink3HiFc$E4C|2&L0nD{P;+?O!9XPNOE}0HHb^W7bP|ECXM|!6n&CiIF^PvvU>;inFG$@+ zK%soW;C$qfOB_oAQz4vI9oH721yiEM zG2F=$>#Pn%YC@YMOG;1Km(^qmz;M^=tgewUnJ}FvU^42qbWQD^S#UW9Vq1f#G&oQT zdjGqOCzIKRQJhOEv*26L!+%DfCYN}e>asV+N**R@KhNnx> zwo!hhYN{(JS~@AQ$d7{P%b^L|)1AkLbG03hBD+&nU~jn?N?Hj9!$eyeBmn-jbdR$t z@DjnWxKeQMQo*XV0=}7G*dzc#Dk5Cz+1!)Dv8CjFUqn68_YIhXeZS}V$Zt<7A|&a+ zT!I8hlejQp^7&*5KyDx+tXx~>&QpkpwJP%Ry6tU+Lvbf_VVI!rA1orcwSA;_<;CKG zl7TNshRqG>GO<5UGI$u_+jT&PXxkVr8{>at!V2F3d@ zh3bZvO9qbLPA&>K=r*AJSAmyEhJ}?be&13TU$NH37Zz;8@$7+i0$*J3ayRGGEmyq2Qjm7a ziDW2Xn0a)&=-L#b-ALsZSl%RH__eB#eXp`(%&P^l(v^3C3qxtBF?Lb%# zaV}Lui(V-s!;Fv0KAOuMv_C+v3cQ4o7uLl1eT!mz#i|%zTo!vQBZr~S%^=`{hn{Up zAsssi`i|(?rf(R|6I<8P#I+8C(Ko6_IIP)s_S`bo&*_pY=5f5QJfUY5+wRk|?9DjA zBi0X|(XDN@noF{F(3|_!ICZ7+Ac?WK>}G8)F}7THLr=PqJ$vp7HNB?sp-p& zY+R=1g7;(M!V#NJ=zCAx?af=??YP$8RtlQUXYQ6-LDYZCfcgezF2>oW)m?WuFyT(a z1a7r4dUv(l2U8|6=N2XmM!v>r8wbsz#VxJ?{toKja1QTm00WVrA}icQM#+lG5GP_P z%>o9s7Cf5Ie0$dN^|lGVW~BKZOcN4_nn3k6uq+__0Lph_G!!a~R*e!V-5K5yCM>wp z(HvqJmAb7M63R$&MubYyL=(;g8wDmAu{ug|gp{zTZj$k_%1eBPZm zOiGdQq5xUSFfNlsT5o--EMu`wt#)kRhDowGN@t@gsbJ*LMm3*oWPs!b=14i^MEJI> z$edGsWw5V?Y9q$1*$K9-rez77ut)c`hQ>SDLMvZ|Gd~=b!!t69_6Fy7`ozo;4!uZo z^u{ztZ%K1B8EYi@26QD#WD;lqP<9Cv962DQLm(;0+!BqENKyjrK=%g;Qk;`; z8`F%2iS5+RlmuGhfjq<(NQok?43ZKZA-yEJ0=)o=IG6P{B{7SX#H^ttW;rD>`==y@ z%VHNZ5i8|0;qpB9R;SXM#1~m%)6YXm#Eejw8Tn`=8yUpCC<$taM@w*lmxM7L$GgahSQqA}g4r7L4o7^FXniF_vq({Z zjkLQeZ?Oqku@uk}Fs#S~N@Uo9BZ6)bVGuwrfUGt1-X;@vkxbY%WWp{d6L$Y(BJ)X{ zJ0ZP~3!XYA(>S$G7@@r_yxgxH6Q zlP5)vmmnx9AWxdu6h?X_5~A=nCQgU^R1iyJwlis}s1E~dGc(%6L`S+QF#>^D%V<9D zZQA4(X_H$+o7{5R3Kcre=3=mbU;dq5UOprK<=q=|M=Z^6O1MH1mQCJ}B+X~+@F3u1=0U1=C; zk5F^MfkX)2QRuz~kFBhhKxIfCGNjTF3V9k3fGn^UcpIYyN}yFt5N_6j$!@9@rvt^X z0t6yU$~dHA!oV%`l#$;fP_t-0^Ad;e_5OzITye!7+zrvMhNI>RhRx|NdIQBeD5$uj z1K=Fp0#P)9%?O$-ItULnA6URdcrF}LZh_A3k##{$7W3UriLg>*`v#?9^4*p}K_=@ClZ=wqI#iL`R2|Dq^&eHmOl`Mt~+4ZLr~|LXR^}UdM2OU%Uyqdo~uO?vCeF` zP;@&Ifya3wiXeO1WkiUpy9n(O@$62USyHL8?7l$Mf8Q5w%5bzxO;Izj>*yy`n_ zS9TZ;yun2u9Y`WNE0x!EM+}H8uAIn?E1(W@nU^_W-sK3h&SZ0|^mZ%*j1^hOXm#%* zU(eAnEIAsWgyX?%EXZjdrL1r(YX*M@Rsi@BhZbtI&vEjsB(u2$xTE$~0`q~lqN7bT zpLv<1%UwgcP7{5r^maqZ4ec<%qhMv1@E4HKY23Re95Oh;4ZzVjGS+k#+hG`S)1;wx z6b_r|XcasPVAQxF<0c+&Y@@lHvmp%sVHn=0qbT-qt%?7z5R2z5k%jQ712In~+T{h4 zQs*dl+9Y<|Dqlx|=v?Ni*~VS*U*g61FI-Ebp5i|o;!2oFl}~}_XNgXXM0%1N9<$t~ znfKn^Inf) z{g?Xo`Y)f>|3h4B<-gS-W6ti37BdwFZ-oPVx*pMW2>9PI|1~#!Vf}~Y|0(|WL9Q<& z{^RX1XUn1~tqut(tZasaWU*cq5)$2v;D@0%%Oeg6$zr}DAmnC4wU-!?&&zG%tMQ#_7?7&eeA2dRiM(Z9X zj3Y-1*Gx@c>eV~)mKvk=_WR-X5GU*4;U1aev~ykIUezu$hV~>V+U&$Mr;V(**WE^B zi{o&|clZ2ZPLKr*YGxJ>FDCbCrO=HKdxU0GC2&{lT+TyV_TQaK~}uIx~tQVPIq$ zK|U$80>i7FXMcz{DS|UvHT#7G(i7%8xw+!j^tqgO?Qy+DJ2&6sx+U%8oGka&z)u(N zFj6jB{NX#|um{!I$}t5Jv^#`Sg50%n|CxzYaLhD&hzQ1bhz*EA3xSX_MVnNpX1H?{ zlMr|l^i^r*d@}!kwrh?2-!IR5gNFGZ7^cDrUZhFki^2+-#z~y1M3}QM{&Q>K(ngQ*A|H&bzgb-j~kWqS^$vJ6@qiv4;Y++&RxPhx(MY%~fl z91wz{99O^eaMeDj21r6kc*2ftcL4oU3iTk(BSFBecU^}5&X|Isa}>O!x?vq&-R#PC zLUY&#u$(%isDbJ!pQi4NQge6?9`_cZh$Fhwq{R(UE~df30Iv}uQI!-S>Yoe_^c3_9 z#Fp4ZD7@GZ1!!j`K2{x8QAQWJDvCK)9669Fut~^(I_5^cCl>y3Ub~$C+rIR8(tOY< zt!ZOD|1V<07Wsdr%oG2AkZZ=sBM_Hz@_+yS?VBHgmye^j$mjKN!+X*v#(o)J|MusT z4_H@V=tHtSZj`LqdunhcyBxS+Ix7;lm%sq410BA{mZgxeubu$+AlR-u~~uv;nDsF89)Yvz{NmedT6l!okMpK_V%K zjeOsfA8z0|3=%A0iv>_*xGIqwoaPTAM((eBnQzlgE9wnke3E{fIQds>${hdo+wXq( zDJo%^C$2xjn)3u|r=^J6xf;Uj;TV{P@;tCIjkW@R(9Zh3=qNf_TBLUgLQta!4$cU` zG4xj@K&>3!v?sggd3rw zemNdRWf5gmsP|iV1!4+7WsGENRYxYn{*u86pHAQVx6mhm-^r|dp*Dorw?BQe5?(Wi zj-iv#jb-qxPS6e+0(4GC!|Wj-G~bm)+^X^ZFTeUxdFfY{TMpW#(9EkUcZ6yUhvlQ( zlz|a;r_mc)%Ay~8qlRr8MT6=*=y8&cI@xG+6b*eJ#k-rnA6~zJO%D-n7ulB_m7Dm z-gMrLKu9_XZ#FBK-wZ|}Xvt`s(g8Z{BmlgfC&Txbz}>dT<@tHv@1e$Gn4BZX+gW*a z(@rPjaXHvSwTK`zAKM6x&l_p0hO zovd6<=V~_pM+J#40OGF!4!A}gKVOpf8^D7%fCp~_8m!Fsw;BxSZn`?#53|923uC)7 z-&-8A>TTmw8}oLMT#tv|Z$5Q581bP;0elNkRh>aPw0-Htl8uiY`DB<~oP?jfe)3$+ zTlRmxcdNgmnire(KRQ`jxSmw^B-u;rXpefiPm^K09Q1GYUg0egx^V+16;qs+`AxOr z)oj7|qU?i+MoWKS2!Napfo~n1gat6EdbT-pQ)`}^wL!On-t2#X#f?VgWSIE~R^#t_ zTtDX*tY+1Ht4F3sUMgAm6$Fa2h%H;wVany`+87%X2?K zUG~J+{UJpSs$t?*9R0|cYQY~QL|i2#Z^2*mBlNL_eWgSk{U4$>7Jfaef^pjsEwsAE zQI|2%u`TC1hRmLE3->%XlVq%gG{+nmC7@+2=9neBn47l@WQ#Befox$==w=e?K#MpA zdyg~`^KVE%!F~ylO8<*{5c)4s;nCj4AhEc(&2zbL_ENsWLC}IJPi>2oh2VdX| z=qHYW(Aa+%2+|!w(n1~#2f#5&IdG({rBO0Cc#?A9Q)Q`D40F>`0v{_0y-^ISQve)H zVh;2#YDtGVG@jCjyZj?&Fq)W*p|jman!(t!7W4pPW>{=RLv>v|yMtkiP!PtRw>0aZ z`v3r^rSZeM%t`2nM*Ls^5z{i^L_essWe`GLPFMr*