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

+Classes

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

+Namespaces

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

+Namespaces

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

+Functions

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

+Classes

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

+Namespaces

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

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

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

+Public Member Functions

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

+Public Attributes

 api_url
 
 AUTH_TOKEN
 
 BEARER_TOKEN
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Member Function Documentation

+ +

◆ generate_commit_summary()

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

◆ generate_commit_summary_with_llm()

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

◆ get_api_key()

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

◆ get_supported_file_types()

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

◆ send_file_for_docstring_generation()

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

Member Data Documentation

+ +

◆ api_url

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

◆ AUTH_TOKEN

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

◆ BEARER_TOKEN

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

+Public Member Functions

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

+Public Attributes

 folder_path
 
 repo_path
 
 repo
 
 repo_details
 
 relative_file_path
 
 api_client
 
 supported_file_types
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Member Data Documentation

+ +

◆ api_client

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

◆ folder_path

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

◆ relative_file_path

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

◆ repo

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

◆ repo_details

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

◆ repo_path

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

◆ supported_file_types

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

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

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

+Public Member Functions

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

+Public Attributes

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

+Private Member Functions

def _amend_commit (self)
 
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

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

Member Function Documentation

+ +

◆ _amend_commit()

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

◆ get_summary()

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

◆ process_jira_integration()

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

◆ run()

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

Member Data Documentation

+ +

◆ llm_client

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

+Public Member Functions

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

+Public Attributes

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

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+ +
+
+

Member Function Documentation

+ +

◆ print_processing()

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

◆ process_file()

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

◆ run()

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

Member Data Documentation

+ +

◆ file_path

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

+Public Member Functions

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

+Public Attributes

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

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

+ +
+
+

Member Function Documentation

+ +

◆ list_all_files_in_dir()

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

◆ run()

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

Member Data Documentation

+ +

◆ dir_path

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

+Public Member Functions

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

+Additional Inherited Members

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

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Reimplemented from penify_hook.base_analyzer.BaseAnalyzer.

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

Member Function Documentation

+ +

◆ get_modified_files_in_last_commit()

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

◆ get_modified_lines()

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

◆ process_file()

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

◆ run()

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

+Public Member Functions

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

+Public Attributes

 jira_url
 
 jira_user
 
 jira_api_token
 
 jira_client
 
+

Detailed Description

+
Client for interacting with JIRA API
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Member Function Documentation

+ +

◆ add_comment()

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

◆ enhance_commit_message()

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

◆ extract_issue_keys()

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

◆ extract_issue_keys_from_branch()

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

◆ format_commit_message_with_jira_info()

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

◆ get_commit_context_from_issues()

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

◆ get_detailed_issue_context()

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

◆ get_issue_details()

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

◆ is_connected()

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

◆ update_issue_status()

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

Member Data Documentation

+ +

◆ jira_api_token

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

◆ jira_client

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

◆ jira_url

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

◆ jira_user

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

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

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

+Public Member Functions

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

+Public Attributes

 model
 
+ + + +

+Private Attributes

 _litellm
 
+

Detailed Description

+
Client for interacting with LLM models using LiteLLM.
+

Constructor & Destructor Documentation

+ +

◆ __init__()

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

Member Function Documentation

+ +

◆ generate_commit_summary()

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

◆ litellm()

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

Member Data Documentation

+ +

◆ _litellm

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

◆ model

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

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

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

+Public Member Functions

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

Member Function Documentation

+ +

◆ mock_api_client()

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

◆ mock_commit_doc_gen()

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

◆ mock_git_folder_search()

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

◆ mock_jira_client()

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

◆ mock_llm_client()

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

◆ mock_print_functions()

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

◆ test_commit_code_error_handling()

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

◆ test_commit_code_with_jira_client()

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

◆ test_commit_code_with_jira_connection_failure()

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

◆ test_commit_code_with_llm_client()

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

◆ test_handle_commit()

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

◆ test_setup_commit_parser()

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

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

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

+Public Member Functions

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

Member Function Documentation

+ +

◆ test_get_jira_config_exists()

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

◆ test_get_llm_config_empty()

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

◆ test_get_llm_config_exists()

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

◆ test_get_llm_config_invalid_json()

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

◆ test_get_penify_config_existing_dir()

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

◆ test_get_penify_config_new_dir()

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

◆ test_get_token_from_config()

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

◆ test_get_token_from_env()

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

◆ test_get_token_not_found()

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

◆ test_save_jira_config_success()

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

◆ test_save_llm_config_failure()

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

◆ test_save_llm_config_success()

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

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

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

+Public Member Functions

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

Member Function Documentation

+ +

◆ test_config_jira_web_server_setup()

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

◆ test_config_llm_web_server_setup()

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

+Classes

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

+Namespaces

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

+Namespaces

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

+Functions

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

+Namespaces

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

+Functions

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

+Namespaces

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

+Namespaces

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

+Variables

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

+Files

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

+Files

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

+Directories

directory  docs
 
directory  penify_hook
 
directory  tests
 
+ + + +

+Files

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

+Directories

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

+Files

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

+Namespaces

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

+Functions

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

+Variables

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

+Classes

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

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.file_analyzer
 
+ + + +

+Variables

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

+Classes

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

+Namespaces

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

- _ -

+ + +

- a -

+ + +

- b -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- j -

+ + +

- l -

+ + +

- m -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

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

- _ -

+ + +

- a -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+
+
+ + + + + diff --git a/docs/html/functions_vars.html b/docs/html/functions_vars.html new file mode 100644 index 0000000..936617e --- /dev/null +++ b/docs/html/functions_vars.html @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + +penify-cli: Class Members - Variables + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ + + + + + + diff --git a/docs/html/git__analyzer_8py.html b/docs/html/git__analyzer_8py.html new file mode 100644 index 0000000..ffa378f --- /dev/null +++ b/docs/html/git__analyzer_8py.html @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + +penify-cli: /tmp/github_reposRepoArchDocGenContext/Penify-dev/penify-cli/penify_hook/git_analyzer.py File Reference + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + + +
+
penify-cli +
+
+
+ + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
git_analyzer.py File Reference
+
+
+ + + + +

+Classes

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

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.git_analyzer
 
+ + + +

+Variables

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

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

+

Consider the following example:

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

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

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

The arrows have the following meaning:

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

+Namespaces

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

+Functions

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

+Variables

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

+Classes

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

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.jira_client
 
+ + + +

+Variables

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

+Classes

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

+Namespaces

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

+Namespaces

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

+Functions

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

+Namespaces

namespace  penify_hook
 
namespace  penify_hook.main
 
+ + + +

+Functions

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

Tests Coverage

+

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

+

+Features

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

+Installation

+

Install from PyPI:

+
pip install penify
+

+Usage

+

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

+

+Basic Commands (No login required)

+

+Commit

+

Generate smart commit messages using local LLM:

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

Options:

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

+Config

+

Configure local LLM and JIRA settings:

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

+Advanced Commands (Login required)

+

+Login

+

To log in and obtain an API token:

+
penify login
+

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

+

+Documentation Generation

+

Generate documentation for Git diff, files or folders:

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

Options:

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

+Git Hook Management

+

Install or uninstall Git post-commit hooks:

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

Options:

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

+Authentication

+

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

+

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

+

+Local LLM Configuration

+

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

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

Common configurations:

+

+JIRA Integration

+

Configure JIRA integration to enhance commit messages with issue details:

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

+Development

+

To set up the development environment:

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

+Running Tests

+
pytest
+

+License

+

This project is licensed under the MIT License.

+

+Author

+

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

+

+Contributing

+

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

+

+Issues

+

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

+

+Support

+

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

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

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

+

+Basic Usage

+
penify commit
+

By default, this command:

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

+Command Options

+

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

+

Provide context for the commit message generation:

+
penify commit -m "Fix login flow"
+

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

+

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

+

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

+
penify commit -e
+

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

+

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

+

Generate a detailed commit message with both title and description:

+
penify commit -d
+

Without this flag, only the commit title is generated.

+

+Option Combinations

+

You can combine these options for different workflows:

+

+Generate Title Only with Context

+
penify commit -m "Update login UI"
+

+Generate Title and Description with Context

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

+Generate and Edit Full Commit Message

+
penify commit -d -e
+

+Generate, Edit, and Provide Context

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

+LLM and JIRA Integration

+

+Using Local LLM

+

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

+

Benefits:

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

+JIRA Enhancement

+

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

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

Example output:

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

+Configuration Requirements

+

For the commit command to work:

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

+Examples

+

+Basic Commit with Default Settings

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

+Full Workflow with All Features

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

+Troubleshooting

+

+Common Issues

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

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

+

+Configuration Overview

+

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

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

+Basic Usage

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

+LLM Configuration

+

+Web Interface

+

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

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

+Supported LLMs

+

Penify CLI supports various LLM providers:

+

+OpenAI

+ +

+Anthropic

+ +

+Ollama (Local)

+ +

+Azure OpenAI

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

+Configuration File Structure

+

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

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

+JIRA Configuration

+

+Web Interface

+

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

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

+Creating a JIRA API Token

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

+Configuration File Structure

+

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

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

+Configuration Locations

+

Penify CLI looks for configuration in multiple locations:

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

The project-specific configuration takes precedence if both exist.

+

+Environment Variables

+

You can override configuration settings using environment variables:

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

Example:

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

+Command-Line Configuration

+

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

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

+Sharing Configuration

+

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

+

For team settings, consider:

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

+Troubleshooting

+

+Common Issues

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

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

+

+Table of Contents

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

+Authentication

+

+Login Process

+

When you run penify login, the tool:

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

+API Token Storage

+

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

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

+Token Precedence

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

+Command Overview

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

+Commit Message Generation

+

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

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

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

+

+Code Documentation Generation

+

The docgen command generates documentation for your code:

+

+Use Cases

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

+Authentication Requirement

+

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

+

+Configuration Settings

+

Configure local settings using the config command:

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

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

+

+Git Hooks

+

Penify can install Git hooks to automate documentation generation:

+

+Post-Commit Hook

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

+Custom Hook Location

+

You can specify a custom location for Git hooks:

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

+Advanced Use Cases

+

+CI/CD Integration

+

For CI/CD pipelines:

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

+Remote Repository Documentation

+

Generate documentation for an entire repository:

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

+Troubleshooting

+

+Common Issues

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

+Logs

+

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

+
export PENIFY_DEBUG=1
+

+Support

+

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

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

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

+

+Table of Contents

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

+Basic Usage

+
penify docgen
+

By default, this command:

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

+Command Options

+

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

+

Specify a target for documentation generation:

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

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

+

+Subcommands

+

+<tt>install-hook</tt>

+

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

+
penify docgen install-hook
+

+<tt>uninstall-hook</tt>

+

Remove the Git post-commit hook:

+
penify docgen uninstall-hook
+

+Option Combinations

+

+Generate Documentation for Current Git Diff

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

+Generate Documentation for a Specific File

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

+Generate Documentation for a Folder

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

+Install Hook in Current Repository

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

+Install Hook in Specific Repository

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

+Uninstall Hook from Current Repository

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

+Uninstall Hook from Specific Repository

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

+Git Hook Commands

+

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

+

+Hook Installation

+

+How Hooks Work

+

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

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

+Hook Script Content

+

The generated post-commit hook contains:

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

+Installation Location

+

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

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

+Installation Requirements

+

To install hooks, you need:

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

+Verifying Installation

+

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

+
cat .git/hooks/post-commit
+

+Hook Customization

+

You can customize the post-commit hook after installation:

+

+Modifying Hook Behavior

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

Example of a customized hook:

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

+Advanced Hook Scenarios

+

Conditional Documentation Generation:

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

Documenting Specific Files/Folders:

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

+Hook Uninstallation

+

+Standard Uninstallation

+

To remove a hook from the current repository:

+
penify docgen uninstall-hook
+

+Specific Repository Uninstallation

+

To remove a hook from a specific repository:

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

+Manual Hook Removal

+

If needed, you can manually remove the hook:

+
rm .git/hooks/post-commit
+

+Verifying Uninstallation

+

Check that the hook was successfully removed:

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

+Advanced Use Cases

+

+Continuous Integration

+

Run documentation generation in CI pipelines:

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

+Batch Documentation

+

Generate documentation for multiple repositories:

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

+Custom Git Hook Integration

+

Integrate with other Git hooks:

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

+Documenting Release Tags

+

Generate documentation when creating a release tag:

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

+Troubleshooting

+

+Common Issues

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

+Debugging

+

For detailed output when running documentation commands:

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

+Getting Help

+

For command-specific help:

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

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

+

+Workflow 1: Efficient Git Commits with AI

+

+Setup

+

First, configure your local LLM for offline operation:

+
penify config llm
+

Configure your JIRA integration for enhanced commit messages:

+
penify config jira
+

+Daily Workflow

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

+Benefits

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

+Workflow 2: Documentation Generation Pipeline

+

+Setup

+

Login to Penify to access advanced documentation features:

+
penify login
+

Install the Git hook for automatic documentation generation:

+
penify docgen install-hook
+

+Daily Workflow

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

+Manual Documentation

+

For specific files or folders:

+
penify docgen -l src/components/authentication
+

+Benefits

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

+Workflow 3: Code Review Enhancement

+

+Setup

+

Ensure you're logged into Penify:

+
penify login
+

+Workflow

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

+Benefits

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

+Workflow 4: Onboarding New Team Members

+

+For Team Leads

+

Generate comprehensive documentation for the entire codebase:

+
penify docgen -l .
+

+For New Team Members

+

Generate focused documentation for components you're working on:

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

+Benefits

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

+Workflow 5: Legacy Code Understanding

+

When working with unfamiliar legacy code:

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

+Benefits

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

    - a -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - v -

    + + +

    - w -

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

    - c -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

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

    - a -

    + + +

    - c -

      +
    • classifiers : setup
    • +
    + + +

    - d -

    + + +

    - e -

    + + +

    - h -

    + + +

    - i -

    + + +

    - j -

    + + +

    - l -

    + + +

    - n -

    + + +

    - p -

    + + +

    - s -

    + + +

    - u -

    + + +

    - v -

    + + +

    - w -

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

    +Namespaces

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

    +Classes

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

    +Classes

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

    +Namespaces

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

    +Functions

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

    Function Documentation

    + +

    ◆ login()

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

    ◆ save_credentials()

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

    +Functions

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

    Function Documentation

    + +

    ◆ commit_code()

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

    ◆ handle_commit()

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

    ◆ setup_commit_parser()

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

    +Functions

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

    +Variables

    bool DOTENV_AVAILABLE = True
     
     path
     
    +

    Function Documentation

    + +

    ◆ config_jira_web()

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

    ◆ config_llm_web()

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

    ◆ get_env_var_or_default()

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

    ◆ get_jira_config()

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

    ◆ get_llm_config()

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

    ◆ get_penify_config()

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

    ◆ get_token()

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

    ◆ load_env_files()

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

    ◆ save_jira_config()

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

    ◆ save_llm_config()

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

    Variable Documentation

    + +

    ◆ DOTENV_AVAILABLE

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

    ◆ path

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

    +Functions

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

    +Variables

    string docgen_description
     
    +

    Function Documentation

    + +

    ◆ generate_doc()

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

    ◆ handle_docgen()

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

    ◆ setup_docgen_parser()

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

    Variable Documentation

    + +

    ◆ docgen_description

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

    +Functions

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

    +Variables

    string HOOK_FILENAME = "post-commit"
     
    string HOOK_TEMPLATE
     
    +

    Function Documentation

    + +

    ◆ install_git_hook()

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

    ◆ uninstall_git_hook()

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

    Variable Documentation

    + +

    ◆ HOOK_FILENAME

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

    ◆ HOOK_TEMPLATE

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

    +Classes

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

    +Functions

    def setup_config_parser (parent_parser)
     
    def handle_config (args)
     
    +

    Function Documentation

    + +

    ◆ handle_config()

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

    ◆ setup_config_parser()

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

    +Variables

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

    Variable Documentation

    + +

    ◆ API_URL

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

    ◆ DASHBOARD_URL

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

    +Classes

    class  FileAnalyzerGenHook
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Variable Documentation

    + +

    ◆ logger

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

    +Classes

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

    +Classes

    class  GitDocGenHook
     
    + + + +

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Variable Documentation

    + +

    ◆ logger

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

    +Classes

    class  JiraClient
     
    + + + +

    +Variables

    bool JIRA_AVAILABLE = True
     
    +

    Variable Documentation

    + +

    ◆ JIRA_AVAILABLE

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

    +Classes

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

    +Functions

    def setup_login_parser (parser)
     
    def handle_login (args)
     
    +

    Function Documentation

    + +

    ◆ handle_login()

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

    ◆ setup_login_parser()

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

    +Functions

    def main ()
     
    +

    Function Documentation

    + +

    ◆ main()

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

    +Functions

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

    +Variables

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

    Detailed Description

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

    Function Documentation

    + +

    ◆ create_progress_bar()

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

    ◆ create_stage_progress_bar()

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

    ◆ format_error()

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

    ◆ format_file_path()

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

    ◆ format_highlight()

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

    ◆ format_info()

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

    ◆ format_success()

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

    ◆ format_warning()

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

    ◆ print_error()

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

    ◆ print_info()

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

    ◆ print_processing()

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

    ◆ print_status()

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

    ◆ print_success()

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

    ◆ print_warning()

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

    ◆ update_stage()

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

    Variable Documentation

    + +

    ◆ autoreset

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

    ◆ ERROR_COLOR

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

    ◆ ERROR_SYMBOL

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

    ◆ HIGHLIGHT_COLOR

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

    ◆ INFO_COLOR

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

    ◆ NEUTRAL_COLOR

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

    ◆ PROCESSING_SYMBOL

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

    ◆ SUCCESS_COLOR

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

    ◆ SUCCESS_SYMBOL

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

    ◆ WARNING_COLOR

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

    ◆ WARNING_SYMBOL

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

    +Classes

    class  GitRepoNotFoundError
     
    + + + + + + + +

    +Functions

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

    +Variables

     logger = logging.getLogger(__name__)
     
    +

    Function Documentation

    + +

    ◆ find_git_parent()

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

    ◆ get_repo_details()

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

    ◆ recursive_search_git_folder()

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

    Variable Documentation

    + +

    ◆ logger

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

    +Variables

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

    Variable Documentation

    + +

    ◆ author

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

    ◆ author_email

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

    ◆ classifiers

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

    ◆ description

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

    ◆ entry_points

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

    ◆ install_requires

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

    ◆ long_description

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

    ◆ long_description_content_type

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

    ◆ name

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

    ◆ packages

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

    ◆ python_requires

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

    ◆ url

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

    ◆ version

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

    +Namespaces

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

    +Classes

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

    +Classes

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

    +Functions

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

    Function Documentation

    + +

    ◆ test_generate_doc_error_handling()

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

    ◆ test_generate_doc_file_location()

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

    ◆ test_generate_doc_folder_location()

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

    ◆ test_generate_doc_no_location()

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

    ◆ test_generate_doc_with_file_exception()

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

    ◆ test_generate_doc_with_folder_exception()

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

    ◆ test_handle_docgen_generate()

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

    ◆ test_handle_docgen_install_hook()

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

    ◆ test_handle_docgen_no_token()

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

    ◆ test_handle_docgen_uninstall_hook()

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

    ◆ test_setup_docgen_parser()

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

    +Classes

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

    +Namespaces

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

    +Namespaces

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

    +Variables

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

    +Classes

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

    +Namespaces

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

    +Classes

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

    +Namespaces

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

    +Namespaces

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

    +Functions

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

    +Classes

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

    +Namespaces

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

    +Namespaces

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

    +Namespaces

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

    +Functions

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

    +Variables

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

    +Classes

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

    +Namespaces

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

    +Functions

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

    +Variables

     penify_hook.utils.logger = logging.getLogger(__name__)
     
    +
    +
    + + + + + diff --git a/docs/html/utils_8py.js b/docs/html/utils_8py.js new file mode 100644 index 0000000..073b162 --- /dev/null +++ b/docs/html/utils_8py.js @@ -0,0 +1,8 @@ +var utils_8py = +[ + [ "penify_hook.utils.GitRepoNotFoundError", "classpenify__hook_1_1utils_1_1GitRepoNotFoundError.html", null ], + [ "find_git_parent", "utils_8py.html#a4ec5335a4026c22a34a3a8ccf665a5f2", null ], + [ "get_repo_details", "utils_8py.html#ae236f3c4c8bf5dcddbb92b4c2065eea3", null ], + [ "recursive_search_git_folder", "utils_8py.html#a95c3f9c80860d6a2e2d061d2fb660a3f", null ], + [ "logger", "utils_8py.html#a0c0c1ed6b197038085c94a90ceedfb01", null ] +]; \ No newline at end of file diff --git a/docs/penify-cli-Penify-dev-g.tar.gz b/docs/penify-cli-Penify-dev-g.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..f82726e25da35f121e24ead61490bf74dcecae7f GIT binary patch literal 791766 zcmb4KLy#s6jBVR?_q1)>wr$(CZJX1!F>TwnZR^{=_O#bcUR6>#<&dhp3J7DMfc{rN zuX$};w%FT#at(siPT41xi|-*ahc~XcciCO?SW~)gZf9IsiGU_$Nf%`n+_&?7?%o1R zO{M;RN9Ic0;mDJs3?J?H%pnI^-p^1lU`3-8|Asex>KUL0K@Wt&h!^Thk@X23E`_|# zaEvWYrb79tV2HVCbyw#Dq-0pfXNDCLVqYZq=N6j}?i(m~5hoJYjhUG`bJ*9svg5*s zyz-KG|3<{4l zDQgO~s^(%LMVHSJjmp#(FFTG^`YAi;rYUF>4Y9o6`x4{doO^sLu#B%hE^zELg%w1V zgnR4*MD1%)0}dVm3!ep+2g*|&Ny47xjT!71Ofjfg%u}KG=C#0?`LVsv#CMaMk6h;g zo!=_aX zRoIuLUnUR?#mE-O;)o9=J{5Zo-FT)e>jL6*JdpPB=C-)4zCGRo1PbBh{6h6J;|hc% z%!Jno#hIC=*T{cbD&ekXw%r|!n|j(KITu9&Cw;qi8r5NZ307Cxy}pg$R@+l5 z3e@KC*MYlqd#HX^GAQ^WqJMNSGWw-ktcV0C^T9-Bt6KmWySanO(Ey5Y)-PJ#t}hIB zZ~6DQ*1dcf9_^0_2{C}^xS3b}d}1cH(C&h!OW)-e1~9Z!j#`ii-b$CS;wGHk1OR?E zmW251GI!HAlv+6fJTAuBn_`Ueg7bsCDlKukMhO)B^~Fi`ucQ3B@_hn4j3pX{@dW%> ze4fw8`su|Ha$gR8cHH771qoF{66XeQNYXJVd~hb_Tkle@u8jjJ*WGv7;!raZUO7Jm zX7t$v6b*F|o-qQOyZ%V|yqRobmb;FZ)p=Fa&Bq-ej@Rq5<%n&Ys|uH+fL_esIYlLg zS1leGVTC+}^0W3Q>zp(UNp!4=X>vYO0oymh!)vV{HTySJ2S+oG&4mQ9;%1AXnxHs? zgoGd}`j*Ug-h6LWm))bG#qzCxUu=OvmyR<|@7<+ezF2~I%q-L3#`bT6SbVDJjPauf z^${onlaCN}B!M*9XpDaQy@h_;VUS~LYlo*U2!%6b2{!2wLI$rN82rl&59$R4=Np^O ziZ=h!SK58bBedB1ZVJrnxZwuryooTh^go*J6hP|Re!3L-vGk-PG733*g_&iWeBtpi z3bv{L^n!uws^6xXIeBA4TQfR9XltT1pktMwhUvdrk+ywuqI}8i{9gZd&A0VK)Ee-; zU3eSvY=rG*8rYB0vuR>#nl-*EvtOJhldVK5X ziASI>2S3zV<2*@^*UE4O^tpAEL*;B~6rgEHyNAqAK!`7KVp- zW$p|dof-ihR8WFuDpc>M@P0vM9A6Y(c;8)2({hyR8H@GHS~=gNOC!aq%L5T4GRNxin-Wn6JBfy)L&{Ru?$DDc*sc zzooE#=YbZ)#`y&xupco=!i&7Ln*uQk0P@!x=lC0zn%RWGe_j zKsPWOQd`EW{jJG2u&n)`k5CQFR&C{g?S2aUvdZjItX?4nMIA$hZ0Ul*=vtO(fhZCYVRi&={WDU-d#O9lLvJ%Uz#~2?v?LR{QIkai zWu@246G%IjCLorcfvPyvIViqjL4>D8HBa{zS&c$CFu9JPX|6ZId%W?Z&-dl2%GWh4 z*$3obg*mntW2Sf0Q`WnYqp#*b(&fb__?d`fFC{4kaVO1p$BrUHw-hVY1co}H5j;dz zhUXV9mqw!1Qgu$#Oo@0XaISID#%uCnRAAy$L1zSt#DTEF-GUF5(u6+@Nd-8Xm`rg9^)fi|>=u3ogB}EO+CEtSHn;`XA$6%A2fiMXX!VI}sUFc3Ru8D7DY`}7y9Ek9 zON2Per{Ki8-1vz+Xb{2+{d?wiQXJH9^L1reIIAw6tEcTCz&hBykQO}DGsho zK(lm^wzjfhJ>+Io6Ah~G?_KmX*?>ewd^(Rz>3nCwW?F#isW>~RWzKBvsQ_NDf-uam z1X`^HUVovp9~W#rM0icR2sO@l97ew7QwXJ)UBHqVarN##L=cKgC7Qpl6+^NW$EY`- z8+^mjGB9+R-(>-v;?G{dl(UUXzjrDNX&G*`P20F2o9%8@bT79KhYha)gICZeUTYjyMiMV-F1sxYuz9@xw{iq;FJafj`Q9{3EF9px>y z=1^B+q+;5SC84u%MV?mLFFl2MmbfPxBtuU!byEN)2#GJP({gjkHO8|te9aW+6u+Oa zQTd3#I*^EY;6v{r z=?%~pHs!HNTU34TxL9ToOfyv*$Az%Up?mBdK5$@bN6u!=8YN#?SC0sfaC6i%@E~Io z)+g4HJbp=UMtcf1HL<;VI7-~9dxEUvoN4!oTl(yqXD01xCoug8kFIO{{NHt7KI798kbj1Lp*87$uB$UpCW zvX58g3JynRIYvtH#h-j3UOgF^l?JC}qa1M6z^|1s^Oj`qRDm^*B0u09P0%wKihs{K zLZ@I;H`W*6?(%3=dJby2W;IUXbVH#S(MGX|ACdA|sQUMI;ai!Y5)XCIf`>Gtu#_Bo zxkxl^2SmiN%OV#dp=wLFi|6%6a-CWdGJ`oqY=qk)qbV~)sj(WX*_W-Lx?V6!rZ~Qg zxQUs9ETh93+0vO}7u96U(8i>l8pZxp09S-v*Mz8DNGj5??gZ0NbCn_KG(?Uf%?;p) ziejHOo)1qD(u`N{ZCR?09;t8fYK{8iGuNkdb6Z>W^*&$8c$f`6s`UV9&PUz?CU(C1 z3Q9yn>I|^xH49%Y!pRH%@wCfSx+e!4yM=R;wU&!gx3&?KIM~4Dvw^-i}+8oha=iHmB z*6d5EuNBB|uT2Xa%Uw6N$v5TT7Pm~rkxR&iY=2^$Gj1ROSwDMSbEXW5(c7Pwpk%Lo zwmdHzRiLHJgTJ1cW!F;Zt-dAN1DrOD}xmV}90w{o0SDGI86v zJ`UB%y3@5`8?2nEXqnQui;*|rg)z2+3W!PpJw`>S(~SE-*6X%2Ihw07tGp&<_+X^m z{r4b=s=Rj_4UVo7B^#O8ueb#gcM`vO7UjZHI`m)ctPF$C9#G;*U`@)bTZ)I4)u4|- z4m^AXxo9GmrY4YmV;g%^t8xE6H9F@&6YRqp& z3vVy8={&WY>SR? znFrZhsdb=#<`3P8IxhPY+>lySc2JOnhs9MQQdE`77+r)7B^Y%X@6NS}st*74^?GTs zaLIx{A>$5J3C*J7j6oM6s1nNLlIO8Pb+g&T%QiReDeeyRlM<-QVYL!aV1y*xE@2UY z#6Rcb^sNr>5K{!>FD+_jmx_`T1{#}J{2Im>i=+Wf4H5E{La38`Q*TwzN3$lW^bTP^H`Eiqgt3Uh7slDasT-) zZGG58ji!2^4#!TnjNGxct=vymCe*2Y@ZLIt@o^bK<<>KI6TkVr{=>R$sHmwC$yo-` zBt44lh>4B?7pP|F8(EaMt8=B(?^uE>>9KZ=MvRt%lwMj1(nqJ3ZB;2J+b|L}xFf5_ zgE4c=;YQnK*q~mvjVpm7ELf4ZO3Ws-f+}No$m6EN)BQA)-deK`2R|M02F-LjiG5#I z#%Pu8eGks~?!~lrl~tX8FuJX_rZ=jug>bOp$%_|+iGkz5{OEVouUS3_oEBvUlM6jE zU`DY!My$kop}IfzaWhyLwLeWEs68Wk31voIwy#XFI@O?60vk>k@Ocps9^lj1_hx-| z@`A2$_N>3O>@=T44pDXjcOXq6=#XV8?J2w}AJFjj`0_hD5WW;LM;z-Et$7oSPBJ_$ zh<*hOx?2qk=YID_VZbf=8=$xP^V^K~mJ9ery|m~9=yEW*iv30~iDf(qq)H9kJ_;0+ zgnrMBx%3+wTPm-=iMXV~-*CciB?>9n_G{PHTj84p8 zWjztbv11zkgB0o<=^E7p)}u77F%*c+D2L?evpg^uxP*ZVC8-QFBvZucd8jFUKWo;6 z5X+6w!AD8?x?f8LH7s`64{yGTa@HSaDlX%ouGfx@CSjHiY8U_X2^M%!8<&u@vfL)bWPxoe*c4 z4$BX_KKq-#LcaO(eszN)jxL_b=uec9)^+X^4zYA?tb$!tO3r}Vv6oBc5F^{hd&hG- zNXZLCcc#;wlXMCeFKO<1X3)1!-Y31(Rro`?*RHnX3NHn>Ium6f8fif&FBm2jqQFT# z@RcyVyNe*yldLs0)e#nD6>7K&}TMtTa3V68Nq;KxA%$S zsdSeUw|8U9>({xSyg!?Z{tbXdAxi%qph(C}^F9ms!aMmU>J#jrP5J))JsOzu6D5vC z7^Jz=QfxBUCA?m9tJ@pM8Hiw1cPTV**{H|xo{fL2rqJ~<)ptSB&qIc?`{#7e_K+r2 zWVZ)+;^f)5U8%{^_z7ty*%N8&v_XWa;t^*}e68IDoqZmU0@_;F+ES=62ZYc|izH-FQWRr$du}o|^73 za3EhNe;V@Y-TOKip-~MSUa4O$WNcz#^!^9go_|&mI%ej%){Di~-Nj?L#r3je459#$ zx6>4bP3H~^l?@_g?Uy*eZ8E=McjU-E8|XA+5^ch^PZgA@f7H8bwMa2c z@w3jfc$OK-TDI&gv?kP;InEtnh8fzDS-4XWAih#m@cwx&uvSN-*eSpx&v<<}uEf}B zsjI4@S~|X(*DR1NVQ3pjnZ{7Qz>O6@4HlG@zZ$j2j$E;W^>R6?hsu$S-s`n?5z zPd3wW-gdW8w`n2=k|5q{y_K>+&)T_u zkxx}dbda}lVSQU9%$L##N>pF*?7w+Ul9cU}HR)+9BPj2Z;-Cm#tCE^?d4jRk$iiMl z66b)RFWFeoT!CK;@tw;20POq#t`x-DsgD*ss2y)7|CUwAHb?(W>&GtAJRov+7G&f5z9Eu^wx|5~r$6cBpV&OIW!ushWBLV~JT8%7-6R-RM5%U*@IFQIC zF52~ChBU(pqG}k*r|?G&@;Pdea<1nlJ*vVK3z#3U91XM&V*)ae=npMz|8A@{k23Q= z_)arrMy)sQiMC|liE021fj+o*vK$moz#gS z%BPK9MucI;f-y#MO0M$Y+)s36UU~lOn1OvmiO?t3<=G`p`M<6mqs5zoTX=>x&u|ah ztX3kGF`;%9p(Zc)3cQf9e8Fj`;qQdSj?})(sz%yD_HVK#Kx3D~tag0o3rXyQtPiD_ zaIW=vyi8W8HVh4v5n_O7HdWqE?;v*};G1Hf`x-hjRQl zE3C*9CUs%YQq(k=^zxFZ8V`YRK8-*ygKkOWB4m^lK>cr#9__q=IiVrjBz<`=@>!M1?eAW5`HrGMz|?wH+z!Lp^16E=1^HB;WqA`#14ERbDUHd? za<^2RA^T-wA@`k?P#IxYw45zLYVJYxJ7&Er?Yw$$j5oPWI$rTZmjEcCW2SHFu zxe?ic_+ezXF!l@f9x)SDFlDhbPMJI;JjaJB zTWnvUL;J&(GmdJh&zDfrw!R&R5$n!nq7g&GHr=)OD*1aq(s$w|1ptqgq&<~9WDwvp z+&BLH@pID+eK=1E%h;{*$UYgJcweA^#12-&mJQhp@Me}eWJU8yxev*uT=#%?TrNql z@rXe%e_x*Q%eW1&p8ZN#g5AwjkeI-4Y>RS%x%4+bBK0JT5&E-CB#8n69vULNpzP&9VybqmhSBA?fKkDQfFHgK1!a z;p{O%dC2b;hK!ShggR?9IF-#{n2`Y*QKP=|e44ychr*tH<0}ANp@~&`e;&FceW`RC z@F?=($y9KQIQ8r+&~_xm3B~8J-<8gVUDgNDBk1$8>0$-)ci=k5SwzhKjFYgn5=1>DRubX+u-XVh`;$k-xBNwL# zgw4U6YYt8MfS`0l~ zZzAtw_Sik4t~!2jF@g=To7Arlv?)ij9KdLk{vD_GhEJQigVKTSjjrOK8bWvoFYaZ! z@g7-*k8eA;!6k{5y7PP8;Alf!d5p6r0nn z!Le1(7=_%T%>_#%c^zVKl1ulFwTC+Eh+k4|i}y%ysG$lRS(-5k8h64;s0&4(cMGdg z_4{3PNAk+@yP{i*sdTxu;s@hYiHD^Vc|5|>gl4ftSd1?;CPzVnk=O*)xxWd?^WNE$ zM+t3!!L!xBu5-j8&)o5)tU)-@VFev}n=j`SzoO&#V5&TGDg$?79LHyWQB^#5YCfd| z_FBwUmb?h+_;~CrvOmq!V(7bc(a>2m&P@9K5cHN=MHG~SLawK0J|K&Vvip-)O|vd3 z@~rAN6QF@)S)nn^5ffhQQ3qVt4HLinIiz4Qq$5UzBLsN#%=!FW+~VrYDkY3l^tgpx zu%IpWf=2^__^(Q_Q@#4rmM?Jz3WA9jaGy}_J6LF3f9xj*FFb{ItR{IyD5(6^kZuzj z>jY|mw5)LfGTSZGAK^#6Sokd;pizw7w2Rad1w8E-?jT`#D%erea@24}!^NSJLEj|E(x5gm225a>i7DWu z*h#kJ(IX8okBK&d7nZ4sQxw!?;7|W#qps1Wgm#SrotfZZV z(dNw0gJxxUJ`63@7ZfavLL{bQ%qqvp)1r+rD9ri$zI@xgAhDwfeBE9J^!{r@ce=^B z0veT^ej0h#oxe$_p_DL6t=WT*V>tYvb>tpuFrPwugo2|##m1zNU6>1A{V|;WdH=l9 zh*gT>+5M*6{l4E>+e77MI7j=Lnj0~Oyq*&#ar+xLHmAswU+cNwf$|ck>+kPTbX}p{ z86DoZ+fXVIkd^mngzcPsuF5!jM;gwuF>aUq0w0A`HcsSO*kgq*7HZ5HF#+8z;w3w2 z%~cMHK-`As>cmStR;ek947O&OG{Nq3t$}nuY^!^M^hw?WgrnswsHkLD0-j~5$kiIw zj)0&SHdKz^EhVLFHAh?BReg%TVP=Z)yk1NVCN!kJI{J7OE`IK~SA5)->RV3kKw{pB zdM7XI21@J7ZpR($H-KTfv-1*&tWEBz++%R+S5;Ur_q79a`?r%tIaU+}zxF+O)v?gN zK1gfirNxJ{PQu`ts=l=lXIWL?US4A5^l6I6Qbb_^7yhW-bh0n-hwn7T99Owo)_#KrGXo zmrt4*udbSMLFSpxbU=27PGhyiwp*EbC@6c{a-y*2d7k`MM)9g;lDx+C3k9Wj;%v&@ zeyIH)wJAMFgKL%7I#!nVl(wLeyVC7>=C&!DJ{!&mddh>lFd0u!-a7_D`gnRz^wE-E z(YS^XbADQOZ8wg%MP_?YCyG`O2lvG}<4I)+Y=`$+Z*h^8+fjkQ_q+6K$d)~C+7XqO zelx2!1gxj-aFqEDjFRSxAf3mb%N}jmVtCK`Y$8LR$CfN}D=3GFRa=FTz{8XaE~im+ zg-kC-x@hoaE07r4Ek#!Y8%vGMA}Vsa*^lhXhSFjy&XsbhjkbO+m0;eDlw%RjEG1S2 z{)_daSfOGC_UXHU_m^tysPYN18@6!6R*$+M5tMHn^Kw=o%v z(|FS66xsrE-3H{bFJryb_=)609QEnK-f&e-(*s^Q27nIi(kd8rt=3*}dNv}pn+(zH z;5oijrRpqjLm=5-O~U=x)Xa1!KRU|KkFK^T1G&c@ZP{{Ghar}MNop<3;i=?1=5ODs z%D?dWQ)XEhBZ(1382wUum2Np$?!Z|tq1M{w$|vmee7!r1-5)(x4=*6Qv7Y$CzX)?9 z`gHZZg*@zn$O}Bt$?E!WeVgDhH@|iqG*5otR4{qHnD4@3sc;WroA-RYV{851!FLZ} z28MF~_1xaaiQ6DW8q&-WPzv*Z1Cj% zP$|n~ZmD%CO*kprh(ofQF(2@HyyG5dc(vbSs;JLmHe7yV8R{(Yk6?0QLoq!RbP*WY zbtB&L_jF^X@Fqh|ALGCKDJjp=UWw^k21P6m=z4zi2G@8Kg=6W%q@ElX#wUXn=&^ND zf7OZm<4u$KZ|Dc+tL(Ic9i)8d|M3)&<&;_62xws+ikhx zq@+=j$MwrAE#|q!>Q}EYnQxSAQ{8YDuZ_9ySdn5y-8$df_N-K=3}*YEbFE9qK_p-oDO% zX0iEKvH9^>MGFkwy_R}+-2^!90AV}Un>#;!f6q3zo(%jm=G*~y{|5{=fSZgIEx;<$ zcyI30vNk*Vh)*m1pF0g{)dIa}hw*yPG)G!kx@h}1G>88`020?!`X**p-5Q?%A@AQ{ zL8sjN--~q~d#qkQ!Gk?E6kxZY;qjy@64hjHVJ`VI3lSg7g;om@!bQ+U<70TbEd|>t z_K0{c*<(I_x}|VBi)h02(ljL`(Kh_dBy7*q#92yrr@rB*J*fQIGl183 zL>Iv7gP0*YjF;yK71m$w^f`3-wDA+3NkXS;R@mZrxMYFR+13V4+}*e{#B=}C$(G!F zKViB#GQ&jD@Mi&k$6wvwKjEP-3xGfLoPG;vlJoHa4Bb6(eLoJ7qB=UlXofYAyJp^? z@z7a}n9ieVl`L_V;^Vb6H9e7GSE{XJ(UsRkKnUQd!@z^24JufgaWUBuVog3OMEj1K#YumgH6vBSAjT*PKRVU$;YFu3Hu$hORah*=?_0aM9F6u$naRKI}$f&hfe?CH3=zB*03EW>3X|- zQRDj}&f42~{(4oolD?Y$Mj)CA@yYx>deoh@PSR_(d<#GhainvkS1VF)kesjr7!EY140J9o8pZ z4S|Rjj}$5g1G`QmpcCo|%y=Qdj$%(;cw1%|`f0C4eZl2AvRS-0NXYLN@{nn+Jee*_ zf7x0yEve5T4FkqW)$EGhYtmWx+6!~x>2vJUe%QiNZcO1NuH48CrE);eQ@*>LszB@H z5Qwwb8y20KJ^JL=5$@Ol`0*%Uz$mkH$!4_Z=Tsl^FaaxwGmmiYj5o`TB{L_8T;qk{sSDO;NB zyyJStZi#zVYu{}z4d3z@WT}Irl zN7!pl7y<3NJr;;vBD)a%H*D?E4FBaHnq^mz&|+w`y0jL8Z3L29;4p1znC%EzAOtT& z%E*P4x*^owTMn3j`{n)P-4mx0Mgo|xG-7s?*td08e->_oY0$kaMiCWz6f1fIiF;k( z?}(!)fUO^~nbCVK5I#Oh2`JT(3$MSid*YLgtOHjRE4Y`nGbP?QM>x7YB0DrQD1BKr z;vG?ZsAXCFfOO{mev7nQ^87kn9~jKK{z8*9EsXfy(pruqHV=0cK2xxo=1*oRQ|%rS z6#o=d_#nLfME>N%J+$@G!_6p|Y zSdo!fBlLI9FA<(-ltnBr4a~L@S{%_<_C1~UM_-zMx@16<_jC{>w});qy8LHq3x0Wy zty$r5EvxAQ8ckfm$;O+oSbwspGONP=R*i&sx&tL;B=#-T2(~wy{OtStR4L_b_`x?j z3^SqsK?fw_*vSC8H*rV@GWxTPl&Wh?+wq1QH^xt1@;ZTejOgV`|AL-@G?0U%Fq0U+ z6fj|eT>Mzm{Sx!T5(W`dDHp;x9PJMKg+}3)Cu&F694G>><~vuS1OENr?SrMVW_rBp zqUuU|DAyPqcRas+r$iMb$xUZoY(Fz8K|BLjmMO_8_O?7Te>eMm4GXqDZjZCId6}O6 zC^(WvUe6MQ_0`v*eucwEhQ-+RN=IF}b06PzkFG)Fo!OJR>+ixp)IYe3R=U~UgVX5=@ngL2jar0w1RLb?eU;+F- za{(NYkXU;ZUjWUfi#`jh=;oPFKJ+NuF&SUYx=3o4d9d@H-zswolHZGL_FWu-QxNlTr&?XYE5b(^Akjg0sy&c$6KbamAt}bL>_8e_* z!^yw8Qk-pMeAj_sAZXkiFMZc~GO?r+TBDMZjN_06dlxYA?L%Ah7jF4Ip6YKtZ&jKtYLcx}1NUni3hrjS(GLAcuoM z+wOto1K$CWHC6wqgvN^NTn)9v5_%FgHZnG{!7w2*0090F4!+XxMA_O**(#%GeWhf* zCUT*jlUfqQGNn42NmI(i`EraPw)x)yt)yDrcKkrJa(u%sFQ_h#p6)`G%_Eu~4KNI` zN?`b6Mq46Nc=>iuL`8Mc43o75llAIo#g5{#nNT*krK3w^xT1bx8Qf{nF0~l2sZr*T z6gfXrZ?@Abv>Spk!vcYR2T{af{k=)C5TWbp7DD@aOvyR?1h74JP)nzSOZ1l&Rs6sG z66$OiE<|JQc3aVmTHFP2SP9pdG?FaKM0yux(`dBHKj16L(Yi@3NKJ(w_P{ib^G`9) zN*BlH>C$suG(zJz9q6*Lkm}7kMsL@w20jmxfr2M2jb3-i>G87>3fz6V!>i(yJB|ZT zr!mAtsZk=iIoh{>sEn46Bm2cs<)%e}C?x`!GfS1hEM>XI6&c(NAOd@mg#}HoFg?UvYU6Zk;N;OdqujAIUn7UmA{cN*0@9d5TmKnq9?9i=@lr zJ4tC`W$lXGW2HgJz}!&5Bgm7UX?#t_-jhmU6E!1%$!F-DBFWt+8g{s-ylFI!%5gXg zz{i+vr+d1PSv!#Q!%bnj>O^ko$N8j3zDnb% zi%xO>W!pVlOO z^3VXUYP%xK@)wI`%>T}DA?OWP#pDLZW{c(M2DfEtaERiXVp>Q?d$lZN#`z)>*7|u9 zzJ5@Gdha2KW2Z`{J&MHE{yo6duw{j2Mr31wWorhr{!3tO9uY&U9+Qin>`bj!hhmKm z6)skXKcy?*gdY=xch>3u5E_Baz+IN*E}viD+5!T)T*go%YuMf#hEDm^CZJh;^vLe4 zTpwDJKbV>oR-z9w_FpEUCGqGm>Zutagw17$;sONhV8L^g0zyx{b`k=SQ~TO5BTV+k z1Z60`rH6Gnu}Pg1SX%7ZB(UTrrccO;7-HGlWmX7_1dv)mjAnRKE@dcXG58KVP@|JC z$ajx6lRsd7N@HO(#`eSIm47 z8yOrl%<*VU>-k~fw^3eF_+akWoUw6Ku6jtphto-8FdAfv=*CydsEr^(1=U!S5fA%+ zDs+M-3Zud3c_daG+4z=wKsJ=&o5ZM1U7rY|Nvp=Qig{JSNRrDZq3PAqbtsy7jk<4& z(5Um?`Nz9``$}I@Z5~}~38afIPD{>4M?w{V3J!cqG0 zj(w;q|Ev8C8_DysRBFCx=02j95Pg^u;RO(HsuAfkO6a>HREx3ahf+3a`@gkVScBfE5hvtY-F3H%dH%JM>H)OH< zy&7g#2XPfwjgTbSVS<@RSS$)vr=0 zxffNe{a!3(k&eRLz0`)JL`K=PQuQX~>Wan1+q8Zj>EKZ3DjfBEw{Yb>U3|r~%wlGf z@j_((s-$_~A~(tZq`B&+>&8&4RTlrk8JdUcGvzo($ zq!rtpfGLOZ>JqLJmM07Z)4)04PZ--ma3JYBhzo(NCqv|iZ4!2kW$j9%Rn3vZm8sg~ z|Nd`3A~j9&E}(b9qvE5LlT);FMF=jO1)XHi?6`D8H6HOU7R3BRbQw|u0=^osAJAVi z2v@9ZYp$EWpIe<*8z#r9R#5jc-#dE3pF-YN8Yx^t9O}5U-!V~5TD0(Iw-tz(4hN2$ zNnHl_4@=#CDiN;3G`0n8@CSR^eZaXq;6xAcU${0B~VUpI%N) zQ#w%uDh004qAoUBkxq*#HF#}y<`BTQX@d+5d|oJNmV z8KNY04YtVWUBNOd+6n@u4KjirIR-v1hj(eoJCR6PhO#XAJI)HVQc29M0E1QE;2>EiQnVfSS4aoA~Rla@G)aLeH= z^iUKkco1ZILbKyZ?N!E3+uPb@wf=AS-C`q>X0*S+)gsYPD{65raVXO%m}<^JnlUhtmi zpH+@1Fx0$6mg}h6$VaiAk7_>$-F~>~GI+yvuv#1WU#NKdmg|81IJCJq9u)!N?j+ao z*_iXdow)QmlmbCPJ0}~15HZHf zZFLWyTy|{_ulE_#L#I}oRVL^*L2W$eC<{amvMBht4q;fB`vdF-U6wfzDlOZWws1Xe z$}kZpSn!!JFJdG?fur5r8e4waY#2|a8ucw8X0yQxQWGm7HENWyN>p{GKr3RHoM;Ik zNoHYP!%aandEKLkt9!fHg$|OoIJ<=o@V!ya3nAw@yZBKqf@(87E?Y=mbrM!)TpB)M z5|+kf6INzkYwu8T(@#~MlB6-(7M#H`OH<}kW*{W50Ha;I;>yH~*}g6aJg;;#I8vqb zv)uBQ!p_+zS(b1ed+m-i+t1f4|x6YSMC!)^qdgF5|1uv%@Pw-j{~Dvh&XZg7HbQK-u>P$%@{ z6&**XJ|Oj`&itzRF+XW{fj{V>lmY}I;80$aWoLQ9U&g={ss6m;Jd%QBaB-YOG^~@m z7^z5@O&Y==c-k_B6Csgha1(*Nw#M=$)*U#U^bDOZ*t+aATq8oJP>hO~icAMyjB$}s z(P-JiCK00~dtJd(k_sQe^5-5M4`6|lqS=CTYziRyXe#oNqom$W~z!APlr)ybbhg+~Kj zWFg6528^Ux&>J9}rl#z%LE|@tHn1}h|F97^rB;cEv|8+q_8N#mP*_Sf3X_D8ZokLa zny_-paV`lPIZ2F$o5^{)T+L4JMouA` zH2YfPS0m8A;5^RPFr1@lI7455g1Pnr&!2|b`CsR?2P8qlkAL7lGk9t;N8Vt8y50=U zE2Ob4j4D(WDiygLoJs0Lt`H|1ceH6eTV~vo*S*xpwbogW{@Rz@g#Beug;nJ9RUgyA z-|=ctd+=a&Rl(BZliv1q+rrTSACP}%;Q<=O24}19^$p(#ca;(7>{0K={b0T$PjhD$ zf{n}gz3)8VaOld3U0egUmp1uMh>8S!pMd^bKTNi^lN}m|+3CBGh&}S;bpZ5vZKFgb zAup9g+@ycWur}hZ?#Z(t*Us8x`mC}bg;&-;QUQ@0)Ks`oX?!zOuC|8 zsX8HC7Hb1Z!Yl_axARRdf&Fn!KgON(@h`rN2Ycy6tpxbanYFqOilI!AA4UJs)Dg2Z z1#F}oqPnJvJ)8VdIxZ>y`(4L8E=2iVvdF2rHg3U#Zc9ni;$CZQ-!QL3eTzi)(nC$R z`U(@cL8vzUA8fV#$3eEI=*oM<;p^_Z1pVSjW#tMTYm1EF+N!w?LkeG%#x~Ate0*13 zmTOT0Z_vdV-x}Vo+n7DRdB#hf+P6aTV)QrUTP4`oe=RJs`YK$hevj)imvpDC{>?qv zh$PZJ(ADv@&Y)8{H_tPtgR&*ny{s&hqfQ>Kx_)((t?_R>x%n=Mgw+-P7ypmC1!HUq zZ=biK)XDzl`;C|uUGi;zn)-SY=-Y?#b@$OOpU1AK$j3Wt{r8}m#&P%>$S*~`9o(P- zXG`haO;DS%U6UIeH5y`W>h`I}I;f$x{$ z&>O*eLPl84Ew#|*wwfn@`TM+(XF2!^Zfne*F)&K$i+>s=*qu8+&;u#&J#1f33{n_; z8YUU)ShwYEByA|9ij;E|IvS{(13{4W`sI_0x{wXcL2(MFg%wN>4<1Te=<@5Ft5MOK z&D{BK zY#Q}~I2LhoS!XJ|+@G9cCgm^vT!lt6erSSEYg9--h;m*dRqGLS*%sAgsf;YLk5K+f zA!sYgaoVa}A3jLSeV-)P1N3%v%Ih0J7~K^BDw)L^fOBIi0Mq#onv&8Ov~3 z;hN7-hK~ishs=+^155o4L3!nhB)n7Fwt!*nsnF{>GUM35Ej8x zzGKq;u&Gv2s;ue2sfw@;g6@X(nSG|9s13ylmInBosQIGssaAe@rCH@T7OTk_ioOUi z=i*iFTAMD z0HFIL=BNH=G{@lM?d|tbApi67pkM{?njP#O+=9s2eh~c(e4LGm1yPfvYk>$f@cn}rvjaR>FW2^q zgdGQQg_Da_F~=-33Icn)*Z2kGL-L!oqb^TnxbBbg=b!Px;xO8yu|xmXeeRKNMgDAP zPWLjJ|Kx-s^7M3euT4ze?23ne|H~`gdXC27IL~yw3(L^&{P125(Vt0ZMIOziK*dHv)z)ltzD%dAn1mI{9!0ZCQO;nuo3&CwqK*k}l$C6w#O#EXjlo}r!9P1e z65Qm8M-X_a9CsM-EZ*z+rms0UwX~slz*XxA$8+-;5?ZDyp6=WBqTuD0`&6V7StA^d zd30R8TTLC>;*-P~Oe-Mt@UCTsoFPrMWx<8h{-a#OfuxGLx>>3pk*F~)r&k-kssaJ^ z@^oETpeK$mXJPh(!Tz&5qH$Y6a4Ex85e(*3l;y^Awv25fubO{zrD8Hi|nd=~#%7o$Fk*lqvc&qkjGbdOF6reD8&_z70KoJvs%|m;l$H`|`ARIbx2`n=j;oarG0CgYnKak?@=qo_p58Q8WJV zdCvMriB>UAlfSBvOZPR&B>mw@6FEW=u|Cwx{>4@ON~j<5=77yS!fmK|1LHRCe?%>; zwSjScM(SWUs7Vj&76C)+qvf#@eLJ7@E!^*HHR2YB?0*>hrr=zdpv~Amao!jwwr$(C zZQFKoV%sOSbzY488r*}Lm99x9c(lQ5T>>k@Jc58fX zH9PFX@^k$kRHyJx0=PY5`ih1}yx$YFTNn}q-Dc>!*yB$MQo2~rIedO^NAM&#*1_xX z1gTRwl=plYamB`)#_ezGzjAWjKZs&e74lq%Nb*{SDX~$xuzMG#{$c!*46jPbp{SZ% zmK^)_m=8+Kjr%n7kr`uH5>U$G`%GJ_jpO!H;&DdVj$^;W@PFc|26v4z+cuJ>VgT`e}ceOiyyO<2$ufIf%H_4A$Y+6mI< z^+3*xtLgDaA^(m-grohFwUMc1d~sK7a9Vcaa!^ z&akABA&_!UaevsoGuNR zNfq0Sxv`3Ug%*5A8;wZfq{5nmA>U#US^V9W619yM?%6zXuaDc1&qZ1TZ+m=_D-qT0 z^;&b3>BNkeFP3ttrdb%|kaXTaV#w+#1d3HyUqH*`N-v1J@d=ica3AHE6A2!_KLnD1 z;Ju=WP>7TW!B~u+&S}hzK$nhAqOgYR$pK?mPZGKbI<^@UI1hoI4Ijvgq3P87S@0_H$Ie|7ceY{oN)Y*l4eR3-IxX0)vd*#Ky}W8rBSlpm-_kOp*Pb)r?h9n1-C>zsHyiA5WPC1Ap2eHurKA|T zU-E)D#`_o0QCn^c{fe-JrE?0BT}#C@MC=dVW-oX48+?^RDeGjl0U(gyv5f?mV*KvJ zGXNP&pn<2`ls~InPM;qO1h>ewvHQ>#}F1=T4KXr9b?a{>G@Vhw1likxN=|NS3J2_}nfh{v#Sv+W-L`qnGffC7!7QFH~ zzvwdC;`~hJ5$PmZz=z{e-yc}~diu!w3KebBfZ=1{O}e&YfVEow`)CI@aWD=ZVTdnBa_set&!q5_zg!1q<*ISf$3XBX!1?38PPl|VE zS~BN5DY~k?UOtZ{!_{&o&k>8l+Yd_-IH|q$EtZ>;)0*=6{Ez(oJcR5Eg@*o9iSAGq zh@zP$MxSHMv{T<7Wa3gQ>h$R+n**7A1ncj*yt%v1i%p(*g!@TlD9xC+`NtpSUSKua zY3H9x%I>xd^podW*_C32fahsPMsUz>-Cr|xV|{srBsaF!;f#;h53tEHMtZ$q?JQW` z`y~q^_ow&oHhdmm;obKluCJs8uTN6nO=yfb4S$aFG$1n|fvku4XKe*q`*jS~nH@)Im`09_*PX5M~`U=;gQ&5P%p;-j(QyuCWTY1~i`Vvp= zRSLcT-C`QH*YU+EWzebEqB@@D!|KSkXJXz)gTdPxzR#7pwzo8=pF_`j3WlDRrY-|U zg`?)XtE0|_uQV3R{mTb;R<}SUfJJ~Xlgie`qBT4yyCGi9>x#J9JM`O4z4Q()hVf#3v@p$3f&CYSoV@q?(ZMLon;V`}7h zu|*xN%`q&u-YE?Gh@d^Gi~^_ABITkYFxya+=#4}r zOY67r3`|VPU;Yqsznw-InsZLBa%LFpZA0@qh6kloj=qR&di8jWF2={gI9sJlH44^wP?OQY2vHus+Fcm_I((bz$ya6Pp~m(gc=)zq6RBhmm_#Huul!+&U)`dA9` z)(};~SGbcSBO)sP{Karp8Yda0o^C~UWFOKd%j!9bt<4r^9l#6F+fEmqR!cF!cb8&$dImIXzA2xAG^af)uJ>cR7%If zY9qPJYpx{5bWPTTw@=G+`&=}7!?I4>i*ziDt*ghUlEFkO!)ATqr5&WZwuZ3#HL|1@493&j4SA{PXR<`uM~O zGzq^Mh^laZkk>r)z62_w0xIB(-I`HBsFKo90(}N|{gW4e!Ac%I4$l8B)5r+shvB29 z4%pVK!u?(5ke%U&f88oAv&$~M#SLYZk;*@7F(bN}DsJ2=)z?2$(8`$Dv3LR!}a{!ZiR=Bn8q|kz&_6CjGa{rVTjOV0kjed>I~F`G!r)q~%5R&Rq+i)%Ub5@|088&K zCvHIe&oEj`SeznAWZgZ*o{I3j4emTVzN@cQoXv1*}~A+N-yt^L);HTCyuJd(SOfczq;>`4go;Ak-L7yYBX*tj*GT$7PgPSRw+{#d~(#Dib6A;NrT4|cV*L&l!wwv`X0MOSs1;$`8 zXiNjcae~;V0%p=r`%1dAfynoterLd>T$iK{)8pr8KimmzeZn63dSnbcV?w_rYd`#& z`HT9&3IB)Z0_WhgfCN3QgfT8z2GJY|vzAl=?SPqTK$CD!Q|Dh$w=FMtBZ&TKX(2zH zL0uoblhU$X!r+&xECyazUPAlF0iouxY`#g)Z{j=3f?B$C(J1o2i0ST%mVWz2lwz^P zo*%Aws@Db5Z-bM6oAnZ|)u0VLy@qL3d?}}TIH|$UoMHJ^Zc$zcL&6}4vS$LEnSi7! zpyat_BLEO7oSys^8~9j{%g)jbxD}d$iG}qn;V!WRs?eaQIYHY~942lnkS9 zcLQR#|A2v^pdA4h6YPktecf0ivZ2h()bTW>^ruI z!O@D1NhzkiKnDGvZ%O&+7a5{7p_b@S2--+~ z#E+c)XAEV)`ngz(?~-11cqy^$sulG3q6m6(-=PQs<}T0}4s z0{Nvi`H#D0j{ya5#y`k774km;kp^BrZA-6o=SdI8JNCD!xV*lpKDS6r?b(ROxf1X8 z+k%%Yy?lHuEnFTaU!l8a%{nIEgVpSDMWW$OXp%_K-<&2wXi!!~f~f_l@HZ-Alz<9F zv*cOQ3F3o%4k@=?g=skzn}p-tl@~(QVA+*vV8ok}ZjTm%Y%QyT$&4&+Vuo^76jA)b z+266%Z=}yI2H<7Eu7`aq>U1OLit;=wJJAf4SO&uWS*kRSRGJuu*={sH`+9(6#$(KT zU+32@^5g%wOkkP|^gV12)JLCa3hL;TPW{zkQPtI<4V_>?(YMPMCXsJ0nlO;M`8+SX=2xhElXp5r&lyeuVnJ4;;+oo8oBiq8k>6*ZkK4> z|4V%+kz3*P^Ia~putsjRC6YWUmx)Lty^`L6P;EE36diGRbeb}GJ2hM|hw3F_31}Ib zcRbU2ahE>yWM<6Nm={)Hc+jUoECXl7C+H$eN&6HbVm!%tH^6dOYFc%a?}-xcry{~3 z6IeallYd}nSfTQRTYwCE2TNnf?iswpXkDfO80_oxklbM;^*sb|FgMd zz|sYKo!xit|60aP&F3fn{;lwrT$5gdm95=h#SX6J0q25{om~TeP2NlGL>pzzxbc{k z=J|+!yyADvzwnbcXvHkz+@{(FeX#_c?3z7S!l&%1F%1#q?2%^3t!9i1i}pW7|r8oQeU635)E0t35GZYcK>6rM^2sa^&366)u0 zt({Cm>v`hq!un3g)^OkU?xpPiv_pYxdUpwL$$y~k57j&(H+43Zu?hgzmfzMcvD_v{z{p@ zjkxnoy*0B{NDxI#i=fs(I^EE2qD`6n>R}()Bv>0wX=z!=VOw2mg!<5K&23F*TU|!` zhbR*=1z{x0MXoJD%@T~7OqK+fvfSQQ7_Uv-o169GD0^b;&o|zY%eMND;Dy%&TzT6k zaRApY$hJJ3k2dV{`(#2>Cx8K0YekpP$MY`R+RWwdwIIuk4x=ezR7~Xg%9*GwUDL9r zkdJk*FQfe^^mAY|tIn9GU=udtx^K}TIKbMxjpNd&H33gVo5S8sygw`{vPm~ffHKw{ z^H$?(_ypR1zWKoD|9|IY1GYC%cWOhQPkXc z#!^WuRx^{R#IO2>1Q&{lyw@-H3_MgMXfd6-)s)Gs`I}_YxW%Z?$_}0geWB3*aPPV; zM$7zZ&x5%AFJnDnyWs*7Dh$-LKv7m?=8VI$qc60mQ$7Jgq#Py^q~7Kl>Z#_^#z z2(OTx{~Buf25sZ@)7m zjdLM{N?5YOsQ%RCu@o9VYqKBq1|D*#0A>ok#T={PRjl@Grj)pN5Cp8OvGhdAw+D8q~sPH`-hh4PES z3D;TN7^jI<6`r(?Qz#8_dF*4lFW{>Vcqjn8zea|}u}2vLHA;3AOT%QA#vuPYr&Oha z&sf)re`C=5eX`tEkHl%1Mm>})+du|lj)DU(D9x%ZE{a!d+;|=MA5{&q=rvT=5e?{T zPNms^7tvq;2-1J^(<~z@l_{a7p_KpPP#Yw0l2APhy!@VGelTcs>OxF%72N~NZ!Ux9 z`g4~X&NA*e5lC~faW5$sNerc3Fi=p-U=8-3Iz6VM)v@**3)&(|<{!|c(oizXQb+ED zF*CatTJZd*sle-iNUJSgiR3~>QLvshFq5w7jM$7* zfvFbS;CvS%_1+Fs+1gB3dg@PcChS@W#VN3kQYaKS39gCOna?V{L^cQK2@;e4|=F*0pNX>o{LW<1< zPkPv9yocmJlv`bmuRlIHOB$)FF7#3RtR@t&gOMfF^Ej|3;%r7ns)S!fD(A+s+AIf1ILY;m=9a!rwCI7mD!vCP!WYf|LMY=1hx3qI-n*PjAI zR_tbUQRs%cH~jUoN?cNc*}cA1D4V`FB@QZz7*irXL>Yhc4{ zqg^j<;xz-AD-S)EKmlmqWKn2?R7_Dv4bsw}!!ZA?K?UU+9i|Jc$VhQ_?;#A+b67MW z2i8AAg5_ynGcW8gzxn@{l`k>I_%vvrmHY#|4)V|acCY|$t^?g)`f|S+Hh>#+a|Xv? z=iiF9DLXW*a?HiUuHpl^N{$xjTR4y&|6k(WZ)5cCWr?C0-T#78J0b)f=X7_eGQ8?J z!UBY#tC>$zD~xjwX*6pICGd}JD{mjRuA5c9I%PH09>8Tb#M=)!Cc$u=ik9$8FP7a;_1*4GT zw4~-n%-x~u&xq{Y3iG;DaO1(AM=SKx>FKOYDvdGG@^_w}O$F8xex-`-smkFO7b5k% zazx0ayPVyclX^sL4qk)n3BjfR&wILh#y3n8o;8JVl@z6MS}0XYA(Cl{Fe)1A^RMc5 zi3UBw*UbQwIxzJF;3#@ZO%u>Fa`&-*M-Q1VF|3U7Hi*w}ZQrOEudBG3C9D70JXKr- z#Z3v{=K+IWBy1h#!capiuKVZQq1{%CC23ZDJ?aZF(=<_bw(x{&Mbrh=GHzi|(DeMs z=KaF{&W1@p;XU~C2)N$$K+qOP+ZS-E;<(xMH$-XCjgTMe(29W_oU=)YB4nfv6^555 zE2%WRbMw%YY1ePJx`;Blh*G-fGm>hkmPE@mt?DB8c_#t%jLN_+<1B%4%>d%FIB;n4 z%AC8aw|9C)C~4re-RFm-AWRFfueLyEhBGUg{8*dwqw2sH2^MyXu;Q$j_KR;5e`nBe zU%(@FK+WqO)&taiY+z3fkSsH{x6PRtmw=Bv8@wO|QG{S3nKvKk|0{KeBET;mnq+UG zGGiJ4Zb;m^>D8|#2j~pzvcK&Je8X{t)@7bOZh?=+*BJc5asgK zcJ9raklg3MEk|)mmI~_Y^i?*fE;B;@=DaPTL*FlOI#2TM)iFqy1w$HWSP8=S4Q3*U zxCD9M)y_3rjNHVP^U0naFlBEp#o7_B!~>LR%{mst*pd+44~nrq^&OavpwP(%GRn+D zjl8tS;sDW#UHG0FdUgW&y`VEd#pe)7CciI(*O6(mP6c_!7#x zY)5EYl_%nuY#|pN0-mRlJFmAdem?G@Lw`0;aaolUsg4Wt%@tXTW; zfSUngM32T8rj;^;1gzMge@GRhRneGz=lg$ro7eaGK-(-LZV`>T*M+POc+bK@0|icS zFzbPDlL_9cp4O{+)8S86STlk2zs zr!A4%)+=Omi+GFOtX<79 z|4rItEzh^{h}qZomwOXS=eL)ePwsMTx-Jm#n{;Vc- zwm$Rj-1_ep%XLn2UY*>oo{r0d-d17>w=NTcUhv*~kn;T@+rK6RRT@yak)IhsuC3mO z`r>W%*%5BjV?KEyfRBoh+ZnC1=~s`Rt*&RM-5tzavATdq_DK(qR=19Zkkv_}$q_dj zn@ZJLclwkUHD$bTjafe679M`k72$V1FwODQK&jJyF~a4tZmM zn$lZ31I|~7`i!|6b3#V;`Z*3({f)B{1-yL}_t(lS4@Hfhk2ck*#7mK%-Bw6QOL^v6 zBiAR{1f;OQadK2>wx(lll&obKr&72@Eb^tf*;%Funn~ebL(P7~+W!nDU+YQ6QVWF1 zrWj$N#j7fCRMY9b$Zn)yB_~K^vwPn$;@1kVClXK7U@ChNhawuZz%TKUa63tFZ+t1Z#Wjq zno>zg)-c5yDHfHU$wzRxL5drpIT1|?d%?neMx|qj!m~doioy@MGL9&lgcoUA{x}PK z)~Dp!D%V`e{e9q!J}!9X2DKNSW`IyCbcLW5iE*hE4&Nlz4&`h?d(<+F9S2Dr4-05^ z7G;=Y8RnxxBN8)&1dCDtyT2^Z_sYhkT3?8f{9`QYZYf^kSL{qvR=KZ7C$e$(C6-IC z7W_u(M1i5eIh7oT0*tk?i!4zk6Imp`u{FZg+KY)kFfYY?HZBFbZ1VWG=6$QYR{V-& zQ<&{0))^wZ$vu#;D`c1X`)YpQHyFP!ikr@D$f{S{KZCt_Nk6uz_aN8ymSL;<5{RM? zIt5z%yP^PVYeJDq14@Wq*esga5$<3%e}brhZ3(5HEO3PS>;vX0@)@J33N2lqd%97)A+esCK_yusgi?hRD-b=4tn!CoM? zLc0PQibG6cw)gjf@q%rfV3)I~XGt3&NVP04Lf)J3K{&nbt&A2JYr(J>`ecku1uHcB zsnEK%zaODw5!@HxIg`PT3l+BpR2#sWA;AsS5b>-HQCcSG0LGJG<$4sH+eRUa_)7BS zjxa)!X#bW@q_P6liYmutvt&deCxSF8X8Vbyp@^i*8mQ8+kd2Y9Kp7)`1=oceBZb_B zk35)XF*smBhwIMUX@K0$0^(hv4C(pd%&~on=^@r`EpfGpLGFK*5!u+Tj4OvjUdml{#?~Iag4I#2&p;XTPus!^2d)ehSlE;89N2u^SS!x9wgA zvbRD!7?F2ocsv6HKyJ+IlfE(5-k3s8YeTH*Xm1TMF@%|H#&Xd@LM1w#1_gY+>swl8vRxO*Mey1Pu(BqG0$299sc2zeiA8|MnJf&X~09ykucbvoUb5bXyuc7L~VO zlY0CtGYov93x2!k3`7cxn*K0_>ntTf`Abu?2Tso zPmyp{1IFkEz5*d92xUAPR=V27hF*mLWUv}!2*lqi`dlAwn> zG~)~WX1Ft9z2!uS$PgU*72|0S)m(}Ff*109UE*dZ}H z2#o>$jI@D~nOJrgswt58;x*VJ@rH`rtd|ndk$ppn_jraMycMf<>)vMshRaO-&Viuj zk!45S-^@oR!A=Ld{0LVxVAV_70$CX+4(s)YN_$V?}s8MC29{%%kp9(dVg-Rr;@(uFbjoNLt61~k) zdD+r`kCNDhwl!$RZY88tj}WYVq4SoSh2g&>WcN;xPp8!3M<9(~;2E_oUD{h*s_q7r zq~ibJH^?fa0{nklXbVbNe2Pluj;f~cx;Z?kjwSuJbo1{FjA?+6?nTaMn(JpJdHADq zO(b8dqQLps+&^4t3N7~*5i}0g2o7~Ro+~NJ6w=F?F2orbU!d=iec_sN;R?Nc?q0Q6 zu9S;8@gH5itg#7>L{38}PAzG5oLm$j=Ynzy+8^gK%1(unUUD=0qGIJ$-p#NNLBy>I z@~i)SOUo@nDbHRx?_AF7gKVN0Y9zCq7cMKbg#6fu9lMnLxNxLg0n<}b_pA^EF=8_L z0VQ(ITie85CNHA9V7T#t{XCQ6JQHbw<+{W|o}_1MG}N4EFBbAVM>I-J`;3?5jf8ao zYKKW|p=eksg9vgYE$je{{97skA5Vah=zQMfU!Rb7j9DK_EBAE<#rpb=sYN^~&xspn zG-npNEyX2PH`Ig*=%96{BG@#(Tf3;D93SWJbPQySXmLdiJ=#Phu2*ZC3{507Rbws6 zZhR(DuH=>&4G=o@@F_dL$Rz^0*MJWE_gGb6vC2ZUrIFd;BP9ef*HkBe^<7tGm<;{SIg4u_J24^?Xx&B zS~S4V7G}ZmsX87>s4C_5`oMGDs_g|{(t)~lOo<6{qA|~w%|)|~-WPj?M}(S!pI8w&&N<7IsU<^m)5P~`OXP#&kA(5IyuhpVPv z4;!Az|9z7XB#d*H>plLe^VAa#dG|p=2q@(OkZHf3Zb8Jq>#Q;szR2L}j|AlsAnmI=r+VH=1bU4zUsvhVE3? z9$!!Ajq3V~6&ErKLFgR#FF68RODhQ*E}C8_;9g?Am;!pNS(PZJn(L9|!6(ct75s#xr|P zQ_e?y58xr(6;9v5ixj^~uOGEK9x6_n{2QKEP@~m#A@`HMd>|>~b^XBn>Ld>WT>KzA z7my<>fFDF;VF!4`}M`?DHwZ9#pJWA;+_x(xbV|MMY$%b!?v>%oHF z*5H^uy?!^zRHjt<3ZzU$L*@Qon==PoCY)PbZFNlYilFhI!;+ln%QNal0J z^Sd&D_8)&jsn&;q%G&X71|Ih~_kCqzVgXjepmw!BkFJ~< zt;hF{r~?<_Ca9B5v;TN)X%hqRP#+bY&?fuT2~y-5BSusDw&me}BUyay=&Nyn+eW}=l}P^JENka5WwS1IXC z{N67`g0!k61wDBXj;s<;T8YK6ns$}+peZc4arhXZ@E@%IG<^FmfJ~hdBFum0+D_(J zyjr~aFmG+o38wcWvhP<1BfCzJ6i<)|QcVquB(h!#BN=3Z1Lxfxq-O55Z1%~GQ7U(a zwuNm*6RijRF5y%Z^2*zPmoCN3Yk&mT#3}f11cynqCj~_UVMv9ml}tC|Rp&02%DShN zX-U-r=rG-FCPTPTq>y?Wpyy%CnRh6cVwvovnVx-`AZF_~e3~P=lMlwrCC9K%uk* z*QsH-e%KLPCES`_I!1ztN!yV-&dz=~_$7z-(E8#e>KX8GTVl zw1AXZ5ea(ZX@S1cJ*=Ya{ee!)N`M=55q-s<_k$LCH7hstVt3$2+g`=2tckp-&i#8m z?`KxQvDZ7(Cjio3PgfAi*M9o}GvF8F40@we`C3uHBjLDS;l`-tSpBsO3dEX8&tcRQ)@CM9-ZDaL3wFsm?#Or@Md+TfColxol-JG&YQp)LBWn? zn%KbeEGn2+Atz_`plljaCs7votpI%Tv2z+XR#_$^JF2!qYJ$}IH=v=ZXZ*7*C>Yr1k5_LM@olR$-i_r1a zJ@d<=^$qhya6s_lAvm`YdaoX#*$e6Mfw2ee$-vMC;M1}Ef$w|B^D)R$b~+;=A|1{6}>?*LU4+Je8T=cMqoX zcAF(V(zeD@qf%v`sKSI@pHPsb<8)Z9vwf-ff!u#%aeSsrC{>#+?f3%A&kX`RJ^H^D zigL7nO{Si}P8QZHOT<#*iseMX_`_M@Rkk_&JX{k3FQ<_mknIu8$&!*tsDBA3^0LQ9 ziAoWp5h!J*Y!|1@p75P7FY_8ItzK&UaqZ11FGzl|SzhHU*&fATPG|UBxH~q2@a>54 z2D0mj`DxZyuV%lh+i2)y&k8(QAyhxxS1Wg{s4nX*eFtXYIdiBuKO^}qq)`5HvgevS zq?~=&azssu1YvT_4S`K5>C#f3?s9YN`s}XklA7spFRSiZ7*ZoF|9O4Bi@mn!IGMkrU@6o1X&{%(dW{vNZX#1f(;|Awv;EIXi6x#ceUQ<=Xm60-C zU@sKQ?*GN0V3}EtY9u9HNu;_tPLWB{VQh#G6!2O7Anl0T>ieumNn~K!QquHAmx6%Z z!+Z1Pf9oFjKoUZMfR`ehb?bO;BrTQ6GMR;SzGFe%n1YMAc{M$DJdPk=FOQ`WHqS5vpnk6`aT;W()Hg1fkroswUF+pP}y|K<6-7 z6@_Mze8mO&Jk)-uoA5H?vds*$kk0CnlnaQemL#@cE-f}nTx0L3D02+4)QPj&@By!d z${15gSs6bSLrJ|gNjgeubUHPM8U*7X8Zy)OH!IvYRqXk5@kmLQQ@(#@1-8ew2)$4N z1Y@mf(*=^jG9}bD@juuiHL}V4T)74FZe)yIx|@LD(A0~K;xIwoveXvgq8Mg~VK_T( zoz3!BqlEdzjJN`&7$W5m+Kp(4l|UrQ3sF1}&aOd?eEwb=JG$~ERXlXLDlnzUYTU>o zq%23WWpOA4bnm({2mL<(=a1>_>RW@Jyl|jeEvc}in%qN(H9*7EHw3l2<(&4X&F%Yb zH{fHtdjER>mJW9bRT2aRLa~{PsI0Y_FEL59WNpd9gEZjnW>dgd0r!S1bqKk-sTYadD}+boyp`DQwID^XDd>s zhuCM+Hjb3s{IAE^e_agxzb5flIg107**6m30A_aRYLN8oQAAqAf1zMgL|UfL0SuP3 zg&R;XjU=e0P0G0G7bbrCFdy~x2Ecw3t{xXdIyq%I!o%Y zo3S%SHO9w!!4qt5WS&qYcy?Aj@^M74eu7Ya^no5>w>0(ht=BQY@3vEQ)t$QCqfW=4 z*VUi>-L|pc0eLGRDPaE^nxo=iMc~*LqOl|~hlsL@Q+9Dq0|GC~fC14mYVj0fi%@Ew z+9&w1zrtH*)5fd%CImb_?N=Rq?A`;^m!$lEUaqq_Rv)?zxPZTuFM7WT?QR{ufat5c z4nMa+ng!)0TQZ;1xf|<|#eTrQCdqXW+y3)RpA2D?4*^%O(gCRx{7skUV7ok1C&Zkb zdJatqd7hAhpaz&a(8;8)sCtx91_ZvgzvC9Ttt81Cv#$#8iWU>2*`w(`qa?=%D8H4Q zJ{@HPH){#o(G>7^TeBmVZd0b-*hIE&Y)Q?40Q1b3LLShY+S1J-?x<0Uuj5(#>US|#DtK5ZN!qhr@$Q}pT)7FOx z!0YA@eX)6Zy6npKA)CH9Yug%#dQJ{@27|k^91do01%9~yHo-4g(%;g~AZL7>{Or3t zzwmdzZyt6f%TLS zdMQxj35fae(-*xQ%<;Xeq8rfn(O2iDJkEy&QtEojAX3DR>UkaKWAehEVE z?iQFLVU598a0KE7h;i0<3n+qq`ohY&NiVYj#VX0?$*pth6kzyMp4%mj)#Pg3PB^ZM z%MA)w zy{O&qFAkX{IpufNB%p~<@i3TPbtg8stVP8NyyN>lJSP>8Rqb04m!mXs-6D&am2taD zj0`=pPhTy|`gnJUx5Eod@cWP=leil;i}G#Ze`wj}M5yA2tHvE1ecuhB>F>}tOQ5h; zss9bl6&QZKEnCfejH0V@(RQ_3yzh9gc&>-~Z!-KbvX(W!kf^P~57dgbC5beH z5hrNq)E2cj+9r3rIC0~r5#q2YCLmg#dZBPk&D8J#ci9fm)43lZLM9h+GtqWsYzIqQLc+BaRfIIQz!r=L;%G#;h`Y*bZhRmQABmD zSoIvQ<37u*fR`XaSh0R-aa_evB9%BwYBuzN6>phASljO3mMs@%(ZAa+IePWQzYI9z zfHd~^0r>~o=s-5qFQ^Fh4@&Ye6?nHANV+58cExH>aV*C!{gr3*$ACB>Mnx~MzTu=5 z=o5W;@KgWmyzXk&w_`EOU;{G#^C7s0=%1=`=Ct~@-!C0=1FW|`JmSP#pyVqLV#A&$ zcW?CY(r`x_go)C8o`~^s##+0-b^*<0-;#398W5-b9mxOhIl&0H3R|p2AlcC!VETCp zJ&6DD9kUW}wv+_jkp8Czcs6|nI)y33u=b%qrIQ8!5MoTTD#JLcSst|TVBRz$; z?q5?**T%nKnq-K}#OPj9Yw;5RKWls9BGUOIa!3x2USM-1CH3p}!oD zI(r~vcF+Z>Fx`Ri;4)ewt~TlK>KKt zu9Xr09aJgWhL7x^eW`8Y=E#)72^zrtGgI=`XdoxNW0J@ zw^F_J=%mtSpeT0)fmoUVi-#e0=+~N#vH(^QK)V5{%obcvAqd?{efYo9uC0Kt%ICY2 z#HB?d@mFH;gm7#=WaBmXQRX3`%IjREGST(A%kcJ;M+6o+uizw1Q%eOc%Q*6(kOp!Q zBv_KFp2hfo4d}9|VCVbFSBCQvEz?e+_@ik$XDI1Mq%w13ZSjo7oc^!q+_Hq+Qy{Jx zk8?)q!SSj#mLwElaOBpBw0@L?!f2iHjj%Q%(6e}Fu?V`X;rC$wb9{6Gp!n{SY~H>2 zZ^CD5ErQd?s&kou7n}SDJZGT>u#FFANG|*S?9Z_=1$>@2r2?amf}modp(zN&1E+Ku zgmlSGOkBU|0wY&*Q7Y-&eBmhn7+i4_YZMc6a6j)GSaygI7)n|{iUDP278a28kp>}% ze~N+4DkNJI*9YQrFQHCDsfnBAYt-Lw$0}R>{Puew_IqAi{VnK7fF}aKQZCCb%Q^Nz z8=cQ8ri_}=77V1kG??{DXB{YYCiIQ`9oOAKro5VojqS34fvPST0d6_XJ;hD%#1)T< z;&I&S56uJ3Y$KBhvc);@&$E5;V(6Kz<+&^q?H>_^F5Ib@&U7#EetFlbXF?};cmgt0 z#xyfFs;Ek$rj?LVOiX508$M0aAiAQCHV&r-a*cKltjlTgtk6wRgOmum~Vd!%~#Hs+Q+{u*EsnMb6z^ z#~)AplI*ef?%b8@XlP$iBN>~aG1_-M3V6@v$-B9CG$so zsmV`Rx2zEsj=t@3e$HWKwW-a%lUcp8{-1bgL0>=rg=M*q^5<)8msx-9J)G}3o5hO% zkw^^KOqmN4#ddz(glx;0Eo=vm&UZK9FCNEVsmTu7U!k#F34&;=p}@L8vOF6&aUKZH zSx<{{Ebz0~A9u3TZ{cQA|9f>)5r6&5kd;1uho^V|mw<(b(cCCjGlhl53A_a0SP z9LzMic)l_7ffE62E%>lN+wy+_fk1x0wb0rv9Y5k-KCJ*`i=Bc8tKGoUM#6LOCldSH zTM{piUp}*+AJ(1tfl9Qu6mKcA> z7E|r%M?S0OQEYYEg2$8)D2Iq3y0A+zP;oTl?T-l_HQ(<4oXNwsQ$f?F5or33UcNSp zCzJ?7YmQxo6m@A`yL)vsh_W41`V@T5Ly;wZj>9T5DT?iCy4bdWE0$Z8n`COEcId5s z&e5=$Op2@@$duWA`4%_gMO_{L?<+Zg%D+9%tmCTvzl2`=hwKt?v;Td9>oawJECm$* z{>A_7QVgD^0O3S}^K(hKt|EF*Me@}6ZjQ?@Mffa2RZQU4e zFd88nZ;T0z2%!?nVo3Us0rKYj_kypdnExyMPx5Nt{|AJ;t^ZGQ4aa}!CmHKy`WOrX zbM3qTG1vP~JGb#>V};v*8Xx;O*LP3`lrgON}>*_mJr#2UPX4rwLW32YFRZyEvBY&1a4|LXgxaq z$Kob8!G+``c&(xK(K}0jgsN!JwGhEyX)=e4)OoP4wRuFGou8}whh3s?bjsC|6PDKj zbd0(-5kin&pjB=tsz!EA1t&H;lvU-xr0_lhmS@-N3EKBR6nVm)yYV&Flt_>P07kQN~|z z0v|tI>-d5jPh%zzg%|Ayj(nD3p}_Xk4+@)YqIZSe6AM>uaZtg|e0BvpoZh63^u-hA zU_d+H{(XQvp1~LVHx8w_qM4V5)(%@@u`8O^WVKi9ys$k&8zL+%4;EImoqHzQGD7a0 zJLY<&ACp$jSop&I!IAUTVrv~>)g6Lrt&gcg9%wr0mhag9p)iKs#Cb~1@*`Q)qP5o$ zwiLQRKFQXtNi~~RDc7EJ3sFj69KU>euni|}nlR+22^SnS;ew~;5|x3B4p0gw>m~$) zM%J~mb*Mo%NgK7Y6|`o%B4ih|jW^9YuC`1)(~C>zXu z8x|zcJ~Kt!po!qHAfxtaV)&yx_0y07PK{uOY}oo=o(C2nvjv{RI~1*(0y{}^&JEWV z9r0%_E=31uZ9~`sjO3H;4Ho;)+3UFb(iu!R@xO#22TZu&fe9B}FqdG0QbAi3F-BFR zjnIUssu-*>v97&#D`Nr;AI(%|`nITBD1d&s^U5e-P+}j*bMb&dDVgn4#ds9S$WbayBr8x$gB=PH5*MS#JERqV?I*&mZh4i<|KD%V3lsY!aE z3fLCd3N{o*ZQ3?y5^0K~H=in0%t(>G4O-e0>61=Y`DCPSl&iI}QAdIcs{%R|*ADX_ z8Ly?0MO$#PP!76<{iCg?+hC3>rnSt8R;(+=Pw7QpXt(nHzaFO`T-f3-HFKKp`AbF3lDThhmfG69zl~5>@B}cX6WP)DhSb#j)n)d+( z+tz1GbwdxAdQWJpT61pVOQijw^;@e;B$=VmxHI;4R8?{O@>4lU&rZK_Ey2vnJPSFF z6BM~1+49#yr?7uSh3h;kahEl5RkaQc(`1GPw_K@nl)q&f!=89153QVX1_M6f`qaSlVG-tsIs$--`np9EykMqavB?IdVZ9 zlhsgRK_HX0Kw(KBlO86-htCrM;Z$Wm6|K#88n6}g=`TqQ9H}I0 z^j-F&B3Z)j2yZbsuv$I`OF`byYgXF-AA8r{5Kxe1 zWJ=(6fwfV+a083jGQIge+net&zWENI)-EhUF_y+U^F^AaTzkt^?y^EFFIWN0qG#{~ zBK#ExP%EymPOWa9#2q>SCiJH>e0=WE3v-xE7uUt~esUNtyiVX-YXFsvse|01b0vk}F8j9!L55r1f>VAHZPW2Dt12zd)enOPeFO zEPjPh=*S!pVJN~?c9fZt;Q<8*UWA%4&M4JYAPP{ViNiRDl2<4jU}A_NMM9PcG7k8V zkLraF;ozJE|E&7ps0hzv!;uk;U!hQ^rEAX+VVQFgIGfjzGvQYSD*}@;bTM|nLj2{S z2%^n&wQF!yNtAskO+?z!^3@R{PZ8?5L#-&Pmpugcvem)+KyyqF9V~FKl{N!Fm2+2! zw~yMB5V(v>NH)})65;q^(qa!P7a`V#bz!5&2tpzv?LZCTo(vFAs4J+hGEQh6q$sFw z%0?g!2%HAN;GubVYCt$xKp>88z3^k9UG9PxXxjHlxOPPmE2oT4Ov=2CZLD>Xg65YB z-Z#c2Zr{0x#t+BLR}=3-GL%kYSw2oL-r za%W&nk)}y3gM2`vdfCT9xjc#LtTN6eaqLo`=p>d*q{3Mnd+U70bnjG0;IRQrmWXYg zC~q8rDZ8Y)_K>puQC)jX*$t{2P2dB^W3uW_qr5F($>VX*+TltrDUUl8XMyq%MoaS* z<&`j6OUgrw&vq7gNL(d0nA9uELm)99XpMG!ogB)N5?6({NzZSRp5H@yzM1rVC(&Uui|X`Fgvl`UfCc&e1>d0Ul`=@?O%VkO0`66Fofjwe0Q*1e!d(&KH(e}nWU z)8hgR>a^px)+6^JId44Mj_yQI;y3}hg3;u|j7Ly*1N0yRzPXh|9_VStEzqFHbE0tf zTn-J&#uDlobWl7^DmV_|OppPJQ5k$3q2v$<77qv^Kuuk4oU&n86G4d5EdqE2gNDlT zYzg$n5D}`^)DEizyEY1swi60J%_CMZc)fk3S#DKjMHfai(_v3VkF zj4$vAn;W5jl)@P^+Ac)Xgt4;S!{|-7%o#&_w1QfvnM!^6K$r?+u3&LfzWYXkrk2)Mg;R_!R>b7Vgj{elSb z^6YMw&-2+kV6)T7cp5|XqseITG=I0Ci2eEE0h+jYK%65KaTn=)4w}oq{dD#6#hVvD zeKtgK^~KvMv^FAX^pBE>e-X{{?0NLhdWn+vZxljNuqyxa&wm2`jMZZG>1=ejsMh~W z{4NextIa@cQLJYkT}B|F?{CYKQ@$SOn4Ew0@Fu?b0oc#eCpS-?J^yS}L{CHcKmIX1 zI2`Abo5kB_(LX+mK>E+3r})m%C3`;lvRdHz==0A*p(t9t<)_il!%;Sz-zV^0PuaP8 zc6s>(?>t!+jiOb-dA@kDSj}BH-tNen1%_bNIkxqT#u6V{PlnFj;XL|2V#fNwHO8Rq}qG z*EHQfPy*p2t_OfsTvfWzYRUaB%nz&~>Nq9>?(CS(M~Aqe*Dj9kgqBJB8|T z_93^)wr<=nnm%q-=LMA6bDO3-s#gPb&fdE3K^s=@+*zYeR@1QuCDaG)|B-@|&j$Is zoD>~;uBppWdD$}#-vi(H1c%{vG}$o@)jPco#K#zcY&3f@n@!*E8-kq*`|hUUN5QlL z;q%T$-w#B2{LZUz?Ukq;$8$_;%f=$tU%bqV-HmOWF5=|*a@usEW^GNC>eao|q|s*o2ky!9 z&(>UgS!=apL3-cCli@FOvQm~>Knb%`1KnBKjM#*`>1@#qsf-#==`nB^i= z-!tZJ28})vhDo_cn=l_4Ajg5lhS6~zWaO2TI;=_|{Di|bU$@NgaCQ@BI<8P*jULy* zfQ^I{RS>Q^AFb~H7J}K0&_<;ycX6hDkt&mElP0Y2T!`5A?I59ah*-z?q~NGUI3dA% zXPvAR(BcS^Q`)b>+Iyk7R)OtWu8%_0?Opq?H!6pGcF=3$BL}uy^kv8GAC7L`R|b9U zXai^{@Sr_OYqkOkK~9^Y(qUv(SGNf(B)tqHYn+U%aN)=?a?On_(7Z2?2v#<#7k>0$ z*-hevug$No<4HVz_%)y5mH&h*FUtHk`Q%%iiDmeDnwnIIywJ`SXcSr&7drd;sM8>s{sjXhz=?Ff4Hb7n z5L!#9IOj=iMt=x?WsD^4*wCqkMuuQBJU$b0Ob$&ryq9-{m@&@L5xhY67T)Z`>4*rU zp&-YI`B?Hau9f`gabuqzDilV-z?iTQc^Wd3&hB<*J5wvhjtf%dOR`WMVnjPD)e;e} zsTHh4oM=0=sE-`nra@1|$Z(9k(E3VwPC?}ohC`ytrO9an&&t#oAd0tq7<50Rj2cRZ z(V-M>j=&VgM-tCDc3~E%t|&DcgH|aVgd9pV;``}f%7GNuXbkue>B4kWFZ@`+0-eL+ zluSiYNXsl2Dvp)QU7l#iIWvhfp7%}HM6gn^Xqj{v;VU+LpgC+XAEu+y)5AIp5 zBI2rz&}|*GIt9e7n2A)aojfZ>`E@>V^FvvFReg-iY= zoJ6=aqY!KMu})SBK=LF`!ae~`BK*hYBtT7laFX|<#oJ&-q~lROIZ-v)iq+T`B_(@^ z)gUApB1rVECJ+nf1AT%nqL`pncnrvtVWK%3^Z?fx7*FxQ2^0o`D$RxjlxY#1k^pXq zF`z{OY^_@Mv4S(Z#-@p_hD3JgS2ql5oK7{~R zl9d9OJOXHTW#6|q9y+s$RU>43+u?LJ(bNFkit3q9Oed4zd~hnq;_X*muZwszzMmaj z*OdEXTK0vK$sR&lkPi@+u2x`q0DCg1rcm%Qo_hjz6lEDsZt|DMS;{(tZ!NhGVz$^d zZ_+woaRp`sSB;A5WgjyDr8|F0Rl;+{owr`Zval)Vc%F^Yg|eXH{7cjr4r=K#38rPK zyHt~v0_t#xbwz{dCEl~E8q+@DvmZ5v>;Bjioyprmi)jd$*%$k^`Ea{67RD&N1Ti}d z7)2NvgF*WOgFgw`N{0ww9tO)|AK~y=5#~xJ6J{AW3ZwzP)J%}yC2u?+z^R|*GZ@|y7 zv7NFt27Omyxokjd1p01JS}R5%TdNDFL21>=_$1`}jYr#a0GulfjAwPlOZ-VR?Y)XP z2s}nvju^HW8X5|-9s)qI3VJs|U@kcTBP0kS`LZVGqI%f|k=GuNO!vS>5&suOjy6Ls z2un+HJYGix5GzhQu*#69Y1o@H!JCGjqBN)=j$UDLXBJV*f>ayw?wDH8Dts9NQeksK zgnW2+gy^Iadsc(K0|Qr?oXT8ipLuPwjOX0hqVEly;1xw$ zVwvWGR7T6UGSyQ4sAUytRu%(qzogLBd1`Gou=Z;SO(QnDKYSkN#)(+l4#)eP9k-rt ziSJ!H#eqpLt`x^3aKaItGC=hb050^6^kJxdaGDd{@x2YLDRAJ*p1ke|n*(?B!$}}$ zd3YO)mrBt`2lw72*qcoss&5(`s0i;L%mXhn%PsU{Y*mt2mhd7@Slsu@ryzJyJh&q& z)3}OEn_3&`Y8mB^qSKXAQ3ve%Dw$#jwxv?to>SC^sRem%<7@A8o7j4~HF@Hyo?}Bp z)G33Lk+(#g2&HB<9iIimOHNQ?=z5?`JShlaGuMiyX-6Ci>f^zTCw3|=2M7N?}3?RlLA)G%% z^Ou*g;9Ck{rF2u|Fb4lF!^$yQ{;VDfyo&lKj5bT}_Xr_DLAu%W{p9j2*tGu(B@s>H z{K;tY(4Mir|d@#fhfStQi6#u|T&Cr=s7%4dx+*ByiVPm9tnKW!^cyMBFFr1s8G{!bt} zzBYKTkwT6czu9zwgXh_^s4|o$8YsDYEcrS6RECm1w0ShEw|?^j`VxlVgz@CAHlUzi zz=*ni)cMH}Cw^)3fL8AO=Ew6@UYtUo!fuSGiMZW8oP$q@Lh(zR$Fp+hH#MI141!)D zro~rNR97MvaYO`NDJ-0^|5&RmlHGj(RjvfCdI5$@x_FJjHJ4`}zK=ir59kWfZJsZx zLr|SI*Vt3l`7ux9F=%E(8Nq+`AwL*?%fNXT6)<0y&ed41vpMG%_~b7e6F z_B8{g1bSxnfqo!k0=7V6@vNyg8Ws;#f)XF@Nv$VkzB@tBU+;oKwWXF^VF@tAaCP4s$)O? zBNJMh4g5!I#P9fzkMj2=3=;8(>S9U7v3a;2`Qd23^kU4jvuHvh^3=y*-p8{%j^=M; zM0i3*dRE0ES}i|C@ff(~S(HwvvkajFBoMB*=N@>FkiqKT{U$I-gKYTs6Q_5%b{6wO zTE)3ZjY>0JaOFjw+QQ}v=6<@bp}<4Vg+DjIJ}p1cOxdxSmSrN;WRmWy3pT``!&}vuMLJKY+lSyq848W#X%U#VB&`4~k z0)BkBp}J#3i$w7>Hw83HvV;rlNR0d_m`VzfW_ue74O9Xe3cc#xfrgr{^AjPLjE_}f zy=AGfDf7xE9yqWmtTKD&CkR=tV1n}Vr6(Ad<0m~dX3*gEBy ziuX0tX`*=J)DaZ#IyN+oLI1E?i%i<2$PDMeMWj+Z7K%A>ut$C9QKdtVUI1VH=)(Po zKal@ZgiN0-=GX4-fjXn_I`+$dAuN{_`488*1dZx<`TrPyYanMF`9>t?zkd7X`&SXz z7ttHE&PEu+5RVDixe3?#&FhN~_^trx9Fl`Y<;f+yGgY_~LOCEKV;L%&#~J+G=8HJO zvV;8Z_oH{0XIIn70%&;f=HV_!f}~st97zv9Pv6EfFzqh`l=Vf^Oa40e%ZtI)^cL); zQ8KQ+=ew^j{rZ`p@stN+;aH{bmbO@X12RvqD+vl!k^dqPyt-3)He&{CY3ur5}rfF2e>?sR`@%dstOFzaK)thqs468r) z_=CF~hvr_cVzdrGHTWXBSlr%Sguc6`PJIpkdofGjhW%UOHo#ea437Z)UaX(KsF*@) zp*p;Kh|qH?dYu>fET5$LdN&rAuu7$65hwE@qPR!1e2n|x5956P7MII5Vcsv64^qKV zihUW1(9q+e!sozLm)g*HdNUnnv-tgJO3PXVX1fn#H-ag4dG^cS@AKIMqTl{$8zy(( zgKLc4d7GyG-c-dN1y8=Omnbb9wN2+MapycTC35&8hfriT|2 z@^uUy`3^rm?ct68$KJCxw~Zq?pZzOvp1HBTMN0(Vv@_nxIP=J@^Qgo#TX$Pm4oHGF zH?7svXa8!X!L6OqZ%k zPJWegq7)Oql$1CILi{A@Ad(#H%_;i?_~04v!Kq|}h2>sWWH>=8EG+i4LGCHwc44_w zL|OT^)z#Lxov^DS{o{S9n8&_HJNU+T1}JU6-n~vNwv0 zbTnoYVN*zL3F0&Zvp640&B{v1st-z=3CmY@)I95{Ias}2Y3+Ic0fscm(`goR0^0u9 zr1)*xK7}I~G0dYPIyXtt_5zhZNi)>E8Pp@C(9LBn+*u6&>h&3`6^Ubsg%&Z}FKjGO zYzG9yLOPlj{E!ssNfhx32A52$ zHKis?g0AW0gi>5%vEjnh%L~iU;2${w7&U}dT4=dCj2xLmE;C2nXp@0i-;A$c?U*N?P&n-m0i7x<7 z!~w>GA|4HB*~d$fcg->YGrq(UZu`*i+$@pK9FQlH*5gsvn(c{JMFw!(jUkdM>Y7cl zIvbDvvZ*NH;Nd)$k0mf!n+9LwS~zY)$9#)WqPeDkd#YJ@4kzYPgH{}tuI55h#K4U}8YYw^$A;hM-}Qg_l?dTvI@w0Zrl-AV5Cu_#wC(7ub^`+{YqItcDzm>FLA^ zLv+Y?1yL-~XWU35CzquFXj(_8L|aYjwD$Cvz_y4LTC4Or$iZSnw}40b^Xq3Val@V*eex;>33JaZWhP z(Z1VHr^SaK-}37iofhzBS|$I||5L-|^}lM~KPbZ`^t}%TymaQh+c)fppYMIJpnx~8 z0M*6&4?m81lrXY8X7A@ z-UW#BF@OQSVUiOlq>-c`a2bx$TxJC;70G`{)l=7lIs>PRMR2Uh=@s(P2;&4qYBSub z4)>QVipqNs$BzoB?cgG-#E;Yj2LL@v8gVO$EXDc zHXqBcNDW%~9XiL`E%#HD8A2h^#;}MGj$x6>KcyNTimu>=C@2ucClNtqEwX)O1>)gm z?zGMnRhioCc9VVhH}c~s2{|})1YFArFAo0xzW8C9O%8%0xj2Z-$Y(xtY~QvG8vBmp zFq`{U7<#52vA{C}$98=Gdp5p2j3z(u_b`?Q#ruLhdwNR#HY^jgpt%OBnEXH{px$3s z_q*Hmt8I;xH{05dEU=^Ph^cB!&eei*A5j4{FK0P|7c#x0(TSff=?Q&uw0^f6Pbb0! z-<65Z(1UpffbQ<>XlQt7F&pJv+bK=u%ZtmM8m}VR*>}6ul*`@#Mo@I!sZrE-CO_WY zJ0u_An-5AlRLqaN>G#3cK$J-q7Jmf8!r1Q)VzgvM;Yu`5lYQYHiSb;$Z63+tS$&PK z(50yit=Z@Mzn+A3!{X+s9-f_%T3ysoUyhOj4Debe?2pqw_i-|AKj$MD z`9gex-(gZm@Gnri<9uH#CL8lEQ$3Tc{#uaYpW@pxyr+ygM6HKz zcmX(T1k~Wgr2XM*Xl-|I=EG^B{O&hk+SYfV|7D1y;s^rtO(cMnoFIFj2>YSa zdszu+&U`v5abrN z`*y3{p3{`*i)^LUD+H??5>l--!@3%c)A5*P*V`>u^V>QK5Nds1U!%=NzW){s#lu!v z&^-HNJ`TWR-9GvQJu~1#S$1YTci@l{-$(5i<)d5Ydxd0o?&Auu8%d4IJPm+?Rb}G>1BmVz=D);HM&Z2wGk-7*V2IhWiDR~9>08g_WP?7A$5NsJ7oyK2>iv-MVc1}9wt#{m&uNb zdzQxL3WJuJ)WL{5-QkvH>2cs0h7~%tWrZfAcDz=UQ}<;)<(@o#{o7A39>03hqTl!b zH%*JfYQi^S`9+YjEE>of2Dnzrro}}=U${C?Ch{{Sg_p(pvI3;-g;Y9N+DOgwmgU*3 z;)~drI8D*oY%g5X0qz8@i;0cRRk_MZ-|Dy9A{VJUbdV>IO8$lJOV2YTS4yy zr?5$7dCSQU+ypZ!-IGz$stZiW1-ud^*;!x)h7lPoaKRY}Fk&w-OqZL6Ndt=pyd&Ll zrb3GJQF63QE3xN=rs>g;dJYZn97+tbjT|$K4a*AbMf!M&W^Vc$UCXSla27?9Fxy9+ z8Iv2U7%f(Y_LK4X%;(Zju1aGpQ|pTodtyCa>@TTz(O9ibBD4%HEZJy#D0B;{fPOSY z`qs8&H7A5Uy<@Q9VAwN>$|O$CXOgJ&ZR7U%Ki9E!dnW$hq_(?>|N9)jP5j>`{%;fi zw~7DT#Q$OZ--7g4Libhoq@EVp#Pn@q`Zh6ro0z^$Oy4G^ZxhqEiRs(K^lf7LHZgsh zn7&O+-zKJS6Vtbe>D$EgZDRVqxR}1XFBffM|2DCIpD6YZnY9VW`K4st&lUW4_gUiy z85!6?W=YO2f0Ul!CreRDY&JD)z6gBf4B<^R3nNf(f zZ+moZl(OiIPp-}|dy8bX-92T{%d$vYC9KJ@ZJ&8YqzADJjp}A(+j<24iW!+aGVT`E z^b-86hd>~8=gxU?R#q(Q=u4wz@wQUvS;%4|&>bU+Of#Us25uCEu3=cQ9><=0CmKDT zTt5U7sr!Z`!XX6W`z+1QN^K_TlmoWPcN&2nRl4p66cK77E{oVzh-f*~4MH%~9B%7I z2nL%Sg?bb*-E^HOw(dkk=@pE&?aC`Kj?{!(7MZIM zE-)<5VWAPk)Cnx+xRhJIW7t8=tk@6MnsDmA3Bpy0%xlU`GoTwfLD;yYTamuy6E)?Q z#pX)7&GL;P^tc*`XDMfgQpvbC{*uHn%)0jEygZRO)UbscsB6HLaG#-%7Od>?jUR z3vD1Cc{+DM0Q;sNII$U;cDT+0QQf!lLmW=;c+i_ZOX6%5`oxsl)b}{EBgfOdFbsUp zHBH}kV_Szoyw3Dd_pSU;jG-k6v@FtAArN>9;4aY62VrW&G%$QWpcshnnnC2zy9v7& zmom!sUk^prse6gCPM8gSiL@-@zWD8A)W(DcIL{l#jzK}3=vELhhZ^t@jH^3wQjn&j zhrmGU&OLc?`t$QY&L02q`02^xpH6-*wkE{D36e80fZ4c#@E$;`mBsU7;E zVOx%2a6k0CyBVSnfkf(#;gWlwouEtOX!)I93kGL3pGlsy!;Qu0+bRdHT04}(xsMtV zxgQ%?pexl3Gj^hSe95yh!?-X(v~mW!NA=%->pQM~`28fvFApW+vD#U+h{6^-*qLfB z`E~nf_UUDo7HPAvHY+9N;&+qhL@aYRIZ!%elV!o0=oNE4m;t+5N^e(wv^(cvjYf4)3K6;It|8l|zLN3xH$-RQIQ&Zgf zN&f5UtHf!b_QZdMYVQ!P^~R= z>uD{awHFxpMC^fUKf@%CxYey(3ktJzG!l^&ll0~aP#JN02Ptx3fYFUt}rHV7z8A z=v|EfCSSnNgJD0(3qU(iB*4I-qk73|W&w9Dq8Abj;QI1OmZ)h)9{|l}Nmz<{rKeVj z`W`ObDxzLpy+YKN9_pG&`V#8(6!a7F+v(}cMWX)X}dHIYGK63 zM6Ym(i^*te5HciWgbJuefyND|1h7OOJtd=SrBb(9u_M zcn?RPdiO6!z9!kPB$-OiEw8Zw1}?` z$Z6TGL^brd1Ral`%HAb8FRS?KoGX>&=o3EU-oJeQnslm?Wb3U{m3x;fo!VoQ^C~)3 zUHu}R+TF8#--;ClTR(l;g?qh}>WM-DqV6NIU!ZsJWjf6Xrj(FpeTcJx#^&36=kQcevz`9-QK+}(W0|(uM*L5(aKE=wfRKw@QnyhVSabP(W72q&Ln7j;W>Ta_*WK<%sw$7 zhH&$%*R{bT4vDyF0`24t7>8T67vGegV;Z%;84z+5v47s5Sk4*#2S#_FC(zAw(2UXYK4)BPw{Nan}iq;dqDmPCSlnH zQA<>Py%n(VZM9m^>WDL_=gvmg8lHE(*c67Z$LuZN3NP5?98KY|IQzBWqie#hSTe$5 zz&MYy^KupiM3p!sXHU+d2%vv|b%HeoT(Fcdal0_dFH3=OkzeqL%x1Fai#L!}=D@~4elP~Il2kqR zKRn>2cI7!um4V#jK&Mp4xx0(q$(TcDcD|`05v|jhn(Ea_U zaVkF{PYWWCdd`LQ7=isQp(`!YjuDK;9!^NMP1ugXsg*V)7<$E4$N0R_MNLd9zC+^^ zOOv*-DeX)E4XmKFG%zK6w_2H`zm+LQeA~to_F>uQ5!5ne=UkR*3_~1j?Qg_A+NQ0A z#-=o`IJOE`i;!3rvkOBH66wq=Yct|{s4za;hU3>~GO85h#$}4u~=6Nf@Lz5_1q@R{4);qaj z>4543y)K4%yo;(_l{2TwbAZ`DuuFCJ4|pK%Wy?t1VHvfV57M%hMn`|%rCcp_MR{NjzaXE7(~g`2Qjd5v!58k7JGB7QYQ z-8w#>`CKZ}sx)R1Z+%f_V-i_&ySmV7RG~@nkhP*tytq9S(t%V!KN=$0Yfi2*H(_Uw zw(dKL`wG9oa4`JwB%PdNcGXYRh7Lc+vczBb&HmLvUDns)IR*EXenU<^5j>sW6y*jX z-=HgYTRGMHHT?~SVkCjTScu__7jiHsMa$ZRH>dFCSUf*&Y)~^a;@EU`ml_shmd8CF z*dC?26L^kKD|cbcF7Laeo8R2u=b*o0{2Q)ienV{-^*S|dlYXO{y6ZaM5dCu?;42^h zk6>uZ+=|En13~_h`n5*CN%@&_5kKQumS$&S)(elsEp70RTPgYg8E4>+GE9?(b8a%R z)C3CCI;AivH8~y#3a&O-3AW}rnqgq3P($QFUR;e)89(3kw0^n+r8K0~P0r4yMKY>Ei***_=`B8GLChUD z(mmbvbTbGsNnCsz8eOW{nrpk77)A*VPTj<3sDrX{Tp%lFVeHv~A3L`} zW>Dlas@pvn&08Kc9Y$wlIMfWCm_s9h!z~jeN91!mjF_Q78Zw$dTg7QZ5bg@^q}2bj zkl~WySvX3-5y#t;lV`{B1|;2Rbaqynb&=gi$EfUo-O{`I-!LuL+UWn!@$)@y!4M7Y zz_J;242(Rmb?$;hF?>Jd_YL3X_i2BFp;|hfF&o6UrAK-kI(i&-+1<1c~0W&+1%hqOanL+Sw!2fH+`NqeR@qaU4Y#FUy|0i5tS^vlV zzX$pM^hc}wulpIMHf^wW+dJt7AM^tJ`l}YQTh2FYa$OO^uUNI7zs7Rr zCcfsp0$ddua2X|c-+tJ{r{9;bf-pN0igp#f`x^Edu&z#PvJ_TOaRypYog3Id+00fz zK)|Tw@Sot8Q$YW^W8q)%SabYO^JLEVI0epEL7Yg%1qVgLWD-aaT3|pLF*&~!uwwid zAo`2rzZCw%_2TOAiF%+z>2`N%v~x} z1}q!Jl*d`-(?Dl_zylRTAteckeX?u}2a{={3M3+80U42(>CI#UM4VLWzBYen-2ELV? zNa?NM3t;f3B;Z`fU}L194XIRFlo2XoPSaooe1cf~2@$S>uSHbWfRA&j{VWwBWi(`9 zs{uD=oW`+^69q6YgD(JM7_3am;XhsF5kXr_%r)Rsf-0G&SsKGsl14!w7|TdNGNL65 zBfbKE63ijQpA0wPfU}vkN5B>Xc}2pin_IeTpe&{!sxUza1PFpkNa#m?BxRNWya`+C zvJ`efJ2PCbVXNG$TFlyYVDp6vf;ftTB#dG5#R*GT;QLYN2VqK@rbhIKaijOF$}XlmK?|3&|Q0W<6e z`~N^YG|@Uq5q@>dxz5fB5;uq0@1Dz2Ep@ulMxmsq=3WfJHsx98IF}bYQa- z^?J`r5hTCp>1vI z>L`VukuD+!>$>_sXM^*D&Y=w!bB{1*LKRkqe#aMuZM>J9M3bp54t_oQ(Y0#qN+@7>rE&;o0*Subdpr3LCPFJ*N@$Zo=Elb8N=b;_{%A_jhds z<5k$6ywlTs1b2F^%?6{W-)vR|Q_Zq_xuy!t=my2fS&aFg%E~zN>v6Cgz~T@6p2(<5 zvw*lkki{;gI(Ea9Q&$iwvy8DsNOm0*sh%d2f!V%kz;Xyenva~rH*YY4d!*;W0FlaW z+6)S|8M=mfF~#HqiD^7|Z*Q5b8JG`k>RkuJ*<{#)hqssn0P2;m?+x-^34t3~%(}^R z+OwS^-JZRAdM(vvbS(f@3|MTTYUx66D_HvMPAAFdpwT=i>vPzAyZa|@MTd4QoA)R~ zFx_N0*mZiv=(J~XcWjV~TbfTM$;s0^d9KGs+kj?yZJRWL3!ya*q|@Hq+Q%q$e#E?U zzi5*=IKhBu^UO#47*1RobVU?TJ>Z=VCgnKjOpD8*o}Oq83IkKYl-dj{^s0uY;vhjh z+A4K(@FGhU;`hqxurm}B zdEQisc)bJ$mD}xGFScyF>{Lgf27C5rqpv*I^DW_@hwl2fDCJ^3_?=#B<4UM*sIpu8 za51k`98KJOJiOd^hgVeS+7IZJ_I4TOj>BkWYZNE>5Jop+PuP(X)ae9F;%U#0s*ADv zrM-mpD;uiKa;oz(%yn9?Py7p0F--HbNun`B?ejtL(^(96O)}eq&T%}9#($PCH_p-S zg5iFgPjKX&m>fVR@c;~i4%*{CP^M97ih&0mUV1^z<)IrDCSC}5i0kx11 z&kDWg6#40{L-rh-&&L!e*wB>TgBDNq#jX>EdmRUJ*SIHxG}U9k^yI9{*RgND9hV+- zUXm_xex_7*;Xf2ODGP#O(4zA*z}Q7tO@TQ7ha8TLAJ4j=Eb!3TAcUFPA*I|4x?$+~ z4yACV8-$)}77r<7SY}v*5l?pg0Bg*Ohgh3+eW(VPxhJ~5@_4fdefaRmfOsKXme4Tp zO^v!}o)UILAG_wnQve^u+FU>3Z9~%yF(gqxGW730r#w{s24ai1mbiR zzStoR1;C+@KPXVd@A~j4hY{$s>m!8@nc*6sCtL=^0BHeV%_7tQhUtdzC}?Oi*700TqI_3Y3`pAHO$Q{G9DkbYWK> zb|nFc+WD~dYmM`<{y1OzHn0B?5Nq%`%h3ZGwNoVmG8xDwdIVtD3~f-!d@T%$$uOVV zOpKjVdnUowhGW}yCbq4KZF^$d=ESyb+nCt4Z5!{--ap{GzCNm}52}y4yK1ec?wjdI z@P5g=hLFW{SBaY*Klv=-(LOx#_!m0vsSB?_^n4R9q)V6n>Kpl>LLtkaKo{WR9BF!*W~{~S&nSpGcT=4df5`6|OB&Hmo}eD#o7F4?(BrWH&; zwI#hhN!nFo`Czf0YW_S+{PiDzXCom)8y9^vj@7fuZn8-=bqxY4^WNOh3ya`^-c!!nmy&ytvpZFaw}Bw+*@?ohLxQrDP^s$&l&a|;V`FfrYWS8 z!qc`E&PEHk)4}{)T7VYa;>z`H2Yw)iJ-B0XppNe5CDFmcOhd7WYc&h%+?*`iC3kRd z?&+PD%A*u~MASsR=_m7do|foVx96OD1-)G4$1E>2oj2SM;Y8bY~(m^3$ z2={8#O~vo+p%6~DiZG%#F`u6vv5Bgc2iMB*tTT>$nJ>S9pY9AkVH}5^=!v-h_Eq(> z4Y>ik0n4ChuS%`<-JB=yq6G2^mCG&(J*BP8A2XqrEP(csZhIJiwz!F_?d|0D_@Xdn7>4|3adtHjfb^s z4}OV$toDrQpNxR{iqA>sRTJ-c*Mu zYTtR-GZ(lH`lk8x<4U!3_@t2GkNVmAT>7~&;c%aLGKakJO}g^UJ3MlZT@8o-)LC6Z z9B|+t>e+Ma-w;x9sap*<7405yd>?90+IS5&g9)48pasOAvB(w(7B3BDoiRhVDXZ~< zYcGwlVz>#rYIj}IDB8rcY#JWSTQnSlgKn-p3F*%+3O-rStR6ErUCi70Kyau6Y6YUzU2jtAeY1Mtf+P8o>9;6N7g*#2) zl~2DoGrNPzc|oVx!((hvbrP60Hmk21Xm*oTb^h;=?B5og$Z2da3$ zAKUF7|HLJ$&N9HM|LDb1eEY!TfaGmL3|J)`wEO-0Zr7kf7;NE1dE8b@GZ`)(-)oF#G(`oJkEJqh(N<=mS`7S%X$-H zv7qVT%N1V6C2WXpr|jbiatU+AQ5kWUjsIZWMkG?9wu0wxVrUL^KW5g3Y<`sJU+V6e zWIyAML(gC&EqE`4Vu*^9PjI)fa30{fk1-)|-QB{~;Hdw)_7XB!LJ;`5Jd<9M=S|Y z7K{Gcv_mH4VI+({gCbCuF7RzMH4wQ87C0@r!!gT_c%@oG5(=e#HuF6+nm;z3%vcnW z*u7ct+E%kzq86CIiTga#U^F}>xdN;~6?ulYBJ0|E!I&LIhLk5*5#q>_$T=vp^;-UI z>id$U1h4*DA`dLNGrF+)IOlD;(H9iworsy*Q3ckxC{vR3KZTaa{LM0~ns`l%1tSS+ zu7je4Zq4!@Nn4U2)>q~~_Mjx;JCN*yOun2y3Cy>|$a{*F6af#OH{$^D>T9%d&X|HM zN#oqG@dqK0kXueDShZl5$2<5N%Alwa0#M)}!*r#vendI&*$HfdgG?b5x!=2!s$JAk zMv7QND28ZP1C+~{!??%r8+nV+D)IgvXK4xhrpMwL#cR5>)o8o{&<1e_4fL?T!3ABVR%eSx18^@@kTJxv04Hln&m1|Ix8_C;tmbc%)=O z!MqniDC_}QK%<8VgTx}F=51I`9)rqjQdA= zwoPi$dW=e^>NSBSYgok_dbHH-M0%Ic^sy7ps^_rb__t|T$ZUFLJB)|Am|`>gy)8!s zGxWHGhQ<;x>NB5UC9pp87`&0_DVE4!66Yk}oY(+K9XO;n$p?h}F)n>*i`%ixbeXvD z0;c`15sOl4!(bMo+;;FRE_H`coe#($&K?=esu@q~*AIqj9-oO9KP*xydS8Gj->cu| z%-zZ=09dUhWoykMqMdRt}(zk-mXwlLWrFXun|@CIn_YR!kW){|KZY3S%0Nicf}a;8YMYY0Bf zl=*%Zj_W`gwjt1gfE3o+PT+rBiXrXl!?184{+h-JUwu_5-!54iFObHtD^z_)OF|fB zmh&_m(-AGHmAPv{+|sry0lhV+35mPplTVoW@?Kf31Y+OH4Z1 zlL{T`gAo{}#O-@HnWG>MtWIaUeps2_2rxxKV~Jz`{x#4-KA7gMx%*&>&l)YOSwAmz|LU@BQ_=}i({>C;69eP_;RlILv7 zzUQv?If}sHXp}0t-}mK*1wd;c`t`7NEsfOlitKHyQZhzO{#ezLOEmpe$Lf+NO~ff% zVFZyAt@UU{JG;bDQ-oq5YiD{HHeQvM&qh?kN_22irWqLc6 z=qRvtb#i+JBzsx+yE2>V75}-1I_DMc8?_o?uI*Cb1|gcsUVi++Bi1~HjM`Afj2Wtd zY^-hB0&C>&W1~i~84v780ToYS+#%RTSCZFpXV9GIyN0eHmrSVXMuJjacbT#-!8CFqIs9+HrLLFLzC=QA?;9HWb(`)-;IJn#v3%`;dDO<_ zo;XlWPy1hZE#ZV}d_h_eH!p!N6Sd^vV6tEvq^)ivHymjR)!vHn|6Y&~iWUm81)XE7V$$L{o_REm%c7n>rztmrOJfAd7JSeT2dM z-87406;&x|j)vkt_R7UegJ5B-z9 zr7R&MTh1mVh8eHXRxk4*CKP->^7U77M?%93z+Wz|UpeM*k*N?-ujhpk2P3qrL=0Al zbf+BT+fMf;AeNDiOj-DT!;(y^fVzm9SHWygEXiBk0bZ=EswjaI_1{w=Q63Cz^uWO0 zCn4`&soQh?tuuXj$BTl9s-$rRQgJt%c{LZ02~jx{74!x*#j=V1j6cg(4H;Uhh=hD{ zwSi8mDu!D#%N0;A+GmTzu)me$l&rc~N=Asn{!)}z{FH~t^h-8aZ8SoB?Sqlo4 z_#@j`XJqe89sWxxK{P*1CG_R(YTV8HwXzhUZzAW6UgWrikML-2Z=9c!h|9wo9BseqKJIBzbP~KJ`_FjtY ziuak070Mxs3#_22wA)ImrUe$9)S?jpK9tLO1erHAu_tI%0cV7qzbT3Ox?;0 zumf$H21)~&s|?z)gx`OXK5#QC)X1A`7SJ_`bwRXUglt%U*GJ%jh@z{)OUZObzTm)P zKfg4f^`08JV6{l4Ag9)_fvJWm&0kAd%C4}<_QP4RAuFsbEqcvTuL?>$eZ+UaK<@SJLCRdNR76O6w(BGd@;F5?j-+$FpTVvdFMY4FPIs>OO7 z&Lhk+#>z%!lE^@5AOJ@L$k^@2XT(@QON!KEr42&+0r@sw-_%UYS^XzU71vKrVVGNT@-e{^N9(8A{iY-ws#T|wYesk3@ePtZGwd$&%FvX- zwq0*hGp>G?rJwH0?6~2X6RHb;f4}OlXrkpDM^0$qtpPLYZEpq~5GAb)Eyy_*xD6ap?-~AB%yr|5BYLp`7fd zZ5Blt-|N0G?FFWoSPCD`f&+*Hn=s#E3P`bvIVMzBANOp?hoV*p$!$ub0b{^uxdKi) zZor(FbBBU;WL;E($^Y1>A7CV%jJmb9L1BTeTD z+=&nFf-$6~#7}OUHKr*kI3fD`$`k%_ygNbhrk}T!A+pDS_0H(+V=BOu_9i~Yyx8z2 zYPdh7y7>sWKT(Pa&gD$wnF=+l!p;3!izvzn^#8@;B1D*8Kpxp)@R>K5wNrJ<2pG)9 zg~U2Zeg0ZLz_aCM(HO-M@b5M~{7hyJgE?V-!{WMGD`8r!vIOv zv|mLQKothM%B0w+?P=NafZ+dbYI!(F$~2Teu;8|pHezks(}Z{p;^P{zxZ6Yf zE~{A@M<;5ZDm@A)@^;P%^%TfkFuRLggJZuH`1On)TlBgxK58XGeV91uO12ZOR##G_ zoq1cwQ*3+uV4nfW4lRDdDRTB4H8nwwSqHy*-az#?6YAcobcJlzd;p?atz5x_bv2}M zO+GR}Sm>K<^B=}es1ZgRWN-rtxGK%HGpk;~s{|(DXU_WTFY6)+!PB2;M(euF{)Nn| zE+^lU{FpZuxl_oNh~Mj`T;R9Vd|C~su?O&x!_a%$3t zUaJ^HTM!}++=nHhpkVxP8p#V4hFimLx5|jG=ym!iLn~NOtvX`IyEpPnKX?Ia%zO*j ziY_L85$u3N5dn@9#BXf;qsMmnnA&JaH)nW(oUHg?(6!-a-$C!HL8~(k;Mp(aisPwu zCe5n4U9tL#zCzz?=Ox4d(wgl4O*z$wb>lv9I!y)?~^IUD07 zfBjaWs7;a9D?U4HC-Cq+%J%FioCc6Chn`NxjrqpvE|F==4?5xeLFWDKzT4igVGHB#0_h zl|-9a6`?Bu1Lxlju+TQO^J`jrDg|#XM5x9vVErR3VzRY~E6W>oo=>nzCUhgu0Vd7e zQl=ivA{l>5%#lTVJr(!>9lxJB1^7m&(A+GcAOoKf-(VUKh*@9kfk1c;g0D@?d?mWg z2vdwLxjcP4(k9y!kK^70A9r()y&p&S-I}pxk`keJpz}8A~qC7W+jn5s`Lxd zs+Q#&nKwEoFrI^xPx&S76@zX7>Q8*H?0aw28$R zc4zO}9p5Q6z5l=A$3pve&uLtl^BbM6@5|wR$C&T@%3f>yK%PJjZXoYr68D&K=l}o81RL5f3MwsiD7qYZxtEf{Mu&u!@ z!$W63%O|BMFU(W{T%y6hEdcX#gTO!9DBbDaonQMXTJ!^G!(}C$d9{92 zLIMpmD=jpmjHw<+o%Ty1!+W}IE%>B;E|jF#_%VMoO}ptNE1BkkZ^k?`YggJy^y>8N zh+%t7x~CcVt-9rqU3+g-dBE-Ct=y~;?ej#lyr_rLc|{Ic8Y%rO?!WJ;wENIGGz}9`lu%>!DAAURcwKoa{b9HSe8fE&N&Us|LB*nlVotS;y ze%f6u1d1Wy#0=BZd)j}|=(MgT=P%={rY41!!NLzMior`O;d<(_HHFS2p^^S+7GfXG z`iw0ovatFl%pi#<28bi)E`G*3Kd$YrsFCV>)nSUPyrlkMxD8*po)_kYY`?DGtQtkA z;aPjjE8vSOXtXK9y@}HywT!pee=E*4dk)TJb&yHf8;-e5p&iXhBygBSRz;@KDJ@r2 zqy;H?kV=iH{EM&V_LszvQB=A}A-PC7f{HkkAhjZus$LgNBf(ib+)dgES4O3^P~lJ! zP5IH*lC>LR2ObdVY|SzXJccIarQv7_MsnVnjdj2Ad0Un?F95DR7a*G&x0Ufd-uy&G z;Q=KtqN|xy0HF@A0o0Gr%m+a9cdj)>I?1mOkwGwMK{m03v+xS&OnTWSblv3h5>PLu zEfqB-e^miz(h2$F((t>POh6#Xzas(7-zf^?e&F7;a}Km?4YJydbXX!HnCRk7w4%5c z38orh!|J}zAN_BHPi*Vr_?ahu-8JTp-rs}jx|An=$hixE3WXrv668Pq*#nd;wzQY# z1`(W37}ui+g}7gqyx2abqnv?!AP%KEl9&7a#vvGgpF?%O-`g|TSik2x3+gyZy z>#l4|2a+kknz`-MAJcmv|A22RkbT2W(69P7-GRC2L51^;V@U1Miu2d$c&BtNE4}OF9Y9 z*eUk?Gr15|E7Anlc-b@)OhD13tMzxJ8{xW;YQYkWrszG4FQKu>n;~77d}ol@tk%10 zGRaV#9tQ2it<6H{6r*V`K!ZFb(j;>t1YY!mH9_E+fiH-^m}35b31hE;<&BcxRSte> zw>+V9xBEBE_xq?Ze29(17mP#71C@&9LMkm{M|Fhi{HcmP1wkg%AMnTy^*1x`S9sK` zZ}B~UCm5srVFNVN%KRgN{%6$LO!ga=GOUi(a8`4<4LB8^p*(1?nXB^Zel2M#V7+EZ zz_a6R`1-C6T_%tBjSp<>U}#)TSqq`($D{-3;R>fmO=92*zH~*J2R5n z0&t^SyLFSeL2#zCKy=!%sdW?Q(a5ecS>b2vve?Z4%S_LGX{v*KBkz zqwBB>xOQas->5pSVQ(7brz%(`ZnAj=$zAkpT*h~PY;W20!awP&5EEdb>fK=4@T_>-c-{e6Yfj(vh^u zgmvwXRnf0U>=!<5X02MscBuVSpx%P;sz14BeFC^a8jJ&}--2?W`dDb2FdnVLx=Pt` z87te)LSyY@tM=@f(&3$goZ&SkMJ9Z490TyE2|#%6%Wtpfg|T@N0ta5rU$4VAKd{D) zbDMiuQef@&qC-)ogCk0$)6)HFYwT}J617b;bkQ)V=5f(R!iM%gzlx-`dvo)IWZ_{5Z>QtZ{zuNNtkY8G8O zU=Th>fu52NUAcWtA#b~C3j8h3jN2g)&Gv^Z6%YfP;)BqbT7;~LQeTly@>Z zRW@D*0w#T>{*I(QCx&Yn4RbqcU;IWW-;%L*LRi3Cr(<~4H6EsP@eGR z>xz{bK<2@ve{O`Yf`#XiohPvIOV`?B^ku-{&*;a@A2eXJmE?wT~?sOh%IH?Sc>5f0V?7twmO73SR4c+I1?Uva9f#?xvyb92Ac-rMk zoIAy^nQ7lfJ$QS8T4-`y;>#rkheDijS#b@B0|AF{*qv;xnhhX1@l_rx#Gp6woo(M^ z3SHiqD#g|%6`W#+sGZBs)}iY1+EyD26mHkD4g$iygQsT4wyj{9#N^l?QiHEOk-iRL z=^>Kzu@g6iLJz0-5K0MiH>$TgaAFKnw>wZGlEw#_-~d?5d>9lobf>W&_V87VfJWEt z9tx~{{5$00(m$s(TZ>d2|D=jS{A6lVj?_qTUS;g7lsKn6vfr0AFS~Mz7ojojqWPn7 zb%RfEYKV3{6VVC?Ib?RGU?TOKQ&;iP*eNhUg~!!@KH7SGCaM+9lEw(BsrLYSA=fy`qn4=IjuM_SSSKn&hafJ`i?I}p z6ecc4lAQh~F&^6a!Up|pJo7h<)sB9ODCA4=oNtQ_3W=svV#EJn)>#iH>yIg?o5r$n z81^1puO^-rW5uRz?}edLgo}A?H(X`FQs~Eu-DzY53VD*su#pJ2;NpX$rpw>ZaL6T@ zDrGm4p{x|i%#HjFvxot^9|KK18gjuoL^L^TY}aQI#~+!%USN4>WMFFE%rVgQIE=Me zjO2}t;vOao|0}R_!9GfTK$q#3xryT9b|8QbM?chM%%@KqOE?4eRY5ncp0!AbSA*kt z^s*nK9Y~WVf||Hd87}MDwX1Z^zmS*=bBX4LMj2ZHx5UVxNb>65Ia8w=LPV{OSZ>2Wp_Q@$q-7N1b-n%+(d{l!yq+2N zA^B4Dosht3W4pD{XY;#(AeL`AQ4UPu%-Ek17Wf5)D6V^JJZ(PbksLxQ3Gc&a1KIT5 z#l3{dcfT01l|IFdnLIaB6WmdA;L5WJd4lIn_r8*df10|%hue)KY5kFKQMwh@90A-( z{64591x;tTjN!te%wGfSsfdW8F5qIz|>naRAL zI7wLr;)p-uHkNr;gEtpYatt1*qd5;ZbK}ey>g5pVmaP$}aZ!@d-6hOW9$y6U3JF2% z$@fCOW_-7>&QiL(L(Yp}H1cc{Ld>mp7TgCAw7)!iQ_7sGChislQ5FB-j;F}CzDCKk z`^F89A&Fd>qBBd8JEPv{X?b5t=ZaqTO54HLgC(Ws$a3~0urEqU^8bu&K;{+Tc@4%z zB(XU1u<@;C7S1|?2D8>hL$@E7&%*q!s#cya<}fqpXsH)jdcaU%{=7k+CHA5WN+-2Egl0zPH zJ9EJ=Cp#|4u{7+migr^wDi8g~!;(2x!Nw(TT=T}dH+mN>KD;RBHyuM(mF>=HDyS3! zFuPgL-Ds(Q`p)VNES$F4*NhzaKpxr3`BA@Y^Q&FB_?~xnL&iM_M0FA_#l^wX4SmkK z${~}gW;Rw0KFOAahUT%*Xdh7w7-*_RWmUC(H4mrR?q4G{X|$|y{fG32nnUIN+^W>} za1CcA^X#fYk5ui#-s^cvu@FOZ)Q%rk`xL{>yamsBe?<}pmdv5H|F$WD8cuz4V_OIH z+EMYlclN)l*|h}IHtIVuejBfcmC6Jgve_1i9=&AS>iSB{jG?jg>%qwEsmx>RiNS7p z$OTQO+wtm$!$DQEJ?RNdm0?-Y;LqJF&jCHWut66?+*Yh{#B19Kx0q7f>c3qE_1$Q1 z+!du=Ke5w(V}Z}ef;n^E!D>g`@nvwDaTlsT9%k(-K8qY}W4}V9d;+KR)xiL!Kzw`> z$%Sd%xn2>65j?Vzs?>JAo@?t`+AvM!9T8AGOUl?*r7*(m6|u1~C3nczo{Y8WA%fef zE2D|bz@HxzbBX8MWp>-$o?nR@L@woyxy~4J0Zi(-jzH2D9yks{v5q!}ggCgtH4 zNwbtjSk1w>(``q{9~MdBQRO{{|0I&JEtnIakS{om=hNikI|+S#-R`eCTLrxF@gU`i zLGNm9JNNq+)46m+3!SlK1fus}67QgFjqdpQsEvJ}RQW8qwJ;xgTCZ)7V7#u|!tMu#l?CVv&mgG2wWlNAVO@*`_K!50?j6MoI?_&mQ~xs@`^Eca@Q z3X3TgSXiS>?y9rDT2Oa%09S`0QEf2JY^JvhzkhAljVH}rs;H}Ip+|4v88 zRv-8kINy`>d-wwJW9{t|^OsPe?>~U9PS$>kBFG;`Ir1}Ylf>Uv*$uS6WX48*9Mprg zbTfX!EplsBqHsX?PgJZA=_S9Wn)bxfN0m?#dw%VA@mjwzWZur?2UI@+vKXfb?))%U zB71$h@F0GgwjkNhZ6YG`z|9;46xRmVgfl(o8FITRtp$7TNga(HfY4Hj-uLIj%aa>D zNQI$(HvwOd_hYhCXRq$wheW-br8OE}Qe64$>nFY53ts5WyWzL9;oduY-u6?UXcXq~ zQa-4)!8oK!NV`H-8B<9Lf%5l@^SN=kvKq+VnFriDh1)o=nbH2ldpPUXv$uzJ&3mpn z>v$Ikzc8vA7u{V5?m1CzAA;F^(cajRR5?KD@@wX6wL8YK2`iRMMTi&=Fxr8+=jLs; zKl;3rI7cVZi~s^;p?)Tal9kO2pNmi~j{<>P%`Zm044u;KpVQSbq!PZ2IFmWWD~+JE zMQ4|&IWphS@)!TclJt19_qnzJoE}g2mq!9Q!4{73{C)yGt`t5q+mL|3^QhKt6X)}(mR|u0&F*bvH`P8a_Atp9=Ke6;7Pe=hQcZw*mDZ;g-^jN8|w36d55X5elw+g#*|U_ba= z*Wq@1VZa?eK9=;L7hJzzc3!R?oEX2pdR*b;F*iXd3?Vf8O> z*Q1R(Uc$>U9oJ=q6$_vRnbjg&XEBzix0`Sh#?H-mmK%+}&&a>i%5}jiX^B@)IsS!y zd3jL#$N6Burh_0xbDsZRv=q@6iz5M%n3_2D+UlaZ+t9APd|N13l}FmK+`mB&dt{gz ze80HEll{>;Ws{?6{bW`m=kLW@rQw5zs2 z@pY!0$KA6AjMD@x!|;;enBV=9&#^p=_bLanLeC2X`Bov zAjf}smrIO@!JiSiFPFY~mJLj+tYU%h{-mU^idgu%!hGS69gQ8LFEuMfu5Uk`d)~F+72t@xn`_G& zu@jrm<1CIH2;;IDpa#J`R^!4rHC(945lIgz()J?D-6iKB^l1+RzWN1h(|1p_(0>!h zASDd4tEpEKb#2x^Krwt*1T)5zB9EshEhBdkkkOk`m)^ZxxZ5 zQ5C>JnIZHb0-Ob-!8tf;B0_471W92H4370l46rQvDuoN?XoRoH4HOSC8t1aw+ku!# z9^5VzF8md-arU}Fl$YbcJPo^Sf`4(F(*=1VR)sp zS#zpaXLDrONn+3@t!Pfedy+XCMz7=3S|~M0UbNvz?lz-kxjCKFA*~1dFWDNDv?_RlR<2w)6*u zHQbBVynbPxesq%M@>acBw3qWL2Y!WKOksLbwMAr_Wg<0JQnjXvjeE{^(=0_aBMdZTThf!k-frPUHz%B2W|%$S;Z z5D)$w>y8t?PVND-m)JGKP9w}KEvHY8-AdD3cTUihW`{Ztkyj^U9ZYy(Z0b{OL0!yYL<2fd28SsO1Uq6}Si@9p zAWb{q!wd{T_Ew;VB@97H3(`T9`5D#)oUo3BU3xm+J&S=+x+Wmo#dC*ih(>~s;zsYD zrL>mcdp@0( z?bB|?_JO7`wev(wKYo_bhq(DQ#*Ly2_eHDQvdp_O?IGhudEihqi^L+rM5yhAAJf!n z#zKv#X?%gV__g%EYbMOOA&pRM4c3(kXVULK-$7C~?h5+<;U`K-7I=_lh)Y71ky56)9rM8py_Kw7~Ui&~Z_4T|g0 zLMrsIL|GB!zJ$nbJeU`0)}@d>wgKWVGl3`aB5hfywpevVp<1<2wWV0~Ize*`X4c@s zc$yhI`#;KrAK=OlUNobwsuu09`!YRmF}eZ-NPajy-ZdCbDVUV{8=5ZeUOChR=9vb~ z?V|~chx+AFcqK8WH-3*6pElR$l6QzQ3R4 zw3dEJY82vMH3Ls`$)yUcNh#-O3#7jiMMSwmn};Pb3OXg$H_b8kw;)v_Pn4tn$>yyh z#0@GIZkizKaq1*dNB7yTU}25f*92IQ+X50c6n$YFV-(0IOJU$p9(>2>J9CTGxJD~w zZbYyY+I@Ll)iFo~r<}(mINCd?rxP$Z@t>OPFnR;}JSlXNF`ZZ-(5{fUOc=ZJ88&Uq zZC{@nBwDh86V+^kkE2;xZ+h<}cL6PR{If8y+Raw@&?UT^l zgXSsxq`+Kd35{uJ@P}2Hvv!lm`OGPjXpWDrBeRHzrV{V}5RAT)bEyIW=l@vY_ALr> z$TN0^{crGD#@jQoEF`Ei7trHF)-;RK(5;m?L@p`9>68-j-)OJ_?A+JxIpY9fi9b|? z{P%t4 z3po+6Xn|dRor3UprHUqJ`#V&HjxExYqbGRB{7W0|pu@?*#_7RK9t~Kk1$U*IkgD}` zeNn|dQ*xC+)SPIr;F--4U4^wB9JEh){MxlW8tfSJ*07F*WsuFf9g^SDtOe^a>MTLL($=zVkJtkPVLB-> zh(Oga24>9aZwTI~(q9%d7Uw`xWlfv7V-<1&ckS(T$7^R1gCV^mdtWt>gd;mq5?39i{oj=LcH3{a_XWB}@t&!0Tf4_we5pBZ?fXa&G~*`gSP@(dcHhQ>TR zybHte_fH*se)~{}!csu}B~4$Yl{2EQE+Ju){1swC2I^d)1?#p$_~A~c>!t{}xRWo= z>o5f%%DtHbes)lPHDA4`XR~8Y^wUG@M-7x8_TXmU-mJsqNr;6-Ep$M>HZ@=7W3{Hm z4dCzK?zt*SYjOVkk$yyE-wMTfnRXtf{zg(O$?)ZCr1TdZdH#4{Z*}H|3S=OEKE{I_ zN!qeOtViOI8!^mv2I#U8x8fA*H=~dtSX=gQU(h$Uy&Yzr`qJ*>s z7j4uhZ%%ZaU&E6ZyHsjO*l-5Wk7LW{QRHcbO2pq1kO~WRpA5I)4a})TIqEo@&`9Qq zZ{)$<{6n32tEhr2+RT&Ir|R#oadEsd3`CRU_hiMxATB1dNH)HG|LwGPumW zn_c$v7-jh7(DKkghS860)R?I3F8#y2^t|ZC7eVy=crnUU zcM_D$YJxv}DM#AHcpVW|+nAbhJ=HIwn5f{v9;c-|X(S~=+vQMr2Oh>E{a z_3tHio>OW#mq;sX?x}W6VJSr&|E6A9gESMiYtO(7+Sb7@P9NIV_ueI%_rFRWZ`=ay zNiRIo=O#I;6e*-p|pc6_<{3v$b~QcS?&a*7Ui z8Y~88+1it=;Bal-!W=p)9~WWmxAdK<*(Shlhh*6vCY15U#_-5(k&c|zfLR|p@4Pr} zX6q+^?O0j$u`wqG*yf@PdaOfk@x%)&mp4$7syuSZPVT4Nz^*`iL#`;T%=pdTJAA#! z)d&o|-wd!)uMOGw- z=*HlpuI<0%Gn}FHzEx#{dPz7^X10-cO51zA>IbrnHzdWcS5h8h;pHR=XrTVTt9 zptN$J(zqTc{48_raTSe{HmAGh5i)06xXT~K*Ml*JWB$?2@2yv0_`>3yEpvO^k>$00 zu|DKv)>I#}sG_|@O=UljWrZcnb!Pi^UVk$9J+G8t=e6&$xFx* zKJ|9C=?OM-{i{kp)XMQZ2O~A>YS1Q&6P^VvFnH%5!2g;n$XC8vj$~&G51riv@g6yl z3#J_)PN|moWsi{Glr~up>_17I}WFPY; zWhty?vib2pQl^VAiHd8nGb{M8Z|;2l7xd?TsNbp6fWt$F?~|AsPASz4qFhm2n!jv+ zSz$u=eJse99K3hlyt-^(JTC!&&DY-auhe5?WsqkAByb(Ww6^Ni9# zdB3`}o&X?2rKSxi&SJU`2XwZLhv-zj4<~Qt_HcQ5;mpQ?nYE>G^s(ibpJKRXF1yV1 z-1z)+djr?KxtykEI+^IC?@zuc^j$+8Y^$?K>YFj)js$_*kOkZf?!LEy;?L9KPj#5( z)+l8$IQM+kDPX=)`Vz{PoL#Omn7m}@-7CM0r0Sk7))cJe2~_o*OkEgj58pZEyupB9 zKd1+Lv3J7Ab&Z`V>$oIMduyD4+Q-KyLOv0io*Z~PRy-+zkT@n1J@ zKeYLtbzAZXpnf~o{guV5=JeD@?$jq4ZyhHv5|bUB<=3}{()3(qMZ2RJYNtc|p9v17knke9<1GffBL{pX9h?2$AdChJy<}Q>&EFx7i05;%3VnGhl8QJN>vfbRpw6#+Vd^6M zTRx-{6dm9Pf{Lzq$w$9cBMzPq7zC>Dn_YEieslz;<|^nfr*M|u)8i!Xc*cu%Mptps6))NY^;F@+Yc!>2MZUXl%UTd4ow^-EmSD~V{~u}(9J&?J&hmAE~a7hqsP2)j@w-ikDn|7SBN4I z3&uEDBPbAyk|X-ZwXVLM04zQ6Toc z*bpcy&2kMTEl?6%(Z%yq0+eA%&Sb%M_0 zm7fjp511np87YU~ygl7+Vbn`ztMwV@IvmnQ+_VmtJcV4c<<0uD{`Ag68F14H`p{8G zfk1SaxBypg7<_B(V9z_Q2Ze1(Wx{^~fJ0J~-wMJ}Ae7!ptKL13UAuARg5C%_oF4F8 z$dINU@U#-pz_U@YT;Zv#->tH6#$!0FB)6f*LiB_kvWMJQ%70FMk#_gulJf;V_ z!i7-#{{(;S6nTtP#DkJBWfHp&@$gaC0XlSnJTE;`%B6Tm+a+<-fsnKPs~C~6C;U!Uw`_1PRNOH9D?SLnQzd^K{}3?-m{N?s zD*}Z3K0cDvnJV0hk&GEt5DQByPn`pri*Y$4(3P+%zFI%?$kmt2j=+$ezQc~|Hl@jP+q`p zi;j2DV`rvY=H(`^PIQJs;ovfD+GbB{6*h_85h2+feBli)6PR6Boq3GaSZkOFTkb(Q zXL}{+kU{#9^(p^fpNWx+APZC}bac`gngZ!O1(e4GevN$)=kf|8zCd+KQ?RI#f`Bwi zw$O!ROF!3#C3dr3>fnq z54l>*RfcNl`<$_duwFlyDXDOv(zv4LAXWgrGBLh-uj45l*;y?Td*x-a{i^!{t#n_$ ziJ|s%^7*B}j>Zhe@F#6m!$sq2)K?!O-bSl!zsindcAvZtwpgy|h|sB4feB9!z?HF+ zEB<6A=_P=y$jhK!gJHYQo?O8Wl!&?9nkZ_Gg&p$lyQ7Dn%ZdO$Hlv3V2fq?-w8%tT zg`c1Aro}ntZ$KttDOV7B!>ZERP+@#i$hS*_pKB8R@$aC#?1uP08H@g|ps-v#!g$3y ztm6JAS@BVAwVw7KF1u5h$KRKg$zGO+i$Gw*?%g=${JwAxhmYA?B7Z(0M+?lpwSZP3 zbwH&`G&B4njDSCUk&4J={#=xMCdQ8QlJKr5Z0Nw`x?1{#kjqtD(CrXjG#55FMs7_i zZ%-8+54$+d^)-esa?drrn`Nr~fFPU)JktEJ4hq-WWJ>~kGWmsm?6N2kUF@nhM+jZF z6#+he-`YP$4~ZOp&~`gOo(gdqEdc>D0fP~N-}*02W(8NPkotOvI$u;PJhKhXjBqv1 zl6rf_gfQ;9X_J<6b(ar|G{a}LmZaZ8rp+=oS1p901loJ(2~|0HF}+ir;0A*m^7830 z^c9ekUvRt|RFL}yV$dG>tNvu}6ytPBpJhg1OCK?d;rcgfWJH{k!%fs{QWC1v?kc6h zXm6bpwNfB67ZsL5bw>4#8@$m9l*dT?>S>7M3nO%G+PPO6-mJIO=h0p=r5dZWu~1}7 z+Nv*hl}G#0*Py({B}2%s*v>IO^ur>Kcqdc07M(|*VYgdo5;6tgA1B$M`4 z6Z93I1L&?_VH4(E&;4?8m3d1-dn#-I3?EIy*&w<*9r8Qs5%jNo>kq>a=dBT_H_E${< z+JG_JE298C8YQs^Y8&?}*yUBD;>Ej8qXq9Gjf0=gGq;gCupM-}s=vqj<-*G4thRLN z4T76(Yvg8Y8L2EDzv_F^7{4w?sB7S9uf4P;6YF&H+{G=r>z=~p5B2vYzP^PkB=}`? z$-{?GkpOyH9^OGMCPzNAXpUb+Tq>>M!!WI=D~D-YTa7ar-xYbk+cI8tx*H8( zc~RG-th@`hLS#_^Zew}-_6GR;TB(?Z7g3Kxu98zDSUpPRZv9-q&f|_9jC*6%0c4n? zu{DB!;NU&1sn0SNpgmQ5REc|vPQ7!}aHfjO+;=O3!&1IwE?pa!&@e1!(kKf4yC}5V zv&X7DL298QK zR2SQj#PnemjRGsc)zNNJ%rZe-pVYth#}|fE++Y}Tc}t({um~wV!`VQTsJ5}K!hf>_ zDIuw?@`L;F(mq^sgR(R*In+(Ynws?C)*0*ZEK63H_l+?HZXn^XxkXg^{cV57jmoDDMj-{Y8B2+dmG(;cr7kUs)GsypdE0W(yesSs;>y5*U(|e9+mP89u7KN2`hU zadh1RhVxXnaEa?GYlp3XDWs$tC(*U~)(a|HwfCDWrzt{ek`|CBXI1UzEm>js13G3d zRNknDeP;}Vx)7XWb8e~7HwQA{`Y}z0V0-f5MJHCx*8IXl<8f6W#toBw%vH1QI&Ym9q$@sWj6un(DF(C!noMSRHeg(FjIaQMuMKh;zGU7a*gW|;yF@5O@jv~R(8yikp z^Mz%BgD+=cqKpU%eqsXw;&<-*OV{r!qzC@-MPRZ=VAgtY!;nDshMyFC`<1HFZ|qn8 z*-XZPEf~w%Mk^xM_bhY=6gr>`{n_Vces-eK*amK# z4f`$2-{9j4=I<+3$S?Y_M8sgixWvy=w0GNO$K-2VH~ta*@Nqy)lBb2UubTwa_0ZlaJm$vVx$k~}MuqryV5?^pNXC-%93=OMuz z^Y;LxoW_qb-0M>?8N=)L%iy^%61@oD>yK%>y)OvE0KdLhqSXUIIq{?v;+%H_FJ^n%d zY*dfS?u{sD6qZ~_pnMZiP+>6G5kVsoH%ogZJnvMw`0c?33m?Nnf?U>ev#!HcV90P{t{~3?SiCSTb^{iKEec5dh#4jjM|IxPvPVR= z2S+&-ih-X3XFI)TD_Xdt!H43GmxiA0mgbIn&I=6z(zEvwgoYo4a4&D1UYQn6)qHnn zqFh+}Zz|R9OaVe(fzSm3dYDhpQIMgiE1i?6sl0Kh@J^zxnI~XzZ7vVw!Ks7ii`IHi zAASe8dKnF*Z4O{xANDg!;Pn%y8PEr@E5D|OCV$u+A(Cg0nU#+(EkWb-J1hKaAQotjqj3?$b*gZ%2;WHiHar(^>xL$@C@nn$k5Rc3s33c7GDY63BiwQ)mk#7?aeO%c}YPPU<ntxQCOiRO*PU_F>@g_k2-=5UA-!Ua|v- z;_iD1G96WUo@_nQt#JDGpdQ^uw_X?hom4~NBi1PG@@UXJC}}SEE9tkm!$NrCLP;QI zh%p)nCZsm$t&w`ymh=Zaagl-Lo`bUq`Fg=E@mvBLOMI4`>o=gAda+jCpd?)7JZKtJS?v8a{CZED=If z_F`&I4W%YB{8L@kr!Ky2chQ^1|3f|ieN2$TKB$GNj=V+&NMaA_nK?{kfh2BCLy$mQ*pRkz$Pxuxx?MyX^tG zz0)%f$T1P3GYYQ-viH7dnAGc(6q=>aQHNRI+|{Q8Z*PL1lNO2tW_a6HR-EL5gJaO4 zg2G|RsEu816jHf{5}V)!8cG!-?6F)5uhn|q!(H}m0V*_Ii_99CKLG+lZU>~nieZEC~|4kmSS1P<3d;J zYFXdVmDK%`Q~qF#OEJTddN5;>G_fG(mJ_4rtSv2_ zK-*6x#z957OGX+tdQqyBad=`ki7@EJ%GTDej@oMk5apvHB)0y3H3VS585p!8tfYlR3dFmn5Rzm2Ir^aQW@6m&_ zI07M#ZS$dZ5gRB-Giw&Hg%d{6ODqM&#p=QKESTypM|QX|m}o`C~BM^HcXs zZ{-e<{fpce|1HMD)^K(woPfLaYdcRA*XZuhQ`@(cUE$p-Eq;iI#@y*@Rv(lbL3QGR zBiHp$E=Y}79rLDbI+QXatX_?$;6AHtWu5RoHgDU0m=}nv_Tlp%ni{6(^jsi$2_X$A zl)SY0mfO$V-BX)P?!5ywj+?%q3A13Ig^E;HpkO>f>s?Em$1?gcSe|Ka6jpo0oGzKc z0Wo+ioJ-Je>GXRMn0v$8Vlp`10Xn!H71&?i44MTT_S&B)E)zjMQ_&rEPPhuy^|YH= z=jL|MRo^1<8&_vvmG7W{OX=Y;t8AT%gL9SpxT!G)(}&`qx}&~y7==5Q9c~S370m^UFXMPuYy|O zUrDVNQ>n-;+;W9=BItc(aI}iP3dB>C;PfrLxq`bk@=e;B&Uc=x1OG`SoQ&aN+4h9; z`xd)wg8Z-4J!~u^rQvHs$$253?LvfVlGs68h>c(v)5X0|ZlQa`u}EU?9P`2P#v<>F z!n!Qm zj0RQ5V>xAFnj@%KI_j#j%58v-Q-!UfyEE6;0W3)L8{FEJcb$?6pemyqK;g;=$45zh*z()r790R>T20FNU2?(+DD`Z;rB* z_GKqy@e%V9WGG%Ba9f6{OAYI@e8SYk?sb8(Cn@64vQs)P>AmaQ{bj*bAk-H+;hE`nWxn07KebOq&&8#&c5D(vXKPFIn^3>y#qcD9-Iufrs>icS- zd&VvI!Uf0jM0oimVWn{K^5+0h6$wB)Nw)D=Mmfz4Cz`U&U+BZEhX+YG_Dd3FbaqWD zX9rvSei8N03j(;$_!oH8g#aL7bB?_~YZdN3{@wOYIO-ZG6iq(5u;S!(K)UA#+$mlv z^*vJ>dZX2O`~3(X%xXu>YEi(}^7>D+gwl{%GY|wK`elpKkk>~PtIj(mDJLM%(KdkH zC(&cx&=4hOhE3StkQ3AI9Rbt7^5fkvT?RXi)6lFmUyjXS*+IO&ZyJT$$|U}xGi+pG z0K{4=5*;MtenC(g%YzpmtRTvG+!m#xFGL(6ADze5WFLxg5FEc--my!z!y=1XNdV<# zG|UN)18tv-10KN^G5={aR{7c5zk=Hl=@xkxlEV$T1f zy->|BC{@eT=U%uD@Ox@bLp3JX%^bP9SC`Fn!0#O^<NdJ4=2jq z9h$v3@jzvG%!Uqhe~9!C@+S2#BzrS?h(J$_p{;sP-fBD%=s8u*xn-~95+Wh%mpkfH z_txVM$*H%-f`53UKX>Uu4FUTHAzJ^SJ5s+0@TTFQ#Tq0m&{qa%EEBkL7{N#>4j6Vy zK2FLQh|VO?FFoH(b>B)TWz}C6lz~hIIM|wq@JVLVGaMzjdMrXfkXW<<`CN?cpC)l=MkB|Z3s>9pcEi7D>9&kxOcz9jWYxCm_kjWI{zxlmqIE- z9^#9L7Y=Ck(AhGf400=$D>BpI522w?_4Oo>X~r;B<+$Eh^}09jbgtj%UA@#i_sWG` z|4+kP3h6hB=3 z+3$V%+So=2Yw<+3v zbMAy}8PBe5@lF3oW5t0m;x}LOr|=bc)7XuAJ!v=I$WhX=(djHtjJTdMg8uzF%gKy^ z|Hl_1EhKnAnoSrP1#*hKx3%hw7;rqSF3$r?t9xgmt-)8e`~ws3S+$QXXWVpVEpcE; zUlK|8SfKMyQCKmp3h&LA4?hrkEhS5liL3&3QB}ZGV<|HNci3I$$nRkKle2tl)Ny24 z<}qesWAum(?Zm&+4^|OY;#+C_vhzOw-fy<+*F3r9#~(PTK0zyuDu7lG+Od;xhC8W&YDhO#Cm+c z1}k;iTXrwt)?uo(hSfN{Cg9=(Mi)r@;0T(t8or^ddtc7}=-e5xrDoB4Zh5fsnsu+e z7M@tRON;u#0zN7tW(Tk{cQ>f^XAy;~g{-b&NaPwO*YGzK-~OQ2%U6U-e8Mo9>Tg;@&XD?ALhVNiOV zLHgw`i1&vbx-vAOCT_X$hQ7aw2k6p?Fr|y3A2gyCsh=$OBzI`h zv`;>fzad#I*{4p#vY9ond-11xvJf-9HHx4Pj?0{r@lqKyA1FKnY3zZIIH_Em9~8hI zYquMeV{cNUo^vfgLsDopSL3iFLVZ~Cif7hndpXU%o!Q5t!Bp{NF zTR(xMr4Cbi@yQ@P0~6?b@#^?5?%I`%ob=MC~AcO_!=7)Jw4jWYy3^VLq8r$g`T% zi`Pk07N~8wpnsfBL(Iqf{<$ZgnbT}zhZ2*%7&?K6sH_A!cy&K4LKCAtl% zfzO4(xzRB?hVl|7qwi2xST3w_h`dT%mm!MisQhT_(1{`;Se6NS5g6r(&4RUNC{BF= zXPRX&`lRy~l=82qnXwdif(Vii2=5X!Z48O8ev)(rd*k(6vzl=+0m!f>LJOcm_%Oo8 zQHA`F#Evp1LY6kO*1QEk6$zP9sY4QvyZJ@1hHd5NSfC=7pep7^0oHM( zXx`BUq8sULQ)kAu3SDU-)S%|wR#4wKa)Q_tT7j+m7Rz5;9kN>aUw0|Rb7)VUcKmt1 zulIRpu3_r187#5cz3={~yAlxw7xn(SeyaEJ{7@cc8hjT~L{c+x{FGyc>ZZH=e1O{{ zPPs5-9y|#RyN^B2TO)D&uMW4?+lQ%ew`;i$fDy82HXMWH2f@~?yhXE=6Vf&d(us)$ z1XlPURj@2Rdp48gNRiL^z`$hap}^L>N_w!hxawczc5Ed$_v|?FSGG{&4JI#)8iqnr zs#+nu-i-Do1QanczfEZexM~T@VCIiu+5&1r^bcs891B+7ELwGF4MX=7vo;tHA#OMO z`VPw@Zwq`v)=Pzng#!kE$@H6qKe^$rDx$A_8Jj|Mxl@hek zN5$WzSQ(x2L2a)Hi|&RWe%~{92eltg)tFsQz1*zjd6|k5R9M%cHKyBuOn!8pzu)Hj zxy%|J4GW$8nY^ufh+!{g!s?uxrcVNq_RBbiQXlgXDMmH$%_n=D8-M>8wBaX4{hS4F zDFT0h!0~#$)Ph8hm&b@Lu{_Z#r#8qo;H^B9?!W34sCw3ozPzsE{$2E(3Af%$y4;9-K(SRsKoqO^bUAm>vS?>hPVYaN`{o(cC;(6|l<_AbpIQb&DJ!o$2uM>0!`70h`c_RvBX;#}_ zQz)6*O?{PEAow{axZfdH^_NDP&^1hA7+s= z6OaPie)Q!!?{kO0=;qP%xbNe3KecL@0d<{FDW!{ZB$9@fY&L$!SUc>LYLfKePe`0PPG6; z=hv=VJtR#t*Iw`|6Es& zuEKd5U4`VVH)vH)n`m7D{&fY_s9NlmF^)*PmTeTS#%yyGsAFQh_}?Dc`z#mtjR5O^ z{VEoP51{3rG(lm|a2W8ao{sm%4)+A9bwY^%xCXdX#>E*)v>7KHOQ;X$e`d31_W2)L zeoIDQ4T-*9n9dffm*f4V z#>;7z#JQ10AzgLO$8GyIMH?xUV6omXkJz;CW^he zqBUxRX2d(O$-;r|Cb2^k7paw+V=Zzyu@e&_mE+NXzl`VY8TnF$<6T1Z`#$V=DOg_BkJ- zM#eY~a#XqlSxPo2?dFtlXj{c8ZSp1Ijp_@{lFWmpektp`(~(x(6>Y?Be8mU6Ji6}d z#edWs9S&^Ul+e=pP;}r68u0c;aVk#g{$t#yi4Y?d;=QNDlh)OB>(GPx*Lu>eAAHcC zCxV+p{y#zNiNc)@F2G%iE2asmDN4<%khD&#$_3@rW7j+l7CDqx8-dB=GVa=+=D*|L zmskG};+4tQ8RHwkm!)4G{*cEO{!WhIwL?NG(VO4Fju_YkZBf0H25AYw}}QM zK3sM^VR}|9MoQKqe)ZZrNuJ|{FD@XtPl5YE*Mof(B|v;F0U_y#xZ?o4hX{_(rTxCZ zQJpgb@9_>+i{|EFf1R#8o2>?a+hCwsg&9MOTx6CkG>XJjIT-;2l)9Jz%l572gi%h( zZceAV3kix$l+$n$v)aa`e#E9mD0nimn{QRmo6i9DvStnL+CI{KWq5C{e{NG0e?w9l^qEq=V|Herf-V^ga*-RKe6A1OycBeG~)BNdg4)7lML6 z4#u1%FHR8G17l)Ax>%UL&hOJHQ3!4&)NA}P*c~r0D@dHsrQCf}oIPrM#qE|L5NehX zgYcde59RJoknTdSLL{ZS)SHqNsPtk{kMI;I4Vg%X7iALpUjp^Y#pQXCfk#%mh%u=J zi{;~eva9tew}E6hzUPT-WnhJcniLfj?|z$J{WPcxJBt{r+GwhBby?aVi0L3SR)`$K zSG{r|hslw!_P+V7^SCCj_96f9>1A>pY|ByY%E}D0k)XEv9y|@Cu1Y!?bCG0)3@m72 z8J&cg9ii7#?CJbKRDud{>a+!wm~#8Qen((+!~C);Q!O}AW|VNV%xkYd>yYe4XFU&vTR_IpXg znP`F9-k_$`*>&GRk`FoR4shl;Yk9{x$3LtKCDs{6ncXwn}UmL&EnHL#dZZQ@QUH zqu@?>?&ptPo@mD(B<5Ug$pJKO5z%&3yiQPzV~sG`&|c7Oz8Nc!$ zHj)C1r*3MtcV;VqJNtLEK`Az^S+vi??OGIQiPRC_?!?y#5|l_ExLRstfk;hkch3mT zLp4H35KMj~3XR{ng03W`kb@|+{wpJ7u86e^ya_aVGHd%e0GStTkS+^YF&-Hqux!Fi z*FnLmD#M$a7TXumh=6JwWe&a*_$B8ons zojM=f9+h%vjQjWm_#Cx<`HLbs)xQAV(0V!lDWf75`Zu~)&p2*K`Uzar3XZF_s8sGD zkwPUUU8NLqM!p;lrN1U2mRD0HfSIP9r0&Jo99aQgE+8Zk#yzdY8x9A5uk3@82Kp5M ze|8{;wBWxQA+hu)FUFBQ1P3s^64-zS3hzT*0V8Xs*Ecu!ej8TnzLzU69+0{UH70=K750luHI-x|q)r9*$VHv_qE zjemd&Z%!x2x3I2dKAg9r%Q@L~_2ibNzqV|aI&%L}^NB`k!z)}yn0&5M>ajzva76=h z?772^Jspo^i>5+wk#LxhiH~}2TuBBWR2ot6zGOA=1Wct!UIOgJv1W-H7bIG=7nFKl zVK>lvjWBj;Fm--cWetcI(V^JR5Gqy%eH^Z|ui-2<)KVp0-zUFW)(D5S*pkj{0r}Oj zTPWzP#YKG~2_z&pX~i;gI0AcwiEA#uN>`ySuh(-f^krZ&hfe<*odE#<+oMXkgn(Gc zZ;bryG2|31vQcUdgec=Qd2+JVs>DB~O0kuupmio{! zczrLX7N8{QH0Zp@Z?1pVgl+Bdy!us>Rh5h@vOsSZfy4=EiBm9h z>4vXzx@Mbpm9I33B)?#KvsCWFzU`J007G_U; zx2u`*c9_q{gLhJ($+A$V9$n@$h-|0dU1hc)2%Fj(|ECs~e#R;Fhr_5|9ULg%dT6cR z@9e>cFk+lA)h3{FW+zT1pEPa_%%E%x+bST9r4H}dMCqcc{1)_rt!;=R3aQf&*TUSc2Bexbb40mjx1(SUkfp2i#0j9KWf`9PcFjBIXRs^5=Ky& z6FWq&)7o;DLeZ_pP_dR#Zq>=b(nluP=CkSN+D1_iE{l)?`)(*2bu9}Lqp+>V9;b8$fPG-%%9CFrM>C2tCaU| zNKernOfdqZsO_NcuUC>i&3BkfY{@oDS5^vptZM-f-b11_3vQ3qsm-1*)*F%m+DV#l zQl#kQzu85_hT+`dAO3C`eh$24O@IDkthkOYco*&I6x+L4x{7ssL@i@|gOx>SdwrMy z5II%VFgKwtC1k#R$hVqO59cov9g+q8wrcToPrcuu9+n?x7_=ZIKmQU4R_`92=~2UF zIqWP`I}^-@R=a5fdtu4D(BMLjs+sU0>3=>tWucq+)c_5DAX+gZPLl4et$%@pgSEWg z8X|wCUNT$bGv_&%6^iC7XldgRP`28c{!+I(3}?q3+Uf!X!ujmw$sp>bDzy+K$dGP| zr8bD9x#U>0&PWZh{>7Huo_pVqFO^?kBuoQAw&tGVAKr4b!voIMjdB-zt@T~1KP>zn zSZT$n<|MV2w5B*rWeO73_wH%)&+gJ&*^`(PjHVmm(7?b?{n%sNjoF&BmS&z#e-<|; zNz0(Z=aFVxSbe)(!&cMEWNB8o&rXfUq1X%7epP~&!-EgN7i@&incJLO@Yi83_Y(rl zJ)w0Nam3_wJLc(8Av;!J47!0(Uo}A-zB4IvlNym5vpn0Km#A%OCLwHg`M7%dhp^*P z(wA6EHrP9^=1(C|8J%NV3&}4BIJW01e=g(Pgz_s^HYwxW=$iG01PN%2R@lf?w!(3*aXxrY)+G=4&T+72kR>`A>|`xk zL;efTltZ=*s6mK8+sEhUe1I2`XmpfP$Pa07mCHo;u~tzIB&T*FSp?xjyUJUn25z1# zadOaJEbMrNpw|zQ34uM`r4KAC(r}fniB>s!F5e%cu**AJVdy$oIX0QI;KqlKvu;Dw zlJl*Ey&5W^O9s>E38pzAn|aJM;q&xJE`1uX;;c)7Y9D&rJ+o*K4BMID8HGn!%BnI@ zfAw^qdT)nFv8g=^G4|ABVt4Yj6KBF%av;c&_xLQX`y#&2_`ipN_?uQ`~Hn3McD-7-;_O7wfS zO0WGZgw$y#XoBN_vv350vbF6KR^mG4Svm`$wDdrw-k#9Gi#gvA@n@2w{WaG2=x09t3-#{s?! zy_h?G1dq@$&WwFXLrWkx_@9f3xkwB7RE3Ong@~Z)x~g2?7*ht&xPz%Fre*azegNdD z;-E-;y1~e=2;rn*PfTgIdeR>=Xxo%Dp!(1^8ZwQQwH;I6NE4=&2Iv@}xZ{xzKJNX} zzuOOs?DkE^g*K6*z|rU)uQ@O`WW%`+t3MB~k{L+z0}1dFZb&)yCm> zKSBkpyG{G!4Vp{wqV;LmixwdzgWzo>$m1n>NPM>esLzG|EsCo*1J^_~LyqQ2Rquz4 zx8tqotkKz{pKJY?sq)3%6Q%fdrvqQtrdudF+P{4ATw=J|_L(2{dE3zjy|iV6J@n(_ znzKcj#BJ5Os(*FM&9t`OGh9!=;Y-4{)X34V;G6G^QRm9YMhET%2^RW#5Y!(;*LDz8 zcYYxDnl~Dfbg>gl_{?GFDz&Wo#eI~)`_-6&(kd)Z)H8?&_*bk`^hX(|?UBPWWq6}5 zSN0JPjqMF6+6L8{8wh?+!fa>fB09p8&$ZJnS9=5>HYDV>#Xp8cC45RYm#YyaS7+SR zzu)QV(xXoZWvN>F*K*X!TZ{9Sl}8&4n6B%}}i7G3rZ75PzkC+J)Wk0dA$NcU1Xk5i{7XTnWb6p-SC-wE9 zlIOs@$hC^{x^M`lW3}86FSPb9>jPEO?h3!O?t z65b}(cr`!^l&Wr#Sm#AFB<{f5GD-BG9Lb-1QaKU=l|K&H_d^iLTNmZm72$L~2*(_J z{basDG`M_^R|;cqog6slfr48pdSG^CKqxRC)6gU61`uN|{`c{3>{o0Fx({XfMHvo=BIU zock{`M-i_SC;$alhw?`iEZ}?hvu{EW*yvC7wc-%*=}ZN_};4C)Shfh)il!d1@crq)R_^ zY2y)+j;AfVnP+v*OLeJw1?JN?4=TQv|BkaAt-lTSP)c=s?Xy~O&?2;A z=Gj@AIj5d22Jsq<_$9#kdO?VLXOO+#6bdk=cZUDI;P-<7nBE%vuQYRfS7Id0(sinA zb*7m^z?t8b2zV0XepZq+W-`-CiT5D6gx=DXd zXk$yv50v7fUowi+4OS`rI+eW%bq2s6LL_}~AR{k^l9c=B(uPrn^rQhw&Th^JEk~Ch zEA~5jxxN0~vGMgRa_}{u{d*G&L=k!%`AqPfv73wW;Bs3bolGuZwD;<<6>gt!?wZti zf%r0~rR*lML;85ID^Doo_^q$93xivGxHQL&7?2MTU3Pwm&*rWgZosj$|2~GmY}Nr= z&zH;JH!T;d5CDHdfnWf~tN;Is#3!JF4_vZ2&M5x_qT^@7{67-FlF*C0CJD2HALxlc zRHPmv!rYFn)vM9|Q|~ceZR@&-$FO>TJjQ{Khl}w)W9Wk&*8Y_Eg4@B2hdyWH6$PL4 z&VBXEUgyVkUl2B=%Oo7sPM(Et8u$g|FeYj?eRNlBVc-7v zSMvaLaYI*az&*rASNBVB-vDT}Z7PDx2z5R9HWPQ1+!yfwWb* z{QbXA63LQjv}E5ZQyT%`-*V!FfuyK^vJ(NUGBNKQ8iM2M#JXzb6M&DM+T(|h3-jvZ zr9LU6PkDqMMXs5U=~?Sj&pD~L>*MaWf%=CBa}7?NKgEab^nk~5zuEK2y`{(C+z-){ zJ+2-WZ_7MWhI8=g2LEprOp?D|lX+{s)wK2ZT3}aRc6oL7`aM2j?zyRA(B&}4PG0;u z@(mX3q330OFKbdt@3QFMGsxe)q+(2_YMu^}vJV}jnz}!5O1LUv;LP8k4vG91M^U&> z=08-iQSf*8crKY-XFB_{WNl5Qn4Kr{w>#s=ibL9TQK@aqy|_x4^X4XseZfx~_u^S&7@+z7as26lp)|@)M3oca;?af}C7~g9*Fda@%>99%bXPTeIe- z5yf-(Znf{c(TdO-dv+Zkz3A7`T`3}?E~Nrb@eJ4yc(Y<(bzElRWb{c|VwZPw8lru_ z9j_oeT*Dp=|Kbf^3bH{Es1!R_p6sIP$-C9HI$P}Bso;$BRdOr-=)F95%aPu>b^6g; zOEVpHw7UO$x2%SSTX`EN&*Y@teqlv35%p80_3-cZ6xK1IUkIiG95oU7Z=?MOgk!L$ z>Sa?`jpyeIRvDn_1uy(G%cM(44{{)wc~ijE_}`Z{;}ga?b+g{_p##Zo*7^ZX0>`W5 zt`MzHQ!qz6AQ-i7g2zDn4XDd8HcZsilB@$Q#i52$<%;P~f&a4$(^jr-E0V1z=WIQ%&ZFC2Er>@x$3Z*E(6fW|U*r%iZ zPl0oOONx>0Q~d=7oBKM&lk&M{GjwtAt^ht$j6h7j3f^yM`X=O4S`h?ouV7UtN`9d2 zL5FpzVWNw{rM%w&ZTUvc>_fq|X?v%nVliYeoBgu2hN}bHSIC`FV&>_f0?`Y9X(t|A zCm!puD_V+Hm0vGmZ;@7Q>i^u8DPW8^k3>^E10_Y$IDz>dI)+3Jo=A?Gmsxcfezlb3bMBc`4_ZmmL5m=P7;<_b zxIuH=^grL%46{@jBpedb&2a>^44_URuTtTuL)=x39<(D*j5S6ijcc6L9X(r;2HJ4? zj`y7eRP!#VxAIJzhq~iVM_@Ie(ow6-_=-kNI6DVf|5B#Rp%^wxK@3VJs3&^MN-@SSXSJ@g}Z9RHxUFFzC`A(^;*mLSr!d=^P z-TA2!7xH&&_!@VZIfK8=!2af=xLP7!{>#qoX^$a9_v8XW{>` z_w?Uw+erTIzXIp>p5#W634kQPxY@U^qBPobY(LrAUhm$W9wkDyT3OOca+>VD{O>n2 zASqI$J}fCsdROl@B1n8=W-wpCP$xtHYpR(-v4O`-5hRg93k_mE@JqRz#mQF7gi);_ zjH;Y4s_j|%?0t0h!oT8;bi(u9o@;a%c|pJD`jO}Nx=ugfLWGKk2d0T0%p3O!PVIAG zVHR1?+;cXMFSeqIUSMevhjlp!O-!fC&fSxVA_olIUDRG`9nz86L=y7|sg{x1-x`d0V)fsh6jFKOXlIZ zNiT+veI;`RBDlb&JY83SuaYzX!guOAU`qN#D+QjfaHu5aShOYB_m%0yCV;a%y?E7XGhT*#wlr6R02ILr1Cj!Y9m@Bw8Z!% zf&(!-J0Z4o66Jy3M}xLlGCJebS?a=8h^-4cZM`*S>)kM007ejID8P`0?{kvY1<0DN z&pbQ{Nizx+|Qh?{*{Z8sm07!=nfo4?uT)VEs7ii|{-<+86PW41|ok!P0Xk z3q5Yu$Z45wmUwN$A&{G93IBN-P6Y*=3bw|nU^krdfU*%z0d(mGZayg83&0o!yCtx- zh$$Qu*D>d786?lc8w~)Xmy!(8g?52&sb2VHFb!dw9S+QBj_JQax_Fo z9uK&4V1qGI`PH$1TlfS#EwG0@eA|e4KUq)A2*6JH>XMMx1y-yTRAl36=}*ESL*nF;Syn z4str~jPM(vVD6K+%~gQJcAelR!#< zYmtkji(CXhVjj%UK)zMB^`6ttH&&*~|-u)%tXZI%o z3r~OCP2>9uoXmCA1DZ&yV zf-tc!x!@idXVGfscuWb{;Qg3fKoXjwjsRl{v?Q0e#H6=gGpp9jqB?+L7JU~zX>BFS zYq&sjCE3-85TY-TB*iS=y=nEbRwa*yQ5lPK9ujA6bxLS1&8uYt`z6uJ`c}k3tt{zi zsS@C$BYdYtL=0I=I2hsrcN? z=46P$hfZhN9D`qO;fo~=jl7Y@l|9k#1Ba%#aKq5mMw_muId}Z7_Jad^q2Se}u=i>5 z6o?bt`uIpKi>X{j?QcWP1)xu&BSH24t|W{mwN5jdnmpr~+lsJf`{B5|_oHOxuv1TD z83VZoG0&KMJ7zi^Pdj8S8jS8Xk@Y-H$)f>Dck7NnEEnF9BKdWVBnS~0DUt^2j!A_U z71wouiNqu@V=+mJ^+qlL9jTFkLjxj&j-g1q@Ty^zXt$-6CNvN)QYir|shLC_6xNA~ zCrrlrCj{($O+`2wR3g!>#2THn$RU<|5}=QGK`)I4`UT`Rm$`&06;3ztb;q0dit|mp zc))3Is?-m9PT;@{dY{9VE&9 z;uJ|9iXve!nNCKb|3sQpJdw4|$85RqZZyfYN+gb+9I}CIkrEbdwa4&mh(hWDBB{=k zBnPPsUefIYi{z0@I@-jX*mSL8<%S^MR0-6KBXL3tmQQYJ2*SPv=zZPLkaUvq4lndZ zzK{A0qz1TU)V})Ml2zrhY}OJoRPdhX>)hx03jcY&!hwDtGSoAn69v*W#_5Z0z}>FX z)qzyfH@a`!1N+gFF%+E^yx1^`ZV9xYYUw$f$JtVI6^ohZ`LMI@Xm0|P_CoIAJM(n< zQ`Q5quiH!s{TYu&_I&zNeR%jj3cY?f7(PxndgCpTu7YnZU#GfTF1#Dv12%;t-3#1$ z&_F8a#X=KsR4&)#+~Sb&4B(uOq6!$~-joXYACf|KU3g@D=7|FzNOrz;+~puyy6E?w z&0IpQ3P(}-y0fT!#bH!lJdL_Pwd%QDZeSh*6^Ian@^T)DP`O^;Rlrbv7N!Z=$*B#H&8V3}qv z@z!1M?X}KQ% zw~L;V4E-ft>w&kg?hQ6+><;So7&+X!iBgZeb*(xuKs{_GX9=lx3Z&XuN2;9_q}urm zq?$`3eJy+;T?eFH-IY#1(xw}QJ>Lrs>_p+<9FgZ0UT?(h%`9kj%04f0*r$!8S;umm zvxiUCzGPV^uGo9HWbH+g7apT~IgWIm{Ma@)4DfX(sY2-;Rlv5#0>lo%LGJMCv~2)jpg16P9o<0$ zp6gMu;n;B!6|hI=Mtst0pp+Jyl~t^Ak+Fxfw#NpgaBz+!o`c1&cwU(^2^^z}olN#M z7NV(1k=L8D;)=bQfSllbVoK-)QGogwmd{+~U9icWW9{`s%cXZ)9U<_7A}PJP_8U0I zoP5YJprH#W?AwI$&}#<~T1o{Fx9>CxN$d)m{3QZ`sOz{FQj>ECS_vec#elE5%!_HX z|6n+}#YK2`$(`zhI~xrkjrrIoa42-C$YL7+%FmP7`9Qw#JY14UN$qh)WHn zmpEFHi&~O?X;W>?S}kuPW+CzJ%6F5cCelkS%b^3vxo}TPTf7cORbbKhN$DMtdtOHR zv|ATxesN&Oz&T-=rS#czSFT=5UUR;drKEwD zuV(hsAAUh!!4f=SJ-N;;C@=%CqIw;6el^I6BQ0Oh%$Gm>dfHG$Td${3OY4b&eOE8% z^REa)airzznfdaETF-o<5Dgr~4KEW3#rfAvC=_S%0r;VI+XS$FDn-0!Y7CvUZa0r|ku$}N5*GHag?!osIXhh@BqJOdfD7 zBZyrGSecK3d`*EVfti_ppdU#1_Ik(6{OEMz;IXg_dvlc-W+K157Ld{jUTPCT24u;) z=Qxg3HOcF)^gV~O2EGjdTa;VFqjiDu0*1lRT@bV|0DB$8D0I74v?Y4YOWr4-U3CM{?A z*(Y7mDkLKjCI0!+(MtaOJM>@ubcdS)JE7xAE_-1pM3*bsGs^R&?mJP}(Z+PO*U82M zS|9%hfY+D#_&)&Kp8IF~pWox}|400v+`WxImK|~E;H_~>A%Spc=`I*xtnhSy#MDuS z->5sla^OF7^#}amzXy&Hlq%O~8Ww8$I4nVd8-X3;gvE?&j%{_B^iIm-6l^(B2MJvu zJ(w*o{r#!~7C6L`k_ildxz+3@Pw}UiY2C)?g!}uKxsOz(hji4=U04ek>n|n!EHM#w zzw9-uHGus4GUpPhrdHf}vN5!;^$|&=|oJJJ%le zHLMA3W&r?7{Ft^twzS1#P-=D2QzxC|1$fGJjQzd4@4wSWcWXL&q3;yfAW97 z$KUC9N9?adV8bZRFT1@rfTF|U_&4DHFm~@8UcmM}m>LGT%xGrVXbf0wY&c)|`nT|X zcw<8-p;s6ijNmnt#O;H=s>0ay;ybKwXF`Mg(y zhrxV0VDG~bdt=P3cMtim&Gca~BeoA}zc*83Il>Vzhc(up8pFnY*1Jb~U1Rex3r8P; z37pQLz_>dP2O}I(2%VgK#GKU0*|~t6XV{1xXmaVK%2%gV^tjP@l9Oh z_=H-COgOY-HZ1wX&@*oQIA>D>$UGpg-r5o5>J1-}u};4aaiF#dEKk!h!&)C_Fb3>t zjS)4(Uqb_%Ja&hJ*?o;ggITQqgQ{ovmgcvHBRL&o^sC_zs~AAfX}F92Q66jtBXbYt z@hnlpzuk`?@?#myj#&S3I)X+G6^h0%Z8dE27t}1ln|TgudgDE1Gernymxq5fYAV>TB^7dzT^_rbu{>=WZb@{5s zn*V;?Zr+;7V_5&2WyaM=c0boO|w^!6+Tvw}kgSEYF zwi|CCdHzG|qILUojlFK&USg%Mq1JPDecrxpHQrsEw?UR_Utircq5W4!Q14~y@^u^9 zX})b<-qxXAc*mN5hXlKMbAE9_ZJob^{fXZ&L za5gh8>0b%hBbI@#y=m1E`|k882}{l}yasNdHZ$S0ci$XgfY_);dgJNM zATsd>lpN#7IACc~(?j^HxdrM}jly|Yi>ph5kYboRAQF$m`O8Y>EDd2=>D>>85y(vy z>>?IiL@l-1pS`SL$n>~OHa==nqMp>TC~Dh#oDR=&FOa8QyulR4Y|U1IK~i(Yu#=cE z4zLPnPqwRc~JXO!~-TRb2EhYlPyC?C~E6xc0Ne2LSa1ITRr+XZYcRw6A8ZAOFl#2vrANnWNb^5Ru%6ax6ZH|6taD~SsY z(S}w&VU_PuAwjLZ&a@U1X5d;SYrH_B@_DZu!~O?*CTc&>Ec5-~;VwIf8#9Ex2zcjd z534P$BWbH*8#{dnW8+B(*mn%9@`@o0Mw7>EP|D+M!>fI=D@SC-AiSL-?4bnxs{yg;2Ca#G;67kx(^acqjWW%>#;?`+^wFHG8fyhA0l8ti zp^knCsCTk*@lJ8|Rsg^$K)`0$p#2_}YgO)~o)`u4q~PE{JDUJQxee5=hpq&W$|*z! zygI;xSrCg2#Atd&$05S;;>y@|ZtlmwRadSoEp1}0-B{NfpaM|WAwYavsNNlx*(zXu z3M{Xw1p4$iSy@ZtJ{;YdD#aT<7v zXNF<>R8LKd^{=lkyXv{xo)170LfS{uvI;J#lH2j!-Ow;B&agOpKbQ@= zgW+KQ5jY6!?-qT)sYzkxdOYLDiRpJTo{>QIBJ9q_Ly#EH2s~ft$%nJ~ctXF{wDCgv z@SJvfZKHNkiIZDe%5X9P?!1~ZNI0Y%_ghvdVW6s&7yZF>HphCRsDTq(t)zf}Z|C!A zwK9k*wMshQwi^q!2xcH*e$r-azNB-=H5R5!q*K-(j>Gwjbo)Xs?j*~OeT!A1fN+B# z0^Dk@84EbJ1m>Ph&HE&3wUhKTUqyXrMt2LrASZ|b>JR>jd|s>H`~YJAth(UruqK3m z5PWl4Uji?lR01q{?pyUF%W|Hcf+Rk8z+pU$yJ!Z(A=tUgcd=(lWKwN4!(iGuLC}4< zJmY7XEaQn4(_gaxVbP<#-s=Suo>PN~HJ{!U>dc9TSCek4l zWS5=$fNJKlF3gA-uw8gJDR#iFW1NPSM8~km^h4MxmMKXduE`Cj=tFMTcn@MJokpm0sFQ>j^& z;Vie>XW7y)tQ_Ts9-8@X@AJ=CSPw(V%+Y1>xOSqC{ zS%STo$R_JCHDUCznuGW(sGY4MXlE%DXX`={sk$hilHg^cK6?nKb9}~{jy@foei!SA zX6896ioQGj(|4)#uMWHTwBrl6ABs?SdnQnQ$93JX=ku;!pd}@A3D4*Z=2q{xCVc8_e$?yPc^47Pt-noCDpn*5<}|gp%&*H5tIk z5FDBJr;|mpHyoU1%;TrY>EhL1LY#}Nmr&rX@)F`0!Ng&K_rL5t*^(Paa(>oVv`6bD zWdn`64^pJ1g{WPHxeABGwH4mjnCO!O3CApeAvsd;->bIdw#r*w;9Qs+lW=ZmLXDy^ zdP0e4&QrycoCy)Hh{94-zNnS5OJ#1Q-l$~K0NDz)r7X=!t{eK+I>&#NzI7VSuA=EQ zLXGbZs{sd~G6DS2Hb8$3#gBVrwud^B-h{5J^zm9Jo76jYS(UiT zWwKP6JV^yroW{8|TIEJYnTkcs(~LcI|IXLlUIqQX`jBL9Yw7ZGFusC0eSUe_CgLNm zz3HDSq0aUn_i_;itVWWiFhEhn(j<~L)`AIm#Ntey>Hjx=ty%xQA*xrJM?vq~$^7fd z%{YDKJh(5;5nFbKw$Q&&iY=`FQfPXn|NFRpyZb*)%La$e;VN9-u$d!Cb2Eo(x^_25 z`X5an^>z+bdX3fBdhncNa|R8lsZe#|S7Pd=4BAy-9EUo!zo{3-Q#gTfPHT*IH1#Un zRSS7=4;GQZw~7Eo+nkjqGRxrP74%$c`}RZGadtT9fCPn?Yk!8F2-qBasi*Dvu4bQ{o`qoVaCv0Og|IfIl zdcporaH-Dx|9xCFBaef=l9T`8FK_<(8hCjUyg@e4X%a?5$Jnpp>)(9W`+#+MhTbQ; z^G3;%y>|_+WtKe;>=q@=n?))7jIwzYVBT)_&zr%!7Z>i>5vG_ox7R>riNEtY%)an* zGzgr*isnU`-l|G|=>F}?Zhta@Sz-_moArG2>V>V#cqRY0ULryFoK?QBCLeC$IRMEP z4$K<`P+~y)v_^g}Vx-x-K~fy%bevwyAR2ZZAOC_@-0`1Y{rQ`3g9-40j^{@^hzOM_ z{lw_nLA9oAiq4lNZ~bb$qHkZm&t{Vmyy>khHW+~*)F_4kn!%8`v)%!G?rqm)nT7rk z_-2+(i_93Zw8w=JmJzFaBBv_N4e1(_$FNppao47tb_Jm_&lyVu9xtu#MVfi#=K=bu zs`}CgBAtwa{`cRb71zkybEU<1;V5_8=9*|;84M?LXAYRS!h@gvD-cp(Q05>%hU@xp zGaasg!;cea8uAsN9}XtHq6gi`L$;gDW<6gij@zqmzgjzL^|;QVuh5%Sqw2Az$l%B4 z*=(9T#2B@^vO9*g%iaIrmgBG*%1uGIn+ykg>Wp-21&8iB z&p=pC8je()*_~(1=TSUE1daFM5BipdSyYE(dnBPSsWf9!|)#; zkgfL>4<~OYVLFZ84<=5fAB+1TX;xgDAQXlIKRUan@W+|c3wLjJE12GnXFjIU?2yt6 z~i7{scAV)95WCRu@f^yWTzC393ajbX4DUW{<~Lh_R5T-n0omJ~=^+ z4#oDb#zVdv4WU2d$oB_ncCV_ubGc&DDCUf>i;+O50Dto1fa~GY&sOC93h>~sfCt`a zVtu~6h(-_*c;1F&72?+t>ic-#2Y2HlRMck^kM?M}KoK-{aq9xzlzXPj;7 z!KD{VHa@nn5Ar`J{p4272ll_+yY*jD(8X^34|*#LmqfMal)bVJkd@Ocj;7toczApA z3YVtPog3&C40t?AZ;N%cWIpCslOe2bj=}ItCrqbP;E`uNzs#1F*=2!(fx`SHQ?-hf zs<*nEl|t|QZq)w(R~^hIH`62wVCnz!VE&hzW@y)V7>$1_K5jfgMhw>f@nniC@6@UO zA&D=$jb+mPul%2ihNpY4fz>vt3M!kb08Oa^^1Lv#b4hP!g{hxm7EiMe&jM?oUj)%~ z5OuExX_}33_xz^x+3I&HyoX#8yrvX=m`X@+QX~ZH!2jSi+RR{IU4jJvhZv59U)EJ% zd=TED7@{fYQ_4fr!Ekv2rSPOW+(8 z;^1Q3bAiC;_yYQgFyIRN4}b_TkP0LXMqLpMAY(n0FtSR=7zZWX%+W3`3&y|dNaI=+ zxCbXOkUa)!B^^nzIthb=Nz9=z>Z!1p1A_{7Fes`!VGoS>U zZ$JAeAcI+zffD!r;}@eW9Yn#?QS`xYMLd%PDC)CccK$5f`25(;eaPp31i(6Yeo|Tc z;~~ULuL?XtUoJ46kI>nRbJ_x#I>BI$o?o1mvO6L!7LtGUOHWk~t{KrZi`;%O8Xg5n zHXNcKZgi=g_SJy-kHh5oc;Mcbxpu3hVGD};o$AK zUL|~mU34}8t3W8TkuMcgT`S6=qeEpR|0Ocx$tua_sQ5 zw$i=m1jWro=ZVkor1QjWS)<9}3d67cILFdf`2eP~@T9koBy{Is{X@$X4=s;N$3{<{ zbdd4zMv$Gt-aov)x_(l@wJ_5z_g_{T_hEgPzHn*8_i^hul*nJ2f0rIY3QTqg3$))R zV&r69=5lJj8FZ(mAz@Iytsi;vEKB1n6lqFEYw>xv*pQl4-t${oX1C*{YS`VptjM!P zsb!+-_4RNt2L`;F6S||x&t2S^>&~2u4mW)Q=Th2SuK2jF4=HicXrcUhc>G$A9ls!M zd>g%UJ^-GqIcEZFd$MR1S|ZYJNCX`y2d~r`@&=><+O?ubI_IBmfSVST0eTCwT5evv zgN?$6{sDel+68y_(NdNJCcwuL*;4GkvfI*GNrevn>j#dBXnnn}q;M-W3!XL>Om8gy z*-D7Ce2!omp!R=}gK!#?u@Rku3g z_rhN`UlfnF?)VABcov>&8ZaxytO-STX5R$m6?^HJ6VIA7+J}w}=Go}k%5Wz|ud1Bi zKu#Zt$FWbP_Z)ONix%*kJ>LsrsES+Li#=ZGHT$^?$*?vGdt4yJbbEdJwE%g! z=NrHtw&tWe9fU$Ox#QWYHES31ReL6PGgf0d-#TGM5w}t$5!J$`f>D!2G)+_{V+A)c z69-`itg;V{5})qyW!sS^oPqFunM|`ZbDnqo3i&j;9$W(B^4T_g+8eq@P<^CL&b3UW ziDQ*3n_Hu_%oOmui4jW5U++k6|FRuMayWTA7}vvhGaYsUv=@&j(KN-|?W4Ibg!i33 zn(|=D19?WZe%@gJYvl^3vXoCI$nrP!322CFh*dW4^}NVeZkK%068vz>uhzDW-no0< z@*u^%r*W2{e`@Dq7z7vMAOdmVp?S ztC(?}amHyZXq>esdfYSe6FNG>-J_M=JQOVRLwh!}o4NeU_S&>Z8*8M?Wj4I3d2u{E z7F@h+ZImq?UU@i#sQOWOp=}rUqEVR}_1PLFilK697|sr)3Qi~*v4v>iYO%oC!sB94 zcG~$2uH^q-xfO_Cdw_CiVgEJHW^*^)VB+%feHJ4y$NAtbK70cY|2K>K?!o@CBDUFo zN+uWVzo_JA|3CL~;kN6(7!bVpdkOCI%Q|_1W=f8$rzz2BRYe*Or%WZ zCQ0&$%c?V<{NwpU59%IQ*b94Kyq=8TqLR!VwXu!Uv)b{qzIM;PES^-MAoG+Oo6^`MTJt#9ltjkbEM_!MwMvp!D9H2m$gcYs z|84f)oG_8m(76h3w-S}Z>CJdU1W?s72Y1Hdt0RCa_v38BAFnaE zP-|?#cLvo-Ov8l=xK!2euf#B1P^Xz>nyLK_!wJf*qNNfbGbS6)9l<-&)oklrRT$_yAEID=5QBejK6$QqE7}HEuFL%LS zM%Y8)Z`JfeVldPEBq%%_faDnshc0gJ>~b)^Ob63#Nd4f!PEAN`r^{%cDuoeE8LFSk zko%P3p=FpnI>;$h1e2;aQn$rT(Evs^)h^;`o#`GdrGJ~(`0gZz z<~jvoQDwM^8A)>yr&MG>XfmT|$}CZuoBXtdh0Zu}ca;J4a9aPmhibdyIwec=rTheh zP>BMYsVLDGjbeqUZfMBFNst+vGY*$=bEs;qc*?5O zDn#B4D82zu{1kv9EL7;9l=rJ7kh=&halmm-9TAC&BuwatelE>ONRcxTA<+T+bz4$0 zWa?OGqSBeX0#-2=csf+On3vHsKL z^`D&A|NFRhJpaQq#(Szy02Px;BqB3WDs7$!l}eSwB)62YNYm)@d;t7wxb9>8H`70b z=~FJP|NN}~eJ|JV?EJUDATIEp?H=ta#MQ-_(+A2f-Tvb()x9 z7NBKxop{v8!KBkQ)+=~ZA0SHeRD?u<+q1aJE2vzNQD zSvnM651HaE*YF!KRFI~^jVP6&#fd`bPzxAf9{MqcZ-=*>KykcfAwO1Q8ZaVM%Hxmb z0TZM+)srFD&=iFZU`MQLxs`eOG)^p%sMtWFVl|11!%5Uo3PhUbDzmtsBq>R_wz0}1 z=x`>)iAmIr7uChUaTRbkxmStm71i5Mnrot9;^cIBIT+`Y{b)t(bCkMJ^e|e18HwO2 zFM5u4Zk_Qo6&*MOTB7r5JUB(i+87Jen$S4Ns_^LJQgptJGzmboFkmLMt|1*N3k_LM zvCt{XgI3;U^jC}MuQs5+T8;kdaP+5n9>-Q`n#LL9Tx-IV$yk~y6)BxZcd$ZX%sIdQ zSY0kkb*g@gsofVRb9mg*ldVk{S?|!L>3uXEgBY|Q!Kp=plRFcfI*Q<|3|ZeX6|hoS zAU^3mtm7TSb&A1vX`n@rQRvaj4Mp$sUGyKX05wQxu^HmpP(Ww~y~j5*EmN6Uq%yOC z%FJpiGkZ{3gTky#cy1Fzj3TLu7!VgxG-Y|L6p8q$c|cld1u|M|1ez&VapglV3ZQ(Tf@-4^>3pRi|5t>;fG`%ySnZpQ;Q6MTO>%VPc_(@k}AcgY<;<`R)#oo`CRD-+>Hci@RgB z&@Dzjf>9$dSUy>`;cj?PXIaL0y@>I81IFvs7_SezC{+`9qis-USs^8D=6THqSeX;>yvT40FRLikN5Jm^fOjKnD;g0(*klkAuJRB>xBJOdG=zzQH41 z7xpq5x`X{y=lXBH>wUnw{DHntcISr&%vLrEsJ4LgOOvU9f41X{ z75)Haa|;>91%EtLKDdP(g^IP$Mk0T}kmqj1WO=YbwWOrPQ0i%mP8;;oR1#+(i0`Ew zu(R5KSd;cK=)n)52XCbstW5Vh69b+*U!Ckl0q$GCc4fM^2wD2Hp6NYfw7*TJdO^_G zMc329bmSS$s;O39m`)W-RfGT?V?%vwWHdXvqsg@WY^|#fE=Sf zn;ayg;q|R&xMV^bf8Zz`9j8gW3CJc*RDd_pcB%Pmg3DxX5pkj&3l0HsYxp z=M<+;%bDi>FMmf8oM|$jKu-$&^0RpMeD0Ul;rt;R{hC&8l;9`{I_FU`L2|@N%I>IX z;tXza%2v}gB)q2>V<|nEYwE?ZT)fU`mlHYHIM%={B*XcPKSDa$V@-dgNpebYIgwn> zaPo_xud)UtbvCg9lL5R9fH`>D!PEs&eQ`|ydonNum%W1_WGox9I}?Wn z@r&>xU{41&Qqkl2C~sh6#m?{$xizp+KL|*~894AMjp~r;z(EO}QK2;;Pq+=hfM@}) z@+G7Ig&BD8DR@ypV?%aShY#Q-=7G^81{n0hg!=}9uREe7LOltVTb$woL4d|$XbC`G*S(DK06{;jw_5{h3B$IE(TF}zMyrY!zll~V#O#jQLT=$RjGxvW| zcxcx>JD^s`-#z@(gamF~0-}rOfByA~hcVOkuh{Q$o#5Egp+!CX)VNx>!uw}6b(iY@ z3BU?G3wAU?hnG^Yf$^S!IlqEpz$`AFYLIB4#WN&GD{&3Wj^v-JENi0AKp)N$yDc9g zJ6s@~P|(!@evergroX`)pUh-$ry((2YJOx-a15nKYa_U_W}$R$og}}&Tt{&76}^Pa z@L;(=jekI>3$h*_`a2i`CTKlR>`8^A<9D=wG|H&A+Din6ITSgLVNnx3@%`JPm zR2Gv`XOw$p`9_wgoQGQbRvSV0{wDjqzn4EkekJ*1FDH>7Jdix!Nkb8 zfGzpND@mr;qagpV_;H#y&q_-z(|C(gkB9LL2H?3(IJipwIKXAIgQ*}{7v}R(!DC)i zxdRzUZ?E))?4SGBuhrV|33cNo`|uXv-G8vK2?SaO`X$uoBCBVnK+Tk=#LAhu@_iI6 z@)cTo=-P2vE)i>j(^?98Np_zy&`U8SqpJjDgk2ua!Dj$iVVw?Njmj^+fv@d9TzGLl zQ@-~cG`92}bpG)Dk@B^F<=6ZC0|LI6tAVV&Rdz*mg)mH$XWK#YX`~;;g z>Ln{9gL3RY&@Uf6#GJqsE@YLyj;ri!Z}}eRT9!Qhrzsz^q>(L_E}&nCYUpsQT+pab zdy7Ql1+q}zW^fX_Bc3e~y$4K1MEP-ic?m_ry{TG=F@b#E3E^(~Yr3rfS0Z$#MyNJ2 zO$ib~0?GWWluO)GKqk`kz^t)ab?!`! z=AEf=f1N2Bzne#TX{sJ$J!3=q)~;i{MV#>7nYi~j3CbZcm#|w*)d4)SsiGQmlUj47 zduY--bb!X{q*WV+69$u;t?obN;|}21cW&V9<_6Bb9|MO}vMTc?()2KH_LdvBDn=sY zFWjjM_`3vMO~MWUI(M$9PIEA}_B{)oLi|PFQcbvbKs)y{xcxNjt#k-nq)U z%~jUDAC-Nl9yz}2H*9pbTv^{Ojv1e+2aL~pjuyQ;*G#XuW_tIdnZLvncJp3}NYQyS z#oKbdEaQW}{|3Kr+D<8+cUkAZ`^`PlVt0?+)ArtQcy+T%VuH>ZNw$4|uLKYNJU{>8 zCWXu&cY&($lJzFd6Klv^mo=zNXW9jsZY$KA1XE7Pxde`6r)-Z&<7L84f}t7_W(kWd zAW9cJx-B$!H|=H%({A36X}<~S?l3p*HaEqDi@K(x+zUQVUM91r$$S((!N6)O2fIrt zTcbtRp^>+$KvO=OkLwW;k6J^}_+UV{<7kaf1+3{zz>H5okRB88kVSk?L!|qZxE#PE2*y*D6+pzT*8R`dUuc0l%%7S}cIp z;4F(s*y}(`*W)am+jZkf1}43acKwn2nZn)xI;N6|IzhhiGmh1uWNr5+?w{R&QYA?< zjH+I%(z`eF5Ru+U#e>WTXYqc?_p1nZC4$IBNrL`ffOTY(hn<3jS=liZ=^oNBG!}Oe@g>d5Zx>ySr{axk4-V!J32+- zX(va+Sb7;^;d4i+%-zuI)i|Gt*LFN6QJa^~%@?!4D{ zk_3D@y~LEOnP3guD>K2m?kXZ!1LOAS8pavgU>;c4TtNfd4zH8jAcS>I$%T~uyU}#8 z#PJ3P)D$6|;L0*HrnKU!c#2m_4glghGW@>Tozi8s08g56Iyt&5gF!l%p@FL0137H> zE-qs)ip(&I{J=D5!~%m;%L_fr2}8m`auK;*iU}P9=u19fM=%VVM)@jxX13rOwr_`O zxQkjjBx4%3x-$*eiDoh%snqGdd1Gx?u;E$skUAJP4lWJkV+F{K!-(YMBPmHA#&s-RrH`7B^?A2S)mJ`W+Pd|1w*Xanv~G5- zXv4@Y(1wX-2Wl@kN6tj#M(mMoWM@Y1Wu$ze7E+jCWJsiLhCW*FONl9(mt-PwvRID? z6z;jQt-%lDFl~idvioNxDe-^YwDf(+48!716q+8P#G`>j9UJC*#D{hn*xc7I)0zGi z8!vuCwf9%9IQNF}i)9}+jRr{x8vHhDCHFxcQ9e;WIFOM_Cu~PhB z)~@Rx_Gquv8xU6?WW3P#-wwXizZ=?r^;B(-Z`|1a3AGK~s@;p+73p{vGFQpolW}3@;E?M-D2g7N~$5kpOXhG_+n&21+bPJCO_^N=4LwqGv z-_u2>*`jRmj9(oyj|K)eZ960$4CF1B*pAOBXF=pzz8BdQw_14X1-x|*Ln%B50K+V3 z5;z*$(>|m>#c&Z6IP;~g`lzNETvXrjli4h}+UpZ1>gxs-!I3wcUB;s*5jwOFIRI!t zm%mThJN~d9qAABkU2k2AKQYLM2>LU}K*-=PsVgz=?bqhLVZW@*ygdVqokkPG?iMk@GOg^&7 z2uxH3-_S6MI!2oq!M`#A0J`?T1urYQhlTn8Ky}h-w2=& zb1mI>eQ1`ZWic;;$ptgFMk?xxq*4(lk#U(&N+tiPmP=c#`pCs4B+^+J+1&FZhgd`p z49D~Bh!M-;=Jv=%U6Ju59(5XbwZ*89Jg84>#%$kqna4xUtcZG%Yepn6eeQT{YviG> zh?GaSVOLw2`iO)?k?(u9LqZsB8;0ZP)OI-yL)&Jy6K#)3)D@8;={D+W3sWDF*w7w> z(1B3}VSdDIC)8ctadpEFaG5IF8j+|gB1O_=(A5^CUW2YE@ZlSVr&EvlFhdPP!{82> zON((rtgR7mBZL#Vj7iM$YH3MDeFdy2iD2q*1I}^iu=U|5}vh^T>j~JfI0>X7aG##HuzC}Y1=8B#4XYIV2b@5cOKWKtCTnusHQC!!vE-@*whj+ps|=!l>JN()t%Kl(l&C z?`S*qnHd6Ls4*TK}Gr zvKCJ+E?!+MOXT9oWA&a+hvh_fBxeWb;sTkr#>pYyrjakG0mo8aVd?Q>ma zU9v9z&Cfr4|LQ!IjGV;&-+%v?yiiYOTSC@rRh%=t)(}s=J&zmd*?}40RZjJIpb-$)XTU>Q=QKbzNRxyh78qs`>oS|2DO5 zEm3Q`9)zcGzp7&z8Ann zJQWNkkf%H(G6VG(d=;RZ85A^`&&KoFKx3m&%hp!4cofC~LN?V{FiGGJp4u)7p|SCJ zh$-MhhX5Q@;xs*$yb77@WUltO90eoAMy`~p*UwYAG+AgDAw7$-fF5LLqsv4#V-ASO zaOB0=>jv2)k&vT5`ex)$$B*Rll;FUr*>%`|C@WdffYb!+oi5&mH)l!V1G2a@DgCta zW9%owBTFlOhD&Kf9@T~eIjkva=IK?=@N~cCW)2?)DnaLuN^`m)tt`_Czd9A$FegWF zHCXtpY>nzFiVT0{*D3MOLb30r)VRkW3JrGaBuGMjTEF3NawHyZQ`KRLd`bc;^%H2MmbNEgy?PI`(L&@zRIh)W-XXf}g^QfriQ*sn4yH)U!AaKh4Tfhbn zhr%^+`$=-e2ihAJu}M780HRl5f5G;T0CE-r)IK^npDuaa z)MK|&22i4{mO@-72GiUWF)T_Y?Yxycs9ERTV5_xH=dI3O(RnZLGjDhozFgpScI0yV z{d4chKhI7N4Pqbs^+D;#PqRw7nPf}<0 z4L2!iDZezUGKDTMt9r$ryqj=7l9oiAy%3HrGDzcRZ&_3--(-AkI2&tOl%b$9%hDib zR3FQt&R$_z(plezTb68Y`h{7R(yaUoAE>DGe9H$a%8(kFIcX4kqmMaJXTQpvl){N@ zsx2uM@yjtJud&iAwi3!_q&PSFS?vL<6uNc~*t9og^YOE_=SsP3w>?)zcFXK}gAj0i z?72Goo9+1~uVWP@{KBmHRI!ZpnVNEyF4viINK_aM!`+$kJ22%+xoo#7S4LIKchdf! zy(8^T+t~Iqzha`EQy>N{EH>D2S`0WQ#l`^~C+X|)6KKFnghVA_oAmX+zk6p!3!CM{ zZsN328#9{a&Yio>okcUr$FJRMB`p#B?WR211NgWNdTg)azi3%rxaskont@G6JD|t5 z{2;3TD8rs4+24KiN5O@)`!tJ>{gZ{nqZb47eTOp|?_<7`!QXDa`I(cC+jMgrzwn0% z>{QNg?8AikAmSVT>LBQ}1m73umh6S;C2u|%IM&ymrhZ_PnWWPjOlGX-(zLHSCfQ&! z6AwWTY~~$KOTUlJOa`A|GavV=`2v#vzB!Cwo&sFjrPcF)ly{pX#NWN!N5O@)rn(w8 z)s^BSG}VchBZS9kB;TTNuj4cl!QXDGANe+f1tkB4rh4rzgvfsL17`kFW;;osznkr^ zGuxcVmv4KvIq@L$aK~!$iRt&+v6={elRb|g2me^jc^tl?dI;VT;6wMI9F+I>`e(|HU@r+SCyF(e=VeXsKv62Wg`-NKRP zkBxaT^_#c|3iC4gcU+gB|6?3mIb`!yGVrl&To5#k@ z2)C7cc^;aPiO2m1jJ(6W0QX^JGWbo5T)OYzvGH;Nz16E29-5ztCuoO9H6|ameXpY$ z6Txrd=bE#`A8A**g6W16&mWq{iI+Wv>$J(YLfvbfHWBmr&PZsU0{?(&>Z@_8a=Xg!k8FT_K+ zyh!6o7`ZyYdAOaF|~;%YpSe<**sr&{UF~I!z>9AL!q+ut2}N)mjW~) zg1z&aO@qy?QflBvaGYp%DZMi3bvW7lgu#QB&n!-aXOdE1#!+`2KwE zBP+lXFkA9_?{BL^g=f1|V!!Y#{T2!(wfKWpRy9r43gsfiYg)Nj_<^W@8%D8bhQ@=C zA6$^++wvu)f1{7`G(~=~%po_Sq<@Lu##okfjU9(ri35{tx|BdJYI_t{p&%rd3)vHtJhuh}B)!jK5^#VK5=UQjC zG>H#$BCDTb%U-kT)B#Kfj(I|)kGXq>P1!M5ia0Bi8VCMUd z?a3*`43Oa{dqLw2GP4cJ8y3;wpw|d8>_Wl1Go7;=#7IF^tNDVesibBbF4ak!IwKcq zGQoz*R`BwR=?^b;cOnm+$#a?1EQ_%69y`6ry`l!<)1`)qJvN|-_dOx%*aV=b=giz8 zZ_L27kyf}($jk9XR);UPIx}C8jo&YoBf3jd1l=2xZ732~UK!9h-Ct@U^t^`2ufKv) zWI}yxC_I|HgqKI0QGgI5-UKuV+TrVr@qp#Pxx%D?MqFHSTqrDn1ONiRB3`X+Ea3#T zLN8-Zs4H_^3ahw4oiU08xIjyd*^u51od6eT)*aCyqNPTB(GyE3zzUE{$T5Mg)HQX> z3!sO@56_#9H-w4fQL9IKox?tOW=#U&({AT=tI=$bgSV^V_22*2dXOodCbg3W{Ci89 zZ%(@~{vzO}w~kNSt!5)d093bj(r-0;Inp|*x6c~j^5w|ES)ZJA`lQ`DZuOypekTXj zH-mDqVx)6Oj+@>35xmw8TJ2W~wqNpb03}4%$s#4K%XR z>Ne|rY)llY1Cao`c8>H;oAnk3ns1uWlv?*~E&$qVzB+?kkV+c0oS|))aI0JRo zZ5|`WK!)DgL9gHHpY@yMMW@r~G044U_jL<~y?dnH=`m`Z^_n@TqF=+R5e85Sk|BI> z)@w1EwNCoYZuji8-|C!X$x-JVsM00%8We3Xc6LruthKP<}UAei%3ubBmAwQ!~lVPd`KHK_EA zwHn0&@Z!OkfaVx0N$U_WZM<$F<{~$6zt<9?!pK%X5+vtFmlE`?xrTwl4Xv5SG!C7A zupyu#LcKg^tU>!kgA#aN4GkAA7R1a*SWw6~61GJx@ic>I909p5# zbpWGlsfLKJePZO5kRSX>9}o@vJ-`Xk7O zFvUGM&;pzi~M`o^-kqq6}cg=}DrpnYF?_nRlUCNoS4?5jz z_170;rv}eS@9eU9HpXBH|8(lWcX%AjFTTgXi#OfF^P_HmPrg~R!~R|g00UR2F@ zy@Qv7^F#aH>zCHs^KN-Kw5(GsP_th354(pLQp7VXn%3KER-JnGq1;!LN=>UcC$C;X zR6~2&Z62P{ld1aAYW`ZQ*IKpefnWVtRR`}5-hFuWzEJ(+@Sr(6=zM&2)U(g~{rT`i zbM(jA?A`eA%CnA2!^`3y?RrP~)vXL`UQ_e$%ZFSsQD;v)7&OujTsNR%>6% z=Ah5L3h0ggNYAHJ59p?;QC!PD)Q7&~Mlqe4ACH0##&E9BaatDNRK3^v1u?~79Swx|tQ-38b>JQK?Cd;;?rlX$iN z`yY7{hsUrT;f<;Kh;Bf%qN-~Nw$0CdQHAcJmu7QUpn{F|*bfuA{KNpm1$*`t2V=dLN_ zVcF5SPUrM&AYCxR7+z**mi+lw>aWnebm!U&BrXNB$D#E}Fys=jW0 zV86I)7Sf@$Oz1B4>6F@hjKD1xxxR!5WIvn9#e2pA_?ClPWanV4O`8vP<~Vf;V>^09 zfp9FH6+yq}QomwDWf0!ch+>uC*q~=1Sjx>h)2g@tcp3B*a-vm4a%?uR2FlnH*(DNZ z^)bdZAdc}@$}MKb9&$PJF~qISJex}JwwU>B%CjP>9K~4AqZ>x^3Yybqx2{n)8!9X4!YzzzDYvK1?PH-HSnQI-^YbnhrjgU@OS;eWHS04ky3w4nuNq zudQ?&2;lH*Pz@aPg{6*rttJ$DvQP3_mX#6YCL7wANi$l3Y)~tmBQa8)V^j`05a=Pf zMO*0klvcAE3N7zP?^a)k?dy#gakr1FA8~keXBi#>lGUiKgn}8ZD zq>;qUOUnlL)n@Y`Z0g9t59OV~d(cU7G_(mgqww44PCKq)+F<59dC?4ECxKa5`N$rj z@tm$W#yk^K^r?I!tQGIp-|)!!LgZVFgt5lVwaIiZhJ26uVq5#nWy%-YRh%mT=NtVm z>}`bWu;g=5zurI2h{T*I5+RNbr^F*O64?^zvJOEh7mFAyM+}!EjO7Tr95KR(thC46 zFplg(k0FIElfX1(SBRj8rX{J#F(VYVJSxpwk48LWqFs-taM@l(?xdHoXBNn+8Hewjr7J^9-7W=Sq>?KDX zGl*IaMJp@wo;+56ELWao%VWL(x*d2ly!y$^^3AC=&wL1Tc%etA-(+lA&)KrU5<&mi zlkuJl=PXO?eR~P37*c@?=dIurq7=I6-m}0{Nr1_7-3C*r!Z=54{vHl#MJQ^uy+Hp+ z43C)U5;MfuIdPk@B!J5XE;1F&hsQTm{Aip4FMF|6*}F7H{;zbN6$XJ>M#r}1%(vwo zJIjM}1>tN1E04t?2C-_;kq!-FbuGnlyM*z)g4en=!zln}h{JA@k>$yLdaB#$sBc7B zFsSA0dtq0JfLM>x!1%>}h-DR)F3Lj`vQvOD2Q&HD^C_aUfnFvWYHjRn;y?|YK(+v2 zUaN3`$IeI7vh)~$Xc(N}HYN=Wq+nnm#XM(J=+(Y~r$_c6r)@E`g)4jyp$a`9Ayey^ z&gr(6@d=#&1Omk6gzUrcVNp_m6}U<>aSWP3s})NqG*S>T)Z9Q(L+xBN2qYh$xDuvt zDRQ3O!~p1rhaZw?AG)faNBdhy|B0d(&e|c(7tPtaZY0dX$?)l1fYBYhDT7b(LHTH| zZ=;3eOJ-oiEDGLk5^0669vaFAF=d}f)sXlC&-BpuAg*(Hh?P*(KpYn`><$cmpvR{S!u?1%lwCS=8( zBP;G3S$5a3oSMV`HS)U@^HIH3u8Z5PfjDBVbRDa~B4loI^QcjGm-xU6#N<0t|C^@; zHJlWh$6nU<;Qa0vj^;WnyO=J<7s2>;eRElld`o+o`3LdL8K%qU06wGXn0XY;XN7?F z_tU1GCOJs930K%hxX>d7lO;kJGx)Lax?Hr^j?K zteABKk*_JL7pXG*-d<}gV=%oXQY2}kcCbU*0-CH<5O-m8`T3TOP1Q&8bA#4ng$Ltc zf-~mbT}Pg&Go^MWtq+`;zdNvW`$IaHz6b(*H&%KpCLvqtoYKMGh<=(C+6A(&D+q3_s<7Q^>x4BDU7}8J_P|OT z2B-pmlW=h1=*GSz*v_OBjKDfXg1wQfi2^i}gxw`cz-qWK>@EodCIRTJ8*eMkH|DKY z!#C=!iDw)4qWGcZ1pdv+R4NP%T|bjPgz*8NJwxMB;M`?a@Vebq-+-kYv|alxmrE-KUc!|w#VegB`TmbC5I{y*&p zRV$XtJKy*JeTfGR?6L%q{nT$v^T0`s?;U6PcsBVZgzGGb?k3v}yu25A0W7>nMfm3A zPcJ8t-*W+CFI(N(MeTL1)y54%2y8`=v6dh8a=BWhda(o&R?+BC*C^Gi1zH+vx}oWM z0gB?BAo)G@``*{)#+QF&Wi1aZYZ7NcyM4?#aG@7;qo`^nLm!s5w<*<(3RTsjx^1Y# z5q6sK6HY`O3Ho1B)$*eL7j}x};&=W363?@r(LuiAD^mNCCaV&m_RuldSvY6?!+Zt( z1Mq2e%dsgt9_MHL?4r@B_urm2(QPHCX9w+8ok)2_IWN`~rO|JoUxS}%C`$80N|7~= z(hHOlbLc6MQ^A~23Oz1OlMUaH#HSq#-z6}?x-vfo_>zKLD#|L!sM%EX(MTVisojOI zUQnEc;R;0=JZ%p8V(3gJCLS6)ncz;+Q(R=-g^@CYi0uoGqN`M599e$v8+3DK$&cy???T_f81#s3m1 zma_m+QBkMNbv&t1uuf%(l9davh;n4NGpi{I2hr7 z5$Z5b8h(h7E|j-(c~veG7ARt zun-bScafsXgUS%nNXSq`pHGt^4eyA0P#Lp`OT&@?2JF+HTfT_Tq za`*zREb$k{-bJ}tguA}B&>}&Nl_G$ug4q#4Rz(nBh=NsCS41@Ie!hP{_b+~AMOJ=k zJNCE@hU{;uBWe7vmAAt%i`TSm7!r{7--OS?^Dp=R#rV&sp6_9Yhymyz9eZSsFPI4i z*Po^IA*IgZ>p?8^l*MYLWE8bhxiBbi>qBFENK3#!T`QC-14A6>d;v~uY&`h=c|6aT z;Q#IVuN5^-TO9uv)t&9{b=Jr&NsxAN8~W zj_foX&g~S4R<1_BJhrIab&R*Ie&%@U7B=28rdz4MRQ=5QH^|D}#*;f$97kgP#meW7 zCvO+ZuP{Ne@f4SMx4YaGi;0TuQnfG`R_G4i5nQYc2I{tMsAXE-DHx^UP<_~m3atv` z*5WoO8VhY>sJN}hLs2S*lIOkDBIjqh^dNHJi6ryIu2ZV~T^B!GHq{ zfEfbY%_=vF#I%BSz~kUo|T0w{2-;Lr&p%Xiri!-)bb@x_nWw|s~F z_(DeoHWgxzI8pem=mLNEu~C6kjtW69ug-+t8YcAGnb5mcCiJp&>;mVxnAUaVjGa8n z^DJ^*e{7G(adf*(=p`XATx`%^$4-nObd(!W62=>u&$qeLIf?F+^;$59!&~9HVtO^a zO6Oo`ZpZn46bsIeZp`=mQ0d0SLt|F2&gbqLKCe~15uba&=f2NGb#Ul~vE||i*Y%;xH zXL^4P)BEjA@82rZr=tSa4aak{!X9OI3ayNjz{!C7i^5HdufX)U6F@h#IY8WA-O0jj zHVP!)-O^UUjh0=N`EFs=#WQat05EFC;`6xCuXCffH8=V<Ub8RW*)jpv!WZfu3Fp+UAV<9gcpYiQ@+ z0_}W1pgj}7JPZ$gAYlTy`asao@O_YIKvzF8XnL``B(iLWZUZ~EJP<+91T2(+$VX`s zWZpQ*Vml7)JWSof&F#?1-SH?4?bI9Ju1E{;t&#Y`8xmxZAE_&BK|7BDaG>jmAGqA#%0?%)gtNi{c24-M=z)H?)os$kVC%^ht|3=&3*-ttm>W`h zg)V4iQhJ5(CuGtKW)k}wC!`m_ZDfP|kg_YX119NiL3TwT6$2@|A{$ISDZ3)uu|grc zG{E~k4w40!w%1Hi7||M9}WtDXOJoXGL-_kZr<`r7edS;W5|Umh8+c=aCq z=xb3_dxw3)Ns?&SwOt$cd7hQ$<#JvcSLxLFp(qyF8Nk2AK&A`Y_JP*Vih03ygr-Xj z%r}N9Od&kaP*XAKW6kL&jDCunH?t9j7G&{nFcc^Yb_UIe7=sTea3DzkSys|+lOAu7 zEDNKD!|lB1RWSA&^pY3pL_|^(MKT`iyuj~8>ANuV0YGJwOWatKjLZZps>*D zBF8Nx3*PtN5V>G`+y5L|;<`B3%@d2{uu(KpQH4CJS#mXF}|Enp;PwxO+Ev%nb;+TUg2Sk+G5G>^Vi=VgO$fv#o!0ktK~(D zGt6a8(HoIwEGT5E3}{Yc#*N7(i{Chx!D&_OSzy)Y?QvB*6hgIQ8h?3t^aIAb4_ZQpQjcq6sG3{EPsJ#!uiw0W`TE5>=!e3Pwnb6JzMlRB z_`f3z58u4~>pRRfw?l3RZ(7_3wT8WqSqd;atlG=||)HQ=urZ{zf65PpQoQhjLdXCpMAtI0{GQ9rh*9VgRWBaj)&xjkMDS+Jj z$^i%-+6)3<=!hiLWny7-{mM_g8nyI+rzrXjmv z$o9HCxk%Tfj+>a}#iUp=)GD+#bh%xJ-EK>FS(?GR{dwJS(ynP{ETE2@Y%TNLFn zKRhcZIVVJo^BCGF8UgE>na|GA?_i>f&zuxj#iSw?{T%E%>hgea`1>RD01EfiVh3p` zT7vNltFp6mK(V;0q5~PA7VBFXq6cNTQuUR%0_FKBLa(NB2h$*l$VwdABG(F%0x3!> zWLF1Z5nK2N?XQaQa?o?ae`kZWmLlduAHO=U)nxI3kA8eLs8(JELF2fXTrP%~vSuJ^ zD22t}0oVL!c6vHlH=TYbaGiw8+&66?kbJju!)@=o4TJ z(9C2tWFSaUQ;Fc!q=m`~{PoC~TQuo4h(`UU^dUKb(QCGwpLoA|a#AUqnRMC@9t{kb zmOaKojyfF)R#KR$eh$+LR}BZNR3e*n$7y*^tNF|6+xhGigTg6cy(&36Th5-67rMus z(PoNEzIl0(!$4mNji3rvI9r%VjzgYcYXCE;`$$Q-Rq0;P-dhq01jJhBLV|}e#2G4~ zlm+y>ILD;{c^B4E8T@nwD0xsf!Hvsek~3vy3qTau?SLhK?4#%{=AiLD5TVV0EHKIn z41Sl49YNw;)Z)qrQb?G7y%oJ!Ho-{-C8`)j^IgPZOh=0zscEf#f!N043(YO$lMy}sHFt9vxNfN^qGX_=dY<@~Y`^IO(sfJILT3)$8_ z(Q3zN@5k6RR*aKL5L3pj4D2dCd0=Dcn8mW+H!EqX3ey@-s9FuBUZH(5VxI#!Z<+&D zgyD6ImId~q5QP`;KdKC-feN5$sOu;^0|8xyOQHpvEv9H;z9Eka3xlGq!B8%(&sq^S zi*ekPpAsf7E+}67#f;zX7>+EQ7ZcjOpkn?*7M6=wDa}uTFNF!DqDi?%v`$JUSfR<< zBGr`Rld>93rG*eaRd1Ln@mYDbrpvs%>QoJJcuk~tDBYqmf^<|&-fz1`=vDNF=`m}$ zrn0HXFul!gBH1K~=tk+eY=ZIneHrO7-K@LRhM~5Z)&QD~9l?C2`Hd61f^Jh5(iNkU zO9z=niXgn4Pq;qE3pK;u=?@0opSzV31mHL=bvQ?A8(2X80p4g$Z(+67`M-lT4ip_F z)n0Ms51}rFMGcm^+1>97(I`=u!NebR`wu}YukdDTE7vi=&SxXIn3PKbK6XwH6i6^2 z@Ph*lfyx2US3%jK|duoN!b8v#R}|^4Xw9V6MdMi z^{(X|SGmq8CLrot=nt#_S1Ee9?p7Lh>r|I-S@OcF7l-lIYi~@^+O=l!1!^nLL*~NK zqXp|M)S1rc6P3pF+jferw4f@sy_Ui~lWUH_P?OS1Taem}FPfdTMk)qww!TW@UQQ|# ztX4}WjCel0oOD)IVAcoEIKrqoEp+I%B|;g2D%`klrUpX#3@s)~dCir32KM4?CZcHy zCyhwVLzB1j2u}y~r9LT43YH{R1C%Lwo6xnKHjjCphYAq%M6K&xtpjYPC(#C}#Ik{) zzw&arEGL+e15<4<#Z&BF2_`jAQV^vo2Paq4*f#k94JX7Ne^e|jHqnJT3qX?ZO$Sue zUzk3-zpF>wycTbVc{hz-F`rjc4k{d#=f&)D*#iMhb8TT^(vJeHY+Fq~(yx1q+syOw z{M?i;vT_DC)yZ$ZF&?)1AgcJ9Ek2?Ftki5h?&`}P-;KbZgQoH-NLcv>wdI*tZc*;r z72*2cN+nA-lSB&C#Xn+uqS8o# zmJ8-0vCc7Z>^v{B$pUD2OjREbI@&hPPPcO+B!NOpY(-9wUf=X=n2i1N5SV2Rj%tV%_i7PR2rDh=I7~zzoiDVFsc4@n*Si?X%DA@sW{tGG5xSWwRGq+ z-d25n2W$zNQY|)3IuIJHkt!1q8>?oXa59nX#>~Uh)1~Y?{Vct<6?(Ng+u+xl+iWVZ zc#QctxZ%2{dmU_5zt^1Bpm4mQg>?`Js`L2InD=T3q6%2-AQ(CBey z8(2~$YpQCsRSvCElLV)}>?18!Zub0BFZK!%hz5)VM1g9RSFEVJT;TDo{?g?tJ#hYL zGRywfy}sRbUf&Ir!#JKc@>E6mX@GK;aX&|aD9iWW)4 zlwEQThI+&Max}pcj}@Hq6alMhLJKAfUG#ZSS=_D82&J`()=HZtjpO@bJewC)iZr!W zt8i0VQ2hofR-DWS_0t>GCWmsGi?Dbhpa!jEzL*JrKit)1sv@^YO=4RTDsOV}!%jI+ z$~Sh5ten;%RecNDi*t4j>bT@0Pk9c{*fxy1kt3QowojBFj{3tr5!-O(U@)mv1dS^7 zH5&bTyq^V~GXz0Fi8g8Sa{;F85iN1krExIvSkyf^#>%8Y(!ey?jiwC9EznQ$9^=Sk z#2=dcj{e=>*zk$8s2=JqgZhBw4+pQG{`u(L^XEV&AP!H#3KDWMO0&Q1vmC4>UWiiI z-3&&qRWdsrIc}i|Zs+FR;NTVdnufWUCi)_GIi-ATJ#Gnrl4{sA-6#V)zVQb&IS&mm z70c%8Ra5AQ(XM&DeA7ZbswD_s-z@>&T`uGXh;;8WO7KMS1jCO-@x5n!!kOq>(036H zz7N5Gos*TP7D=+B_`pg7ajL7baKy38pC3&=DL>EoRP6x6OQB zZQ;St3j+*TW}X=mFK%I$7b*nDV4>Iym-ER$vWpNpB|k#Nk4*8Y`SSI%=l^wF?l>n; z22ibUlsh}(%>cL4{ti^N4~Xuy7R;oWj`RQ_( zBz4%`DOhAnmt(FIKe7jgecc#r)C1p?uc+D; zQciNKZVTy(Yo5ar-7A)UTi??aU8|>L<TF#jWa{-kwx?vAjoJwH@wKE{~lvNF{NJp((v$?pO zX#uEzcF_RXY7>svS-1Hobnr&=2W)Fq4q8)}8_;TZ;^d93JgW}eD5q_BS=&hpUL=p= z2pyR}SI)I=KEzV1v+BfS9jxJd;73M$;TzMRj=unB#5&UJJ%4BEh^t9-j&0`}- zwZ_prR8#ejL*(;Ho0WQpbiT_5SADOeI)boPHd$=poR^>F$hs?h^SrrArGA3S^oI{# zW^}dfB13V8ko$fxpbuhx{nhxaV=~HcKI?GIHfLk5Rr2aoa@)=%$r(+@A6Lz1b&KF( z%YjQpoopOcRt}BYRkxop@NI^@C13LG_kY^Va@Jm6&WCpB6>c7kiy%%N&#{vvjmCxV z+IE(uQJj5QaDWZ*-yPenfBzr&zI*@u|6N?{DEj6Zpyq@d4pG@04y}t%n0JlE4tIw` z@fepOu$MOhWCTxn|!NT=C{9u`;cqZSdp zt&b*1qYn^d?Hypjy4D-zjix^qBaVaCFg_NzHJh!KcK$`v;Qh;9JpTXlzh_{vzzU3$ zVKNyG>pA?sm(doy7?SzZyq$!SQR7jJ~G{Qm$k=YO%8|YG@X3< z2i)Cy4)9I+zdR_@*MHv&?&H7R$;H0UXwHCDIlwur0JUDw@2C7HtkypO)XLP}jh^6H zYYXc$gm2xYx(~ixVc~d@8U|c+>L`UE=FFF zXXDKCveXS+$4#Pfj$WAi>koZ#{=cz?rTYup<@{&!zZ-!CaL@mDak*I$k0LvCe9UI! zf)uyoaUS@g<9UAJdcQS(_t)3G+Sh+|SBNkDe(MHnT&HGcQk*S&rh z_P-xC?SKE?{=bV0^MBkR7v6AV8oXgCR)O^5w;tsEweq@)_rHPvBhV!3_J0sL_v`;% zTu*>KX%}`)R>xJT7CQ!g(siS%-#&Pf&WjWieOy2j^CDYz)a_%r1#F~~<)G6sve|5& zV-jIIa7{PzOvjB}({tEP^y;?Uj=?hFJ^qrUpH46udtn@8ex8kj41T6z>f1q3__3dj z-8BeDu@AU<_yHT-guw=U9s5=g-XcHvI)sV9i120t1Hf${90azPgZxMUNq6jw+$0$} zE;%H(;UL(Auy-r?jvXg(lDJ5NJdACyd`3wed0rAk;{a6Xa1FkJU>WTVeTR(ISAWc_jECF8*LGnfm$7ZrZtM`7dv?jBhA>yWhr(+Lv5HZ;NB+kkE& z(QS7t*H#hfR>tRtI?hGmMWZD0!5DF!+)1J!&O*-(VERV>C>yUOa9~D&vKs-NH!<8+ z(^tcrBk1~e5qO>x#!fK`B0tSMC&?o}h@%+hY_SGG*H6qiG~q>{7~6ngxR$2tOm&W^ z9TuT&yRKXKZaA`SFNT+DC)vo!0b@H|i)dg5CRqDsxarjgo9TF-mQx{6VdBLj*UrcO zD0ln<4A7u(^4v{qn3nO{w`;ndYdW!QxX~blxw3MTj z-UDdu8g~rG>!Aw;a-VRK6ouh7FL1!J+Iq(s5{IEP!go~G%`|ANte9y%Hg*AZl>&D2J4~Sp;)Xzw5Eq1p} zU4p8DV32|}#yewOM(0)Ute*iM>Sr{J)z2PPzrrPq=h$A>fl{eYoi@@Go>`ts3A>O) z^~0eq)K87;2JWc(;TUSMlBlq7u&GFK2-PA{3W|&ru3ex3urnnr)(=5rs#Bm*$GtZL z9lq|w{O`T}*C)HSt^Y4B^4{t{-s!LXdlVvs6OLy^Vzku-c+}XrHw>~&FeC2mzwY{V z8~uOq`Y*n!@9n>C<;pojQ3YiHnJ~?{;D!}eXWmL_P?SnPb^Y$Ik9#5ht4WYgxc_5g z|GyN5-Q)i@uHgM-fC9Gd|ESV7`#;L5vTrWav8^8)h2XvZ%e!}d?32U&hK~cUyCMG% z*ng;d`TsVq6Yc+V&oU=up0ffH$5Dt#tP@7)+!ndaEBSwZxjLW7m%#ls?R6XdzZ?I+ z44A(ChtTGp|KG;-`}O}2NID*L9yGAV*G-q@b8^!^|9P?UGzF`xa-a;j4ho~a6#TFkQh3_ z`YHWx@uxte*L85GU`t;LoZF+lDeUOp#?Qh&Rba(x9|VWo~_@T#-thDV-*)a2&v! zus9b^n|<+MPRB)#qNq0j^e_Yh@nOl~NC@%ZdqgtP39g@0XcS2xCLrW3Mv>HH`w@}g zy7rH9Dn+--4x~LsRQ&VLq{mVi=2Je=OcC=JT8D#YF?Wg84KvS?0J;id>tFS!OH~Nh%VpifMr- z6*YrWgs~8$!7fs+7i=Y<;3)Q_auxQBm;`&+N@XLxTVcibgC1F1l$FqMJo56@>T)$Y zes}O9`cQ)%Q0u*V6x4*~F_>zwv}eM~Sda%NFtNmb<09r16$XDJDF|ya^eFyy1W{>X zBe8=;455$l+wrMp_&P-)7W_nDB1Obnm-J&qBn^u}mQi7_D2^4Ninvg6C-EjkRUe{i z2Sn8{MAh*SwVWeJ$t2q)h2e^`R2Y}&!gDeumlH!Y^cOc(#|a(jFswF#<`FmJ?z+~X z0694>=Zj@=c^FnyA1iWitf-@~f}%vsEVY)1?U_VI6xb4%fh>U`sZ&(N8k-etY(vZH zSf2_2%!^1GOJEK=%$6L8n^?)UX{Lc!W2daUZG)Dd3v+DTD;E>#naZ;e-2&$kROOye1%xUroML|)r8}g!x&;k^`bPNbIfjm#13N&M5Mr4B$ zBoYY@sTNAop>h!N$j1aKdnjGDQ*Odd_TeUXz)cRrO&-tGWJW6>N?S{tl|w<6Cu8)tJsNfqr6-wMj~O<;kuL%L%Fq;Y7=O>4>Y|4 zXnGiE`gou@NJTES&bUMQR#~hsijlcb3#$@W=!t<=D^I#so-7ybK=WuHBt42hn_p-rn8>M*W~ol5nXmkDbs z*jZ(;DI-Kgv`(@~@wQL#b_d1VVT!lMQ#|v!$Ut+E>LO=KBs!Nu=`?e>N;3~1fwgE; zGmfAo1#Yqqt)K3tFX@k^FCE2HZb4x(9iZ4g#>@_k^Yc?Q0mmchB1O}h z^h@fWDT4}74xQ1-0NP^A#Gt~P?$ntcrAs{)^OBe`4pemoF(%3?vDliZop9Z<$N0S8 z)Bnp)m8-|v@W*l`MV_d_TcL^!$5B&&%x#k9n!Lg_-e1V-YsCJ?2%$FY|Bb%4|GACp z_iO(%xBwgIxQX51n2z6eaS>E?de*b-!R-EVdHL2S7kLCytj&FBlp=2i586$~CpP1u zq+bMRzIgC%m0#tn_c&NwF3FY7iwAVp+N1pabuiDly8eJwy#7F2Fo{JyORug_?)c{) z&c1p1{mUQz6w@I3#ZQ-5+b9f@|62`3Uqq`sdmjB?H$^pq^%Bv5)};UO$FFd#p<=1{ zaQ1k+{Ga`MU*2t3gRIS|oU7sEgRj2+@V!3|=Se<1r?VL8bjULO=bx7^R>yvp$3vnR z5IrhSZ)eXJU$zrGUp#qIpCQ@g^26fCc#&0y&p%=_`S`_)hxFv(`nbs^;Z=T3$3iZW zn`^92;6)E-RqFL|v2-qV*%aYpziQ6b{4&dnt97)woi0`>b`=rOYVj7C99f0o&xi1X zqD#;wMqYz~_e9CiH{L9XmB{$JiyLyh)KAf*yt&Fda_VQHf|V_kWb|*x>rFP;aFMTD z?ytc^6y<@!>Luo58U1?@CHeVcS=Nh=8;;*zV(~g$H1oZ)zkca9@uqwZ>Y(M5%1`S*Enw6!ESiF zSZ?Wu_LE6F;#2fMwphKSqpWvz!B#nPd)4Tp=*Xs+y*JV8rzi-AN$*$Xy;pU7-`ZA{ zrBVO-o4nXw*+FuFgX!fkatYPiAeHvron$ghC7ovY@>w~4j`5bjQpmjaKdCQ}ttca& zH#h$r>~QfeGVk*4RcXif7dmPEVfJBJ#h>zr&;PU@#Op%a?TXC%onOX3Uj>1?76K}h z+Kz#3qsLGc=uq^v_HvX^GKpy{gfqkxO{}bgciKEwgq1g{Y6x*CYppuL^>eq6k*s9( z5)(h(rfzE|?l&PJZEZ-wPOuN%O)q!VX7osBL{l1!h81O^nh+{UNod{)uAlEkRlxN} zqAF~!{fG*ztgS_-A*-M8??q1TSpFA${4C? zu8N&FTSKKfRjvdGSBFC>%@fuNn@?^rdYJ#cNkJEfb0JMsh7d3jSG*ToKj&_bH5FTd z4%ie+Dxq!Y&mFhe1Z7HtFCk;=&OoTxgk@fALTWywzp$<-V`d^wlZ4#TtUWEMI$BF~ z9N)(#7p0B0ld-fBm!h<)BszAdno^SyrYX%v6-1y_EUKYaM?iL)q5cq)L3JnXtuO9R z<7{j~q*OMwIEGLsmL2E1!RE2tXAOoorp(84h1R~H&iVBtJ97rG%GC*rFdddOKd)v6 z55w!mO8@>=qsOiE19Ak(%WYlGo)P@QlD^Og3hYrE(?ba{5DHDqZP~N(WE67Q3={}> zfXYOhq#O|ehtg0Q3>mt06W_Ys^fW&8riEdtS=3@-3B7f&e!7=@*kJGk@o+*6o+2N1 zF<5IJdubiJt+#jCA53ArjUq*?MJ*$8Yu9ohvPtYk+r&^}ov@3q3%lhdHuNv! zY8mV{`Ptuo`#6)In)RVf$)MqUj-ftQGd|Q>4K#d@dihlQ?V7PU7fac2JshT`X}Fxj zBr58py!E{j)3`yM5O=J!)@GIYc2FJGq3Y2-X598RASvQm@>6Uvs5Re)HSxQrqR6`poYDp!GIw=RHPIjx|`y22cr-pMJSU9#F zfIM4=U2L&Uk%CN^ai`tGR@WiL0+TNzWKKkBK#`t~%`I)13yI-WBO(qeXw(24J30z7 zC)9aIv@=YEg2~E1>LwmECF-q6E&cn&xxc<#b^M5|U52oTJ#Mc)VK)w}K7C1kqU%%z z6pHMreemGy2zGd7~udI(WGZUfrgIwF?%_2AAAu)vR8RrDf&^ z-8HmkxjaY_r8@^lwijV_E4%#r^2LL4fcS4rNoE+chl}OI$D?J1rPP7KXiYdQ4!~Yz zUEW-e6c!fadIdGBiNU`>*=pp?eW0i}l=RVX5fz7{Mby8&>lM+gt`1X&U=hg2gC&0F zmygJU!{fol$`e<`4_n@>K5b)xvwMHr66e-6@H?=q-08eGgphsuuW}9KI=+Df%9B!T z?@K;occm-ChYt5<`_XT{L%+c;IG{hd?Q|&eckEHS3!Qfcob;u`9ol;GoA1w8d2t9n z!SwnQ*}d7`olox&Lg`C~`?K}rH`Slr2$_qloxnv5CG3a}@~KN^>|fU+i(v15MR~5W z_r_>wlrF5WUUw>vk8k$!1P1wdv&z1-}UYcf0(UMf_up!D~05 zExk4IS9zC`O39GE1&QbS634R@N-5Y>t6#$pMs&Hkq}5=yX-N!j^vlU&CRs&y`@5v9 zrp0?@5)DPP!-zBC3Jw8Nx|uyJ@RcN03rb~SJr4f zL%G};Cxwh&MZ(17tes8|G%-j`8}`ly@6tVMg|#!(_&SkSR2&_zAq3US8OyZ8T!!uf ztpyq*)eHI8&HE2Ogc5#CjaO)Ua%=H z2aGSOvF3TV^@G;E4Rt|hIdm7qANPu%;b499ZhEKht!u>pGceur|H=W_{rSJQa+Nlb z6$P}NzWbZ&pHRu4MGw{lQXOgLmGRQhL9*O>9D9TU>C(h!Im@i}_|Ed?;v)KS*3E04 zzx9iYp&V6$0)fCmPIwPVt{G+y-X?;pLTFH%Ifl8NMX|_NS3?;lxzpaI!lpdcyl@38 zvIHqDl@z{5jHY)}M~(vuW<(|mk=Vp>g-_gOj`alOD*vCG1quhlAMP_*fKHTPR_OxA@#^6^~Bh2}Lj$(+o12Z_o! zoqNtw=d5-vVB-Wd;Tsm_(JqCJ^2rRSKI?HOZ57s*+TsDP}9BDK>LLQQ#Na z_A``QQJ^%Vyg(|-l+`LVCdr)l%!wp7(hTJG0f~LNvzNR{y-89!IVS;ba?A4~Pngiw zWft3cGt-;ZAaIJ53l7qImExd@BA3j0=CsO1Arn?4n;BKxm4-3{tQSBc5IF*=2So}< z6wAGFi8EM2liB?V3%{Rh%lS|K-2x^2iv>Xzqc6Yv%UKygAmb1;UvKW*;~L@r#7esS zAB1N2=fB*_^~c!%N#tBobKH>fb|>!KcAdBzz0HX`rVKwu-)$%E23k(s#~NlDPwcd; zZ_GMyr?;A{*S>jhalvV;eJeP+`rTQ2ZVd6&G;S}pbW*tjO&^M1pASxRZGI+~w)wsg z+tSRfhkf%2j>(=xwaIdQ%)r&n+qZu8;jkJgeo_sn)OWNgF)y3{kfJ3!zQIZHyE^Pk z!A;-R2aN{DTQHS}M_gRIJ?x8*H&-gVmWJ71@-{*B43sup#B7oOX?WW9Pqt>iK^G#q_=Zms`2M#NG?yR9oN(z26-1*zWlU(K0OO?V0+korlBk zIL2Mg)Qt9Da;xr-aQ~Rs4*yS$H@f-g(Gtx$--AQJ82+WAfBxI8T!Z-U`Q{G} zRfmv2nC>LZa|bh7T6=EK1W-2*tJVK9rIX%m)dI<|ViNyW75iO{MO*kkN-pjBzgMqb zSMz@!d?px|8Md3&dCoJNGbWhMSX$6D$2{Gb8yvyEQ2q5kFu?Em|E*kqjQKwz=V}I} zA?0|BhOm8JP+HcW7Zh&Wv>+y=AK~uwte{X^CIt^^tw|;eg(A=L&F^nysxWMh0opac z4&CZDnZ5gLzdbXY!^xXwwkX@T>WJnbhE}h}qlBxqvZ;3f#)-ljCygusP-@_IVkiEf zkw(at3V(oT9@f9rZ9P8GEOfo0S9~l2y1=i%2Y1~43y^=~aOf8u7bqaO^QHq3K=K$w z6LF38e3;rvdX%$hrs#*t!H`RPLb;sbN#{PzisEgFN?+b(E0Cle|`SDG{RY#2`&{RO8Yd^X)dw< zJO^o$Z1=pt{q^au+vxuh{BteLrvGnsum9b~)y)5N&i)R)-#gm9-ScHST5$+sLz#ZD zeD5z7+5G1#vf3|aizd$Xl({7}18!!#Iw0<(*`@9&*j=d9hw(}WNosRLhkXj0Bux8^ zsa%oSY?`uN6HZ#qG|Z$`GtR_FZN((D6{#-(s|Z;pM8XSBbG@lS!Kz>d%EJH8-m`YM zZ7ccRzXGdvE4iU0KE#(Dd+W$bta}|hM^c)0_wLOBNzi6WiCU7f?S!)blR8%2EbruFc^RX%zczK48>Gz(@?B+l-QWD-Ur6EyJsV11QR}8G8$4%kd=p?XLn`lz!N^0^41$bLQH7OF1t>FsXqWx|D$g8=66N&9p58 z^rQ~Pj>&xIK0U6(bYmzTRaMN+*ZSq4)t+C1o&7~8fbJjvnrcGceEj43Pq)6G|M@(> z_Rl-ympJnIz9b=|OGd&Zj+5(XazUbuFbS`S`?C>gI_DAGY7H`1IE~Iyp=}pS7XK!?OiRQX?Q&)8r_xX>bag?VK zxuO$t!dT{C0{knMjzM|gwm;N<$x0#o{2H{!4nPM46hz`j{A)uIorJrH@xElFf!(bQWs%x0ZzW(f z7JX)<$RgIUDbh5TRN@U^Unb+l zzC_s$31{g98fCmtkO0{fZ1No*)rFLNL2AHm3nH#h_9XkMms~O49l>xZK^zI>!gS7B znFYEWu=kjx88i$erj-t*ywCVyDvy8x=+K5OF87oR;7N}R&!3Op91VJ;KP0aP=fC!k zd&i`9G=%q>Lf-U8C+Dw61Rw@SXQSWA`Ezn~_B;7!|Lj;Hz29C9dcz?(ACUgbSEv0R zr1j6br>~FuXD@chGbng=4)Wax!G>B#=e$K(SHCyJ+Ftes-4l2{de%SfkA7Fk^Zw`z zD}4^N9+6i^gHgZx`t)c(UcDZ?Iv@6+{o@^|_pE>Rd;snAUiQvLEoc|gNbgs8A;XiS z(^K9SI=h|^IELNxSHBPXFHT0}c0e`IX-%M^rFX$ zokKMP4kz(@bJF8U(BKjL*B$lG&#)ui^Rv+aUKQx)U{n@;(;xN}ax~}<0ax;TaE|pO zNukI&uLTO8^+YvD?nSNu2)@4__U6bO_l{1XvLP0(0wYU*;ldt}igZ0#SM89W+dJWG z;)~&!TwKKL*C>m;D30=*25$JDd+&C4KI{-YG>KkM5NxdnPOE7sfZW&A_mtZj1FD_WR3?`H3ji&y=j}4hxAO(pW03#vEdRtM} zsPA222V+*>JvcbX(;1U-kP4W~C}0f{?MPzX$}W>@nN;n25OmSL!azw$#()N`l#PKe zGBp9iiv{(f+zRv*_(w)&0wvN=`MZea)O2>A$a-7T2@ecKJ`xrK0~WBYpjKd8=|BbB z1=LD}=Y4n>wwem)Vij{_cVH&SL5Gr%0@nLGA9v=GChX!NRKy)*QNEDFIR+hT1reIF z2?$XREN&I&+!s24!EhiCWH@K(oTqy-ecmmRu-Lkg^Ha!*8!`TSKLU*UmyM!uqllV? zauZ@DCuNC}l*aDv9F|I0nx^-{qFl#MIsQ+y zc`UDJk<$_GC?I19e_Fx#5~2w4MF`~!fkyqOA6!_+@6R(pE&!q3s?-%y$Wj8B2*DvV5LGmJhgfmFtY2xG>dmqc-uq&(;G>>E)a{vXhbG`Zdp zobzWXe(WD4*OG;JFG>9gl-u7C<#0BK#Ej4o*>i_yz@Z{}}b%oR-C;?3;lNc<(2}27)BEyr$H1{uoULqD9 zIeI>VX^77c2;A`Lq@EL`+#JSZFtxDVqSKdA91H}?h1gBK#H;G`)p^ zCSGyYl$4h&S?29yjRLQk!MmZR2mBFyKYH=&e z?&^_JWlimWqTt^LC@eJ;mfHW;%E5s|;@swTClVUk+L;e2%$GbFo}9lCOj#gpm6$-= z3Z*{_X$xAdAa0qpL|#Gkt%+Mvj4LH8TN15I5CCb)xiRm5ALobXEgT#YmyJcPVAAb%3oqj1^aV>)kc6AMQb!k#f=;&@+tTz~oYPjd#!Z(d zB2 z>w20V=+rj6z(Mcodwo6}OZa@~>&`!Ydp;kQ397}>1Jw&{&@M=3Qw=l~9t;-f_j%JG zu0UDt^0Ah()>q-7Vhh^p+B$SUvxkbI2@e(9_*%bafB$X!yTkt{L9Ox5|&Ad{wINrw_yz_9JIP-=u9G1}l{)|~p3BoqKwh3=_`_@1sLN#_|Jkl(D_4lHZ!IkD6eLOlgiA8kKtby#se%Mi@5oP!*nt zF5!-o_cxFZL~>i5A1S;+U-uLSwZNiO~(nnrlv8k=>~?@?7%`l40YY_ znEG8iNxOAMM+P`2r3SzA0Zib>Fqar)`n5S;0kD!L3U#4VQqX ze~iJ3ZHn#gN2oDO=>-Z(6J3p(B7VRlREuK8M{yH*^9U72Ao?igCCI@@h{2t3uL?Hc zR`uOr{W)<*K-)XvMo2Q5Tj^?L+)n6Ko-(%i(A|LIDZ>-EpTH`K3~H}WFTGr{(%FpB z)W2+tKabkwg_=JR|3&QX?u8r|o8eE|D+?EcYD<;9vW{jJ1EsXDxk^Ycgk4Vypx30gd0@Aru7?$-!S zBig)-f`Co%vWr;})J7a*7cqrYa;j+<vWccaih@xytB+j`1Is9mju5)qG8NltS=GlbLhFhRU<6}W zb`%T|T7B$dcz8o`)RxObMVg9ZbBOYhx8f=oT$^BsdkgT>5E_Gy;`z0fUIdPk{si45 z#RtPq5&!dXWFc6W+p%n|N z>uQbx$tGta&|X(8t>qBS1?DIgcC4$p9l*mv`M{9kwqiq5L|36w#YPTwbuKl)Pe=yB z0BeC>)yFPIMYa_enu3CyG!|5+tIz;GVjb|T0r_-jQU?YD@iDSFG|9zNL%h3qGd3^+ zB-Z7zo^kh;cgVCkQ#!oQ@Zxd~0T6T&GITC#rp})cAs8VVHi6d|*z02LPN^0Gi74KmIaiK}1PoOy7&Gg*{V+5w-ha<8Gm|#>YkIPwDc3C5LGP5O1TM2Z%>IPsJZO4Yzq$@PPwzLZJ_d@ZZ7Z zZH{!feKFR;{*%17>VA{G;-*4iX*pr}-haK%4`%6P& By}$@u>Qc*eO;guG*Rm{X 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

    -p^Rnr_LZ4j~#>HlSETyBVo&ndsR`-^=GebiO* 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 N8XDb?~(R>)+9(%n65ygCsaE3(x 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�fMP=}iiD(o6t*y+RmY++?sBv;LI#1@4X)E&ZBFHc$^m$Y9 z1jE>&c=~ecvw4-P;Dthabi5r*U~wGHQK5~bTm95OXo~+WE8Q?lRDnkgc=;GJR#BTF z-KA|qg;}MFMGf;oTYXk*$^#b>59=M8T?EBeK6yVrK8Op%|3Xf*z&Lz58b5u$v96#+ z?WhdZ!9g>?x2kJ$J>O7S(8DcNR4Wprvt6i3=+3Hsz^u=@t0;Fk)Sv!%wNyo|SnZx2 zf)XyDch>lQGJXa-413bKcKH+2<|YR%(ey;_IDUjyN)^^3~}Nw?H;6}$t z-;EBlbx%TaWnA`VGtnHnJ>GF<)jhscC(a>YyoZWXD$Jo^AVq0K89BkH4#)@O1B|lZ z3~=Ziy^#f@>JVNEE)cC35j?EX`VfI4jgvx>Qz8&x%~}x5m>F`Z8AwSdolo(ZwZhs% zkoa0Rr&t}+lnH_Da>i2app>qsA@qPTQXO&w!UC13DCl?wzY1i1Zk6SSkOH9�kR0 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

    mP-Engnh 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%0DN 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

    XaYO1ojVFqD^$njN){#-2ZO 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 z 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 TYBp&fc{B|xr^ZIh1d5ZuD3_asW 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�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