This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
./gradlew build # Build the plugin
./gradlew test # Run tests
./gradlew test --tests "ClassName" # Run specific test
./gradlew runIde # Run IDE with plugin for testing
./gradlew verifyPlugin # Verify plugin compatibility
./gradlew buildPlugin # Build plugin ZIP distribution
./gradlew publishPlugin # Publish to Marketplace (requires token.txt)PyAnnotations is an IntelliJ Platform plugin providing code inspections with quick fixes for Python type annotations (Union, Optional, pipe syntax).
BaseInspectionVisitor — For Union[...] and Optional[...] syntax:
- Extends
PyInspectionVisitor - Visits
PySubscriptionExpressionnodes - Override
visitPyAnnotationUnionExpression(node, items)for Union with multiple types - Override
visitPyAnnotationUnionWithOneChildExpression(node, item)for Union with single type - Use
hasChildren(node, text)to check for specific types in Union
BasePipeUnionVisitor — For pipe syntax X | Y (Python 3.10+):
- Extends
PyInspectionVisitor - Visits
PyBinaryExpressionwith|operator in annotation context only - Override
visitPipeUnionExpression(node)to handle pipe unions - Use
collectPipeUnionTypes(node)to get all types in chain (X | Y | Z→[X, Y, Z]) - Use
hasType(node, "None", "Any")to check for specific types
- Create inspection class in
codeInspection/extendingPyInspection - Create inner
Visitorclass extending appropriate base visitor - Create quick fix class in
quickfix/implementingLocalQuickFix - Add HTML description in
inspectionDescriptions/ - Register in
python-config.xmlwithenabledByDefault,level, etc.
plugin.xml— Main plugin descriptorpython-config.xml— All inspection registrations (loaded when Python plugin available)gradle.properties— Platform version, plugin metadata
- Never use
SwingUtilities.invokeLater— useApplicationManagerequivalents - Code must be in English only
- Do not run
gradlew cleanwithout permission - Keep
ROADMAP.mdup to date when completing features