Install
$ agentstack add skill-viditkbhatnagar-immunize-python-none-attribute-access ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
python-none-attribute-access
Before dereferencing an Optional, check for None. dict.get(key) returns None when the key is missing; re.search(...) returns None on no match; many ORMs return None for "not found." Accessing any attribute on that None raises:
AttributeError: 'NoneType' object has no attribute '...'
Type checkers flag this, but runtime code often slips through — the AttributeError only surfaces on the unlucky input.
Example
Wrong — crashes when user_id is not in the registry:
def lookup_display_name(registry: dict[str, User], user_id: str) -> str:
user = registry.get(user_id)
return user.name
Right — handle the None case explicitly:
def lookup_display_name(registry: dict[str, User], user_id: str) -> str:
user = registry.get(user_id)
if user is None:
return "unknown"
return user.name
Don't catch AttributeError
Wrapping the access in try: ... except AttributeError: hides real bugs — a typo in an attribute name becomes silent. The correct fix is an explicit None check, a sentinel default, or failing fast with a clearer error.
Sentinel alternatives
dict.get(key, default)— pass a fallback directly.if key not in registry:— fail fast with a specific error message.registry.setdefault(key, default_user)— ensure the slot exists.
Pick the option whose semantics match what the caller expects to see when the value is missing.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: viditkbhatnagar
- Source: viditkbhatnagar/immunize
- License: Apache-2.0
- Homepage: https://pypi.org/project/immunize/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.