=============== Common Pitfalls =============== Actor vs ActorInterface ----------------------- - Use ``ActorInterface`` in applications. ``Actor`` is internal and may change. - Import from ``actingweb.interface``; avoid reaching into core modules directly. Hooks: returning None --------------------- - Property hooks: ``None`` during GET hides the value; ``None`` during PUT/POST/DELETE denies the change. - Wildcard hooks ("*") run after specific-name hooks; be explicit with path checks. Properties vs Property Lists ---------------------------- - Regular properties: small key/value data; simple updates. - Property lists (``actor.property_lists.``): ordered collections that can grow beyond DynamoDB size limits; use for notes, events, logs. Base paths in templates ----------------------- - Never use relative paths like ``../www``. Use provided variables: - ``actor_root`` for non‑www routes (e.g., ``{{ actor_root }}/properties``) - ``actor_www`` for web UI routes (e.g., ``{{ actor_www }}/properties``) OAuth providers --------------- - GitHub: set ``User-Agent`` and ``Accept: application/json``; no refresh tokens. - Email privacy: GitHub may not expose email; code handles fallbacks, but expect missing emails in tests. DynamoDB local vs AWS --------------------- - Use DynamoDB Local for development; set local AWS env vars (no real credentials needed). - In AWS, create tables and least‑privilege IAM policies before load. Monitor item size limits and indices. Devtest endpoints ----------------- - Dev only. Enable with ``with_devtest(True)``. Hidden from API docs; see CONTRIBUTING for details.