@mytechtoday/augment-extensions 0.7.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/AGENTS.md +265 -232
  2. package/README.md +956 -771
  3. package/augment-extensions/coding-standards/bash/README.md +196 -196
  4. package/augment-extensions/coding-standards/bash/module.json +163 -163
  5. package/augment-extensions/coding-standards/bash/rules/naming-conventions.md +336 -336
  6. package/augment-extensions/coding-standards/bash/rules/universal-standards.md +289 -289
  7. package/augment-extensions/coding-standards/css/README.md +40 -40
  8. package/augment-extensions/coding-standards/css/examples/css-examples.css +550 -550
  9. package/augment-extensions/coding-standards/css/module.json +44 -44
  10. package/augment-extensions/coding-standards/css/rules/css-modern-features.md +448 -448
  11. package/augment-extensions/coding-standards/css/rules/css-standards.md +492 -492
  12. package/augment-extensions/coding-standards/html/README.md +40 -40
  13. package/augment-extensions/coding-standards/html/examples/html-examples.html +267 -267
  14. package/augment-extensions/coding-standards/html/examples/responsive-layout.html +505 -505
  15. package/augment-extensions/coding-standards/html/module.json +44 -44
  16. package/augment-extensions/coding-standards/html/rules/html-standards.md +349 -349
  17. package/augment-extensions/coding-standards/html-css-js/README.md +194 -194
  18. package/augment-extensions/coding-standards/html-css-js/examples/async-examples.js +487 -487
  19. package/augment-extensions/coding-standards/html-css-js/examples/css-examples.css +550 -550
  20. package/augment-extensions/coding-standards/html-css-js/examples/dom-examples.js +667 -667
  21. package/augment-extensions/coding-standards/html-css-js/examples/html-examples.html +267 -267
  22. package/augment-extensions/coding-standards/html-css-js/examples/javascript-examples.js +612 -612
  23. package/augment-extensions/coding-standards/html-css-js/examples/responsive-layout.html +505 -505
  24. package/augment-extensions/coding-standards/html-css-js/module.json +48 -48
  25. package/augment-extensions/coding-standards/html-css-js/rules/async-patterns.md +515 -515
  26. package/augment-extensions/coding-standards/html-css-js/rules/css-modern-features.md +448 -448
  27. package/augment-extensions/coding-standards/html-css-js/rules/css-standards.md +492 -492
  28. package/augment-extensions/coding-standards/html-css-js/rules/dom-manipulation.md +439 -439
  29. package/augment-extensions/coding-standards/html-css-js/rules/html-standards.md +349 -349
  30. package/augment-extensions/coding-standards/html-css-js/rules/javascript-standards.md +486 -486
  31. package/augment-extensions/coding-standards/html-css-js/rules/performance.md +463 -463
  32. package/augment-extensions/coding-standards/html-css-js/rules/tooling.md +543 -543
  33. package/augment-extensions/coding-standards/js/README.md +46 -46
  34. package/augment-extensions/coding-standards/js/examples/async-examples.js +487 -487
  35. package/augment-extensions/coding-standards/js/examples/dom-examples.js +667 -667
  36. package/augment-extensions/coding-standards/js/examples/javascript-examples.js +612 -612
  37. package/augment-extensions/coding-standards/js/module.json +49 -49
  38. package/augment-extensions/coding-standards/js/rules/async-patterns.md +515 -515
  39. package/augment-extensions/coding-standards/js/rules/dom-manipulation.md +439 -439
  40. package/augment-extensions/coding-standards/js/rules/javascript-standards.md +486 -486
  41. package/augment-extensions/coding-standards/js/rules/performance.md +463 -463
  42. package/augment-extensions/coding-standards/js/rules/tooling.md +543 -543
  43. package/augment-extensions/coding-standards/php/README.md +248 -248
  44. package/augment-extensions/coding-standards/php/examples/api-endpoint-example.php +204 -204
  45. package/augment-extensions/coding-standards/php/examples/cli-command-example.php +206 -206
  46. package/augment-extensions/coding-standards/php/examples/legacy-refactoring-example.php +234 -234
  47. package/augment-extensions/coding-standards/php/examples/web-application-example.php +211 -211
  48. package/augment-extensions/coding-standards/php/examples/woocommerce-extension-example.php +215 -215
  49. package/augment-extensions/coding-standards/php/examples/wordpress-plugin-example.php +189 -189
  50. package/augment-extensions/coding-standards/php/module.json +166 -166
  51. package/augment-extensions/coding-standards/php/rules/api-development.md +480 -480
  52. package/augment-extensions/coding-standards/php/rules/category-configuration.md +332 -332
  53. package/augment-extensions/coding-standards/php/rules/cli-tools.md +472 -472
  54. package/augment-extensions/coding-standards/php/rules/cms-integration.md +561 -561
  55. package/augment-extensions/coding-standards/php/rules/code-quality.md +402 -402
  56. package/augment-extensions/coding-standards/php/rules/documentation.md +425 -425
  57. package/augment-extensions/coding-standards/php/rules/ecommerce.md +627 -627
  58. package/augment-extensions/coding-standards/php/rules/error-handling.md +336 -336
  59. package/augment-extensions/coding-standards/php/rules/legacy-migration.md +677 -677
  60. package/augment-extensions/coding-standards/php/rules/naming-conventions.md +279 -279
  61. package/augment-extensions/coding-standards/php/rules/performance.md +392 -392
  62. package/augment-extensions/coding-standards/php/rules/psr-standards.md +186 -186
  63. package/augment-extensions/coding-standards/php/rules/security.md +358 -358
  64. package/augment-extensions/coding-standards/php/rules/testing.md +403 -403
  65. package/augment-extensions/coding-standards/php/rules/type-declarations.md +331 -331
  66. package/augment-extensions/coding-standards/php/rules/web-applications.md +426 -426
  67. package/augment-extensions/coding-standards/powershell/README.md +154 -154
  68. package/augment-extensions/coding-standards/powershell/examples/admin-example.ps1 +272 -272
  69. package/augment-extensions/coding-standards/powershell/examples/automation-example.ps1 +173 -173
  70. package/augment-extensions/coding-standards/powershell/examples/cloud-example.ps1 +243 -243
  71. package/augment-extensions/coding-standards/powershell/examples/cross-platform-example.ps1 +297 -297
  72. package/augment-extensions/coding-standards/powershell/examples/dsc-example.ps1 +224 -224
  73. package/augment-extensions/coding-standards/powershell/examples/legacy-migration-example.ps1 +340 -340
  74. package/augment-extensions/coding-standards/powershell/examples/module-example.psm1 +255 -255
  75. package/augment-extensions/coding-standards/powershell/module.json +165 -165
  76. package/augment-extensions/coding-standards/powershell/rules/administrative-tools.md +439 -439
  77. package/augment-extensions/coding-standards/powershell/rules/automation-scripts.md +240 -240
  78. package/augment-extensions/coding-standards/powershell/rules/cloud-orchestration.md +384 -384
  79. package/augment-extensions/coding-standards/powershell/rules/configuration-schema.md +383 -383
  80. package/augment-extensions/coding-standards/powershell/rules/cross-platform-scripts.md +482 -482
  81. package/augment-extensions/coding-standards/powershell/rules/dsc-configurations.md +296 -296
  82. package/augment-extensions/coding-standards/powershell/rules/error-handling.md +314 -314
  83. package/augment-extensions/coding-standards/powershell/rules/legacy-migrations.md +466 -466
  84. package/augment-extensions/coding-standards/powershell/rules/modules-functions.md +244 -244
  85. package/augment-extensions/coding-standards/powershell/rules/naming-conventions.md +266 -266
  86. package/augment-extensions/coding-standards/powershell/rules/performance-optimization.md +209 -209
  87. package/augment-extensions/coding-standards/powershell/rules/security-practices.md +314 -314
  88. package/augment-extensions/coding-standards/powershell/rules/testing-guidelines.md +268 -268
  89. package/augment-extensions/coding-standards/powershell/rules/universal-standards.md +197 -197
  90. package/augment-extensions/coding-standards/python/README.md +48 -48
  91. package/augment-extensions/coding-standards/python/examples/best-practices.py +373 -373
  92. package/augment-extensions/coding-standards/python/module.json +30 -30
  93. package/augment-extensions/coding-standards/python/rules/async-patterns.md +884 -884
  94. package/augment-extensions/coding-standards/python/rules/best-practices.md +232 -232
  95. package/augment-extensions/coding-standards/python/rules/code-organization.md +220 -220
  96. package/augment-extensions/coding-standards/python/rules/documentation.md +831 -831
  97. package/augment-extensions/coding-standards/python/rules/error-handling.md +1008 -1008
  98. package/augment-extensions/coding-standards/python/rules/naming-conventions.md +172 -172
  99. package/augment-extensions/coding-standards/python/rules/testing.md +409 -409
  100. package/augment-extensions/coding-standards/python/rules/tooling.md +446 -446
  101. package/augment-extensions/coding-standards/python/rules/type-hints.md +253 -253
  102. package/augment-extensions/coding-standards/react/README.md +45 -45
  103. package/augment-extensions/coding-standards/react/module.json +27 -27
  104. package/augment-extensions/coding-standards/react/rules/component-patterns.md +214 -214
  105. package/augment-extensions/coding-standards/react/rules/hooks-best-practices.md +235 -235
  106. package/augment-extensions/coding-standards/react/rules/performance.md +300 -300
  107. package/augment-extensions/coding-standards/react/rules/state-management.md +265 -265
  108. package/augment-extensions/coding-standards/react/rules/typescript-react.md +271 -271
  109. package/augment-extensions/coding-standards/typescript/README.md +45 -45
  110. package/augment-extensions/coding-standards/typescript/module.json +27 -27
  111. package/augment-extensions/coding-standards/typescript/rules/naming-conventions.md +225 -225
  112. package/augment-extensions/collections/html-css-js/README.md +82 -82
  113. package/augment-extensions/collections/html-css-js/collection.json +41 -41
  114. package/augment-extensions/domain-rules/api-design/README.md +41 -41
  115. package/augment-extensions/domain-rules/api-design/module.json +27 -27
  116. package/augment-extensions/domain-rules/api-design/rules/authentication.md +263 -263
  117. package/augment-extensions/domain-rules/api-design/rules/documentation.md +395 -395
  118. package/augment-extensions/domain-rules/api-design/rules/error-handling.md +290 -290
  119. package/augment-extensions/domain-rules/api-design/rules/graphql-api.md +313 -313
  120. package/augment-extensions/domain-rules/api-design/rules/rest-api.md +214 -214
  121. package/augment-extensions/domain-rules/api-design/rules/versioning.md +268 -268
  122. package/augment-extensions/domain-rules/database/README.md +161 -161
  123. package/augment-extensions/domain-rules/database/examples/flat-database-example.md +793 -793
  124. package/augment-extensions/domain-rules/database/examples/hybrid-database-example.md +1132 -1132
  125. package/augment-extensions/domain-rules/database/examples/nosql-document-example.md +868 -868
  126. package/augment-extensions/domain-rules/database/examples/nosql-graph-example.md +805 -805
  127. package/augment-extensions/domain-rules/database/examples/relational-schema-example.md +621 -621
  128. package/augment-extensions/domain-rules/database/examples/vector-database-example.md +965 -965
  129. package/augment-extensions/domain-rules/database/module.json +28 -28
  130. package/augment-extensions/domain-rules/database/rules/flat-databases.md +624 -624
  131. package/augment-extensions/domain-rules/database/rules/nosql-databases.md +588 -588
  132. package/augment-extensions/domain-rules/database/rules/nosql-document-stores.md +856 -856
  133. package/augment-extensions/domain-rules/database/rules/nosql-graph-databases.md +778 -778
  134. package/augment-extensions/domain-rules/database/rules/nosql-key-value-stores.md +963 -963
  135. package/augment-extensions/domain-rules/database/rules/performance-optimization.md +1076 -1076
  136. package/augment-extensions/domain-rules/database/rules/relational-databases.md +697 -697
  137. package/augment-extensions/domain-rules/database/rules/relational-indexing.md +671 -671
  138. package/augment-extensions/domain-rules/database/rules/relational-query-optimization.md +607 -607
  139. package/augment-extensions/domain-rules/database/rules/relational-schema-design.md +907 -907
  140. package/augment-extensions/domain-rules/database/rules/relational-transactions.md +783 -783
  141. package/augment-extensions/domain-rules/database/rules/security-standards.md +980 -980
  142. package/augment-extensions/domain-rules/database/rules/universal-best-practices.md +485 -485
  143. package/augment-extensions/domain-rules/database/rules/vector-databases.md +521 -521
  144. package/augment-extensions/domain-rules/database/rules/vector-embeddings.md +858 -858
  145. package/augment-extensions/domain-rules/database/rules/vector-indexing.md +934 -934
  146. package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/README.md +23 -23
  147. package/augment-extensions/domain-rules/design/color/themes/catppuccin-latte/module.json +26 -26
  148. package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/README.md +23 -23
  149. package/augment-extensions/domain-rules/design/color/themes/catppuccin-mocha/module.json +26 -26
  150. package/augment-extensions/domain-rules/design/color/themes/dracula/README.md +23 -23
  151. package/augment-extensions/domain-rules/design/color/themes/dracula/module.json +26 -26
  152. package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/README.md +23 -23
  153. package/augment-extensions/domain-rules/design/color/themes/gruvbox-dark/module.json +26 -26
  154. package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/README.md +23 -23
  155. package/augment-extensions/domain-rules/design/color/themes/gruvbox-light/module.json +26 -26
  156. package/augment-extensions/domain-rules/design/color/themes/high-contrast/README.md +27 -27
  157. package/augment-extensions/domain-rules/design/color/themes/high-contrast/module.json +26 -26
  158. package/augment-extensions/domain-rules/design/color/themes/monokai/README.md +23 -23
  159. package/augment-extensions/domain-rules/design/color/themes/monokai/module.json +26 -26
  160. package/augment-extensions/domain-rules/design/color/themes/nord/README.md +23 -23
  161. package/augment-extensions/domain-rules/design/color/themes/nord/module.json +26 -26
  162. package/augment-extensions/domain-rules/design/color/themes/one-dark/README.md +23 -23
  163. package/augment-extensions/domain-rules/design/color/themes/one-dark/module.json +26 -26
  164. package/augment-extensions/domain-rules/design/color/themes/one-light/README.md +23 -23
  165. package/augment-extensions/domain-rules/design/color/themes/one-light/module.json +26 -26
  166. package/augment-extensions/domain-rules/design/color/themes/solarized-dark/README.md +23 -23
  167. package/augment-extensions/domain-rules/design/color/themes/solarized-dark/module.json +26 -26
  168. package/augment-extensions/domain-rules/design/color/themes/solarized-light/README.md +23 -23
  169. package/augment-extensions/domain-rules/design/color/themes/solarized-light/module.json +26 -26
  170. package/augment-extensions/domain-rules/design/color/themes/tokyo-night/README.md +23 -23
  171. package/augment-extensions/domain-rules/design/color/themes/tokyo-night/module.json +26 -26
  172. package/augment-extensions/domain-rules/mcp/README.md +150 -150
  173. package/augment-extensions/domain-rules/mcp/examples/compressed-example.md +522 -522
  174. package/augment-extensions/domain-rules/mcp/examples/graph-augmented-example.md +520 -520
  175. package/augment-extensions/domain-rules/mcp/examples/hybrid-example.md +570 -570
  176. package/augment-extensions/domain-rules/mcp/examples/state-based-example.md +427 -427
  177. package/augment-extensions/domain-rules/mcp/examples/token-based-example.md +435 -435
  178. package/augment-extensions/domain-rules/mcp/examples/vector-based-example.md +502 -502
  179. package/augment-extensions/domain-rules/mcp/module.json +49 -49
  180. package/augment-extensions/domain-rules/mcp/rules/compressed-mcp.md +595 -595
  181. package/augment-extensions/domain-rules/mcp/rules/configuration.md +345 -345
  182. package/augment-extensions/domain-rules/mcp/rules/graph-augmented-mcp.md +687 -687
  183. package/augment-extensions/domain-rules/mcp/rules/hybrid-mcp.md +636 -636
  184. package/augment-extensions/domain-rules/mcp/rules/state-based-mcp.md +484 -484
  185. package/augment-extensions/domain-rules/mcp/rules/testing-validation.md +360 -360
  186. package/augment-extensions/domain-rules/mcp/rules/token-based-mcp.md +393 -393
  187. package/augment-extensions/domain-rules/mcp/rules/universal-rules.md +194 -194
  188. package/augment-extensions/domain-rules/mcp/rules/vector-based-mcp.md +625 -625
  189. package/augment-extensions/domain-rules/security/README.md +41 -41
  190. package/augment-extensions/domain-rules/security/module.json +28 -28
  191. package/augment-extensions/domain-rules/security/rules/authentication-security.md +361 -361
  192. package/augment-extensions/domain-rules/security/rules/encryption.md +208 -208
  193. package/augment-extensions/domain-rules/security/rules/input-validation.md +294 -294
  194. package/augment-extensions/domain-rules/security/rules/owasp-top-10.md +339 -339
  195. package/augment-extensions/domain-rules/security/rules/secure-coding.md +293 -293
  196. package/augment-extensions/domain-rules/security/rules/web-security.md +268 -268
  197. package/augment-extensions/domain-rules/seo-sales-marketing/ANNOUNCEMENT.md +143 -0
  198. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/README.md +140 -136
  199. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/SCHEMA-VALIDATION-REPORT.md +216 -216
  200. package/augment-extensions/domain-rules/seo-sales-marketing/TEST-VALIDATION.md +129 -0
  201. package/augment-extensions/domain-rules/seo-sales-marketing/USAGE-GUIDES.md +254 -0
  202. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/brand-kit-example.yaml +292 -292
  203. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/campaign-brief-example.yaml +389 -389
  204. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/content-calendar-example.yaml +643 -643
  205. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/email-newsletter-example.md +376 -376
  206. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/landing-page-example.md +934 -934
  207. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/ppc-ad-copy-example.md +301 -301
  208. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/seo-blog-post-example.md +347 -347
  209. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/examples/social-media-campaign-example.md +606 -606
  210. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/module.json +50 -50
  211. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/affiliate-influencer-marketing.md +593 -593
  212. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/asset-management.md +418 -418
  213. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/brand-consistency.md +210 -210
  214. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/content-marketing.md +337 -337
  215. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/conversion-optimization.md +455 -455
  216. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/direct-sales.md +499 -499
  217. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/email-marketing.md +439 -439
  218. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/legal-compliance.md +227 -227
  219. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/ppc-advertising.md +569 -569
  220. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/seo-optimization.md +470 -470
  221. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/social-media-marketing.md +414 -414
  222. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/rules/universal-marketing.md +177 -177
  223. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/asset-inventory.schema.json +247 -247
  224. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/brand-kit.schema.json +326 -326
  225. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/campaign-brief.schema.json +342 -342
  226. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/color-palette.schema.json +223 -223
  227. package/augment-extensions/domain-rules/{marketing-standards/seo-sales-marketing → seo-sales-marketing}/schemas/content-template.schema.json +383 -383
  228. package/augment-extensions/domain-rules/wordpress/README.md +163 -163
  229. package/augment-extensions/domain-rules/wordpress/module.json +32 -32
  230. package/augment-extensions/domain-rules/wordpress/rules/coding-standards.md +617 -617
  231. package/augment-extensions/domain-rules/wordpress/rules/directory-structure.md +270 -270
  232. package/augment-extensions/domain-rules/wordpress/rules/file-patterns.md +423 -423
  233. package/augment-extensions/domain-rules/wordpress/rules/gutenberg-blocks.md +493 -493
  234. package/augment-extensions/domain-rules/wordpress/rules/performance.md +568 -568
  235. package/augment-extensions/domain-rules/wordpress/rules/plugin-development.md +510 -510
  236. package/augment-extensions/domain-rules/wordpress/rules/project-detection.md +251 -251
  237. package/augment-extensions/domain-rules/wordpress/rules/rest-api.md +501 -501
  238. package/augment-extensions/domain-rules/wordpress/rules/security.md +564 -564
  239. package/augment-extensions/domain-rules/wordpress/rules/theme-development.md +388 -388
  240. package/augment-extensions/domain-rules/wordpress/rules/woocommerce.md +441 -441
  241. package/augment-extensions/domain-rules/wordpress-plugin/README.md +139 -139
  242. package/augment-extensions/domain-rules/wordpress-plugin/examples/ajax-plugin.md +1599 -1599
  243. package/augment-extensions/domain-rules/wordpress-plugin/examples/custom-post-type-plugin.md +1727 -1727
  244. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block-plugin.md +428 -428
  245. package/augment-extensions/domain-rules/wordpress-plugin/examples/gutenberg-block.md +422 -422
  246. package/augment-extensions/domain-rules/wordpress-plugin/examples/mvc-plugin.md +1623 -1623
  247. package/augment-extensions/domain-rules/wordpress-plugin/examples/object-oriented-plugin.md +1343 -1343
  248. package/augment-extensions/domain-rules/wordpress-plugin/examples/rest-endpoint.md +734 -734
  249. package/augment-extensions/domain-rules/wordpress-plugin/examples/settings-page-plugin.md +1350 -1350
  250. package/augment-extensions/domain-rules/wordpress-plugin/examples/simple-procedural-plugin.md +503 -503
  251. package/augment-extensions/domain-rules/wordpress-plugin/examples/singleton-plugin.md +971 -971
  252. package/augment-extensions/domain-rules/wordpress-plugin/module.json +53 -53
  253. package/augment-extensions/domain-rules/wordpress-plugin/rules/activation-hooks.md +770 -770
  254. package/augment-extensions/domain-rules/wordpress-plugin/rules/admin-interface.md +874 -874
  255. package/augment-extensions/domain-rules/wordpress-plugin/rules/ajax-handlers.md +629 -629
  256. package/augment-extensions/domain-rules/wordpress-plugin/rules/asset-management.md +559 -559
  257. package/augment-extensions/domain-rules/wordpress-plugin/rules/context-providers.md +709 -709
  258. package/augment-extensions/domain-rules/wordpress-plugin/rules/cron-jobs.md +736 -736
  259. package/augment-extensions/domain-rules/wordpress-plugin/rules/database-management.md +1057 -1057
  260. package/augment-extensions/domain-rules/wordpress-plugin/rules/documentation-standards.md +463 -463
  261. package/augment-extensions/domain-rules/wordpress-plugin/rules/frontend-functionality.md +478 -478
  262. package/augment-extensions/domain-rules/wordpress-plugin/rules/gutenberg-blocks.md +818 -818
  263. package/augment-extensions/domain-rules/wordpress-plugin/rules/internationalization.md +416 -416
  264. package/augment-extensions/domain-rules/wordpress-plugin/rules/migration.md +667 -667
  265. package/augment-extensions/domain-rules/wordpress-plugin/rules/performance-optimization.md +878 -878
  266. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-architecture.md +693 -693
  267. package/augment-extensions/domain-rules/wordpress-plugin/rules/plugin-structure.md +352 -352
  268. package/augment-extensions/domain-rules/wordpress-plugin/rules/rest-api.md +818 -818
  269. package/augment-extensions/domain-rules/wordpress-plugin/rules/scaffolding-workflow.md +624 -624
  270. package/augment-extensions/domain-rules/wordpress-plugin/rules/security-best-practices.md +866 -866
  271. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing-patterns.md +1165 -1165
  272. package/augment-extensions/domain-rules/wordpress-plugin/rules/testing.md +414 -414
  273. package/augment-extensions/domain-rules/wordpress-plugin/rules/vscode-integration.md +751 -751
  274. package/augment-extensions/domain-rules/wordpress-plugin/rules/woocommerce-integration.md +949 -949
  275. package/augment-extensions/domain-rules/wordpress-plugin/rules/wordpress-org-submission.md +458 -458
  276. package/augment-extensions/examples/design-patterns/README.md +37 -37
  277. package/augment-extensions/examples/design-patterns/examples/behavioral-patterns.md +370 -370
  278. package/augment-extensions/examples/design-patterns/examples/creational-patterns.md +250 -250
  279. package/augment-extensions/examples/design-patterns/examples/structural-patterns.md +264 -264
  280. package/augment-extensions/examples/design-patterns/module.json +27 -27
  281. package/augment-extensions/examples/gutenberg-block-plugin/README.md +101 -101
  282. package/augment-extensions/examples/gutenberg-block-plugin/examples/testimonial-block.md +428 -428
  283. package/augment-extensions/examples/gutenberg-block-plugin/module.json +40 -40
  284. package/augment-extensions/examples/rest-api-plugin/README.md +98 -98
  285. package/augment-extensions/examples/rest-api-plugin/examples/task-manager-api.md +1299 -1299
  286. package/augment-extensions/examples/rest-api-plugin/module.json +40 -40
  287. package/augment-extensions/examples/woocommerce-extension/README.md +98 -98
  288. package/augment-extensions/examples/woocommerce-extension/examples/product-customizer.md +763 -763
  289. package/augment-extensions/examples/woocommerce-extension/module.json +40 -40
  290. package/augment-extensions/workflows/beads/README.md +135 -135
  291. package/augment-extensions/workflows/beads/examples/complete-workflow-example.md +278 -278
  292. package/augment-extensions/workflows/beads/module.json +55 -55
  293. package/augment-extensions/workflows/beads/rules/best-practices.md +398 -398
  294. package/augment-extensions/workflows/beads/rules/file-format.md +327 -327
  295. package/augment-extensions/workflows/beads/rules/manual-setup.md +315 -315
  296. package/augment-extensions/workflows/beads/rules/workflow.md +326 -326
  297. package/augment-extensions/workflows/beads-integration/IMPLEMENTATION-STATUS.md +145 -145
  298. package/augment-extensions/workflows/beads-integration/README.md +143 -143
  299. package/augment-extensions/workflows/beads-integration/config/defaults.json +32 -32
  300. package/augment-extensions/workflows/beads-integration/config/schema.json +140 -140
  301. package/augment-extensions/workflows/beads-integration/examples/basic-task-generation.md +293 -293
  302. package/augment-extensions/workflows/beads-integration/module.json +75 -75
  303. package/augment-extensions/workflows/beads-integration/rules/core-rules.md +219 -219
  304. package/augment-extensions/workflows/beads-integration/rules/effectiveness-standards.md +256 -256
  305. package/augment-extensions/workflows/beads-integration/rules/task-generation.md +607 -607
  306. package/augment-extensions/workflows/database/README.md +195 -195
  307. package/augment-extensions/workflows/database/ai-prompt-testing.md +295 -295
  308. package/augment-extensions/workflows/database/examples/migration-example.md +498 -498
  309. package/augment-extensions/workflows/database/examples/optimization-example.md +496 -496
  310. package/augment-extensions/workflows/database/examples/schema-design-example.md +444 -444
  311. package/augment-extensions/workflows/database/module.json +42 -42
  312. package/augment-extensions/workflows/database/rules/data-migration.md +249 -249
  313. package/augment-extensions/workflows/database/rules/documentation-standards.md +339 -339
  314. package/augment-extensions/workflows/database/rules/migration-workflow.md +352 -352
  315. package/augment-extensions/workflows/database/rules/optimization-workflow.md +435 -435
  316. package/augment-extensions/workflows/database/rules/schema-design-workflow.md +535 -535
  317. package/augment-extensions/workflows/database/rules/testing-patterns.md +305 -305
  318. package/augment-extensions/workflows/database/rules/workflow.md +458 -458
  319. package/augment-extensions/workflows/wordpress-plugin/README.md +232 -232
  320. package/augment-extensions/workflows/wordpress-plugin/ai-prompts.md +839 -839
  321. package/augment-extensions/workflows/wordpress-plugin/bead-decomposition-patterns.md +854 -854
  322. package/augment-extensions/workflows/wordpress-plugin/examples/complete-plugin-example.md +540 -540
  323. package/augment-extensions/workflows/wordpress-plugin/examples/custom-post-type-example.md +1083 -1083
  324. package/augment-extensions/workflows/wordpress-plugin/examples/feature-addition-workflow.md +669 -669
  325. package/augment-extensions/workflows/wordpress-plugin/examples/plugin-creation-workflow.md +597 -597
  326. package/augment-extensions/workflows/wordpress-plugin/examples/secure-form-handler-example.md +925 -925
  327. package/augment-extensions/workflows/wordpress-plugin/examples/security-audit-workflow.md +752 -752
  328. package/augment-extensions/workflows/wordpress-plugin/examples/wordpress-org-submission-workflow.md +773 -773
  329. package/augment-extensions/workflows/wordpress-plugin/module.json +49 -49
  330. package/augment-extensions/workflows/wordpress-plugin/rules/best-practices.md +942 -942
  331. package/augment-extensions/workflows/wordpress-plugin/rules/development-workflow.md +702 -702
  332. package/augment-extensions/workflows/wordpress-plugin/rules/submission-workflow.md +728 -728
  333. package/augment-extensions/workflows/wordpress-plugin/rules/testing-workflow.md +775 -775
  334. package/augment-extensions/writing-standards/screenplay/README.md +339 -300
  335. package/augment-extensions/writing-standards/screenplay/_templates/README.md +121 -121
  336. package/augment-extensions/writing-standards/screenplay/_templates/genre-template.md +153 -153
  337. package/augment-extensions/writing-standards/screenplay/_templates/style-template.md +243 -243
  338. package/augment-extensions/writing-standards/screenplay/_templates/theme-template.md +213 -213
  339. package/augment-extensions/writing-standards/screenplay/examples/aaa-hollywood-scene.fountain +164 -164
  340. package/augment-extensions/writing-standards/screenplay/examples/beat-sheet-example.yaml +95 -95
  341. package/augment-extensions/writing-standards/screenplay/examples/character-profile-example.yaml +116 -116
  342. package/augment-extensions/writing-standards/screenplay/examples/commercial-30sec.fountain +151 -151
  343. package/augment-extensions/writing-standards/screenplay/examples/independent-monologue.fountain +67 -67
  344. package/augment-extensions/writing-standards/screenplay/examples/news-segment.fountain +142 -142
  345. package/augment-extensions/writing-standards/screenplay/examples/plot-outline-example.yaml +184 -184
  346. package/augment-extensions/writing-standards/screenplay/examples/tv-episode-teaser.fountain +204 -204
  347. package/augment-extensions/writing-standards/screenplay/genres/README.md +181 -181
  348. package/augment-extensions/writing-standards/screenplay/genres/examples/.gitkeep +2 -2
  349. package/augment-extensions/writing-standards/screenplay/genres/module.json +70 -70
  350. package/augment-extensions/writing-standards/screenplay/genres/rules/.gitkeep +2 -2
  351. package/augment-extensions/writing-standards/screenplay/genres/rules/action.md +399 -399
  352. package/augment-extensions/writing-standards/screenplay/genres/rules/adventure.md +407 -407
  353. package/augment-extensions/writing-standards/screenplay/genres/rules/animation.md +293 -293
  354. package/augment-extensions/writing-standards/screenplay/genres/rules/biographical.md +293 -293
  355. package/augment-extensions/writing-standards/screenplay/genres/rules/comedy.md +401 -401
  356. package/augment-extensions/writing-standards/screenplay/genres/rules/documentary.md +293 -293
  357. package/augment-extensions/writing-standards/screenplay/genres/rules/drama.md +409 -409
  358. package/augment-extensions/writing-standards/screenplay/genres/rules/fantasy.md +293 -293
  359. package/augment-extensions/writing-standards/screenplay/genres/rules/historical.md +293 -293
  360. package/augment-extensions/writing-standards/screenplay/genres/rules/horror.md +268 -268
  361. package/augment-extensions/writing-standards/screenplay/genres/rules/musical.md +294 -294
  362. package/augment-extensions/writing-standards/screenplay/genres/rules/mystery.md +293 -293
  363. package/augment-extensions/writing-standards/screenplay/genres/rules/noir.md +294 -294
  364. package/augment-extensions/writing-standards/screenplay/genres/rules/romance.md +293 -293
  365. package/augment-extensions/writing-standards/screenplay/genres/rules/sci-fi.md +289 -289
  366. package/augment-extensions/writing-standards/screenplay/genres/rules/superhero.md +293 -293
  367. package/augment-extensions/writing-standards/screenplay/genres/rules/thriller.md +294 -294
  368. package/augment-extensions/writing-standards/screenplay/genres/rules/western.md +293 -293
  369. package/augment-extensions/writing-standards/screenplay/module.json +124 -124
  370. package/augment-extensions/writing-standards/screenplay/rules/aaa-hollywood-films.md +339 -339
  371. package/augment-extensions/writing-standards/screenplay/rules/ai-integration-testing.md +329 -329
  372. package/augment-extensions/writing-standards/screenplay/rules/character-development.md +169 -169
  373. package/augment-extensions/writing-standards/screenplay/rules/commercials.md +437 -437
  374. package/augment-extensions/writing-standards/screenplay/rules/dialogue-writing.md +263 -263
  375. package/augment-extensions/writing-standards/screenplay/rules/diversity-inclusion.md +261 -261
  376. package/augment-extensions/writing-standards/screenplay/rules/examples-guide.md +315 -315
  377. package/augment-extensions/writing-standards/screenplay/rules/file-organization.md +213 -0
  378. package/augment-extensions/writing-standards/screenplay/rules/formatting-validation.md +413 -413
  379. package/augment-extensions/writing-standards/screenplay/rules/fountain-format.md +372 -372
  380. package/augment-extensions/writing-standards/screenplay/rules/independent-films.md +374 -374
  381. package/augment-extensions/writing-standards/screenplay/rules/live-tv-productions.md +443 -443
  382. package/augment-extensions/writing-standards/screenplay/rules/narrative-structures.md +207 -207
  383. package/augment-extensions/writing-standards/screenplay/rules/news-broadcasts.md +444 -444
  384. package/augment-extensions/writing-standards/screenplay/rules/pacing-timing.md +331 -331
  385. package/augment-extensions/writing-standards/screenplay/rules/quality-review-checklist.md +334 -334
  386. package/augment-extensions/writing-standards/screenplay/rules/quick-reference.md +299 -299
  387. package/augment-extensions/writing-standards/screenplay/rules/screen-continuity.md +263 -263
  388. package/augment-extensions/writing-standards/screenplay/rules/streaming-content.md +412 -412
  389. package/augment-extensions/writing-standards/screenplay/rules/trope-management.md +370 -370
  390. package/augment-extensions/writing-standards/screenplay/rules/tv-series.md +374 -374
  391. package/augment-extensions/writing-standards/screenplay/rules/universal-formatting.md +339 -339
  392. package/augment-extensions/writing-standards/screenplay/rules/vscode-integration.md +277 -277
  393. package/augment-extensions/writing-standards/screenplay/rules/web-content.md +393 -393
  394. package/augment-extensions/writing-standards/screenplay/schemas/beat-sheet.json +332 -332
  395. package/augment-extensions/writing-standards/screenplay/schemas/character-profile.json +247 -247
  396. package/augment-extensions/writing-standards/screenplay/schemas/feature-selection.json +200 -200
  397. package/augment-extensions/writing-standards/screenplay/schemas/plot-outline.json +233 -233
  398. package/augment-extensions/writing-standards/screenplay/schemas/screenplay-config.json +245 -245
  399. package/augment-extensions/writing-standards/screenplay/schemas/trope-inventory.json +221 -221
  400. package/augment-extensions/writing-standards/screenplay/styles/README.md +159 -159
  401. package/augment-extensions/writing-standards/screenplay/styles/examples/.gitkeep +2 -2
  402. package/augment-extensions/writing-standards/screenplay/styles/examples/style-applications.md +1449 -1449
  403. package/augment-extensions/writing-standards/screenplay/styles/module.json +64 -64
  404. package/augment-extensions/writing-standards/screenplay/styles/rules/.gitkeep +2 -2
  405. package/augment-extensions/writing-standards/screenplay/styles/rules/dialogue-centric.md +520 -520
  406. package/augment-extensions/writing-standards/screenplay/styles/rules/ensemble.md +499 -499
  407. package/augment-extensions/writing-standards/screenplay/styles/rules/epic.md +497 -497
  408. package/augment-extensions/writing-standards/screenplay/styles/rules/experimental.md +492 -492
  409. package/augment-extensions/writing-standards/screenplay/styles/rules/flashback.md +509 -509
  410. package/augment-extensions/writing-standards/screenplay/styles/rules/linear.md +490 -490
  411. package/augment-extensions/writing-standards/screenplay/styles/rules/minimalist.md +499 -499
  412. package/augment-extensions/writing-standards/screenplay/styles/rules/non-linear.md +501 -501
  413. package/augment-extensions/writing-standards/screenplay/styles/rules/poetic.md +499 -499
  414. package/augment-extensions/writing-standards/screenplay/styles/rules/realistic.md +498 -498
  415. package/augment-extensions/writing-standards/screenplay/styles/rules/satirical.md +499 -499
  416. package/augment-extensions/writing-standards/screenplay/styles/rules/surreal.md +508 -508
  417. package/augment-extensions/writing-standards/screenplay/styles/rules/voice-over.md +500 -500
  418. package/augment-extensions/writing-standards/screenplay/themes/README.md +158 -158
  419. package/augment-extensions/writing-standards/screenplay/themes/examples/.gitkeep +2 -2
  420. package/augment-extensions/writing-standards/screenplay/themes/examples/common-mistakes-and-fixes.md +643 -643
  421. package/augment-extensions/writing-standards/screenplay/themes/examples/complete-scene-example.md +311 -311
  422. package/augment-extensions/writing-standards/screenplay/themes/examples/individual-theme-examples.md +562 -562
  423. package/augment-extensions/writing-standards/screenplay/themes/examples/multi-theme-weaving.md +538 -538
  424. package/augment-extensions/writing-standards/screenplay/themes/examples/theme-application-guide.md +432 -432
  425. package/augment-extensions/writing-standards/screenplay/themes/examples/theme-integration-across-acts.md +637 -637
  426. package/augment-extensions/writing-standards/screenplay/themes/module.json +66 -66
  427. package/augment-extensions/writing-standards/screenplay/themes/rules/.gitkeep +2 -2
  428. package/augment-extensions/writing-standards/screenplay/themes/rules/ambition.md +458 -458
  429. package/augment-extensions/writing-standards/screenplay/themes/rules/betrayal.md +490 -490
  430. package/augment-extensions/writing-standards/screenplay/themes/rules/environment.md +458 -458
  431. package/augment-extensions/writing-standards/screenplay/themes/rules/fate.md +459 -459
  432. package/augment-extensions/writing-standards/screenplay/themes/rules/friendship.md +491 -491
  433. package/augment-extensions/writing-standards/screenplay/themes/rules/growth.md +491 -491
  434. package/augment-extensions/writing-standards/screenplay/themes/rules/identity.md +490 -490
  435. package/augment-extensions/writing-standards/screenplay/themes/rules/isolation.md +464 -464
  436. package/augment-extensions/writing-standards/screenplay/themes/rules/justice.md +461 -461
  437. package/augment-extensions/writing-standards/screenplay/themes/rules/love.md +489 -489
  438. package/augment-extensions/writing-standards/screenplay/themes/rules/power.md +494 -494
  439. package/augment-extensions/writing-standards/screenplay/themes/rules/redemption.md +483 -483
  440. package/augment-extensions/writing-standards/screenplay/themes/rules/revenge.md +489 -489
  441. package/augment-extensions/writing-standards/screenplay/themes/rules/survival.md +496 -496
  442. package/augment-extensions/writing-standards/screenplay/themes/rules/technology.md +463 -463
  443. package/augment-extensions/writing-standards/screenplay/utils/__tests__/file-organization.test.ts +169 -0
  444. package/augment-extensions/writing-standards/screenplay/utils/file-organization.ts +165 -0
  445. package/cli/MODULES.md +302 -302
  446. package/cli/dist/cli.js +109 -22
  447. package/cli/dist/cli.js.map +1 -1
  448. package/cli/dist/commands/gui.d.ts.map +1 -1
  449. package/cli/dist/commands/gui.js +54 -6
  450. package/cli/dist/commands/gui.js.map +1 -1
  451. package/cli/dist/commands/init.d.ts.map +1 -1
  452. package/cli/dist/commands/init.js +76 -23
  453. package/cli/dist/commands/init.js.map +1 -1
  454. package/cli/dist/commands/self-remove.d.ts.map +1 -1
  455. package/cli/dist/commands/self-remove.js +48 -74
  456. package/cli/dist/commands/self-remove.js.map +1 -1
  457. package/cli/dist/commands/show.d.ts +11 -0
  458. package/cli/dist/commands/show.d.ts.map +1 -1
  459. package/cli/dist/commands/show.js +120 -0
  460. package/cli/dist/commands/show.js.map +1 -1
  461. package/cli/dist/commands/showCompleted.d.ts +21 -0
  462. package/cli/dist/commands/showCompleted.d.ts.map +1 -0
  463. package/cli/dist/commands/showCompleted.js +225 -0
  464. package/cli/dist/commands/showCompleted.js.map +1 -0
  465. package/cli/dist/commands/skill.js +88 -88
  466. package/cli/dist/commands/update.d.ts +2 -0
  467. package/cli/dist/commands/update.d.ts.map +1 -1
  468. package/cli/dist/commands/update.js +67 -1
  469. package/cli/dist/commands/update.js.map +1 -1
  470. package/cli/dist/utils/beadsCompletedChecker.d.ts +72 -0
  471. package/cli/dist/utils/beadsCompletedChecker.d.ts.map +1 -0
  472. package/cli/dist/utils/beadsCompletedChecker.js +198 -0
  473. package/cli/dist/utils/beadsCompletedChecker.js.map +1 -0
  474. package/cli/dist/utils/catalog-sync.js +13 -13
  475. package/cli/dist/utils/extractCommandHelp.d.ts +51 -0
  476. package/cli/dist/utils/extractCommandHelp.d.ts.map +1 -0
  477. package/cli/dist/utils/extractCommandHelp.js +250 -0
  478. package/cli/dist/utils/extractCommandHelp.js.map +1 -0
  479. package/cli/dist/utils/install-rules.js +55 -55
  480. package/cli/dist/utils/mcp-integration.js +44 -44
  481. package/cli/dist/utils/rule-install-hooks.js +8 -8
  482. package/modules.md +667 -630
  483. package/package.json +85 -85
@@ -1,831 +1,831 @@
1
- # Python Documentation Standards
2
-
3
- Comprehensive guide to writing clear, consistent Python documentation using docstrings.
4
-
5
- ## Docstring Basics
6
-
7
- ### PEP 257 Conventions
8
-
9
- All public modules, classes, functions, and methods should have docstrings.
10
-
11
- ```python
12
- # Module docstring
13
- """Module for user authentication.
14
-
15
- This module provides functions and classes for authenticating users,
16
- managing sessions, and handling permissions.
17
- """
18
-
19
- # Function docstring
20
- def authenticate_user(username: str, password: str) -> bool:
21
- """Authenticate user with username and password.
22
-
23
- Args:
24
- username: User's username
25
- password: User's password
26
-
27
- Returns:
28
- True if authentication successful, False otherwise
29
- """
30
- pass
31
-
32
- # Class docstring
33
- class UserManager:
34
- """Manage user accounts and authentication.
35
-
36
- This class provides methods for creating, updating, and deleting
37
- user accounts, as well as authenticating users.
38
-
39
- Attributes:
40
- db_connection: Database connection for user data
41
- cache: Cache for frequently accessed user data
42
- """
43
- pass
44
- ```
45
-
46
- ### One-Line vs Multi-Line Docstrings
47
-
48
- ```python
49
- # One-line docstring - For simple, obvious functions
50
- def get_user_id(username: str) -> int:
51
- """Return user ID for given username."""
52
- pass
53
-
54
- # Multi-line docstring - For complex functions
55
- def create_user(
56
- username: str,
57
- email: str,
58
- password: str,
59
- role: str = "user",
60
- ) -> User:
61
- """Create a new user account.
62
-
63
- Creates a new user with the given credentials and role.
64
- Validates email format and password strength before creation.
65
-
66
- Args:
67
- username: Unique username for the user
68
- email: User's email address
69
- password: User's password (will be hashed)
70
- role: User role (default: "user")
71
-
72
- Returns:
73
- Created User object
74
-
75
- Raises:
76
- ValidationError: If email or password is invalid
77
- DuplicateUserError: If username already exists
78
- """
79
- pass
80
- ```
81
-
82
- ## Google Style Docstrings
83
-
84
- Google style is clean, readable, and widely used.
85
-
86
- ### Function Documentation
87
-
88
- ```python
89
- def fetch_user_data(
90
- user_id: int,
91
- include_posts: bool = False,
92
- max_posts: int = 10,
93
- ) -> dict:
94
- """Fetch user data from database.
95
-
96
- Retrieves user information including profile data and optionally
97
- recent posts. Uses caching to improve performance.
98
-
99
- Args:
100
- user_id: Unique identifier for the user
101
- include_posts: Whether to include user's posts (default: False)
102
- max_posts: Maximum number of posts to include (default: 10)
103
-
104
- Returns:
105
- Dictionary containing user data with keys:
106
- - id: User ID
107
- - username: User's username
108
- - email: User's email
109
- - posts: List of posts (if include_posts=True)
110
-
111
- Raises:
112
- UserNotFoundError: If user with given ID doesn't exist
113
- DatabaseError: If database query fails
114
-
115
- Example:
116
- >>> user = fetch_user_data(123, include_posts=True)
117
- >>> print(user['username'])
118
- 'john_doe'
119
- """
120
- pass
121
- ```
122
-
123
- ### Class Documentation
124
-
125
- ```python
126
- class DatabaseConnection:
127
- """Manage database connections with connection pooling.
128
-
129
- This class provides a connection pool for database operations,
130
- automatically handling connection lifecycle and retries.
131
-
132
- Attributes:
133
- host: Database host address
134
- port: Database port number
135
- database: Database name
136
- pool_size: Maximum number of connections in pool
137
-
138
- Example:
139
- >>> db = DatabaseConnection("localhost", 5432, "mydb")
140
- >>> with db.get_connection() as conn:
141
- ... result = conn.execute("SELECT * FROM users")
142
- """
143
-
144
- def __init__(
145
- self,
146
- host: str,
147
- port: int,
148
- database: str,
149
- pool_size: int = 10,
150
- ):
151
-
152
-
153
- ### Method Documentation
154
-
155
- ```python
156
- class UserRepository:
157
- """Repository for user data operations."""
158
-
159
- def find_by_email(self, email: str) -> Optional[User]:
160
- """Find user by email address.
161
-
162
- Args:
163
- email: Email address to search for
164
-
165
- Returns:
166
- User object if found, None otherwise
167
-
168
- Example:
169
- >>> repo = UserRepository()
170
- >>> user = repo.find_by_email("user@example.com")
171
- """
172
- pass
173
-
174
- def create(
175
- self,
176
- username: str,
177
- email: str,
178
- password: str,
179
- ) -> User:
180
- """Create a new user.
181
-
182
- Args:
183
- username: Unique username
184
- email: User's email address
185
- password: User's password (will be hashed)
186
-
187
- Returns:
188
- Created User object
189
-
190
- Raises:
191
- ValidationError: If input validation fails
192
- DuplicateUserError: If username or email already exists
193
- """
194
- pass
195
-
196
- def update(self, user_id: int, **kwargs) -> User:
197
- """Update user attributes.
198
-
199
- Args:
200
- user_id: ID of user to update
201
- **kwargs: Attributes to update (username, email, etc.)
202
-
203
- Returns:
204
- Updated User object
205
-
206
- Raises:
207
- UserNotFoundError: If user doesn't exist
208
- ValidationError: If update data is invalid
209
-
210
- Note:
211
- Only provided attributes will be updated. Password updates
212
- require separate method for security reasons.
213
- """
214
- pass
215
- ```
216
-
217
- ### Property Documentation
218
-
219
- ```python
220
- class User:
221
- """User account model."""
222
-
223
- @property
224
- def full_name(self) -> str:
225
- """Return user's full name.
226
-
227
- Returns:
228
- Full name as "first_name last_name"
229
- """
230
- return f"{self.first_name} {self.last_name}"
231
-
232
- @property
233
- def is_active(self) -> bool:
234
- """Check if user account is active.
235
-
236
- Returns:
237
- True if account is active and not suspended
238
- """
239
- return self.status == "active" and not self.suspended
240
- ```
241
-
242
- ## NumPy Style Docstrings
243
-
244
- NumPy style uses more structured formatting, popular in scientific computing.
245
-
246
- ### Function Documentation
247
-
248
- ```python
249
- def calculate_statistics(
250
- data: np.ndarray,
251
- axis: Optional[int] = None,
252
- ddof: int = 0,
253
- ) -> dict:
254
- """Calculate statistical measures for data.
255
-
256
- Computes mean, median, standard deviation, and variance
257
- for the given data array.
258
-
259
- Parameters
260
- ----------
261
- data : np.ndarray
262
- Input data array
263
- axis : int, optional
264
- Axis along which to compute statistics (default: None)
265
- If None, compute over flattened array
266
- ddof : int, optional
267
- Delta degrees of freedom for variance calculation (default: 0)
268
-
269
- Returns
270
- -------
271
- dict
272
- Dictionary containing:
273
- - mean : float
274
- Arithmetic mean
275
- - median : float
276
- Median value
277
- - std : float
278
- Standard deviation
279
- - var : float
280
- Variance
281
-
282
- Raises
283
- ------
284
- ValueError
285
- If data array is empty
286
- TypeError
287
- If data is not a numpy array
288
-
289
- See Also
290
- --------
291
- numpy.mean : Compute arithmetic mean
292
- numpy.std : Compute standard deviation
293
-
294
- Notes
295
- -----
296
- Uses Welford's online algorithm for numerical stability.
297
-
298
- Examples
299
- --------
300
- >>> data = np.array([1, 2, 3, 4, 5])
301
- >>> stats = calculate_statistics(data)
302
- >>> print(stats['mean'])
303
- 3.0
304
-
305
- >>> data_2d = np.array([[1, 2], [3, 4]])
306
- >>> stats = calculate_statistics(data_2d, axis=0)
307
- >>> print(stats['mean'])
308
- [2. 3.]
309
- """
310
- pass
311
- ```
312
-
313
- ### Class Documentation
314
-
315
- ```python
316
- class LinearRegression:
317
- """Linear regression model using least squares.
318
-
319
- Fits a linear model with coefficients w = (w1, ..., wp)
320
- to minimize the residual sum of squares between observed
321
- targets and predicted targets.
322
-
323
- Parameters
324
- ----------
325
- fit_intercept : bool, optional
326
- Whether to calculate intercept (default: True)
327
- normalize : bool, optional
328
- Whether to normalize features (default: False)
329
- copy_X : bool, optional
330
- Whether to copy X (default: True)
331
-
332
- Attributes
333
- ----------
334
- coef_ : np.ndarray of shape (n_features,)
335
- Estimated coefficients for the linear regression
336
- intercept_ : float
337
- Independent term in linear model
338
- rank_ : int
339
- Rank of matrix X
340
- singular_ : np.ndarray of shape (min(X, y),)
341
- Singular values of X
342
-
343
- Examples
344
- --------
345
- >>> X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
346
- >>> y = np.dot(X, np.array([1, 2])) + 3
347
- >>> reg = LinearRegression().fit(X, y)
348
- >>> reg.score(X, y)
349
- 1.0
350
- >>> reg.coef_
351
- array([1., 2.])
352
- >>> reg.intercept_
353
- 3.0
354
-
355
- Notes
356
- -----
357
- From the implementation point of view, this is just plain Ordinary
358
- Least Squares (scipy.linalg.lstsq) wrapped as a predictor object.
359
- """
360
-
361
- def __init__(
362
- self,
363
- fit_intercept: bool = True,
364
- normalize: bool = False,
365
- copy_X: bool = True,
366
- ):
367
- """Initialize linear regression model.
368
-
369
- Parameters
370
- ----------
371
- fit_intercept : bool, optional
372
- Whether to calculate intercept (default: True)
373
- normalize : bool, optional
374
- Whether to normalize features (default: False)
375
- copy_X : bool, optional
376
- Whether to copy X (default: True)
377
- """
378
- pass
379
- ```
380
-
381
- ## Special Sections
382
-
383
- ### Args/Parameters Section
384
-
385
- ```python
386
- def complex_function(
387
- required_arg: str,
388
- optional_arg: int = 10,
389
- *args: str,
390
- **kwargs: Any,
391
- ) -> dict:
392
- """Function with various argument types.
393
-
394
- Args:
395
- required_arg: A required string argument
396
- optional_arg: An optional integer (default: 10)
397
- *args: Variable positional arguments
398
- **kwargs: Variable keyword arguments. Supported keys:
399
- - timeout (float): Request timeout in seconds
400
- - retries (int): Number of retry attempts
401
- - debug (bool): Enable debug logging
402
-
403
- Returns:
404
- Dictionary with processed results
405
- """
406
- pass
407
- ```
408
-
409
- ### Returns Section
410
-
411
- ```python
412
- # Simple return
413
- def get_user(user_id: int) -> User:
414
- """Get user by ID.
415
-
416
- Args:
417
- user_id: User ID
418
-
419
- Returns:
420
- User object
421
- """
422
- pass
423
-
424
- # Multiple return values (tuple)
425
- def get_user_stats(user_id: int) -> tuple[int, int, float]:
426
- """Get user statistics.
427
-
428
- Args:
429
- user_id: User ID
430
-
431
- Returns:
432
- Tuple containing:
433
- - post_count: Number of posts
434
- - follower_count: Number of followers
435
- - engagement_rate: Engagement rate (0.0 to 1.0)
436
- """
437
- pass
438
-
439
- # Complex return type
440
- def fetch_data(url: str) -> dict[str, Any]:
441
- """Fetch data from URL.
442
-
443
- Args:
444
- url: URL to fetch from
445
-
446
- Returns:
447
- Dictionary containing:
448
- - status: HTTP status code
449
- - headers: Response headers
450
- - body: Response body
451
- - timestamp: Request timestamp
452
- """
453
- pass
454
- ```
455
-
456
- ### Raises Section
457
-
458
- ```python
459
- def create_user(username: str, email: str) -> User:
460
- """Create a new user account.
461
-
462
- Args:
463
- username: Unique username
464
- email: User's email address
465
-
466
- Returns:
467
- Created User object
468
-
469
- Raises:
470
- ValidationError: If username or email is invalid
471
- DuplicateUserError: If username or email already exists
472
- DatabaseError: If database operation fails
473
-
474
- Example:
475
- >>> user = create_user("john", "john@example.com")
476
- >>> print(user.username)
477
- 'john'
478
- """
479
- pass
480
- ```
481
-
482
- ### Examples Section
483
-
484
- ```python
485
- def calculate_discount(
486
- price: float,
487
- discount_percent: float,
488
- ) -> float:
489
- """Calculate discounted price.
490
-
491
- Args:
492
- price: Original price
493
- discount_percent: Discount percentage (0-100)
494
-
495
- Returns:
496
- Discounted price
497
-
498
- Examples:
499
- >>> calculate_discount(100.0, 10.0)
500
- 90.0
501
-
502
- >>> calculate_discount(50.0, 25.0)
503
- 37.5
504
-
505
- >>> calculate_discount(100.0, 0.0)
506
- 100.0
507
- """
508
- pass
509
- ```
510
-
511
- ### Notes and Warnings
512
-
513
- ```python
514
- def process_large_file(file_path: str) -> None:
515
- """Process large file in chunks.
516
-
517
- Args:
518
- file_path: Path to file to process
519
-
520
- Note:
521
- This function processes files in chunks to avoid
522
- loading entire file into memory. Suitable for
523
- files larger than available RAM.
524
-
525
- Warning:
526
- File must be in UTF-8 encoding. Other encodings
527
- may cause decoding errors.
528
-
529
- See Also:
530
- process_small_file: For files < 100MB
531
- stream_file: For streaming processing
532
- """
533
- pass
534
- ```
535
-
536
-
537
- ## Type Hints Integration
538
-
539
- Type hints and docstrings work together for complete documentation.
540
-
541
- ### With Type Hints
542
-
543
- ```python
544
- from typing import Optional, List, Dict, Any
545
-
546
- def fetch_users(
547
- role: str,
548
- active_only: bool = True,
549
- limit: Optional[int] = None,
550
- ) -> List[Dict[str, Any]]:
551
- """Fetch users by role.
552
-
553
- Type hints provide type information, docstring provides
554
- semantic information and constraints.
555
-
556
- Args:
557
- role: User role to filter by (e.g., "admin", "user", "guest")
558
- active_only: Only return active users (default: True)
559
- limit: Maximum number of users to return (default: None for all)
560
-
561
- Returns:
562
- List of user dictionaries, each containing:
563
- - id: User ID
564
- - username: Username
565
- - email: Email address
566
- - role: User role
567
-
568
- Note:
569
- Type hints show List[Dict[str, Any]], but docstring
570
- specifies the exact structure of each dictionary.
571
- """
572
- pass
573
- ```
574
-
575
- ### Generic Types
576
-
577
- ```python
578
- from typing import TypeVar, Generic, List
579
-
580
- T = TypeVar('T')
581
-
582
- class Repository(Generic[T]):
583
- """Generic repository for data access.
584
-
585
- Type Parameters:
586
- T: Type of entity managed by this repository
587
-
588
- Example:
589
- >>> user_repo = Repository[User]()
590
- >>> users = user_repo.find_all()
591
- """
592
-
593
- def find_by_id(self, id: int) -> Optional[T]:
594
- """Find entity by ID.
595
-
596
- Args:
597
- id: Entity ID
598
-
599
- Returns:
600
- Entity if found, None otherwise
601
- """
602
- pass
603
-
604
- def find_all(self) -> List[T]:
605
- """Find all entities.
606
-
607
- Returns:
608
- List of all entities
609
- """
610
- pass
611
- ```
612
-
613
- ## Module Documentation
614
-
615
- ### Module Docstring
616
-
617
- ```python
618
- """User authentication and authorization module.
619
-
620
- This module provides functionality for:
621
- - User authentication (login, logout, session management)
622
- - Password hashing and verification
623
- - Permission checking and role-based access control
624
- - Token generation and validation
625
-
626
- Classes:
627
- Authenticator: Main authentication handler
628
- PasswordHasher: Password hashing utilities
629
- PermissionChecker: Permission validation
630
-
631
- Functions:
632
- hash_password: Hash a password using bcrypt
633
- verify_password: Verify password against hash
634
- generate_token: Generate authentication token
635
-
636
- Constants:
637
- TOKEN_EXPIRY: Default token expiration time (seconds)
638
- MAX_LOGIN_ATTEMPTS: Maximum failed login attempts
639
-
640
- Example:
641
- >>> from auth import Authenticator
642
- >>> auth = Authenticator()
643
- >>> user = auth.login("username", "password")
644
- >>> if auth.has_permission(user, "admin"):
645
- ... print("User is admin")
646
-
647
- Note:
648
- This module requires bcrypt and PyJWT packages.
649
- Install with: pip install bcrypt PyJWT
650
- """
651
-
652
- import bcrypt
653
- import jwt
654
- from typing import Optional
655
-
656
- TOKEN_EXPIRY = 3600 # 1 hour
657
- MAX_LOGIN_ATTEMPTS = 5
658
- ```
659
-
660
- ### Package Documentation
661
-
662
- ```python
663
- # __init__.py
664
- """Authentication package.
665
-
666
- This package provides comprehensive authentication and authorization
667
- functionality for web applications.
668
-
669
- Submodules:
670
- auth: Core authentication logic
671
- permissions: Permission and role management
672
- tokens: Token generation and validation
673
- models: Data models for users and sessions
674
-
675
- Usage:
676
- >>> from auth import Authenticator
677
- >>> from auth.permissions import PermissionChecker
678
- >>>
679
- >>> auth = Authenticator()
680
- >>> user = auth.login("username", "password")
681
- """
682
-
683
- from .auth import Authenticator
684
- from .permissions import PermissionChecker
685
- from .tokens import TokenGenerator
686
-
687
- __all__ = [
688
- "Authenticator",
689
- "PermissionChecker",
690
- "TokenGenerator",
691
- ]
692
-
693
- __version__ = "1.0.0"
694
- ```
695
-
696
- ## Best Practices
697
-
698
- ### DO
699
-
700
- ✅ **Write docstrings for all public APIs** - Modules, classes, functions, methods
701
-
702
- ✅ **Use consistent style** - Choose Google or NumPy style and stick to it
703
-
704
- ✅ **Document parameters and return values** - Explain what they are and constraints
705
-
706
- ✅ **Document exceptions** - List all exceptions that can be raised
707
-
708
- ✅ **Provide examples** - Show how to use the function/class
709
-
710
- ✅ **Keep docstrings up to date** - Update when code changes
711
-
712
- ✅ **Use type hints** - Complement docstrings with type information
713
-
714
- ✅ **Document edge cases** - Explain behavior for special inputs
715
-
716
- ✅ **Use imperative mood** - "Return user" not "Returns user"
717
-
718
- ✅ **Be concise but complete** - Provide necessary information without verbosity
719
-
720
- ### DON'T
721
-
722
- ❌ **Don't duplicate type information** - Type hints handle types, docstrings handle semantics
723
-
724
- ```python
725
- # Bad - Duplicates type information
726
- def get_user(user_id: int) -> User:
727
- """Get user by ID.
728
-
729
- Args:
730
- user_id (int): User ID as integer
731
-
732
- Returns:
733
- User: User object
734
- """
735
- pass
736
-
737
- # Good - Type hints provide type info, docstring provides semantic info
738
- def get_user(user_id: int) -> User:
739
- """Get user by ID.
740
-
741
- Args:
742
- user_id: Unique identifier for the user
743
-
744
- Returns:
745
- User object with all profile data loaded
746
- """
747
- pass
748
- ```
749
-
750
- ❌ **Don't write obvious docstrings** - Add value, don't state the obvious
751
-
752
- ```python
753
- # Bad - States the obvious
754
- def add(a: int, b: int) -> int:
755
- """Add two numbers.
756
-
757
- Args:
758
- a: First number
759
- b: Second number
760
-
761
- Returns:
762
- Sum of a and b
763
- """
764
- return a + b
765
-
766
- # Good - Simple function, simple docstring
767
- def add(a: int, b: int) -> int:
768
- """Return sum of two numbers."""
769
- return a + b
770
- ```
771
-
772
- ❌ **Don't let docstrings get stale** - Update when code changes
773
-
774
- ❌ **Don't mix docstring styles** - Be consistent across codebase
775
-
776
- ❌ **Don't document private methods extensively** - Brief docstrings are fine
777
-
778
- ```python
779
- # Good - Brief docstring for private method
780
- def _validate_email(self, email: str) -> bool:
781
- """Check if email format is valid."""
782
- return "@" in email and "." in email.split("@")[1]
783
- ```
784
-
785
- ## Tools and Validation
786
-
787
- ### Docstring Linters
788
-
789
- ```bash
790
- # pydocstyle - Check docstring conventions
791
- pip install pydocstyle
792
- pydocstyle mymodule.py
793
-
794
- # darglint - Check docstring matches function signature
795
- pip install darglint
796
- darglint mymodule.py
797
-
798
- # interrogate - Check docstring coverage
799
- pip install interrogate
800
- interrogate -v mymodule.py
801
- ```
802
-
803
- ### Generating Documentation
804
-
805
- ```bash
806
- # Sphinx - Generate HTML documentation
807
- pip install sphinx
808
- sphinx-quickstart
809
- sphinx-build -b html docs/ docs/_build/
810
-
811
- # pdoc - Simple documentation generator
812
- pip install pdoc
813
- pdoc --html mymodule
814
- ```
815
-
816
- ## Summary
817
-
818
- **Key Takeaways:**
819
-
820
- 1. **Write docstrings for all public APIs** - Modules, classes, functions
821
- 2. **Choose a consistent style** - Google or NumPy style
822
- 3. **Document parameters, returns, and exceptions** - Be complete
823
- 4. **Provide examples** - Show usage patterns
824
- 5. **Use type hints** - Complement docstrings with type information
825
- 6. **Keep docstrings updated** - Maintain accuracy
826
- 7. **Be concise but informative** - Add value, avoid verbosity
827
- 8. **Use imperative mood** - "Return" not "Returns"
828
- 9. **Document edge cases and constraints** - Explain special behavior
829
- 10. **Validate with tools** - Use pydocstyle, darglint, interrogate
830
-
831
-
1
+ # Python Documentation Standards
2
+
3
+ Comprehensive guide to writing clear, consistent Python documentation using docstrings.
4
+
5
+ ## Docstring Basics
6
+
7
+ ### PEP 257 Conventions
8
+
9
+ All public modules, classes, functions, and methods should have docstrings.
10
+
11
+ ```python
12
+ # Module docstring
13
+ """Module for user authentication.
14
+
15
+ This module provides functions and classes for authenticating users,
16
+ managing sessions, and handling permissions.
17
+ """
18
+
19
+ # Function docstring
20
+ def authenticate_user(username: str, password: str) -> bool:
21
+ """Authenticate user with username and password.
22
+
23
+ Args:
24
+ username: User's username
25
+ password: User's password
26
+
27
+ Returns:
28
+ True if authentication successful, False otherwise
29
+ """
30
+ pass
31
+
32
+ # Class docstring
33
+ class UserManager:
34
+ """Manage user accounts and authentication.
35
+
36
+ This class provides methods for creating, updating, and deleting
37
+ user accounts, as well as authenticating users.
38
+
39
+ Attributes:
40
+ db_connection: Database connection for user data
41
+ cache: Cache for frequently accessed user data
42
+ """
43
+ pass
44
+ ```
45
+
46
+ ### One-Line vs Multi-Line Docstrings
47
+
48
+ ```python
49
+ # One-line docstring - For simple, obvious functions
50
+ def get_user_id(username: str) -> int:
51
+ """Return user ID for given username."""
52
+ pass
53
+
54
+ # Multi-line docstring - For complex functions
55
+ def create_user(
56
+ username: str,
57
+ email: str,
58
+ password: str,
59
+ role: str = "user",
60
+ ) -> User:
61
+ """Create a new user account.
62
+
63
+ Creates a new user with the given credentials and role.
64
+ Validates email format and password strength before creation.
65
+
66
+ Args:
67
+ username: Unique username for the user
68
+ email: User's email address
69
+ password: User's password (will be hashed)
70
+ role: User role (default: "user")
71
+
72
+ Returns:
73
+ Created User object
74
+
75
+ Raises:
76
+ ValidationError: If email or password is invalid
77
+ DuplicateUserError: If username already exists
78
+ """
79
+ pass
80
+ ```
81
+
82
+ ## Google Style Docstrings
83
+
84
+ Google style is clean, readable, and widely used.
85
+
86
+ ### Function Documentation
87
+
88
+ ```python
89
+ def fetch_user_data(
90
+ user_id: int,
91
+ include_posts: bool = False,
92
+ max_posts: int = 10,
93
+ ) -> dict:
94
+ """Fetch user data from database.
95
+
96
+ Retrieves user information including profile data and optionally
97
+ recent posts. Uses caching to improve performance.
98
+
99
+ Args:
100
+ user_id: Unique identifier for the user
101
+ include_posts: Whether to include user's posts (default: False)
102
+ max_posts: Maximum number of posts to include (default: 10)
103
+
104
+ Returns:
105
+ Dictionary containing user data with keys:
106
+ - id: User ID
107
+ - username: User's username
108
+ - email: User's email
109
+ - posts: List of posts (if include_posts=True)
110
+
111
+ Raises:
112
+ UserNotFoundError: If user with given ID doesn't exist
113
+ DatabaseError: If database query fails
114
+
115
+ Example:
116
+ >>> user = fetch_user_data(123, include_posts=True)
117
+ >>> print(user['username'])
118
+ 'john_doe'
119
+ """
120
+ pass
121
+ ```
122
+
123
+ ### Class Documentation
124
+
125
+ ```python
126
+ class DatabaseConnection:
127
+ """Manage database connections with connection pooling.
128
+
129
+ This class provides a connection pool for database operations,
130
+ automatically handling connection lifecycle and retries.
131
+
132
+ Attributes:
133
+ host: Database host address
134
+ port: Database port number
135
+ database: Database name
136
+ pool_size: Maximum number of connections in pool
137
+
138
+ Example:
139
+ >>> db = DatabaseConnection("localhost", 5432, "mydb")
140
+ >>> with db.get_connection() as conn:
141
+ ... result = conn.execute("SELECT * FROM users")
142
+ """
143
+
144
+ def __init__(
145
+ self,
146
+ host: str,
147
+ port: int,
148
+ database: str,
149
+ pool_size: int = 10,
150
+ ):
151
+
152
+
153
+ ### Method Documentation
154
+
155
+ ```python
156
+ class UserRepository:
157
+ """Repository for user data operations."""
158
+
159
+ def find_by_email(self, email: str) -> Optional[User]:
160
+ """Find user by email address.
161
+
162
+ Args:
163
+ email: Email address to search for
164
+
165
+ Returns:
166
+ User object if found, None otherwise
167
+
168
+ Example:
169
+ >>> repo = UserRepository()
170
+ >>> user = repo.find_by_email("user@example.com")
171
+ """
172
+ pass
173
+
174
+ def create(
175
+ self,
176
+ username: str,
177
+ email: str,
178
+ password: str,
179
+ ) -> User:
180
+ """Create a new user.
181
+
182
+ Args:
183
+ username: Unique username
184
+ email: User's email address
185
+ password: User's password (will be hashed)
186
+
187
+ Returns:
188
+ Created User object
189
+
190
+ Raises:
191
+ ValidationError: If input validation fails
192
+ DuplicateUserError: If username or email already exists
193
+ """
194
+ pass
195
+
196
+ def update(self, user_id: int, **kwargs) -> User:
197
+ """Update user attributes.
198
+
199
+ Args:
200
+ user_id: ID of user to update
201
+ **kwargs: Attributes to update (username, email, etc.)
202
+
203
+ Returns:
204
+ Updated User object
205
+
206
+ Raises:
207
+ UserNotFoundError: If user doesn't exist
208
+ ValidationError: If update data is invalid
209
+
210
+ Note:
211
+ Only provided attributes will be updated. Password updates
212
+ require separate method for security reasons.
213
+ """
214
+ pass
215
+ ```
216
+
217
+ ### Property Documentation
218
+
219
+ ```python
220
+ class User:
221
+ """User account model."""
222
+
223
+ @property
224
+ def full_name(self) -> str:
225
+ """Return user's full name.
226
+
227
+ Returns:
228
+ Full name as "first_name last_name"
229
+ """
230
+ return f"{self.first_name} {self.last_name}"
231
+
232
+ @property
233
+ def is_active(self) -> bool:
234
+ """Check if user account is active.
235
+
236
+ Returns:
237
+ True if account is active and not suspended
238
+ """
239
+ return self.status == "active" and not self.suspended
240
+ ```
241
+
242
+ ## NumPy Style Docstrings
243
+
244
+ NumPy style uses more structured formatting, popular in scientific computing.
245
+
246
+ ### Function Documentation
247
+
248
+ ```python
249
+ def calculate_statistics(
250
+ data: np.ndarray,
251
+ axis: Optional[int] = None,
252
+ ddof: int = 0,
253
+ ) -> dict:
254
+ """Calculate statistical measures for data.
255
+
256
+ Computes mean, median, standard deviation, and variance
257
+ for the given data array.
258
+
259
+ Parameters
260
+ ----------
261
+ data : np.ndarray
262
+ Input data array
263
+ axis : int, optional
264
+ Axis along which to compute statistics (default: None)
265
+ If None, compute over flattened array
266
+ ddof : int, optional
267
+ Delta degrees of freedom for variance calculation (default: 0)
268
+
269
+ Returns
270
+ -------
271
+ dict
272
+ Dictionary containing:
273
+ - mean : float
274
+ Arithmetic mean
275
+ - median : float
276
+ Median value
277
+ - std : float
278
+ Standard deviation
279
+ - var : float
280
+ Variance
281
+
282
+ Raises
283
+ ------
284
+ ValueError
285
+ If data array is empty
286
+ TypeError
287
+ If data is not a numpy array
288
+
289
+ See Also
290
+ --------
291
+ numpy.mean : Compute arithmetic mean
292
+ numpy.std : Compute standard deviation
293
+
294
+ Notes
295
+ -----
296
+ Uses Welford's online algorithm for numerical stability.
297
+
298
+ Examples
299
+ --------
300
+ >>> data = np.array([1, 2, 3, 4, 5])
301
+ >>> stats = calculate_statistics(data)
302
+ >>> print(stats['mean'])
303
+ 3.0
304
+
305
+ >>> data_2d = np.array([[1, 2], [3, 4]])
306
+ >>> stats = calculate_statistics(data_2d, axis=0)
307
+ >>> print(stats['mean'])
308
+ [2. 3.]
309
+ """
310
+ pass
311
+ ```
312
+
313
+ ### Class Documentation
314
+
315
+ ```python
316
+ class LinearRegression:
317
+ """Linear regression model using least squares.
318
+
319
+ Fits a linear model with coefficients w = (w1, ..., wp)
320
+ to minimize the residual sum of squares between observed
321
+ targets and predicted targets.
322
+
323
+ Parameters
324
+ ----------
325
+ fit_intercept : bool, optional
326
+ Whether to calculate intercept (default: True)
327
+ normalize : bool, optional
328
+ Whether to normalize features (default: False)
329
+ copy_X : bool, optional
330
+ Whether to copy X (default: True)
331
+
332
+ Attributes
333
+ ----------
334
+ coef_ : np.ndarray of shape (n_features,)
335
+ Estimated coefficients for the linear regression
336
+ intercept_ : float
337
+ Independent term in linear model
338
+ rank_ : int
339
+ Rank of matrix X
340
+ singular_ : np.ndarray of shape (min(X, y),)
341
+ Singular values of X
342
+
343
+ Examples
344
+ --------
345
+ >>> X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
346
+ >>> y = np.dot(X, np.array([1, 2])) + 3
347
+ >>> reg = LinearRegression().fit(X, y)
348
+ >>> reg.score(X, y)
349
+ 1.0
350
+ >>> reg.coef_
351
+ array([1., 2.])
352
+ >>> reg.intercept_
353
+ 3.0
354
+
355
+ Notes
356
+ -----
357
+ From the implementation point of view, this is just plain Ordinary
358
+ Least Squares (scipy.linalg.lstsq) wrapped as a predictor object.
359
+ """
360
+
361
+ def __init__(
362
+ self,
363
+ fit_intercept: bool = True,
364
+ normalize: bool = False,
365
+ copy_X: bool = True,
366
+ ):
367
+ """Initialize linear regression model.
368
+
369
+ Parameters
370
+ ----------
371
+ fit_intercept : bool, optional
372
+ Whether to calculate intercept (default: True)
373
+ normalize : bool, optional
374
+ Whether to normalize features (default: False)
375
+ copy_X : bool, optional
376
+ Whether to copy X (default: True)
377
+ """
378
+ pass
379
+ ```
380
+
381
+ ## Special Sections
382
+
383
+ ### Args/Parameters Section
384
+
385
+ ```python
386
+ def complex_function(
387
+ required_arg: str,
388
+ optional_arg: int = 10,
389
+ *args: str,
390
+ **kwargs: Any,
391
+ ) -> dict:
392
+ """Function with various argument types.
393
+
394
+ Args:
395
+ required_arg: A required string argument
396
+ optional_arg: An optional integer (default: 10)
397
+ *args: Variable positional arguments
398
+ **kwargs: Variable keyword arguments. Supported keys:
399
+ - timeout (float): Request timeout in seconds
400
+ - retries (int): Number of retry attempts
401
+ - debug (bool): Enable debug logging
402
+
403
+ Returns:
404
+ Dictionary with processed results
405
+ """
406
+ pass
407
+ ```
408
+
409
+ ### Returns Section
410
+
411
+ ```python
412
+ # Simple return
413
+ def get_user(user_id: int) -> User:
414
+ """Get user by ID.
415
+
416
+ Args:
417
+ user_id: User ID
418
+
419
+ Returns:
420
+ User object
421
+ """
422
+ pass
423
+
424
+ # Multiple return values (tuple)
425
+ def get_user_stats(user_id: int) -> tuple[int, int, float]:
426
+ """Get user statistics.
427
+
428
+ Args:
429
+ user_id: User ID
430
+
431
+ Returns:
432
+ Tuple containing:
433
+ - post_count: Number of posts
434
+ - follower_count: Number of followers
435
+ - engagement_rate: Engagement rate (0.0 to 1.0)
436
+ """
437
+ pass
438
+
439
+ # Complex return type
440
+ def fetch_data(url: str) -> dict[str, Any]:
441
+ """Fetch data from URL.
442
+
443
+ Args:
444
+ url: URL to fetch from
445
+
446
+ Returns:
447
+ Dictionary containing:
448
+ - status: HTTP status code
449
+ - headers: Response headers
450
+ - body: Response body
451
+ - timestamp: Request timestamp
452
+ """
453
+ pass
454
+ ```
455
+
456
+ ### Raises Section
457
+
458
+ ```python
459
+ def create_user(username: str, email: str) -> User:
460
+ """Create a new user account.
461
+
462
+ Args:
463
+ username: Unique username
464
+ email: User's email address
465
+
466
+ Returns:
467
+ Created User object
468
+
469
+ Raises:
470
+ ValidationError: If username or email is invalid
471
+ DuplicateUserError: If username or email already exists
472
+ DatabaseError: If database operation fails
473
+
474
+ Example:
475
+ >>> user = create_user("john", "john@example.com")
476
+ >>> print(user.username)
477
+ 'john'
478
+ """
479
+ pass
480
+ ```
481
+
482
+ ### Examples Section
483
+
484
+ ```python
485
+ def calculate_discount(
486
+ price: float,
487
+ discount_percent: float,
488
+ ) -> float:
489
+ """Calculate discounted price.
490
+
491
+ Args:
492
+ price: Original price
493
+ discount_percent: Discount percentage (0-100)
494
+
495
+ Returns:
496
+ Discounted price
497
+
498
+ Examples:
499
+ >>> calculate_discount(100.0, 10.0)
500
+ 90.0
501
+
502
+ >>> calculate_discount(50.0, 25.0)
503
+ 37.5
504
+
505
+ >>> calculate_discount(100.0, 0.0)
506
+ 100.0
507
+ """
508
+ pass
509
+ ```
510
+
511
+ ### Notes and Warnings
512
+
513
+ ```python
514
+ def process_large_file(file_path: str) -> None:
515
+ """Process large file in chunks.
516
+
517
+ Args:
518
+ file_path: Path to file to process
519
+
520
+ Note:
521
+ This function processes files in chunks to avoid
522
+ loading entire file into memory. Suitable for
523
+ files larger than available RAM.
524
+
525
+ Warning:
526
+ File must be in UTF-8 encoding. Other encodings
527
+ may cause decoding errors.
528
+
529
+ See Also:
530
+ process_small_file: For files < 100MB
531
+ stream_file: For streaming processing
532
+ """
533
+ pass
534
+ ```
535
+
536
+
537
+ ## Type Hints Integration
538
+
539
+ Type hints and docstrings work together for complete documentation.
540
+
541
+ ### With Type Hints
542
+
543
+ ```python
544
+ from typing import Optional, List, Dict, Any
545
+
546
+ def fetch_users(
547
+ role: str,
548
+ active_only: bool = True,
549
+ limit: Optional[int] = None,
550
+ ) -> List[Dict[str, Any]]:
551
+ """Fetch users by role.
552
+
553
+ Type hints provide type information, docstring provides
554
+ semantic information and constraints.
555
+
556
+ Args:
557
+ role: User role to filter by (e.g., "admin", "user", "guest")
558
+ active_only: Only return active users (default: True)
559
+ limit: Maximum number of users to return (default: None for all)
560
+
561
+ Returns:
562
+ List of user dictionaries, each containing:
563
+ - id: User ID
564
+ - username: Username
565
+ - email: Email address
566
+ - role: User role
567
+
568
+ Note:
569
+ Type hints show List[Dict[str, Any]], but docstring
570
+ specifies the exact structure of each dictionary.
571
+ """
572
+ pass
573
+ ```
574
+
575
+ ### Generic Types
576
+
577
+ ```python
578
+ from typing import TypeVar, Generic, List
579
+
580
+ T = TypeVar('T')
581
+
582
+ class Repository(Generic[T]):
583
+ """Generic repository for data access.
584
+
585
+ Type Parameters:
586
+ T: Type of entity managed by this repository
587
+
588
+ Example:
589
+ >>> user_repo = Repository[User]()
590
+ >>> users = user_repo.find_all()
591
+ """
592
+
593
+ def find_by_id(self, id: int) -> Optional[T]:
594
+ """Find entity by ID.
595
+
596
+ Args:
597
+ id: Entity ID
598
+
599
+ Returns:
600
+ Entity if found, None otherwise
601
+ """
602
+ pass
603
+
604
+ def find_all(self) -> List[T]:
605
+ """Find all entities.
606
+
607
+ Returns:
608
+ List of all entities
609
+ """
610
+ pass
611
+ ```
612
+
613
+ ## Module Documentation
614
+
615
+ ### Module Docstring
616
+
617
+ ```python
618
+ """User authentication and authorization module.
619
+
620
+ This module provides functionality for:
621
+ - User authentication (login, logout, session management)
622
+ - Password hashing and verification
623
+ - Permission checking and role-based access control
624
+ - Token generation and validation
625
+
626
+ Classes:
627
+ Authenticator: Main authentication handler
628
+ PasswordHasher: Password hashing utilities
629
+ PermissionChecker: Permission validation
630
+
631
+ Functions:
632
+ hash_password: Hash a password using bcrypt
633
+ verify_password: Verify password against hash
634
+ generate_token: Generate authentication token
635
+
636
+ Constants:
637
+ TOKEN_EXPIRY: Default token expiration time (seconds)
638
+ MAX_LOGIN_ATTEMPTS: Maximum failed login attempts
639
+
640
+ Example:
641
+ >>> from auth import Authenticator
642
+ >>> auth = Authenticator()
643
+ >>> user = auth.login("username", "password")
644
+ >>> if auth.has_permission(user, "admin"):
645
+ ... print("User is admin")
646
+
647
+ Note:
648
+ This module requires bcrypt and PyJWT packages.
649
+ Install with: pip install bcrypt PyJWT
650
+ """
651
+
652
+ import bcrypt
653
+ import jwt
654
+ from typing import Optional
655
+
656
+ TOKEN_EXPIRY = 3600 # 1 hour
657
+ MAX_LOGIN_ATTEMPTS = 5
658
+ ```
659
+
660
+ ### Package Documentation
661
+
662
+ ```python
663
+ # __init__.py
664
+ """Authentication package.
665
+
666
+ This package provides comprehensive authentication and authorization
667
+ functionality for web applications.
668
+
669
+ Submodules:
670
+ auth: Core authentication logic
671
+ permissions: Permission and role management
672
+ tokens: Token generation and validation
673
+ models: Data models for users and sessions
674
+
675
+ Usage:
676
+ >>> from auth import Authenticator
677
+ >>> from auth.permissions import PermissionChecker
678
+ >>>
679
+ >>> auth = Authenticator()
680
+ >>> user = auth.login("username", "password")
681
+ """
682
+
683
+ from .auth import Authenticator
684
+ from .permissions import PermissionChecker
685
+ from .tokens import TokenGenerator
686
+
687
+ __all__ = [
688
+ "Authenticator",
689
+ "PermissionChecker",
690
+ "TokenGenerator",
691
+ ]
692
+
693
+ __version__ = "1.0.0"
694
+ ```
695
+
696
+ ## Best Practices
697
+
698
+ ### DO
699
+
700
+ ✅ **Write docstrings for all public APIs** - Modules, classes, functions, methods
701
+
702
+ ✅ **Use consistent style** - Choose Google or NumPy style and stick to it
703
+
704
+ ✅ **Document parameters and return values** - Explain what they are and constraints
705
+
706
+ ✅ **Document exceptions** - List all exceptions that can be raised
707
+
708
+ ✅ **Provide examples** - Show how to use the function/class
709
+
710
+ ✅ **Keep docstrings up to date** - Update when code changes
711
+
712
+ ✅ **Use type hints** - Complement docstrings with type information
713
+
714
+ ✅ **Document edge cases** - Explain behavior for special inputs
715
+
716
+ ✅ **Use imperative mood** - "Return user" not "Returns user"
717
+
718
+ ✅ **Be concise but complete** - Provide necessary information without verbosity
719
+
720
+ ### DON'T
721
+
722
+ ❌ **Don't duplicate type information** - Type hints handle types, docstrings handle semantics
723
+
724
+ ```python
725
+ # Bad - Duplicates type information
726
+ def get_user(user_id: int) -> User:
727
+ """Get user by ID.
728
+
729
+ Args:
730
+ user_id (int): User ID as integer
731
+
732
+ Returns:
733
+ User: User object
734
+ """
735
+ pass
736
+
737
+ # Good - Type hints provide type info, docstring provides semantic info
738
+ def get_user(user_id: int) -> User:
739
+ """Get user by ID.
740
+
741
+ Args:
742
+ user_id: Unique identifier for the user
743
+
744
+ Returns:
745
+ User object with all profile data loaded
746
+ """
747
+ pass
748
+ ```
749
+
750
+ ❌ **Don't write obvious docstrings** - Add value, don't state the obvious
751
+
752
+ ```python
753
+ # Bad - States the obvious
754
+ def add(a: int, b: int) -> int:
755
+ """Add two numbers.
756
+
757
+ Args:
758
+ a: First number
759
+ b: Second number
760
+
761
+ Returns:
762
+ Sum of a and b
763
+ """
764
+ return a + b
765
+
766
+ # Good - Simple function, simple docstring
767
+ def add(a: int, b: int) -> int:
768
+ """Return sum of two numbers."""
769
+ return a + b
770
+ ```
771
+
772
+ ❌ **Don't let docstrings get stale** - Update when code changes
773
+
774
+ ❌ **Don't mix docstring styles** - Be consistent across codebase
775
+
776
+ ❌ **Don't document private methods extensively** - Brief docstrings are fine
777
+
778
+ ```python
779
+ # Good - Brief docstring for private method
780
+ def _validate_email(self, email: str) -> bool:
781
+ """Check if email format is valid."""
782
+ return "@" in email and "." in email.split("@")[1]
783
+ ```
784
+
785
+ ## Tools and Validation
786
+
787
+ ### Docstring Linters
788
+
789
+ ```bash
790
+ # pydocstyle - Check docstring conventions
791
+ pip install pydocstyle
792
+ pydocstyle mymodule.py
793
+
794
+ # darglint - Check docstring matches function signature
795
+ pip install darglint
796
+ darglint mymodule.py
797
+
798
+ # interrogate - Check docstring coverage
799
+ pip install interrogate
800
+ interrogate -v mymodule.py
801
+ ```
802
+
803
+ ### Generating Documentation
804
+
805
+ ```bash
806
+ # Sphinx - Generate HTML documentation
807
+ pip install sphinx
808
+ sphinx-quickstart
809
+ sphinx-build -b html docs/ docs/_build/
810
+
811
+ # pdoc - Simple documentation generator
812
+ pip install pdoc
813
+ pdoc --html mymodule
814
+ ```
815
+
816
+ ## Summary
817
+
818
+ **Key Takeaways:**
819
+
820
+ 1. **Write docstrings for all public APIs** - Modules, classes, functions
821
+ 2. **Choose a consistent style** - Google or NumPy style
822
+ 3. **Document parameters, returns, and exceptions** - Be complete
823
+ 4. **Provide examples** - Show usage patterns
824
+ 5. **Use type hints** - Complement docstrings with type information
825
+ 6. **Keep docstrings updated** - Maintain accuracy
826
+ 7. **Be concise but informative** - Add value, avoid verbosity
827
+ 8. **Use imperative mood** - "Return" not "Returns"
828
+ 9. **Document edge cases and constraints** - Explain special behavior
829
+ 10. **Validate with tools** - Use pydocstyle, darglint, interrogate
830
+
831
+