acled


Nameacled JSON
Version 0.2.4 PyPI version JSON
download
home_pagehttps://github.com/blazeiburgess/acled
SummaryA Python library that unofficially wraps the ACLED API.
upload_time2025-07-31 02:15:47
maintainerNone
docs_urlNone
authorBlaze Burgess
requires_python>=3.8
licenseGPL 3
keywords acled api conflict data political violence research
VCS
bugtrack_url
requirements certifi charset-normalizer idna requests urllib3
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Unofficial ACLED API Wrapper

A Python library that unofficially wraps the ACLED (Armed Conflict Location & Event Data) API. This library provides a convenient interface for accessing and analyzing conflict and protest data from around the world.

[ACLED (Armed Conflict Location & Event Data Project)](https://acleddata.com/) is a disaggregated data collection, analysis, and crisis mapping project that tracks political violence and protest events across the world.

## Installation

Install via `pip`:

```bash
pip install acled
```

## Python Library Authentication

All requests to the ACLED API require authentication with a valid API key and the email that is registered to that API key. You can obtain these by registering on the [ACLED website](https://acleddata.com/register/).

You can provide authentication credentials in two ways:

### 1. Environment Variables

Set the following environment variables:

- `ACLED_API_KEY` - Your ACLED API key
- `ACLED_EMAIL` - The email associated with your API key

### 2. Direct Parameters

Pass the credentials directly when initializing the client:

```python
client = AcledClient(api_key="your_api_key", email="your_email")
```

## Basic Usage

### Example with Environment Variables

```python
from acled import AcledClient
from acled.models import AcledEvent
from typing import List, Dict

# Initialize the client (uses environment variables)
client = AcledClient()

# Fetch data with optional filters
filters: Dict[str, int | str] = {
    'limit': 10,
    'event_date': '2023-01-01|2023-01-31'
}

events: List[AcledEvent] = client.get_data(params=filters)

# Iterate over events
for event in events:
    print(event['event_id_cnty'], event['event_date'], event['notes'])
```

### Example with Direct Credentials

```python
from acled import AcledClient
from acled.models import AcledEvent
from typing import List

# Initialize the client with credentials
client = AcledClient(api_key="your_api_key", email="your_email")

# Fetch data with optional filters
filters = {
    'limit': 10,
    'event_date': '2023-01-01|2023-01-31'
}

events: List[AcledEvent] = client.get_data(params=filters)

# Iterate over events
for event in events:
    print(event['event_id_cnty'], event['event_date'], event['notes'])
```

## Advanced Usage

### Filtering Data

The API supports various filtering options for retrieving specific data:

```python
from acled import AcledClient
from acled.models.enums import ExportType

client = AcledClient()

# Fetch data with multiple filters
events = client.get_data(
    country='Yemen',           # Filter by country
    year=2023,                 # Filter by year
    event_type='Battles',      # Filter by event type
    fatalities=5,              # Filter by fatalities
    export_type=ExportType.JSON,  # Specify export format
    limit=5,                   # Limit number of results
)

for event in events:
    print(f"{event['country']} - {event['event_date']} - {event['fatalities']} fatalities - {event['event_type']}")
```

### Using Filter Operators

You can use different operators for filtering by appending a `_where` suffix to parameter names in the `query_params` dictionary:

```python
from acled import AcledClient

client = AcledClient()

# Filter events with more than 5 fatalities
events = client.get_data(
    country='Yemen',
    fatalities=5,
    limit=10,
    query_params={
        'fatalities_where': '>',  # Greater than
    }
)

# Filter events with event_type containing the word "Violence"
events = client.get_data(
    limit=10,
    query_params={
        'event_type': 'Violence',
        'event_type_where': 'LIKE',  # LIKE operator for partial matching
    }
)
```

Available operators:
- `=` (default): Exact match
- `>`: Greater than
- `<`: Less than
- `>=`: Greater than or equal to
- `<=`: Less than or equal to
- `LIKE`: Partial match (case-insensitive)

### Date Range Filtering

For date ranges, use the pipe character (`|`) to separate start and end dates:

```python
events = client.get_data(
    event_date='2023-01-01|2023-12-31',  # Events from Jan 1 to Dec 31, 2023
    limit=50
)
```

## Available Endpoints

The library provides access to several ACLED API endpoints through specialized clients:

### 1. Event Data (Main Data)

```python
# Get event data
events = client.get_data(limit=10)
```

### 2. Actor Data

```python
# Get actor data
actors = client.get_actor_data(limit=10)
for actor in actors:
    print(actor['actor_name'], actor['event_count'])
```

### 3. Country Data

```python
# Get country data
countries = client.get_country_data(limit=10)
for country in countries:
    print(country['country'], country['event_count'])
```

### 4. Region Data

```python
# Get region data
regions = client.get_region_data(limit=10)
for region in regions:
    print(region['region_name'], region['event_count'])
```

### 5. Actor Type Data

```python
# Get actor type data
actor_types = client.get_actor_type_data(limit=10)
for actor_type in actor_types:
    print(actor_type['actor_type_name'], actor_type['event_count'])
```

## Data Models

The library provides TypedDict models for the data returned by the API:

### AcledEvent

Represents an event with fields including:
- `event_id_cnty`: Unique identifier for the event
- `event_date`: Date of the event
- `year`: Year of the event
- `time_precision`: Precision of the event time (1=exact date, 2=approximate date, 3=estimated date)
- `disorder_type`: Type of disorder (Political violence, Demonstrations, etc.)
- `event_type`: Type of event (Battles, Violence against civilians, etc.)
- `sub_event_type`: Sub-type of event
- `actor1`, `actor2`: Primary actors involved in the event
- `location`: Location name
- `latitude`, `longitude`: Geographic coordinates
- `fatalities`: Number of reported fatalities
- `notes`: Description of the event

### Actor

Represents an actor with fields including:
- `actor_name`: Name of the actor
- `first_event_date`: Date of the actor's first recorded event
- `last_event_date`: Date of the actor's most recent recorded event
- `event_count`: Total number of events involving this actor

### Country

Represents a country with fields including:
- `country`: Country name
- `iso`: ISO country code
- `iso3`: ISO3 country code
- `event_count`: Total number of events in this country

### Region

Represents a region with fields including:
- `region`: Region ID
- `region_name`: Region name
- `event_count`: Total number of events in this region

### ActorType

Represents an actor type with fields including:
- `actor_type_id`: Actor type ID
- `actor_type_name`: Actor type name
- `event_count`: Total number of events involving this actor type

## Enums and Constants

The library provides several enum classes for standardized values:

### TimePrecision

```python
from acled.models.enums import TimePrecision

# Use in filters or check values in events
time_precision = TimePrecision.EXACT_DATE  # 1
```

- `EXACT_DATE` (1): The exact date is known
- `APPROXIMATE_DATE` (2): The date is approximate
- `ESTIMATED_DATE` (3): The date is estimated

### DisorderType

```python
from acled.models.enums import DisorderType

# Use in filters
disorder_type = DisorderType.POLITICAL_VIOLENCE  # "Political violence"
```

- `POLITICAL_VIOLENCE`: "Political violence"
- `DEMONSTRATIONS`: "Demonstrations"
- `STRATEGIC_DEVELOPMENTS`: "Strategic developments"

### ExportType

```python
from acled.models.enums import ExportType

# Specify the format of the returned data
export_type = ExportType.JSON  # "json"
```

- `JSON`: "json"
- `XML`: "xml"
- `CSV`: "csv"
- `XLSX`: "xlsx"
- `TXT`: "txt"

### Actor

```python
from acled.models.enums import Actor

# Use for inter1 and inter2 values
actor_type = Actor.STATE_FORCES  # 1
```

- `STATE_FORCES` (1)
- `REBEL_FORCES` (2)
- `MILITIA_GROUPS` (3)
- `COMMUNAL_IDENTITY_GROUPS` (4)
- `RIOTERS` (5)
- `PROTESTERS` (6)
- `CIVILIANS` (7)
- `FOREIGN_OTHERS` (8)

### Region

```python
from acled.models.enums import Region

# Use in filters
region = Region.WESTERN_AFRICA  # 1
```

- `WESTERN_AFRICA` (1)
- `MIDDLE_AFRICA` (2)
- `EASTERN_AFRICA` (3)
- `SOUTHERN_AFRICA` (4)
- `NOTHERN_AFRICA` (5)
- `SOUTH_ASIA` (7)
- `SOUTHEAST_ASIA` (9)
- `MIDDLE_EAST` (11)
- `EUROPE` (12)
- `CAUCASUS_AND_CENTRAL_ASIA` (13)
- `CENTRAL_AMERICA` (14)
- `SOUTH_AMERICA` (15)
- `CARIBBEAN` (16)
- `EAST_ASIA` (17)
- `NORTH_AMERICA` (18)
- `OCEANIA` (19)
- `ANTARCTICA` (20)

## Configuration Options

The library's behavior can be configured through environment variables:

- `ACLED_API_KEY`: Your ACLED API key
- `ACLED_EMAIL`: The email associated with your API key
- `ACLED_MAX_RETRIES`: Maximum number of retry attempts (default: 3)
- `ACLED_RETRY_BACKOFF_FACTOR`: Backoff factor for calculating wait time between retries (default: 0.5)
- `ACLED_REQUEST_TIMEOUT`: Request timeout in seconds (default: 30)

## CLI Usage

The library includes a command-line interface for easy data access:

### Authentication

First, authenticate with your ACLED credentials:

```bash
acled auth login
```

This securely stores your API key and email for future use.

### Basic CLI Commands

```bash
# Get recent events from Syria
acled data --country Syria --year 2024 --limit 10

# Get data with table output
acled data --country Nigeria --format table

# Get data with specific filters
acled data --country Yemen --event-type Battles --limit 5 --format summary

# Save output to file
acled data --country Afghanistan --year 2024 --output events.json

# Get help for any command
acled data --help
```

### CLI Authentication Options

You can authenticate in three ways:

1. **Secure login** (recommended):
   ```bash
   acled auth login
   ```

2. **Command-line options**:
   ```bash
   acled data --api-key YOUR_API_KEY --email YOUR_EMAIL --country Syria
   ```

3. **Environment variables**:
   ```bash
   export ACLED_API_KEY="your_api_key"
   export ACLED_EMAIL="your_email"
   acled data --country Syria
   ```

## Important Notes

ACLED is an amazing service provided at no cost, so please be respectful and measured in your usage. Consider implementing caching in your application to reduce the number of API calls.

## References

- [ACLED Website](https://acleddata.com/)
- [ACLED API Documentation](https://acleddata.com/acleddatanew/wp-content/uploads/2020/10/ACLED_API-User-Guide_2020.pdf) (2020)

## Development and Contributing

### Setting Up the Development Environment

1. Clone the repository:
   ```bash
   git clone https://github.com/blazeiburgess/acled.git
   cd acled
   ```

2. Create and activate a virtual environment:
   ```bash
   python -m venv venv
   source venv/bin/activate  # On Windows: venv\Scripts\activate
   ```

3. Install in development mode with dev dependencies:
   ```bash
   pip install -e ".[dev]"
   ```

### Running Tests

```bash
# Run all tests
pytest

# Run tests with coverage report
pytest --cov=acled --cov-report=term-missing
```

## TODO

- Add client for deleted api, add method to access from main client
- Better document more advanced features (e.g. filter type changes = vs. > vs. < vs. LIKE). They should work now (partially tested), but are a little obscure.

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/blazeiburgess/acled",
    "name": "acled",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "acled, api, conflict, data, political violence, research",
    "author": "Blaze Burgess",
    "author_email": "Blaze Burgess <blaze.i.burgess@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/9a/b8/0cec74aebb5c8378f48c9781e590f0a7b86eb0c34af2e42c7592bc888329/acled-0.2.4.tar.gz",
    "platform": null,
    "description": "# Unofficial ACLED API Wrapper\n\nA Python library that unofficially wraps the ACLED (Armed Conflict Location & Event Data) API. This library provides a convenient interface for accessing and analyzing conflict and protest data from around the world.\n\n[ACLED (Armed Conflict Location & Event Data Project)](https://acleddata.com/) is a disaggregated data collection, analysis, and crisis mapping project that tracks political violence and protest events across the world.\n\n## Installation\n\nInstall via `pip`:\n\n```bash\npip install acled\n```\n\n## Python Library Authentication\n\nAll requests to the ACLED API require authentication with a valid API key and the email that is registered to that API key. You can obtain these by registering on the [ACLED website](https://acleddata.com/register/).\n\nYou can provide authentication credentials in two ways:\n\n### 1. Environment Variables\n\nSet the following environment variables:\n\n- `ACLED_API_KEY` - Your ACLED API key\n- `ACLED_EMAIL` - The email associated with your API key\n\n### 2. Direct Parameters\n\nPass the credentials directly when initializing the client:\n\n```python\nclient = AcledClient(api_key=\"your_api_key\", email=\"your_email\")\n```\n\n## Basic Usage\n\n### Example with Environment Variables\n\n```python\nfrom acled import AcledClient\nfrom acled.models import AcledEvent\nfrom typing import List, Dict\n\n# Initialize the client (uses environment variables)\nclient = AcledClient()\n\n# Fetch data with optional filters\nfilters: Dict[str, int | str] = {\n    'limit': 10,\n    'event_date': '2023-01-01|2023-01-31'\n}\n\nevents: List[AcledEvent] = client.get_data(params=filters)\n\n# Iterate over events\nfor event in events:\n    print(event['event_id_cnty'], event['event_date'], event['notes'])\n```\n\n### Example with Direct Credentials\n\n```python\nfrom acled import AcledClient\nfrom acled.models import AcledEvent\nfrom typing import List\n\n# Initialize the client with credentials\nclient = AcledClient(api_key=\"your_api_key\", email=\"your_email\")\n\n# Fetch data with optional filters\nfilters = {\n    'limit': 10,\n    'event_date': '2023-01-01|2023-01-31'\n}\n\nevents: List[AcledEvent] = client.get_data(params=filters)\n\n# Iterate over events\nfor event in events:\n    print(event['event_id_cnty'], event['event_date'], event['notes'])\n```\n\n## Advanced Usage\n\n### Filtering Data\n\nThe API supports various filtering options for retrieving specific data:\n\n```python\nfrom acled import AcledClient\nfrom acled.models.enums import ExportType\n\nclient = AcledClient()\n\n# Fetch data with multiple filters\nevents = client.get_data(\n    country='Yemen',           # Filter by country\n    year=2023,                 # Filter by year\n    event_type='Battles',      # Filter by event type\n    fatalities=5,              # Filter by fatalities\n    export_type=ExportType.JSON,  # Specify export format\n    limit=5,                   # Limit number of results\n)\n\nfor event in events:\n    print(f\"{event['country']} - {event['event_date']} - {event['fatalities']} fatalities - {event['event_type']}\")\n```\n\n### Using Filter Operators\n\nYou can use different operators for filtering by appending a `_where` suffix to parameter names in the `query_params` dictionary:\n\n```python\nfrom acled import AcledClient\n\nclient = AcledClient()\n\n# Filter events with more than 5 fatalities\nevents = client.get_data(\n    country='Yemen',\n    fatalities=5,\n    limit=10,\n    query_params={\n        'fatalities_where': '>',  # Greater than\n    }\n)\n\n# Filter events with event_type containing the word \"Violence\"\nevents = client.get_data(\n    limit=10,\n    query_params={\n        'event_type': 'Violence',\n        'event_type_where': 'LIKE',  # LIKE operator for partial matching\n    }\n)\n```\n\nAvailable operators:\n- `=` (default): Exact match\n- `>`: Greater than\n- `<`: Less than\n- `>=`: Greater than or equal to\n- `<=`: Less than or equal to\n- `LIKE`: Partial match (case-insensitive)\n\n### Date Range Filtering\n\nFor date ranges, use the pipe character (`|`) to separate start and end dates:\n\n```python\nevents = client.get_data(\n    event_date='2023-01-01|2023-12-31',  # Events from Jan 1 to Dec 31, 2023\n    limit=50\n)\n```\n\n## Available Endpoints\n\nThe library provides access to several ACLED API endpoints through specialized clients:\n\n### 1. Event Data (Main Data)\n\n```python\n# Get event data\nevents = client.get_data(limit=10)\n```\n\n### 2. Actor Data\n\n```python\n# Get actor data\nactors = client.get_actor_data(limit=10)\nfor actor in actors:\n    print(actor['actor_name'], actor['event_count'])\n```\n\n### 3. Country Data\n\n```python\n# Get country data\ncountries = client.get_country_data(limit=10)\nfor country in countries:\n    print(country['country'], country['event_count'])\n```\n\n### 4. Region Data\n\n```python\n# Get region data\nregions = client.get_region_data(limit=10)\nfor region in regions:\n    print(region['region_name'], region['event_count'])\n```\n\n### 5. Actor Type Data\n\n```python\n# Get actor type data\nactor_types = client.get_actor_type_data(limit=10)\nfor actor_type in actor_types:\n    print(actor_type['actor_type_name'], actor_type['event_count'])\n```\n\n## Data Models\n\nThe library provides TypedDict models for the data returned by the API:\n\n### AcledEvent\n\nRepresents an event with fields including:\n- `event_id_cnty`: Unique identifier for the event\n- `event_date`: Date of the event\n- `year`: Year of the event\n- `time_precision`: Precision of the event time (1=exact date, 2=approximate date, 3=estimated date)\n- `disorder_type`: Type of disorder (Political violence, Demonstrations, etc.)\n- `event_type`: Type of event (Battles, Violence against civilians, etc.)\n- `sub_event_type`: Sub-type of event\n- `actor1`, `actor2`: Primary actors involved in the event\n- `location`: Location name\n- `latitude`, `longitude`: Geographic coordinates\n- `fatalities`: Number of reported fatalities\n- `notes`: Description of the event\n\n### Actor\n\nRepresents an actor with fields including:\n- `actor_name`: Name of the actor\n- `first_event_date`: Date of the actor's first recorded event\n- `last_event_date`: Date of the actor's most recent recorded event\n- `event_count`: Total number of events involving this actor\n\n### Country\n\nRepresents a country with fields including:\n- `country`: Country name\n- `iso`: ISO country code\n- `iso3`: ISO3 country code\n- `event_count`: Total number of events in this country\n\n### Region\n\nRepresents a region with fields including:\n- `region`: Region ID\n- `region_name`: Region name\n- `event_count`: Total number of events in this region\n\n### ActorType\n\nRepresents an actor type with fields including:\n- `actor_type_id`: Actor type ID\n- `actor_type_name`: Actor type name\n- `event_count`: Total number of events involving this actor type\n\n## Enums and Constants\n\nThe library provides several enum classes for standardized values:\n\n### TimePrecision\n\n```python\nfrom acled.models.enums import TimePrecision\n\n# Use in filters or check values in events\ntime_precision = TimePrecision.EXACT_DATE  # 1\n```\n\n- `EXACT_DATE` (1): The exact date is known\n- `APPROXIMATE_DATE` (2): The date is approximate\n- `ESTIMATED_DATE` (3): The date is estimated\n\n### DisorderType\n\n```python\nfrom acled.models.enums import DisorderType\n\n# Use in filters\ndisorder_type = DisorderType.POLITICAL_VIOLENCE  # \"Political violence\"\n```\n\n- `POLITICAL_VIOLENCE`: \"Political violence\"\n- `DEMONSTRATIONS`: \"Demonstrations\"\n- `STRATEGIC_DEVELOPMENTS`: \"Strategic developments\"\n\n### ExportType\n\n```python\nfrom acled.models.enums import ExportType\n\n# Specify the format of the returned data\nexport_type = ExportType.JSON  # \"json\"\n```\n\n- `JSON`: \"json\"\n- `XML`: \"xml\"\n- `CSV`: \"csv\"\n- `XLSX`: \"xlsx\"\n- `TXT`: \"txt\"\n\n### Actor\n\n```python\nfrom acled.models.enums import Actor\n\n# Use for inter1 and inter2 values\nactor_type = Actor.STATE_FORCES  # 1\n```\n\n- `STATE_FORCES` (1)\n- `REBEL_FORCES` (2)\n- `MILITIA_GROUPS` (3)\n- `COMMUNAL_IDENTITY_GROUPS` (4)\n- `RIOTERS` (5)\n- `PROTESTERS` (6)\n- `CIVILIANS` (7)\n- `FOREIGN_OTHERS` (8)\n\n### Region\n\n```python\nfrom acled.models.enums import Region\n\n# Use in filters\nregion = Region.WESTERN_AFRICA  # 1\n```\n\n- `WESTERN_AFRICA` (1)\n- `MIDDLE_AFRICA` (2)\n- `EASTERN_AFRICA` (3)\n- `SOUTHERN_AFRICA` (4)\n- `NOTHERN_AFRICA` (5)\n- `SOUTH_ASIA` (7)\n- `SOUTHEAST_ASIA` (9)\n- `MIDDLE_EAST` (11)\n- `EUROPE` (12)\n- `CAUCASUS_AND_CENTRAL_ASIA` (13)\n- `CENTRAL_AMERICA` (14)\n- `SOUTH_AMERICA` (15)\n- `CARIBBEAN` (16)\n- `EAST_ASIA` (17)\n- `NORTH_AMERICA` (18)\n- `OCEANIA` (19)\n- `ANTARCTICA` (20)\n\n## Configuration Options\n\nThe library's behavior can be configured through environment variables:\n\n- `ACLED_API_KEY`: Your ACLED API key\n- `ACLED_EMAIL`: The email associated with your API key\n- `ACLED_MAX_RETRIES`: Maximum number of retry attempts (default: 3)\n- `ACLED_RETRY_BACKOFF_FACTOR`: Backoff factor for calculating wait time between retries (default: 0.5)\n- `ACLED_REQUEST_TIMEOUT`: Request timeout in seconds (default: 30)\n\n## CLI Usage\n\nThe library includes a command-line interface for easy data access:\n\n### Authentication\n\nFirst, authenticate with your ACLED credentials:\n\n```bash\nacled auth login\n```\n\nThis securely stores your API key and email for future use.\n\n### Basic CLI Commands\n\n```bash\n# Get recent events from Syria\nacled data --country Syria --year 2024 --limit 10\n\n# Get data with table output\nacled data --country Nigeria --format table\n\n# Get data with specific filters\nacled data --country Yemen --event-type Battles --limit 5 --format summary\n\n# Save output to file\nacled data --country Afghanistan --year 2024 --output events.json\n\n# Get help for any command\nacled data --help\n```\n\n### CLI Authentication Options\n\nYou can authenticate in three ways:\n\n1. **Secure login** (recommended):\n   ```bash\n   acled auth login\n   ```\n\n2. **Command-line options**:\n   ```bash\n   acled data --api-key YOUR_API_KEY --email YOUR_EMAIL --country Syria\n   ```\n\n3. **Environment variables**:\n   ```bash\n   export ACLED_API_KEY=\"your_api_key\"\n   export ACLED_EMAIL=\"your_email\"\n   acled data --country Syria\n   ```\n\n## Important Notes\n\nACLED is an amazing service provided at no cost, so please be respectful and measured in your usage. Consider implementing caching in your application to reduce the number of API calls.\n\n## References\n\n- [ACLED Website](https://acleddata.com/)\n- [ACLED API Documentation](https://acleddata.com/acleddatanew/wp-content/uploads/2020/10/ACLED_API-User-Guide_2020.pdf) (2020)\n\n## Development and Contributing\n\n### Setting Up the Development Environment\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/blazeiburgess/acled.git\n   cd acled\n   ```\n\n2. Create and activate a virtual environment:\n   ```bash\n   python -m venv venv\n   source venv/bin/activate  # On Windows: venv\\Scripts\\activate\n   ```\n\n3. Install in development mode with dev dependencies:\n   ```bash\n   pip install -e \".[dev]\"\n   ```\n\n### Running Tests\n\n```bash\n# Run all tests\npytest\n\n# Run tests with coverage report\npytest --cov=acled --cov-report=term-missing\n```\n\n## TODO\n\n- Add client for deleted api, add method to access from main client\n- Better document more advanced features (e.g. filter type changes = vs. > vs. < vs. LIKE). They should work now (partially tested), but are a little obscure.\n",
    "bugtrack_url": null,
    "license": "GPL 3",
    "summary": "A Python library that unofficially wraps the ACLED API.",
    "version": "0.2.4",
    "project_urls": {
        "Homepage": "https://github.com/blazeiburgess/acled",
        "Repository": "https://github.com/blazeiburgess/acled"
    },
    "split_keywords": [
        "acled",
        " api",
        " conflict",
        " data",
        " political violence",
        " research"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "834993d36ded98dafaae09967067c5fe3d88b44f781a07478bc2a7fb186bf963",
                "md5": "9591f0bd36cd9c0af202489a152b7e66",
                "sha256": "30fcdf6cc49021b26b1b06c2f79944d2933897c9368cdf0d493ad3741347bfb1"
            },
            "downloads": -1,
            "filename": "acled-0.2.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9591f0bd36cd9c0af202489a152b7e66",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 50035,
            "upload_time": "2025-07-31T02:15:45",
            "upload_time_iso_8601": "2025-07-31T02:15:45.851537Z",
            "url": "https://files.pythonhosted.org/packages/83/49/93d36ded98dafaae09967067c5fe3d88b44f781a07478bc2a7fb186bf963/acled-0.2.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9ab80cec74aebb5c8378f48c9781e590f0a7b86eb0c34af2e42c7592bc888329",
                "md5": "54f04022a3f9e813fa83bd6a037c943a",
                "sha256": "f04316d5bca08607962f27772118f00580d4a53c6ba3d80019ca0cdc702dbaf5"
            },
            "downloads": -1,
            "filename": "acled-0.2.4.tar.gz",
            "has_sig": false,
            "md5_digest": "54f04022a3f9e813fa83bd6a037c943a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 71484,
            "upload_time": "2025-07-31T02:15:47",
            "upload_time_iso_8601": "2025-07-31T02:15:47.485036Z",
            "url": "https://files.pythonhosted.org/packages/9a/b8/0cec74aebb5c8378f48c9781e590f0a7b86eb0c34af2e42c7592bc888329/acled-0.2.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-31 02:15:47",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "blazeiburgess",
    "github_project": "acled",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "certifi",
            "specs": [
                [
                    "==",
                    "2024.8.30"
                ]
            ]
        },
        {
            "name": "charset-normalizer",
            "specs": [
                [
                    "==",
                    "3.4.0"
                ]
            ]
        },
        {
            "name": "idna",
            "specs": [
                [
                    "==",
                    "3.10"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": [
                [
                    "==",
                    "2.32.3"
                ]
            ]
        },
        {
            "name": "urllib3",
            "specs": [
                [
                    "==",
                    "2.2.3"
                ]
            ]
        }
    ],
    "lcname": "acled"
}
        
Elapsed time: 0.73126s