Proyecto independiente No afiliado, patrocinado ni avalado por la Watch Tower Bible and Tract Society o Jehovah's Witnesses.
jw-agent-toolkit
EN

Guía

Catálogo Territory (jw-core)

jw_core.territories.Territory aporta la dimensión legal de un país (jw_branch_region, legal_status_summary, ban_history). Lo cultural/idiomático vive en jw_core.data.locale_context.LocaleContext y se referencia por iso_3166. No duplicamos campos entre los dos.

Lookup

from jw_core.territories import get_territory, get_territory_full

t = get_territory("RU")
print(t.legal_status_summary)         # "banned"
print(t.ban_history)                  # ("2017-04-20: Supreme Court ...", ...)
print(t.locale.localized_name("es"))  # "Rusia"

# Combinado en un dict para agentes legales (F82.3+):
full = get_territory_full("RU")
print(full["name"]["en"])             # "Russia"
print(full["jw_branch_region"])       # "Russia (closed since 2017)"

Filtros

from jw_core.territories import territories_by_status, territories_by_branch

banned = territories_by_status("banned")
# → [Territory(iso_3166='RU', ...), Territory(iso_3166='KP', ...), ...]

russia_region = territories_by_branch("Russia")
# → [Territory(iso_3166='RU', ...)]

Estado de la cobertura (F82.0)

30 territorios curados al cierre de F82.0:

StatusPaíses
bannedRU, KP, ER, SG, TJ
restrictedCN, AZ, BY, VN, MM, TR, CU, KZ
freeES, MX, US, AR, BR, KR, JP, DE, FR, IT, GR, AM, GE, MD, CO, PE, PH

Cada ban_history lleva comentario inline con la fuente (URL jw.org/legal, número de aplicación ECHR, sentencia SCJN/SCOTUS, etc.).

Añadir un país nuevo

  1. Verificar que existe en LocaleContext. Si no, añadir entry mínima con iso_3166, name multilang y languages:
    "XX": LocaleContext(
        iso_3166="XX",
        name={"en": "Foo", "es": "Foo", "pt": "Foo"},
        languages=("foo",),
        dominant_religions=("...",),
    ),
  2. Añadir Territory con la dimensión legal:
    "XX": Territory(
        iso_3166="XX",
        jw_branch_region="...",
        legal_status_summary="free",
        ban_history=(
            # Source: jw.org/en/news/legal/by-region/foo/
            "YYYY-MM-DD: descripción de cada evento clave",
        ),
    ),
  3. Cada entrada de ban_history lleva comentario inline con la URL o referencia a la publicación JW. Cero entries sin fuente.
  4. uv run pytest packages/jw-core/tests/test_territories_iso_validation.py -v confirma que las invariantes ISO + LocaleContext + branch pasan.

Lo que no va en Territory

Si vas a añadir un campo nuevo, primero pregúntate: ¿es cultural (idioma, religión, festividades, sensibilidades sociales)? Ese campo va en LocaleContext. ¿Es legal (ley, ban, sentencia, tribunal)? Va en Territory. Si no encaja en ninguna categoría, probablemente no es infra compartida — pertenece al plugin que la necesita.

  • F82.1jw-legal BrainDomain usa Territory como nodo del grafo.
  • F82.2HUDOCSource mapea sentencias por Territory.iso_3166.
  • F82.3legal_case_researcher filtra por país usando ISO.
  • Futuro — news_monitor filtra noticias por legal_status_summary.

Editar esta página en docs/guias/territories.md