ಅಭಿವೃದ್ಧಿ ಮಾದರಿಯು ಯಾವುದೇ ದಾಸ್ತಾನು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಾಗದ ಭರವಸೆಗಳನ್ನು ನೀಡಿದಾಗ ಹೇಗೆ-ದಸ್ತಾವೇಜನ್ನು ವಿಫಲಗೊಳ್ಳುತ್ತದೆ. ಸಾರ್ವಜನಿಕ ಸಹಿಗಳು ಪ್ಯಾರಾಮೀಟರ್ ಕೋಷ್ಟಕಗಳು ಮತ್ತು ಔಪಚಾರಿಕ ಅಸ್ಥಿಪಂಜರಗಳನ್ನು ಬೆಂಬಲಿಸಬಹುದು, ಆದರೆ ಅವು ಅನುಸ್ಥಾಪನಾ ಮಾರ್ಗಗಳು, ಬೆಂಬಲ ವಿಂಡೋಗಳು ಅಥವಾ ಉದಾಹರಣೆ ಔಟ್ಪುಟ್ ಅನ್ನು ಮೌಲ್ಯೀಕರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಈ ವರ್ಕ್ಫ್ಲೋ ಯಂತ್ರ-ಓದಬಲ್ಲ ದಾಸ್ತಾನು ರಚಿಸುತ್ತದೆ, ಲೇಬಲ್ ಮಾಡದ ಅಸ್ಥಿಪಂಜರಗಳ ಮಾದರಿಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು ಪರಿಸರ ಹಕ್ಕುಗಳಿಗೆ ಸಹಿ ಹಾಕಲು ಮಾನವನ ಅಗತ್ಯವಿರುತ್ತದೆ. ಈ ವಿಧಾನವು ಪ್ರಕ್ರಿಯೆ ನಿಯಂತ್ರಣವಾಗಿದೆ, ಪರಿಣಾಮವಾಗಿ README ಸರಿಯಾಗಿದೆ ಎಂಬುದಕ್ಕೆ ಪುರಾವೆ ಅಲ್ಲ.
ಚಾಟ್ನಿಂದ ಪ್ರಾರಂಭವಾದ ಪುಟಗಳನ್ನು ಮರುಸ್ಥಾಪಿಸುವ ಎಲ್ಲಾ ಲೈಬ್ರರಿಗಳಲ್ಲಿ ವೈಫಲ್ಯ ಮೋಡ್ ಸ್ಥಿರವಾಗಿರುತ್ತದೆ. ಮಾದರಿಯು ಕಾರ್ಯದ ಹೆಸರುಗಳನ್ನು ಮುಕ್ತವಾಗಿ ಪುನರಾವರ್ತಿಸುತ್ತದೆ ಮತ್ತು ನಂತರ ಬೇರೆ ಯಾರೂ ಮಾಡದ ಹೆಚ್ಚುವರಿ ಪಿಪ್, ಪೈಥಾನ್ ಫ್ಲೋರ್ ಅಥವಾ ಸ್ಯಾಂಪಲ್ ಶಾರ್ಟ್ಹ್ಯಾಂಡ್ ಅನ್ನು ಆವಿಷ್ಕರಿಸುತ್ತದೆ. ಓದುಗರು ಈ ವಾಕ್ಯಗಳನ್ನು ಒಪ್ಪಂದದಂತೆ ತೆಗೆದುಕೊಳ್ಳುತ್ತಾರೆ. ಸುತ್ತಮುತ್ತಲಿನ ಗದ್ಯವು ಸ್ಥಳೀಯವಾಗಿ ಸೂಕ್ತವೆಂದು ತೋರುವ ಕಾರಣ ವ್ಯಾಖ್ಯಾನಕಾರರು ಅವರನ್ನು ತಪ್ಪಿಸಿಕೊಳ್ಳುತ್ತಾರೆ. ತಿದ್ದುಪಡಿ ಉತ್ತಮ ವಿನಂತಿಯಲ್ಲ. ಫಿಕ್ಸ್ ಎನ್ನುವುದು ಸ್ಕ್ರಿಪ್ಟ್ ಫೈಲ್ ಆಗಿದ್ದು ಅದು ದಾಸ್ತಾನು ಬೆಂಬಲಿಸಲು ಸಾಧ್ಯವಾಗದ ಕ್ಲೈಮ್ ಕ್ಲಾಸ್ಗಳನ್ನು ಜನಪ್ರಿಯಗೊಳಿಸದಂತೆ ಮಾದರಿಯನ್ನು ತಡೆಯುತ್ತದೆ.
ದಾಸ್ತಾನು ಏನು ಸಾಬೀತುಪಡಿಸಬಹುದು?
ಸಾರ್ವಜನಿಕ ಕಾರ್ಯಗಳ AST ಹಂತವು ಹೆಸರುಗಳು, ಆರ್ಗ್ಯುಮೆಂಟ್ ಪಟ್ಟಿಗಳು, ಡಿಫಾಲ್ಟ್ಗಳು, ಟಿಪ್ಪಣಿಗಳು ಮತ್ತು ಡಾಕ್ಯುಮೆಂಟ್ಗಳ ಉಪಸ್ಥಿತಿಯನ್ನು ಸಾಬೀತುಪಡಿಸಬಹುದು. ಯಾವ ಕೋಡ್ಗಳನ್ನು ರಫ್ತು ಮಾಡಲಾಗಿದೆ ಎಂಬುದನ್ನು ಸಹ ಇದು ಸಾಬೀತುಪಡಿಸಬಹುದು __all__ ಈ ಪಟ್ಟಿಯು ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದಾಗ. ಡೀಫಾಲ್ಟ್ ಉತ್ಪಾದನೆ-ಸುರಕ್ಷಿತವಾಗಿದೆ, ಟೈಪ್ ಪಾಯಿಂಟರ್ ರನ್ಟೈಮ್ಗೆ ಹೊಂದಿಕೆಯಾಗುತ್ತದೆ ಅಥವಾ ಡಾಕ್ಯುಮೆಂಟ್ ಸ್ಟ್ರಿಂಗ್ ಇನ್ನೂ ಮಾನ್ಯವಾಗಿದೆ ಎಂದು ಸಾಬೀತುಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಆ ಅಂತರಗಳು ಮಾನವ ರೇಖೆಯನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತವೆ. ದಾಸ್ತಾನು ಹ್ಯಾಶ್ನ ಪಕ್ಕದಲ್ಲಿ ವ್ಯಕ್ತಿಯು ಬರೆಯುವವರೆಗೆ ಯಾವುದೇ ಸಾಬೀತಾಗದ ಐಟಂ ಅನ್ನು ಸಹಿ ಮಾಡದಿರುವಂತೆ ಪರಿಗಣಿಸಿ.
ಕೆಳಗಿನ ಕೋಷ್ಟಕವು ಒಪ್ಪಂದವಾಗಿದೆ. ಪ್ರಾಜೆಕ್ಟ್ ಪಠ್ಯವು ಎಡ ಕಾಲಮ್ ಅನ್ನು ಮಾತ್ರ ಆಕ್ರಮಿಸಬಹುದು. ಕೆಲಸ ಮಾಡುವ ಯಂತ್ರ, ಬೆಂಬಲಿತ ಆವೃತ್ತಿ ಅಥವಾ ಕಾನೂನು ಓದುವಿಕೆಯನ್ನು ಸೂಚಿಸುವ ಯಾವುದಾದರೂ ಮಾದರಿಯು ಅದನ್ನು ಸುಲಭವಾಗಿ ಪ್ರತಿನಿಧಿಸಬಹುದಾದರೂ ಸಹ ಬಲಭಾಗದಲ್ಲಿರುತ್ತದೆ.
| ಹಕ್ಕು ವರ್ಗ | ಮಾದರಿಯನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಬಹುದು | ಒಬ್ಬ ವ್ಯಕ್ತಿಯು ಹೊಂದಿರಬೇಕು |
|---|---|---|
| ಇದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದರ ಕುರಿತು ವಿಭಾಗದ ವಿವರಣೆ | ಹೌದು, ದಾಸ್ತಾನು ಹೆಡರ್ಗಳಿಂದ | ಇಲ್ಲ, ಯೋಜನೆಯು ಉತ್ಪನ್ನ ಭರವಸೆಯನ್ನು ಸೇರಿಸದ ಹೊರತು |
| ನಿಯತಾಂಕಗಳ ಕೋಷ್ಟಕಗಳು | ಹೌದು, ಸಹಿಗಳನ್ನು ನಕಲಿಸಲಾಗಿದೆ | ಭದ್ರತೆ ಅಥವಾ ಘಟಕಗಳನ್ನು ಸೂಚಿಸುವ ಡೀಫಾಲ್ಟ್ಗಳು |
| ಅಸ್ಥಿಪಂಜರಗಳನ್ನು ಪ್ರಕ್ರಿಯೆಗೊಳಿಸಿ | ಹೌದು, ಜೊತೆಗೆ TODO(human) ಹಂತಗಳು |
ಪ್ರತಿಯೊಂದು ಹಂತವೂ ಯಂತ್ರ ರೀಡರ್ನಲ್ಲಿ ಯಶಸ್ವಿಯಾಗಬೇಕು |
| ಸಂಕೇತಗಳ ನಡುವಿನ ಪರಸ್ಪರ ಸಂಪರ್ಕಗಳು | ಹೌದು, ಎರಡೂ ಚಿಹ್ನೆಗಳು ಸಾರ್ವಜನಿಕವಾಗಿದ್ದರೆ | ಬಿಡುಗಡೆಗಳ ನಡುವಿನ ಹೊಂದಾಣಿಕೆಯ ಹೇಳಿಕೆ |
| ಅನುಸ್ಥಾಪನೆ ಮತ್ತು ಸೇರ್ಪಡೆ | ಸಂ | ನಿಖರವಾದ ಆಜ್ಞೆಗಳು, ಹೆಚ್ಚುವರಿ ಮತ್ತು ಅನುವಾದಕ ಮಹಡಿ |
| ಉದಾಹರಣೆ stdout / ಸ್ಕ್ರೀನ್ಶಾಟ್ಗಳು | ಇಲ್ಲ, ಲೇಬಲ್ ಪೂರೈಸದ ಹೊರತು | ಗಮನಿಸಿದಂತೆ ಯಾವುದೇ ಪ್ರತಿಲೇಖನವನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಲಾಗುತ್ತದೆ |
| ಬೆಂಬಲ, ಪರವಾನಗಿ, ಭದ್ರತೆ | ಸಂ | ಪರವಾನಗಿ, ಸಂಪರ್ಕ ವಿಧಾನ, ಬೆದರಿಕೆ ಹಕ್ಕುಗಳ ಅರ್ಥ |
1. ಸಾರ್ವಜನಿಕ ಟೋಕನ್ ದಾಸ್ತಾನು ಫ್ರೀಜ್ ಮಾಡಿ
ಮೊದಲ ಕಲಾಕೃತಿಯು JSON ದಾಸ್ತಾನು ಒಂದು ಅರ್ಹವಾದ ಹೆಸರಿನೊಂದಿಗೆ ಕೀಲಿಯಾಗಿದೆ. ಆ ಫೈಲ್ ಅನ್ನು git ನಲ್ಲಿ ಹ್ಯಾಶ್ ಮಾಡಿ ಇದರಿಂದ ನಂತರದ README ವ್ಯತ್ಯಾಸಗಳು ನಿರ್ದಿಷ್ಟ ಅಕ್ಷರ ಸೆಟ್ಗಳಿಗೆ ಸೂಚಿಸಬಹುದು. ಕೆಳಗೆ ತೋರಿಸಿರುವ ಸ್ಕ್ರಿಪ್ಟ್ ಸಣ್ಣ ಲೈಬ್ರರಿ ಲೇಔಟ್ ಆಗಿದೆ. ಇದು ಉತ್ಪಾದನಾ ಸೂಚ್ಯಂಕವಲ್ಲ, ಮತ್ತು ಇದು ಮರು ರಫ್ತು, C ವಿಸ್ತರಣೆಗಳು ಮತ್ತು ರನ್ಟೈಮ್-ರಚಿತ API ಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸುತ್ತದೆ.
# labeled example: inventory_extract.py
from __future__ import annotations
import ast
import hashlib
import json
from pathlib import Path
from typing import Any
ROOT = Path("src")
OUT = Path("doc_inventory.json")
def public_functions(path: Path, module: str) -> list[dict[str, Any]]:
tree = ast.parse(path.read_text(encoding="utf-8"), filename=str(path))
rows: list[dict[str, Any]] = []
for node in tree.body:
if not isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):
continue
if node.name.startswith("_"):
continue
args = []
for arg in node.args.args:
anno = ast.unparse(arg.annotation) if arg.annotation else None
args.append({"name": arg.arg, "annotation": anno})
rows.append(
{
"qualname": f"{module}.{node.name}",
"args": args,
"returns": ast.unparse(node.returns) if node.returns else None,
"has_docstring": ast.get_docstring(node) is not None,
"lineno": node.lineno,
}
)
return rows
def main() -> None:
items: list[dict[str, Any]] = []
for path in sorted(ROOT.rglob("*.py")):
rel = path.with_suffix("").relative_to(ROOT)
module = ".".join(rel.parts)
items.extend(public_functions(path, module))
payload = {"items": items}
text = json.dumps(payload, indent=2, sort_keys=True) + "\n"
digest = hashlib.sha256(text.encode("utf-8")).hexdigest()[:12]
payload["inventory_sha256_12"] = digest
OUT.write_text(json.dumps(payload, indent=2, sort_keys=True) + "\n", encoding="utf-8")
print(f"wrote {OUT} items={len(items)} sha={digest}")
if __name__ == "__main__":
main()
ಒಮ್ಮೆ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ನಂತರ, ಅದನ್ನು ರೆಪೊಸಿಟರಿಯ ಮೂಲದಿಂದ ರನ್ ಮಾಡಿ ROOT ನೀವು ನಿಜವಾಗಿಯೂ ಕಳುಹಿಸುವ ಪ್ಯಾಕೇಜ್ನಲ್ಲಿ.
python inventory_extract.py
python -c "import json; print(json.load(open('doc_inventory.json'))['inventory_sha256_12'])"
ಲಿಖಿತ ಫೈಲ್ನಲ್ಲಿ ಹನ್ನೆರಡು ಅಕ್ಷರ ಡೈಜೆಸ್ಟ್ ಅನ್ನು ಉಳಿಸಿ. ಡೈಜೆಸ್ಟ್ ಸ್ಕ್ರೋಲಿಂಗ್ ಆಗಿದ್ದರೆ, ಈ ಹಿಂದೆ ಸಹಿ ಮಾಡಿದ ಯಾವುದೇ ಸ್ಥಾಪಿತ ವಾಕ್ಯವನ್ನು ಮನುಷ್ಯ ಮತ್ತೊಮ್ಮೆ ಓದುವವರೆಗೆ ಅವಧಿ ಮೀರಿರುತ್ತದೆ. ಈ ನಿಯಮವು ಯಾಂತ್ರಿಕವಾಗಿದೆ. ದಾಸ್ತಾನು ಹಂತದಲ್ಲಿ ಗದ್ಯದ ಗುಣಮಟ್ಟವನ್ನು ನಿರ್ಣಯಿಸುವ ಅಗತ್ಯವಿಲ್ಲ.
2. ಯಾವುದೇ ಪ್ರಾಜೆಕ್ಟ್ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವುದಕ್ಕಿಂತ ಮೊದಲು ಸ್ಕ್ರಿಪ್ಟ್ ಫೈಲ್ ಅನ್ನು ಬರೆಯಿರಿ
ರಚಿಸಿ doc_lanes.yaml ಕೈಯಿಂದ ಕ್ಲೈಮ್ ಆಸ್ತಿಯನ್ನು ವರ್ಗೀಕರಿಸಲು ಮಾದರಿಯನ್ನು ಕೇಳಬೇಡಿ ಏಕೆಂದರೆ ಆ ವರ್ಗೀಕರಣವು ನಿಯಂತ್ರಣ ಸಮತಲವಾಗಿದೆ. ಜನರಿಗೆ ಸೇರಿದ ಕೀಗಳನ್ನು ಖಾಲಿ ಮಾಡಿ ಅಥವಾ ಭರ್ತಿ ಮಾಡಿ UNSIGNED. ಪ್ರಾಜೆಕ್ಟ್-ನಿರ್ದಿಷ್ಟ ಕೀಲಿಗಳು ಇನ್ನೂ ಪ್ಲೇಸ್ಹೋಲ್ಡರ್ಗಳನ್ನು ಬಳಸುವ ಅಸ್ಥಿಪಂಜರ ಅಕ್ಷರಗಳನ್ನು ಹೊಂದಿರಬಹುದು.
# labeled example: doc_lanes.yaml
inventory_sha256_12: "replace-after-extract"
draft_allowed:
outline: |
## Install
TODO(human): interpreter, extras, lockfile
## Call the public entrypoints
TODO(model): parameter tables from inventory only
## Next steps
TODO(human): support path
human_owned:
python_requires: UNSIGNED
install_command: UNSIGNED
extras: UNSIGNED
observed_example_exit_code: UNSIGNED
license_summary: UNSIGNED
support_contact: UNSIGNED
forbidden_in_draft:
- "pip install"
- "conda install"
- "tested on"
- "production ready"
- "we support"
- "output:"
- "SLA"
ಬ್ಯಾನ್ಲಿಸ್ಟ್ ಒಂದು ಟ್ರಿಪ್ವೈರ್, ಶಬ್ದಾರ್ಥದ ವಿಶ್ಲೇಷಕವಲ್ಲ. ಇದು ದಾಸ್ತಾನುಗಳನ್ನು ಸಮರ್ಥಿಸಲು ಸಾಧ್ಯವಿಲ್ಲದ ಸಾಮಾನ್ಯ README ಭರವಸೆಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ನಿಮ್ಮ ಕಾರ್ಪಸ್ ಇತರ ಗುತ್ತಿಗೆ ಕ್ರಿಯಾಪದಗಳನ್ನು ಬಳಸಿದಾಗ, ಅದನ್ನು ವಿಸ್ತರಿಸಿ. ಇದು ಮಾನ್ಯವಾಗಿದೆ ಎಂದು ಪುರಾವೆಯಾಗಿ ಕ್ಲೀನ್ ಸ್ಕ್ಯಾನ್ ತೆಗೆದುಕೊಳ್ಳಬೇಡಿ.
3. ಅನುಮತಿಸಲಾದ ಅಸ್ಥಿಪಂಜರದೊಳಗೆ ಮಾತ್ರ ಯೋಜನೆ
ಮಾದರಿಗೆ JSON ಇನ್ವೆಂಟರಿ, ಔಟ್ಲೈನ್ ಮತ್ತು ನಿರ್ದೇಶನವನ್ನು ನೀಡಿ ಅದು ಮೇಲ್ಬರಹ ಮಾಡಬಹುದು TODO(model) ಬ್ಲಾಕ್ಗಳನ್ನು. ಅದು ಬಿಡಬೇಕು TODO(human) ಪ್ರವೇಶಿಸಲಾಗದ ಬ್ಲಾಕ್ಗಳು. ಇದು ಅನುಸ್ಥಾಪನಾ ಆಜ್ಞೆಗಳು, ಆವೃತ್ತಿ ಲೇಯರ್ಗಳು ಅಥವಾ ಪ್ರೋಗ್ರಾಂ ಮಾದರಿ ಔಟ್ಪುಟ್ ಅನ್ನು ಸೇರಿಸಬಾರದು. ನಿಮಗೆ ರಿಮೋಟ್ ಡೆವಲಪ್ಮೆಂಟ್ ಪರಿಸರದ ಅಗತ್ಯವಿದ್ದರೆ, ಮಂಕಿಕೋಡ್ನ ಉಚಿತ ಪ್ರವೇಶ ಮಾದರಿ ಮತ್ತು ಉಚಿತ ಸರ್ವರ್ ಆಯ್ಕೆಯು ಈ ಅಡಚಣೆಯನ್ನು ಸರಿಹೊಂದಿಸಬಹುದು. ಬಹಿರಂಗಪಡಿಸುವಿಕೆ: ಈ ಲೇಖನವನ್ನು MonkeyCode ನ ಉತ್ಪನ್ನ ವ್ಯಾಪ್ತಿಯ ಭಾಗವಾಗಿ ಬರೆಯಲಾಗಿದೆ. ಫೈಲ್ ಮತ್ತು ದಾಸ್ತಾನುಗಳನ್ನು ಎರಡೂ ರೀತಿಯಲ್ಲಿ git ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಿ; ಚಾಟ್ ಪ್ರತಿಲೇಖನದಲ್ಲಿ ಮಾಲೀಕತ್ವದ ಸ್ಥಿತಿಯನ್ನು ಬಿಡಬೇಡಿ.
ಒಪ್ಪಂದದೊಳಗೆ ಉಳಿದಿರುವ ಪ್ರಶ್ನೆಯು ಕೆಳಗಿನ ಬ್ಲಾಕ್ ಅನ್ನು ಹೋಲುತ್ತದೆ. ಇದು ಟೆಂಪ್ಲೇಟ್ ಆಗಿದೆ, ಅಳತೆ ಮಾಡಿದ ಗುಣಮಟ್ಟದ ಹಕ್ಕು ಅಲ್ಲ, ಮತ್ತು ಇದು ಯಾವುದೇ ಮಾದರಿಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುವುದಿಲ್ಲ.
You receive doc_inventory.json and the draft_allowed.outline field.
Rewrite only sections marked TODO(model).
Use parameter names and annotations exactly as given.
Do not invent extras, Python versions, install commands, or program output.
Leave every TODO(human) line unchanged.
Return markdown for the outline only.
ಒಂದು ಪ್ರಾಜೆಕ್ಟ್ ಇನ್ವೆಂಟರಿ ಎಂದಿಗೂ ಹೊಂದಿರದ ಆಜ್ಞೆಯನ್ನು ನಮೂದಿಸಿದರೆ, ಯೋಜನೆಯನ್ನು ತ್ಯಜಿಸಿ. ತಪ್ಪು ಅನುಸ್ಥಾಪನಾ ಮಾರ್ಗಕ್ಕೆ ಸಹಿ ಮಾಡುವುದಕ್ಕಿಂತ ಮರುಹೊಂದಿಸುವಿಕೆಯು ಅಗ್ಗವಾಗಿದೆ. ಮಾನವ ರೇಖೆಯು ರೆಪೊಸಿಟರಿಯು ಎನ್ಕೋಡ್ ಮಾಡುವುದಿಲ್ಲ ಎಂಬ ಜ್ಞಾನಕ್ಕಾಗಿ, ಉಳಿದ ಮಾದರಿಯನ್ನು ಸ್ವಚ್ಛಗೊಳಿಸಲು ಅಲ್ಲ.
4. ವಿಲೀನಗೊಳಿಸುವ ಮೊದಲು README ಸಾಲುಗಳನ್ನು ಪರಿಶೀಲಿಸಿ
ಕೆಳಗಿನ ಪರೀಕ್ಷೆಯು ಲೇಬಲಿಂಗ್ನ ಉದಾಹರಣೆಯಾಗಿದೆ. ಇದು ಮೂರು ಗೇಟ್ಗಳನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ: ಇನ್ವೆಂಟರಿ ಡೈಜೆಸ್ಟ್ ಹೊಂದಾಣಿಕೆ, ಪ್ರಾಜೆಕ್ಟ್ ಫೈಲ್ನಲ್ಲಿ ಯಾವುದೇ ನಿಷೇಧಿತ ಪದಗುಚ್ಛಗಳಿಲ್ಲ ಮತ್ತು ಯಾವುದೇ ಶೇಷಗಳಿಲ್ಲ. UNSIGNED ಯಾವಾಗ ಕೀಗಳು --require-signed ಸ್ಥಾಪಿಸಲಾಗಿದೆ. ಇದು ಓದುವಿಕೆಯನ್ನು ಗ್ರೇಡ್ ಮಾಡುವುದಿಲ್ಲ ಅಥವಾ ಉದಾಹರಣೆಗಳನ್ನು ರನ್ ಮಾಡುವುದಿಲ್ಲ.
# labeled example: verify_doc_lanes.py
from __future__ import annotations
import argparse
import json
import re
import sys
from pathlib import Path
try:
import yaml
except ImportError:
sys.stderr.write("install pyyaml before running this checker\n")
raise
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("--inventory", default="doc_inventory.json")
parser.add_argument("--lanes", default="doc_lanes.yaml")
parser.add_argument("--draft", default="howto.draft.md")
parser.add_argument("--require-signed", action="store_true")
args = parser.parse_args()
inventory = json.loads(Path(args.inventory).read_text(encoding="utf-8"))
lanes = yaml.safe_load(Path(args.lanes).read_text(encoding="utf-8"))
draft = Path(args.draft).read_text(encoding="utf-8")
errors: list[str] = []
expected = inventory.get("inventory_sha256_12")
if lanes.get("inventory_sha256_12") != expected:
errors.append("lane digest does not match inventory")
lowered = draft.lower()
for needle in lanes.get("forbidden_in_draft", []):
if needle.lower() in lowered:
errors.append(f"forbidden phrase in draft: {needle!r}")
if re.search(r"TODO\(model\)", draft):
errors.append("unresolved TODO(model) remains in draft")
if args.require_signed:
for key, value in (lanes.get("human_owned") or {}).items():
if value == "UNSIGNED" or not str(value).strip():
errors.append(f"unsigned human key: {key}")
if errors:
sys.stderr.write("\n".join(errors) + "\n")
return 1
print("lane check passed")
return 0
if __name__ == "__main__":
raise SystemExit(main())
ಪ್ರಮುಖ ಅವಶ್ಯಕತೆಗಳಿಗೆ ಸಹಿ ಮಾಡದೆಯೇ CI ಗೆ ಅಗ್ಗದ ಗೇಟ್ವೇಗಳನ್ನು ಸಂಪರ್ಕಿಸಿ. ಓಡುತ್ತಿದೆ --require-signed ಒಬ್ಬ ವ್ಯಕ್ತಿಯು ಪ್ರತಿಯೊಂದನ್ನು ಬದಲಾಯಿಸಿದ ನಂತರ ಮಾತ್ರ ಉಚಿತ ಶಾಖೆಯಲ್ಲಿ UNSIGNED ಅವರು ರಕ್ಷಿಸಲು ಸಿದ್ಧರಾಗಿದ್ದಾರೆ ಎಂಬ ವಾಕ್ಯದೊಂದಿಗೆ. ಈ ಹಂಚಿಕೆಯು ಪುಲ್ ವಿನಂತಿಗಳನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ ಮತ್ತು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದಂತೆ ಖಾಲಿ ಭರವಸೆಗಳನ್ನು ರವಾನಿಸುವುದನ್ನು ತಡೆಯುತ್ತದೆ.
pip install pyyaml
python verify_doc_lanes.py
python verify_doc_lanes.py --require-signed # release branch only
5. ಮಾನವ ರೇಖೆಯನ್ನು ಸತ್ಯಗಳೊಂದಿಗೆ ಸಹಿ ಮಾಡಿ, ಟೋನ್ ಅಲ್ಲ
ನೀವು ಬದಲಾಯಿಸಿದಾಗ UNSIGNEDಇನ್ನೊಬ್ಬ ಇಂಜಿನಿಯರ್ ಪುನರಾವರ್ತಿಸಬಹುದಾದ ಸುಳಿವನ್ನು ಲಗತ್ತಿಸಿ. ಅನುವಾದಕನ ನೆಲವನ್ನು ಉಲ್ಲೇಖಿಸಬೇಕು requires-python ಪ್ಯಾಕೇಜಿಂಗ್ ಮೆಟಾಡೇಟಾದಲ್ಲಿ, ಮನಸ್ಸಿನಲ್ಲಿ ಕಾರಿಡಾರ್ ಸಂಖ್ಯೆ ಅಲ್ಲ. ಅನುಸ್ಥಾಪನಾ ಆಜ್ಞೆಯು ವಿಸ್ತರಣೆಯ ಹೆಸರನ್ನು ಒಳಗೊಂಡಿರಬೇಕು pyproject.toml. ಮಾದರಿ ಪ್ರತಿಲೇಖನವು ರೆಕಾರ್ಡ್ ಮಾಡಿದ ಅಥವಾ ರೆಕಾರ್ಡ್ ಮಾಡದ ಸೆಷನ್ನಿಂದ ಆಯ್ದ ಭಾಗವನ್ನು ಒಳಗೊಂಡಿರಬೇಕು. ಬೆಂಬಲ ಪಠ್ಯವು ನಿಜವಾದ ಸಮಸ್ಯೆ ಟ್ರ್ಯಾಕರ್ ಅಥವಾ ಮೇಲ್ ಅಲಿಯಾಸ್ಗೆ ಲಿಂಕ್ ಮಾಡಬೇಕು. ಈ ಯಾವುದೇ ಸೂಚನೆಗಳು ಅಲಂಕಾರಿಕವಲ್ಲ. ಗದ್ಯವನ್ನು ನಂಬದೆ ಹಕ್ಕನ್ನು ಪರೀಕ್ಷಿಸುವ ಮುಂದಿನ ವಿಮರ್ಶಕರು ಇವರು.
ಪ್ಯಾಕೇಜಿಂಗ್ ಮೆಟಾಡೇಟಾ ಮತ್ತು ಹೇಗೆ ಸಮ್ಮತಿಸದಿದ್ದರೆ, ಅದು ಹೇಗೆ ತಪ್ಪಾಗಿರಬೇಕು. ಟೋನ್ ಅನ್ನು ಸಮನ್ವಯಗೊಳಿಸಲು ಮಾದರಿಯನ್ನು ಕೇಳುವ ಮೂಲಕ ಸಂಘರ್ಷವನ್ನು “ಸರಿಪಡಿಸಬೇಡಿ”. ಮಾನವ ರೇಖೆಯನ್ನು ಬದಲಾಯಿಸಿ ಅಥವಾ ಪ್ಯಾಕೇಜ್ ಮೆಟಾಡೇಟಾವನ್ನು ಬದಲಾಯಿಸಿ, ನಂತರ ಸಾರ್ವಜನಿಕ ಚಿಹ್ನೆಗಳನ್ನು ಸರಿಸಿದರೆ ದಾಸ್ತಾನು ಮರುಹೊಂದಿಸಿ. ಅದರ ವಾದಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಲು ವಿಫಲವಾದ ಡಾಕ್ಯುಮೆಂಟ್ ಇನ್ನೂ ಡ್ರಾಫ್ಟ್ ಆಗಿರುತ್ತದೆ, ಅದನ್ನು ಹೇಗೆ ಓದಿದರೂ ಪರವಾಗಿಲ್ಲ.
ನಿರ್ಬಂಧಗಳು
ಪ್ಯಾಕೇಜ್ಗಳಿಗೆ ದಾಸ್ತಾನು ಅಪೂರ್ಣವಾಗಿದೆ. __getattr__ ರಫ್ತು ಮತ್ತು ಕಂಪೈಲ್ ಮಾಡ್ಯೂಲ್ಗಳು. ನಿಷೇಧಿತ ಪದಗುಚ್ಛ ಸ್ಕ್ಯಾನಿಂಗ್ “ಇದನ್ನು venv ಗೆ ಎಸೆಯಿರಿ” ನಂತಹ ಪ್ಯಾರಾಫ್ರೇಸ್ಗಳನ್ನು ತಪ್ಪಿಸುತ್ತದೆ, ಅದು ಇನ್ನೂ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ಸ್ಥಾಪನೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಮರದೊಳಗಿನ ದಾಖಲೆ ಸಾಲುಗಳು ತಪ್ಪಾಗಿರಬಹುದು ಮತ್ತು ಎಕ್ಸ್ಟ್ರಾಕ್ಟರ್ ಇನ್ನೂ ವರದಿ ಮಾಡುತ್ತದೆ has_docstring: true. ಮುಕ್ತ ಅಭಿವೃದ್ಧಿ ಪರಿಸರವು ಎಂದಿಗೂ ಕಾರ್ಯಗತಗೊಳಿಸದ ಪಠ್ಯ ಸಂಸ್ಕಾರಕವನ್ನು ಚಲಾಯಿಸಲು ಸಮರ್ಥವಾಗಿದೆ. ಸ್ಟ್ರಿಂಗ್ ಫೈಲ್ ಗುಣಲಕ್ಷಣಗಳನ್ನು ದಾಖಲಿಸುತ್ತದೆ; ಕ್ಲೀನ್ ಕಾರಿನಲ್ಲಿ ಹೇಗೆ ಮಾಡಬಾರದು?
ಈ ಕೆಲಸದ ಹರಿವು ಘರ್ಷಣೆಯನ್ನು ಒಟ್ಟಿಗೆ ಸೇರಿಸುತ್ತದೆ. ಆಂತರಿಕ ಕ್ಲಸ್ಟರ್ನ ಒಂದು ಪುಟದ ಪರಿಕಲ್ಪನೆಯನ್ನು ಪ್ರಕಟಿಸುವ ತಂಡಗಳು ಕ್ಲಸ್ಟರ್ಗಿಂತ YAML ನಲ್ಲಿ ಹೆಚ್ಚು ಸಮಯವನ್ನು ಕಳೆಯುತ್ತವೆ. ಓದುಗರು ಆದೇಶಗಳನ್ನು ಉತ್ಪಾದನಾ ಪದರಗಳಿಗೆ ನಕಲಿಸಿದಾಗ ಈ ವೆಚ್ಚವು ಸ್ವೀಕಾರಾರ್ಹವಾಗಿರುತ್ತದೆ. ಡಾಕ್ಯುಮೆಂಟ್ ಯಾವುದೇ ಬಾಹ್ಯ ಒಪ್ಪಂದವಿಲ್ಲದೆ ಶೂನ್ಯ ಟಿಪ್ಪಣಿಯಾಗಿದ್ದಾಗ ಅದು ವ್ಯರ್ಥವಾಗುತ್ತದೆ.
ಇದನ್ನು ಯಾರು ಬಳಸಬಾರದು
ಗುಣಮಟ್ಟದ ವ್ಯವಸ್ಥೆಯ ಅಡಿಯಲ್ಲಿ ಈಗಾಗಲೇ ಕಾರ್ಯಗತಗೊಳಿಸಿದ ಪ್ರೋಟೋಕಾಲ್ಗಳು ಮತ್ತು ಸಹಿ ಮಾಡಿದ ಪ್ರೋಟೋಕಾಲ್ಗಳ ಅಗತ್ಯವಿರುವ ಕಸ್ಟಮ್ ಮೌಲ್ಯೀಕರಣ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ನೀವು ಬರೆಯುತ್ತಿದ್ದರೆ, ಲೈನ್ ಫೈಲ್ ಅನ್ನು ಬಿಟ್ಟುಬಿಡಿ. ಸಾರ್ವಜನಿಕ ಕೋಡ್ಗಳು ಪ್ರತಿದಿನ ಅವಧಿ ಮುಗಿದರೆ ಅದನ್ನು ಬಿಟ್ಟುಬಿಡಿ ಮತ್ತು ಪರಿಶೀಲನೆಯ ಅವಧಿಯಲ್ಲಿ ಯಾವುದೇ ಡೈಜೆಸ್ಟ್ಗಳನ್ನು ರನ್ ಮಾಡಲಾಗುವುದಿಲ್ಲ. ಡಾಕ್ಯುಮೆಂಟ್ನ ಏಕೈಕ ಪ್ರೇಕ್ಷಕರು ಲೇಖಕರಾಗಿದ್ದರೆ, ಅದನ್ನು ಬಿಟ್ಟುಬಿಡಿ, ಏಕೆಂದರೆ ಇತರ ಜನರ ಹಕ್ಕುಗಳನ್ನು ನಂಬಿಕೆಗೆ ಸೀಮಿತಗೊಳಿಸಲು ನಿಯಂತ್ರಣ ಸಮತಲವು ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ. ಈ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಮಾದರಿ ಪರಿವರ್ತನೆಗಳಿಲ್ಲದ ಹಸ್ತಪ್ರತಿ ಪ್ಯಾರಾಗ್ರಾಫ್ ಒಂದು ಪ್ರಾಮಾಣಿಕ ಸಣ್ಣ ಕಲಾಕೃತಿಯಾಗಿದೆ.
ಈಗಾಗಲೇ ಪ್ಯಾಕೇಜಿಂಗ್ ಮೆಟಾಡೇಟಾ ಮತ್ತು ಸಣ್ಣ ಸಾರ್ವಜನಿಕ ಮಟ್ಟವನ್ನು ನಿರ್ವಹಿಸುವ ಲೈಬ್ರರಿಗಳಿಗೆ, ಸಾಮಾನ್ಯ README ವೈಫಲ್ಯಗಳನ್ನು ತಡೆಗಟ್ಟಲು ವಿತರಣೆಯು ಸಾಕಾಗುತ್ತದೆ. ಅಸ್ಥಿಪಂಜರಗಳನ್ನು ಸಾಲಿನಲ್ಲಿ ಇರಿಸಿ. ಅನುಸ್ಥಾಪನಾ ಮಾರ್ಗಗಳು, ಬೆಂಬಲ, ಪರವಾನಗಿ ಅರ್ಥ ಮತ್ತು ಮಾನವ ಸಾಲಿನಲ್ಲಿ ಗಮನಿಸಿದ ಫಲಿತಾಂಶಗಳನ್ನು ಇರಿಸಿ. ಡೈಜೆಸ್ಟ್ ಹೊಂದಾಣಿಕೆಗಳು ಮತ್ತು ಸಹಿ ಮಾಡದ ಕೀಗಳು ಹೋದಾಗ ಮಾತ್ರ ವಿಲೀನಗೊಳಿಸಿ. ಮಾದರಿಯ ಉಚಿತ ಪ್ರವೇಶದಲ್ಲಿ ನೀವು ಈ ಅಸ್ಥಿಪಂಜರಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದರೆ, ಲೈನ್ ಫೈಲ್ ಅನ್ನು ಇನ್ವೆಂಟರಿಯಂತೆಯೇ ಬದ್ಧಗೊಳಿಸಿ, ಇದರಿಂದ ವಿಮರ್ಶೆಯು ಚಾಟ್ ಇತಿಹಾಸಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿ git ನಲ್ಲಿ ಉಳಿಯುತ್ತದೆ.
Leave a Reply