# esri/arcgis-python-api architecture

> Architecture diagram of the GitHub repository esri/arcgis-python-api, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/esri/arcgis-python-api
- Repository: https://github.com/esri/arcgis-python-api

## Overview

This repository is the ArcGIS API for Python SDK’s notebook gallery and supporting scripts, rather than the SDK implementation itself. Users explore the API through notebooks covering GIS management, spatial data, analysis, and mapping, with ArcGIS services providing the web-GIS capabilities. A separate staff workflow updates sample notebook items in a portal. The available excerpts show that uploader workflow and miscellaneous GIS cleanup scripts; domain connections otherwise reflect README descriptions, not inspected notebook calls.

Main entry points: [`update_items.py`](https://github.com/esri/arcgis-python-api/blob/master/update_items.py) (Notebook Uploader), [`misc/setup.py`](https://github.com/esri/arcgis-python-api/blob/master/misc/setup.py) (Environment Setup), [`misc/teardown.py`](https://github.com/esri/arcgis-python-api/blob/master/misc/teardown.py) (Environment Teardown), [`misc/_common.py`](https://github.com/esri/arcgis-python-api/blob/master/misc/_common.py) (GIS Cleanup Helpers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_content["GIS and Content"]
  node_gis["GIS Management"]
end

subgraph group_spatial["Spatial Data and Analysis"]
  node_features["Feature Analysis"]
  node_dataframe["Spatial DataFrame"]
  node_imagery["Imagery Analysis"]
  node_geoprocessing["Geoprocessing"]
  node_geocoding["Geocoding"]
  node_geometry["Geometry Operations"]
  node_network["Network Analysis"]
  node_enrichment["Geoenrichment"]
  node_deep["Deep Learning"]
end

subgraph group_maps["Mapping and Applications"]
  node_mapping["Maps and Visualization"]
  node_apps["GIS Applications"]
  node_knowledge["Knowledge Graphs"]
  node_ai["AI Capabilities"]
end

subgraph group_ops["Gallery Operations"]
  node_uploader["Notebook Uploader<br/>[update_items.py]"]
  node_profile["Profile Replacement"]
  node_cleanup["GIS Cleanup Helpers<br/>[_common.py]"]
  node_setup["Environment Setup<br/>[setup.py]"]
  node_teardown["Environment Teardown<br/>[teardown.py]"]
end

node_user(("Python User"))
node_api["ArcGIS API"]
node_webgis["Web GIS"]
node_portal["ArcGIS Portal"]

node_user -->|"uses"| node_api
node_api -->|"accesses"| node_webgis
node_user -->|"manages GIS"| node_gis
node_user -->|"analyzes features"| node_features
node_user -->|"works with data"| node_dataframe
node_user -->|"analyzes imagery"| node_imagery
node_user -->|"runs tools"| node_geoprocessing
node_user -->|"geocodes places"| node_geocoding
node_user -->|"uses geometry"| node_geometry
node_user -->|"solves routes"| node_network
node_user -->|"enriches data"| node_enrichment
node_user -->|"trains models"| node_deep
node_user -->|"makes maps"| node_mapping
node_user -->|"manages apps"| node_apps
node_user -->|"uses graphs"| node_knowledge
node_user -->|"uses AI"| node_ai
node_user -->|"runs upload"| node_uploader
node_uploader -->|"updates items"| node_portal
node_uploader -->|"runs replacement"| node_profile
node_user -->|"runs setup"| node_setup
node_user -->|"runs teardown"| node_teardown
node_setup -->|"calls helpers"| node_cleanup
node_teardown -->|"calls helpers"| node_cleanup

click node_gis "https://github.com/esri/arcgis-python-api/tree/master/guide/03-the-gis"
click node_features "https://github.com/esri/arcgis-python-api/tree/master/guide/04-feature-data-and-analysis"
click node_dataframe "https://github.com/esri/arcgis-python-api/tree/master/guide/05-working-with-the-spatially-enabled-dataframe"
click node_imagery "https://github.com/esri/arcgis-python-api/tree/master/guide/06-imagery-and-raster-analysis"
click node_geoprocessing "https://github.com/esri/arcgis-python-api/tree/master/guide/08-using-geoprocessing-tools"
click node_geocoding "https://github.com/esri/arcgis-python-api/tree/master/guide/09-finding-places-with-geocoding"
click node_geometry "https://github.com/esri/arcgis-python-api/tree/master/guide/15-working-with-geometries"
click node_network "https://github.com/esri/arcgis-python-api/tree/master/guide/11-performing-network-analyses"
click node_enrichment "https://github.com/esri/arcgis-python-api/tree/master/guide/12-enrich-data-with-thematic-information"
click node_deep "https://github.com/esri/arcgis-python-api/tree/master/guide/14-deep-learning"
click node_mapping "https://github.com/esri/arcgis-python-api/tree/master/guide/10-mapping-and-visualization"
click node_apps "https://github.com/esri/arcgis-python-api/tree/master/guide/13-managing-arcgis-applications"
click node_knowledge "https://github.com/esri/arcgis-python-api/tree/master/guide/17-working-with-knowledge-graphs"
click node_ai "https://github.com/esri/arcgis-python-api/tree/master/guide/18-working-with-AI-capabilities"
click node_uploader "https://github.com/esri/arcgis-python-api/blob/master/update_items.py"
click node_profile "https://github.com/esri/arcgis-python-api/blob/master/misc/tools/replace_profiles.py"
click node_cleanup "https://github.com/esri/arcgis-python-api/blob/master/misc/_common.py"
click node_setup "https://github.com/esri/arcgis-python-api/blob/master/misc/setup.py"
click node_teardown "https://github.com/esri/arcgis-python-api/blob/master/misc/teardown.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_gis,node_user toneBlue
class node_features,node_dataframe,node_imagery,node_geoprocessing,node_geocoding,node_geometry,node_network,node_enrichment,node_deep toneAmber
class node_mapping,node_apps,node_knowledge,node_ai,node_api toneMint
class node_uploader,node_profile,node_cleanup,node_setup,node_teardown toneRose
class node_webgis,node_portal toneIndigo
```

## Components

### GIS and Content

- [GIS Management](https://github.com/esri/arcgis-python-api/tree/master/guide/03-the-gis): `guide/03-the-gis`

### Spatial Data and Analysis

- [Feature Analysis](https://github.com/esri/arcgis-python-api/tree/master/guide/04-feature-data-and-analysis): `guide/04-feature-data-and-analysis`
- [Spatial DataFrame](https://github.com/esri/arcgis-python-api/tree/master/guide/05-working-with-the-spatially-enabled-dataframe): `guide/05-working-with-the-spatially-enabled-dataframe`
- [Imagery Analysis](https://github.com/esri/arcgis-python-api/tree/master/guide/06-imagery-and-raster-analysis): `guide/06-imagery-and-raster-analysis`
- [Geoprocessing](https://github.com/esri/arcgis-python-api/tree/master/guide/08-using-geoprocessing-tools): `guide/08-using-geoprocessing-tools`
- [Geocoding](https://github.com/esri/arcgis-python-api/tree/master/guide/09-finding-places-with-geocoding): `guide/09-finding-places-with-geocoding`
- [Geometry Operations](https://github.com/esri/arcgis-python-api/tree/master/guide/15-working-with-geometries): `guide/15-working-with-geometries`
- [Network Analysis](https://github.com/esri/arcgis-python-api/tree/master/guide/11-performing-network-analyses): `guide/11-performing-network-analyses`
- [Geoenrichment](https://github.com/esri/arcgis-python-api/tree/master/guide/12-enrich-data-with-thematic-information): `guide/12-enrich-data-with-thematic-information`
- [Deep Learning](https://github.com/esri/arcgis-python-api/tree/master/guide/14-deep-learning): `guide/14-deep-learning`

### Mapping and Applications

- [Maps and Visualization](https://github.com/esri/arcgis-python-api/tree/master/guide/10-mapping-and-visualization): `guide/10-mapping-and-visualization`
- [GIS Applications](https://github.com/esri/arcgis-python-api/tree/master/guide/13-managing-arcgis-applications): `guide/13-managing-arcgis-applications`
- [Knowledge Graphs](https://github.com/esri/arcgis-python-api/tree/master/guide/17-working-with-knowledge-graphs): `guide/17-working-with-knowledge-graphs`
- [AI Capabilities](https://github.com/esri/arcgis-python-api/tree/master/guide/18-working-with-AI-capabilities): `guide/18-working-with-AI-capabilities`

### Gallery Operations

- [Notebook Uploader](https://github.com/esri/arcgis-python-api/blob/master/update_items.py): `update_items.py`
- [Profile Replacement](https://github.com/esri/arcgis-python-api/blob/master/misc/tools/replace_profiles.py): `misc/tools/replace_profiles.py`
- [GIS Cleanup Helpers](https://github.com/esri/arcgis-python-api/blob/master/misc/_common.py): `misc/_common.py`
- [Environment Setup](https://github.com/esri/arcgis-python-api/blob/master/misc/setup.py): `misc/setup.py`
- [Environment Teardown](https://github.com/esri/arcgis-python-api/blob/master/misc/teardown.py): `misc/teardown.py`

### Other components

- **Python User**
- **ArcGIS API**
- **Web GIS**
- **ArcGIS Portal**

## Connections

- Python User → ArcGIS API: uses (evidence: `README.md`)
- ArcGIS API → Web GIS: accesses (evidence: `README.md`)
- Python User → GIS Management: manages GIS (evidence: `README.md`)
- Python User → Feature Analysis: analyzes features (evidence: `README.md`)
- Python User → Spatial DataFrame: works with data (evidence: `README.md`)
- Python User → Imagery Analysis: analyzes imagery (evidence: `README.md`)
- Python User → Geoprocessing: runs tools (evidence: `README.md`)
- Python User → Geocoding: geocodes places (evidence: `README.md`)
- Python User → Geometry Operations: uses geometry (evidence: `README.md`)
- Python User → Network Analysis: solves routes (evidence: `README.md`)
- Python User → Geoenrichment: enriches data (evidence: `README.md`)
- Python User → Deep Learning: trains models (evidence: `README.md`)
- Python User → Maps and Visualization: makes maps (evidence: `README.md`)
- Python User → GIS Applications: manages apps (evidence: `README.md`)
- Python User → Knowledge Graphs: uses graphs (evidence: `README.md`)
- Python User → AI Capabilities: uses AI (evidence: `README.md`)
- Python User → Notebook Uploader: runs upload (evidence: `update_items.py`)
- Notebook Uploader → ArcGIS Portal: updates items (evidence: `update_items.py`)
- Notebook Uploader → Profile Replacement: runs replacement (evidence: `update_items.py`)
- Python User → Environment Setup: runs setup (evidence: `misc/setup.py`)
- Python User → Environment Teardown: runs teardown (evidence: `misc/teardown.py`)
- Environment Setup → GIS Cleanup Helpers: calls helpers (evidence: `misc/setup.py`)
- Environment Teardown → GIS Cleanup Helpers: calls helpers (evidence: `misc/teardown.py`)
