Python interface for the Manta Dota 2 replay parser
Project description
Python Manta
Python bindings for the dotabuff/manta Dota 2 replay parser
What This Library Does
Python Manta is a wrapper/bindings library that provides Python access to the excellent Manta Go library for parsing Dota 2 replay files (.dem).
Important Attribution
All the heavy lifting is done by dotabuff/manta - the battle-tested Go replay parser maintained by Dotabuff. This Python library simply:
- Wraps the Manta Go library using CGO
- Exposes a Pythonic API via ctypes
- Provides type-safe Pydantic models for parsed data
If you're working in Go, use Manta directly. This library exists for Python developers who need replay parsing capabilities.
Library Philosophy
Python Manta is a low-level data extraction library, not an analytics tool. We provide:
| ✅ In Scope | ❌ Out of Scope |
|---|---|
| Raw data extraction | Analysis/aggregation logic |
Enums/constants for game data (RuneType, EntityType, CombatLogType, DamageType, Team, NeutralItemTier, NeutralItem) |
Fight detection algorithms |
| Type-safe Pydantic models | Statistics computation |
Simple helper properties (e.g., is_pro_match()) |
Data interpretation |
The line: If it's mapping/typing game data → library. If it's interpreting/analyzing → user code.
Users should build analysis logic on top of the raw data we provide.
Table of Contents
- Documentation ← Full docs with examples
- Versioning
- Installation
- Quick Start
- V2 Parser API (Recommended)
- API Reference
- Game Events
- Modifiers
- Entity Queries
- String Tables
- Combat Log
- Parser Info
- Supported Callbacks (272 Total)
- Data Models
- Common Use Cases
- Development Setup
- Architecture
- AI Integration Guide
- Troubleshooting
- Contributing
- License
Versioning
Python Manta follows a 4-part versioning scheme that tracks the upstream dotabuff/manta version:
v{manta_major}.{manta_minor}.{manta_patch}.{python_manta_release}
| Version Part | Meaning |
|---|---|
1.4.5 |
Base dotabuff/manta version this release is built on |
.1, .2, etc. |
Python Manta release number for that manta version |
Examples:
v1.4.5- Initial release based on manta v1.4.5v1.4.5.1- First update/bugfix release, still using manta v1.4.5v1.4.5.2- Second update, still using manta v1.4.5v1.4.6- New release when manta updates to v1.4.6
This scheme allows us to release updates (new features, bugfixes, documentation) without waiting for upstream manta releases (which happen ~twice per year).
Installation
From PyPI (Recommended)
pip install python-manta
Pre-built wheels are available for:
- Linux (x86_64)
- macOS (Intel and Apple Silicon)
- Windows (AMD64)
No Go installation required - wheels include pre-compiled binaries.
Version Pinning
Always use the latest release for your target Manta version to get bug fixes and improvements:
# Latest release for Manta 1.4.5.x (recommended)
pip install "python-manta>=1.4.5,<1.4.6"
# Or use compatible release operator
pip install "python-manta~=1.4.5"
From Source
See Building from Source section below.
Quick Start
Parse Demo Header
from python_manta import Parser
parser = Parser("match.dem")
result = parser.parse(header=True)
print(f"Map: {result.header.map_name}")
print(f"Server: {result.header.server_name}")
print(f"Build: {result.header.build_num}")
print(f"Network Protocol: {result.header.network_protocol}")
Parse Specific Messages
from python_manta import Parser
parser = Parser("match.dem")
# Extract chat messages (limit to 100)
result = parser.parse(messages={"filter": "CDOTAUserMsg_ChatMessage", "max_messages": 100})
if result.success:
for msg in result.messages.messages:
print(f"[Tick {msg.tick}] Player {msg.data['source_player_id']}: {msg.data['message_text']}")
Parse Draft (Picks & Bans)
from python_manta import Parser
parser = Parser("match.dem")
result = parser.parse(game_info=True)
for pick_ban in result.game_info.picks_bans:
action = "PICK" if pick_ban.is_pick else "BAN"
team = "Radiant" if pick_ban.team == 2 else "Dire"
print(f"{team} {action}: Hero ID {pick_ban.hero_id}")
Parser API
The Parser class provides single-pass parsing - all data collected in one file traversal. This is much more efficient when extracting multiple data types.
Single-Pass Parsing
from python_manta import Parser
# Create parser bound to file
parser = Parser("match.dem")
# Collect all data types in ONE parse (instead of 5 separate parses)
result = parser.parse(
header=True,
game_info=True,
combat_log={"types": [0, 4], "max_entries": 100},
entities={"interval_ticks": 1800, "max_snapshots": 50},
messages={"filter": "ChatMessage", "max_messages": 100},
)
# Access all results
print(result.header.map_name)
print(result.game_info.match_id)
print(len(result.combat_log.entries))
Index/Seek API (Random Access)
from python_manta import Parser
parser = Parser("match.dem")
# Build keyframe index for seeking
index = parser.build_index(interval_ticks=1800) # Every 60 seconds
print(f"Total ticks: {index.total_ticks}, Keyframes: {len(index.keyframes)}")
# Get hero state at specific tick
snap = parser.snapshot(target_tick=36000) # 20 minutes
for hero in snap.heroes:
print(f"{hero.hero_name}: HP={hero.health}/{hero.max_health} at ({hero.x:.0f}, {hero.y:.0f})")
print(f" LH={hero.last_hits} Gold={hero.gold} NW={hero.net_worth} KDA={hero.kda}")
# Include illusions/clones
snap = parser.snapshot(target_tick=36000, include_illusions=True)
for hero in snap.heroes:
if hero.is_clone:
print(f"Clone: {hero.hero_name}")
elif hero.is_illusion:
print(f"Illusion: {hero.hero_name}")
# Parse events in tick range
result = parser.parse_range(start_tick=25000, end_tick=35000, combat_log=True)
for entry in result.combat_log:
print(f"Tick {entry['tick']}: {entry['target_name']}")
API Reference
| Method | Description |
|---|---|
Parser(demo_path) |
Create parser bound to file |
parse(**collectors) |
Single-pass parsing with multiple collectors |
build_index(interval_ticks) |
Build keyframe index for seeking |
snapshot(target_tick, include_illusions=False) |
Get hero state at tick |
find_keyframe(index, target_tick) |
Find nearest keyframe |
parse_range(start, end, **collectors) |
Parse events in tick range |
stream(**options) |
Stream events from demo |
Parser Class
The main class for parsing Dota 2 replay files.
class Parser:
def __init__(self, demo_path: str, library_path: Optional[str] = None)
# Main parsing method
def parse(
self,
header: bool = False,
game_info: bool = False,
combat_log: Optional[Dict] = None,
entities: Optional[Dict] = None,
game_events: Optional[Dict] = None,
modifiers: Optional[Dict] = None,
string_tables: Optional[Dict] = None,
messages: Optional[Dict] = None,
parser_info: bool = False,
) -> ParseResult
# Advanced features
def build_index(self, interval_ticks: int = 1800) -> DemoIndex
def snapshot(self, target_tick: int, include_illusions: bool = False) -> EntityStateSnapshot
def parse_range(self, start_tick: int, end_tick: int, ...) -> RangeParseResult
def stream(self, combat_log: bool = False, messages: bool = False, ...) -> Iterator[StreamEvent]
Constructor
parser = Parser("match.dem") # Uses bundled library
parser = Parser("match.dem", library_path="/path/to/libmanta_wrapper.so") # Custom library
parse(**collectors) -> ParseResult
Single-pass parsing with multiple data collectors. Collects all requested data in ONE file traversal.
Parameters (all optional):
header: Set toTrueto collect header metadatagame_info: Set toTrueto collect draft/game infocombat_log: Dict withtypes,max_entries,heroes_onlyentities: Dict withinterval_ticks,max_snapshots,target_heroesgame_events: Dict withevent_filter,max_eventsmodifiers: Dict withmax_modifiers,debuffs_only,auras_onlystring_tables: Dict withtable_names,include_values,max_entriesmessages: Dict withfilter,max_messagesparser_info: Set toTrueto collect parser state
Returns: ParseResult with all requested data
Raises:
FileNotFoundError: If demo file doesn't existValueError: If parsing fails
Game Events
Parse Source 1 legacy game events with typed field access:
from python_manta import Parser
parser = Parser("match.dem")
# Parse specific events
result = parser.parse(game_events={"event_filter": "dota_combatlog", "max_events": 100})
for event in result.game_events.events:
print(f"[{event.tick}] {event.name}: {event.fields}")
Modifiers
Track buffs, debuffs, and auras on units:
from python_manta import Parser
parser = Parser("match.dem")
# Get all modifiers
result = parser.parse(modifiers={"max_modifiers": 100})
for mod in result.modifiers.modifiers:
print(f"[{mod.tick}] {mod.name} on entity {mod.parent}, duration={mod.duration}, stacks={mod.stack_count}")
# Filter for auras only
result = parser.parse(modifiers={"max_modifiers": 100, "auras_only": True})
Entity Queries
Query entities by class name and extract properties:
from python_manta import Parser
parser = Parser("match.dem")
# Query hero entities
result = parser.parse(entities={"class_filter": "Hero", "max_entities": 10})
for entity in result.entities.entities:
print(f"{entity.class_name} (index={entity.index})")
print(f" Health: {entity.properties.get('m_iHealth')}")
# Query specific properties only
result = parser.parse(entities={
"class_filter": "Hero",
"property_filter": ["m_iHealth", "m_iMaxHealth", "m_vecOrigin"],
"max_entities": 10
})
# Query by exact class names
result = parser.parse(entities={
"class_names": ["CDOTA_Unit_Hero_Invoker", "CDOTA_Unit_Hero_Pudge"],
"max_entities": 20
})
String Tables
Extract string tables (userinfo, instancebaseline, etc.):
from python_manta import Parser
parser = Parser("match.dem")
# Get specific table
result = parser.parse(string_tables={"table_names": ["userinfo"], "max_entries": 50})
for entry in result.string_tables.entries:
print(f"[{entry.table}] {entry.key}: {entry.value[:50]}...")
Combat Log
Parse combat log with filtering and typed entries:
from python_manta import Parser
parser = Parser("match.dem")
# Get all combat log entries
result = parser.parse(combat_log={"max_entries": 100})
for entry in result.combat_log.entries:
print(f"[{entry.timestamp:.1f}s] {entry.type_name}: {entry.attacker_name} -> {entry.target_name}")
# Filter by type (0=DAMAGE, 1=HEAL, 2=MODIFIER_ADD, etc.)
result = parser.parse(combat_log={"types": [0], "max_entries": 100}) # Damage only
# Filter for hero-related entries
result = parser.parse(combat_log={"heroes_only": True, "max_entries": 100})
Parser Info
Get parser metadata and state:
from python_manta import Parser
parser = Parser("match.dem")
result = parser.parse(parser_info=True)
info = result.parser_info
print(f"Final tick: {info.tick}")
print(f"Entity count: {info.entity_count}")
print(f"String tables: {info.string_tables}")
Supported Callbacks (272 Total)
Python Manta implements all 272 Manta callbacks. Use these exact names with parse_universal().
Communication & Chat
| Callback Name | Description |
|---|---|
CDOTAUserMsg_ChatMessage |
Player text chat messages |
CDOTAUserMsg_ChatEvent |
System chat events (kills, items, etc.) |
CDOTAUserMsg_ChatWheel |
Chat wheel phrases |
CDOTAUserMsg_BotChat |
Bot chat messages |
CUserMessageSayText |
Generic say text |
CUserMessageSayText2 |
Extended say text |
Map & Location
| Callback Name | Description |
|---|---|
CDOTAUserMsg_LocationPing |
Map ping locations |
CDOTAUserMsg_MapLine |
Map drawing/lines |
CDOTAUserMsg_WorldLine |
World-space lines |
CDOTAUserMsg_MinimapEvent |
Minimap events |
CDOTAUserMsg_Ping |
Generic pings |
CDOTAUserMsg_CoachHUDPing |
Coach pings |
Game State & Events
| Callback Name | Description |
|---|---|
CDemoFileHeader |
Demo file metadata |
CDemoFileInfo |
Extended demo info (draft, players) |
CDOTAUserMsg_GamerulesStateChanged |
Game state transitions |
CDOTAUserMsg_OverheadEvent |
Damage numbers, XP, gold |
CDOTAUserMsg_UnitEvent |
Unit actions and abilities |
CMsgDOTACombatLogEntry |
Combat log entries |
Draft & Hero Selection
| Callback Name | Description |
|---|---|
CDOTAUserMsg_PlayerDraftPick |
Player draft picks |
CDOTAUserMsg_PlayerDraftSuggestPick |
Draft suggestions |
CDOTAUserMsg_SuggestHeroPick |
Hero suggestions |
CDOTAUserMsg_SuggestHeroRole |
Role suggestions |
Items & Economy
| Callback Name | Description |
|---|---|
CDOTAUserMsg_ItemPurchased |
Item purchases |
CDOTAUserMsg_ItemSold |
Item sales |
CDOTAUserMsg_ItemAlert |
Item alerts |
CDOTAUserMsg_ItemFound |
Found items |
CDOTAUserMsg_FoundNeutralItem |
Neutral item drops |
CDOTAUserMsg_QuickBuyAlert |
Quick buy alerts |
Combat & Abilities
| Callback Name | Description |
|---|---|
CDOTAUserMsg_AbilityPing |
Ability pings |
CDOTAUserMsg_AbilitySteal |
Rubick spell steal |
CDOTAUserMsg_DamageReport |
Damage reports |
CDOTAUserMsg_TE_Projectile |
Projectile events |
CDOTAUserMsg_CreateLinearProjectile |
Linear projectiles |
Network & Technical
| Callback Name | Description |
|---|---|
CNETMsg_Tick |
Network tick synchronization |
CNETMsg_SetConVar |
Console variable changes |
CNETMsg_SignonState |
Connection state changes |
CSVCMsg_ServerInfo |
Server configuration |
CSVCMsg_PacketEntities |
Entity updates |
Demo Control
| Callback Name | Description |
|---|---|
CDemoPacket |
Demo packets |
CDemoStop |
Demo end marker |
CDemoSyncTick |
Sync tick markers |
CDemoStringTables |
String table data |
CDemoClassInfo |
Class information |
Full Callback List by Category
Demo Messages (15 callbacks)
CDemoAnimationDataCDemoAnimationHeaderCDemoClassInfoCDemoConsoleCmdCDemoCustomDataCDemoCustomDataCallbacksCDemoFileHeaderCDemoFileInfoCDemoFullPacketCDemoPacketCDemoRecoveryCDemoSaveGameCDemoSendTablesCDemoSpawnGroupsCDemoStopCDemoStringTablesCDemoSyncTickCDemoUserCmd
Network Messages (15 callbacks)
CNETMsg_DebugOverlayCNETMsg_NOPCNETMsg_SetConVarCNETMsg_SignonStateCNETMsg_SpawnGroup_LoadCNETMsg_SpawnGroup_LoadCompletedCNETMsg_SpawnGroup_ManifestUpdateCNETMsg_SpawnGroup_SetCreationTickCNETMsg_SpawnGroup_UnloadCNETMsg_SplitScreenUserCNETMsg_StringCmdCNETMsg_Tick
SVC Messages (25 callbacks)
CSVCMsg_BSPDecalCSVCMsg_Broadcast_CommandCSVCMsg_ClassInfoCSVCMsg_ClearAllStringTablesCSVCMsg_CmdKeyValuesCSVCMsg_CreateStringTableCSVCMsg_FlattenedSerializerCSVCMsg_FullFrameSplitCSVCMsg_GetCvarValueCSVCMsg_HLTVStatusCSVCMsg_HltvFixupOperatorStatusCSVCMsg_MenuCSVCMsg_PacketEntitiesCSVCMsg_PacketReliableCSVCMsg_PeerListCSVCMsg_PrefetchCSVCMsg_PrintCSVCMsg_RconServerDetailsCSVCMsg_ServerInfoCSVCMsg_ServerSteamIDCSVCMsg_SetPauseCSVCMsg_SetViewCSVCMsg_SoundsCSVCMsg_SplitScreenCSVCMsg_StopSoundCSVCMsg_UpdateStringTableCSVCMsg_UserMessageCSVCMsg_VoiceDataCSVCMsg_VoiceInit
User Messages (35 callbacks)
CUserMessageAchievementEventCUserMessageAmmoDeniedCUserMessageAudioParameterCUserMessageCameraTransitionCUserMessageCloseCaptionCUserMessageCloseCaptionDirectCUserMessageCloseCaptionPlaceholderCUserMessageColoredTextCUserMessageCreditsMsgCUserMessageCurrentTimescaleCUserMessageDesiredTimescaleCUserMessageFadeCUserMessageGameTitleCUserMessageHapticsManagerEffectCUserMessageHapticsManagerPulseCUserMessageHudMsgCUserMessageHudTextCUserMessageItemPickupCUserMessageLagCompensationErrorCUserMessageRequestDiagnosticCUserMessageRequestDllStatusCUserMessageRequestInventoryCUserMessageRequestStateCUserMessageRequestUtilActionCUserMessageResetHUDCUserMessageRumbleCUserMessageSayTextCUserMessageSayText2CUserMessageSayTextChannelCUserMessageSendAudioCUserMessageServerFrameTimeCUserMessageShakeCUserMessageShakeDirCUserMessageShowMenuCUserMessageTextMsgCUserMessageScreenTiltCUserMessageUpdateCssClassesCUserMessageVoiceMaskCUserMessageWaterShake
DOTA User Messages (140+ callbacks)
CDOTAUserMsg_AbilityDraftRequestAbilityCDOTAUserMsg_AbilityPingCDOTAUserMsg_AbilityStealCDOTAUserMsg_AddQuestLogEntryCDOTAUserMsg_AghsStatusAlertCDOTAUserMsg_AIDebugLineCDOTAUserMsg_AllStarEventCDOTAUserMsg_BeastChatCDOTAUserMsg_BoosterStateCDOTAUserMsg_BotChatCDOTAUserMsg_BuyBackStateAlertCDOTAUserMsg_ChatEventCDOTAUserMsg_ChatMessageCDOTAUserMsg_ChatWheelCDOTAUserMsg_ChatWheelCooldownCDOTAUserMsg_ClientLoadGridNavCDOTAUserMsg_CoachHUDPingCDOTAUserMsg_CombatHeroPositionsCDOTAUserMsg_CombatLogBulkDataCDOTAUserMsg_CompendiumStateCDOTAUserMsg_ContextualTipCDOTAUserMsg_CourierKilledAlertCDOTAUserMsg_CreateLinearProjectileCDOTAUserMsg_CustomHeaderMessageCDOTAUserMsg_CustomHudElement_CreateCDOTAUserMsg_CustomHudElement_DestroyCDOTAUserMsg_CustomHudElement_ModifyCDOTAUserMsg_CustomMsgCDOTAUserMsg_DamageReportCDOTAUserMsg_DebugChallengeCDOTAUserMsg_DestroyLinearProjectileCDOTAUserMsg_DismissAllStatPopupsCDOTAUserMsg_DodgeTrackingProjectilesCDOTAUserMsg_DuelAcceptedCDOTAUserMsg_DuelOpponentKilledCDOTAUserMsg_DuelRequestedCDOTAUserMsg_EmptyItemSlotAlertCDOTAUserMsg_EmptyTeleportAlertCDOTAUserMsg_EnemyItemAlertCDOTAUserMsg_ESArcanaComboCDOTAUserMsg_ESArcanaComboSummaryCDOTAUserMsg_FacetPingCDOTAUserMsg_FlipCoinResultCDOTAUserMsg_FoundNeutralItemCDOTAUserMsg_GamerulesStateChangedCDOTAUserMsg_GiftPlayerCDOTAUserMsg_GlobalLightColorCDOTAUserMsg_GlobalLightDirectionCDOTAUserMsg_GlyphAlertCDOTAUserMsg_GuildChallenge_ProgressCDOTAUserMsg_HalloweenDropsCDOTAUserMsg_HeroRelicProgressCDOTAUserMsg_HighFiveCompletedCDOTAUserMsg_HighFiveLeftHangingCDOTAUserMsg_HotPotato_CreatedCDOTAUserMsg_HotPotato_ExplodedCDOTAUserMsg_HPManaAlertCDOTAUserMsg_HudErrorCDOTAUserMsg_InnatePingCDOTAUserMsg_InvalidCommandCDOTAUserMsg_ItemAlertCDOTAUserMsg_ItemFoundCDOTAUserMsg_ItemPurchasedCDOTAUserMsg_ItemSoldCDOTAUserMsg_KillcamDamageTakenCDOTAUserMsg_LocationPingCDOTAUserMsg_MadstoneAlertCDOTAUserMsg_MapLineCDOTAUserMsg_MarsArenaOfBloodAttackCDOTAUserMsg_MinimapDebugPointCDOTAUserMsg_MinimapEventCDOTAUserMsg_MiniKillCamInfoCDOTAUserMsg_MiniTauntCDOTAUserMsg_ModifierAlertCDOTAUserMsg_MoveCameraToUnitCDOTAUserMsg_MuertaReleaseEvent_AssignedTargetKilledCDOTAUserMsg_MutedPlayersCDOTAUserMsg_NeutralCampAlertCDOTAUserMsg_NeutralCraftAvailableCDOTAUserMsg_NevermoreRequiemCDOTAUserMsg_OMArcanaComboCDOTAUserMsg_OutpostCapturedCDOTAUserMsg_OutpostGrantedXPCDOTAUserMsg_OverheadEventCDOTAUserMsg_PauseMinigameDataCDOTAUserMsg_PingCDOTAUserMsg_PingConfirmationCDOTAUserMsg_PlayerDraftPickCDOTAUserMsg_PlayerDraftSuggestPickCDOTAUserMsg_ProjectionAbilityCDOTAUserMsg_ProjectionEventCDOTAUserMsg_QoP_ArcanaSummaryCDOTAUserMsg_QuestStatusCDOTAUserMsg_QueuedOrderRemovedCDOTAUserMsg_QuickBuyAlertCDOTAUserMsg_RadarAlertCDOTAUserMsg_ReceivedXmasGiftCDOTAUserMsg_ReplaceQueryUnitCDOTAUserMsg_RockPaperScissorsFinishedCDOTAUserMsg_RockPaperScissorsStartedCDOTAUserMsg_RollDiceResultCDOTAUserMsg_RoshanTimerCDOTAUserMsg_SalutePlayerCDOTAUserMsg_SelectPenaltyGoldCDOTAUserMsg_SendFinalGoldCDOTAUserMsg_SendGenericToolTipCDOTAUserMsg_SendRoshanPopupCDOTAUserMsg_SendRoshanSpectatorPhaseCDOTAUserMsg_SendStatPopupCDOTAUserMsg_SetNextAutobuyItemCDOTAUserMsg_SharedCooldownCDOTAUserMsg_ShovelUnearthCDOTAUserMsg_ShowGenericPopupCDOTAUserMsg_ShowSurveyCDOTAUserMsg_SpectatorPlayerClickCDOTAUserMsg_SpectatorPlayerUnitOrdersCDOTAUserMsg_SpeechBubbleCDOTAUserMsg_StatsHeroMinuteDetailsCDOTAUserMsg_StatsMatchDetailsCDOTAUserMsg_SuggestHeroPickCDOTAUserMsg_SuggestHeroRoleCDOTAUserMsg_SwapVerifyCDOTAUserMsg_TalentTreeAlertCDOTAUserMsg_TE_DestroyProjectileCDOTAUserMsg_TE_DotaBloodImpactCDOTAUserMsg_TE_ProjectileCDOTAUserMsg_TE_ProjectileLocCDOTAUserMsg_TE_UnitAnimationCDOTAUserMsg_TE_UnitAnimationEndCDOTAUserMsg_TimerAlertCDOTAUserMsg_TipAlertCDOTAUserMsg_TutorialFadeCDOTAUserMsg_TutorialFinishCDOTAUserMsg_TutorialMinimapPositionCDOTAUserMsg_TutorialPingMinimapCDOTAUserMsg_TutorialRequestExpCDOTAUserMsg_TutorialTipInfoCDOTAUserMsg_UnitEventCDOTAUserMsg_UpdateLinearProjectileCPDataCDOTAUserMsg_UpdateQuestProgressCDOTAUserMsg_UpdateSharedContentCDOTAUserMsg_VersusScene_PlayerBehaviorCDOTAUserMsg_VoteEndCDOTAUserMsg_VoteStartCDOTAUserMsg_VoteUpdateCDOTAUserMsg_WillPurchaseAlertCDOTAUserMsg_WK_Arcana_ProgressCDOTAUserMsg_WorldLineCDOTAUserMsg_WRArcanaProgressCDOTAUserMsg_WRArcanaSummaryCDOTAUserMsg_XPAlert
Entity Messages (6 callbacks)
CEntityMessageDoSparkCEntityMessageFixAngleCEntityMessagePlayJingleCEntityMessagePropagateForceCEntityMessageRemoveAllDecalsCEntityMessageScreenOverlay
Miscellaneous Messages (15 callbacks)
CMsgClearDecalsForSkeletonInstanceEventCMsgClearEntityDecalsEventCMsgClearWorldDecalsEventCMsgDOTACombatLogEntryCMsgGCToClientTournamentItemDropCMsgPlaceDecalEventCMsgSosSetLibraryStackFieldsCMsgSosSetSoundEventParamsCMsgSosStartSoundEventCMsgSosStopSoundEventCMsgSosStopSoundEventHashCMsgSource1LegacyGameEventCMsgSource1LegacyGameEventListCMsgSource1LegacyListenEventsCMsgVDebugGameSessionIDEventCDOTAMatchMetadataFile
Data Models
All models use Pydantic for validation and serialization.
HeaderInfo
class HeaderInfo(BaseModel):
map_name: str # Map name (e.g., "dota")
server_name: str # Server identifier
client_name: str # Client type
game_directory: str # Game directory path
network_protocol: int # Network protocol version
demo_file_stamp: str # Demo file signature
build_num: int # Game build number
game: str # Game identifier
server_start_tick: int # Server start tick
success: bool # Parse success flag
error: Optional[str] # Error message if failed
CHeroSelectEvent
class CHeroSelectEvent(BaseModel):
is_pick: bool # True for pick, False for ban
team: int # 2 = Radiant, 3 = Dire
hero_id: int # Hero ID (see Dota 2 Wiki for mappings)
CDotaGameInfo
class CDotaGameInfo(BaseModel):
picks_bans: List[CHeroSelectEvent] # Draft sequence
success: bool
error: Optional[str]
MessageEvent
class MessageEvent(BaseModel):
type: str # Callback name
tick: int # Game tick
net_tick: int # Network tick
data: Any # Message-specific data (dict)
timestamp: Optional[int] # Unix timestamp (ms)
UniversalParseResult
class UniversalParseResult(BaseModel):
messages: List[MessageEvent] # Matched messages
success: bool # Parse success flag
error: Optional[str] # Error message
count: int # Number of messages
GameEventData
class GameEventData(BaseModel):
name: str # Event name (e.g., "dota_combatlog")
tick: int # Game tick
net_tick: int # Network tick
fields: Dict[str, Any] # Event-specific fields
ModifierEntry
class ModifierEntry(BaseModel):
tick: int # Game tick
name: str # Modifier name
parent: int # Parent entity handle
duration: float # Duration in seconds (-1 = permanent)
stack_count: int # Number of stacks
is_aura: bool # Whether this is an aura
EntityData
class EntityData(BaseModel):
index: int # Entity index
class_name: str # Entity class name
properties: Dict[str, Any] # Entity properties
CombatLogEntry
class CombatLogEntry(BaseModel):
tick: int # Game tick
type: int # Combat log type ID
type_name: str # Human-readable type name
attacker_name: str # Attacker name
target_name: str # Target name
inflictor_name: str # Ability/item name
value: int # Damage/heal value
health: int # Target HP after event
timestamp: float # Game time in seconds
is_attacker_hero: bool # Whether attacker is a hero
is_target_hero: bool # Whether target is a hero
stun_duration: float # Stun duration applied
assist_players: List[int] # Assist player IDs (for kills)
# ... 80+ fields total - see documentation for complete list
ParserInfo
class ParserInfo(BaseModel):
tick: int # Final parser tick
net_tick: int # Final network tick
entity_count: int # Number of entities
string_tables: List[str] # List of string table names
success: bool # Parse success flag
HeroSnapshot
Captured via parser.snapshot() for hero state at a specific tick:
class HeroSnapshot(BaseModel):
# Identity
hero_name: str # e.g., "npc_dota_hero_axe"
hero_id: int # Hero ID
player_id: int # Player index (0-9)
team: int # 2 = Radiant, 3 = Dire
index: int # Entity index
# Position
x: float # X coordinate
y: float # Y coordinate
z: float # Z coordinate
# Vital stats
health: int # Current HP
max_health: int # Max HP
mana: float # Current mana
max_mana: float # Max mana
level: int # Hero level
is_alive: bool # Whether hero is alive
# Economy
gold: int # Current gold
net_worth: int # Total net worth
last_hits: int # Last hits
denies: int # Denies
xp: int # Experience points
# KDA
kills: int # Kills
deaths: int # Deaths
assists: int # Assists
# Combat stats
armor: float # Armor value
magic_resistance: float # Magic resistance %
damage_min: int # Min damage
damage_max: int # Max damage
attack_range: int # Attack range
# Attributes
strength: float # Strength
agility: float # Agility
intellect: float # Intelligence
# Abilities and talents
abilities: List[AbilitySnapshot] # List of abilities
talents: List[TalentChoice] # Selected talents
ability_points: int # Unspent ability points
# Clone/illusion flags
is_clone: bool # MK clone, Morph replicate
is_illusion: bool # Regular illusion
@property
def kda(self) -> str: # Returns "K/D/A" format
return f"{self.kills}/{self.deaths}/{self.assists}"
Common Use Cases
Extract All Chat Messages
from python_manta import Parser
parser = Parser("match.dem")
result = parser.parse(messages={"filter": "CDOTAUserMsg_ChatMessage", "max_messages": 1000})
for msg in result.messages.messages:
player_id = msg.data.get('source_player_id', 'Unknown')
text = msg.data.get('message_text', '')
print(f"Player {player_id}: {text}")
Track Item Purchases
from python_manta import Parser
parser = Parser("match.dem")
result = parser.parse(messages={"filter": "CDOTAUserMsg_ItemPurchased", "max_messages": 1000})
for msg in result.messages.messages:
player_id = msg.data.get('player_id')
item_id = msg.data.get('item_ability_id')
tick = msg.tick
print(f"[{tick}] Player {player_id} purchased item {item_id}")
Analyze Location Pings
from python_manta import Parser
parser = Parser("match.dem")
result = parser.parse(messages={"filter": "CDOTAUserMsg_LocationPing", "max_messages": 1000})
for msg in result.messages.messages:
ping_data = msg.data.get('location_ping', {})
x = ping_data.get('x', 0)
y = ping_data.get('y', 0)
player_id = msg.data.get('player_id')
print(f"Player {player_id} pinged at ({x}, {y})")
Extract Combat Log (Structured)
from python_manta import Parser
parser = Parser("match.dem")
result = parser.parse(combat_log={"max_entries": 1000})
for entry in result.combat_log.entries:
print(f"[{entry.timestamp:.1f}s] {entry.attacker_name} -> {entry.target_name}: {entry.value} damage")
Get Match Statistics
from python_manta import Parser
parser = Parser("match.dem")
result = parser.parse(messages={"filter": "CDOTAUserMsg_StatsMatchDetails", "max_messages": 10})
if result.success and result.messages.messages:
stats = result.messages.messages[0].data
print(f"Match stats: {stats}")
Multiple Data Types in Single Pass
from python_manta import Parser
parser = Parser("match.dem")
# Collect ALL data in ONE parse instead of multiple passes
result = parser.parse(
header=True,
game_info=True,
messages={"filter": "ChatMessage", "max_messages": 100},
combat_log={"heroes_only": True, "max_entries": 500},
)
print(f"Map: {result.header.map_name}")
print(f"Picks: {len([p for p in result.game_info.picks_bans if p.is_pick])}")
print(f"Chat messages: {len(result.messages.messages)}")
print(f"Combat entries: {len(result.combat_log.entries)}")
Development Setup
When you clone this repository, the shared library (.so/.dylib/.dll) is not included. You have two options:
Option 1: Download Pre-built Library (Recommended)
git clone https://github.com/DeepBlueCoding/python-manta.git
cd python-manta
python scripts/download_library.py
pip install -e '.[dev]'
Option 2: Build from Source
Requires Go 1.19+ installed.
git clone https://github.com/DeepBlueCoding/python-manta.git
cd python-manta
git clone https://github.com/dotabuff/manta.git ../manta
./build.sh
pip install -e '.[dev]'
Verify Installation
python -c "from python_manta import Parser; print('Success!')"
Running Tests
# Unit tests only
python run_tests.py --unit
# Integration tests (requires .dem files)
python run_tests.py --integration
# All tests with coverage
python run_tests.py --all --coverage
Architecture
┌─────────────────────────────────────────────────────────────┐
│ Python Application │
├─────────────────────────────────────────────────────────────┤
│ python_manta Package │
│ ├── Parser (main interface) │
│ ├── Pydantic Models (type-safe data structures) │
│ └── ctypes bindings (FFI to shared library) │
├─────────────────────────────────────────────────────────────┤
│ libmanta_wrapper.so (CGO Shared Library) │
│ ├── CGO exports (Parse, BuildIndex, GetSnapshot, etc.) │
│ ├── 272 callback implementations │
│ └── JSON serialization │
├─────────────────────────────────────────────────────────────┤
│ dotabuff/manta (Go Library) │
│ ├── PBDEMS2 format parser │
│ ├── Protobuf message decoding │
│ └── Callback system │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────┐
│ .dem Replay │
│ File │
└─────────────────┘
Data Flow
- Python creates
Parser("match.dem")and callsparse(**collectors) - ctypes marshals parameters to C strings
- CGO wrapper receives call, opens file
- Manta Go library parses the binary .dem file
- Registered callbacks capture matching messages based on collectors
- All data collected in single pass
- Data serialized to JSON and returned to Python
- Pydantic models validate and structure the data
AI Integration Guide
This section helps AI systems (LLMs, agents, coding assistants) understand and use this library effectively.
Library Philosophy (Important for AI Agents)
Python Manta is a low-level data extraction library, not an analytics tool.
| ✅ In Scope | ❌ Out of Scope |
|---|---|
| Raw data extraction | Analysis/aggregation logic |
Enums/constants (RuneType, EntityType, CombatLogType, DamageType, Team) |
Fight detection algorithms |
| Type-safe Pydantic models | Statistics computation |
Helper properties (e.g., is_pro_match()) |
Data interpretation |
When generating code: Extract raw data with this library, then write analysis logic separately. Don't expect high-level functions like "get_teamfights()" or "calculate_gpm()" - those belong in user code.
Quick Reference
from python_manta import Parser
parser = Parser("match.dem")
# Single-pass parsing - collect ALL data at once
result = parser.parse(
header=True, # Match metadata
game_info=True, # Picks, bans, teams
messages={"filter": "ChatMessage", "max_messages": 100}, # Chat messages
combat_log={"heroes_only": True, "max_entries": 100}, # Combat events
entities={"interval_ticks": 900, "max_snapshots": 50}, # Hero positions
game_events={"event_filter": "dota_combatlog", "max_events": 100},
modifiers={"max_modifiers": 100},
parser_info=True,
)
# Access all results from the single parse
print(result.header.map_name)
print(len(result.game_info.picks_bans))
print(len(result.messages.messages))
print(len(result.combat_log.entries))
Which API to Use
| Task | Collector Config | Notes |
|---|---|---|
| Match metadata | header=True |
Build number, map, server |
| Draft sequence | game_info=True |
Picks/bans with hero IDs |
| Pro match info | game_info=True |
Teams, league, players, winner |
| Hero positions | entities={"interval_ticks": 900} |
Position, stats at intervals |
| Chat messages | messages={"filter": "ChatMessage"} |
Player text chat |
| Item purchases | messages={"filter": "ItemPurchased"} |
Item buy events |
| Map pings | messages={"filter": "LocationPing"} |
Ping coordinates |
| Combat damage | combat_log={"types": [0]} |
Structured damage events |
| Hero kills | combat_log={"heroes_only": True} |
Hero-related combat |
| Buff tracking | modifiers={} |
Active buffs/debuffs |
| Hero state | entities={} |
Entity state snapshots |
| Game events | game_events={} |
364 named event types |
| Player info | string_tables={"table_names": ["userinfo"]} |
Steam IDs, names |
Common Patterns
Extract multiple data types in single pass:
from python_manta import Parser
parser = Parser("match.dem")
result = parser.parse(
header=True,
game_info=True,
combat_log={"heroes_only": True, "max_entries": 500},
)
print(f"Map: {result.header.map_name}")
for entry in result.combat_log.entries:
print(f"{entry.attacker_name} hit {entry.target_name} for {entry.value}")
Track all damage to heroes:
parser = Parser("match.dem")
result = parser.parse(combat_log={"types": [0], "heroes_only": True, "max_entries": 1000})
for entry in result.combat_log.entries:
print(f"{entry.attacker_name} hit {entry.target_name} for {entry.value} damage")
Find specific game events:
parser = Parser("match.dem")
result = parser.parse(game_events={"event_filter": "dota_player_kill", "max_events": 100})
for event in result.game_events.events:
print(f"Kill at tick {event.tick}: {event.fields}")
Key Constraints
- Callback names are case-sensitive - Use exact names from the callback list
- Message filter uses substring matching -
"Chat"matchesCDOTAUserMsg_ChatMessageandCDOTAUserMsg_ChatEvent - Always set
max_*limits - Prevents memory issues with large replays - Entity queries return end-of-replay state - For time-series data, use combat log or game events
- Combat log only starts after ~12-17 minutes - HLTV broadcast delay; use entity snapshots for early game
Troubleshooting
Library Not Found
FileNotFoundError: Shared library not found
Solution: Install from PyPI (pip install python-manta) or build from source with ./build.sh.
Demo File Not Found
FileNotFoundError: Demo file not found: match.dem
Solution: Provide absolute path or verify the file exists.
Parsing Returns Empty Results
- Check the callback name is exact (case-sensitive)
- The message type may not exist in that replay
- Try without a filter to see all messages:
parser.parse(messages={"filter": "", "max_messages": 100})
Memory Issues with Large Replays
Solution: Always set max_messages to a reasonable limit:
# Good - limits memory usage
result = parser.parse_universal("match.dem", "CNETMsg_Tick", 1000)
# Bad - could consume gigabytes of RAM
result = parser.parse_universal("match.dem", "CNETMsg_Tick", 0)
Platform-Specific Issues
macOS Apple Silicon:
- Ensure you have the ARM64 wheel or build from source on ARM
Windows:
- The library file is
libmanta_wrapper.dll - Ensure Visual C++ redistributables are installed
Linux:
- The library file is
libmanta_wrapper.so - Ensure
glibcversion compatibility
Project Links
- GitHub: https://github.com/DeepBlueCoding/python-manta
- Documentation: https://deepbluecoding.github.io/python-manta/
- PyPI: https://pypi.org/project/python-manta/
- Original Manta (Go): https://github.com/dotabuff/manta
- Dotabuff: https://www.dotabuff.com
Related Projects
- clarity - Java Dota 2 replay parser
- demoinfo-go - CS:GO demo parser in Go
- Yasha - Source 1 Dota 2 parser (archived)
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests:
python run_tests.py --all - Submit a pull request
License
MIT License - see LICENSE file.
Acknowledgments
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file python_manta-1.4.5.2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.12, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43046e722b0d76de713b20a2b43961f8be8e9d53702d6e358a9b8d3a7511c386
|
|
| MD5 |
7a5c7d555d50574c35e07e255f6ef97f
|
|
| BLAKE2b-256 |
b789398c853ad238cb4036b22c46f590055b00d03343232903decab2691b6451
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp312-cp312-win_amd64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp312-cp312-win_amd64.whl -
Subject digest:
43046e722b0d76de713b20a2b43961f8be8e9d53702d6e358a9b8d3a7511c386 - Sigstore transparency entry: 747751829
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 8.4 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14806c88b428b8935bc064ce352aa031f5d3776afb2921dddd4951ac85318499
|
|
| MD5 |
a5998fcbb914ad8c0987452b91e3474c
|
|
| BLAKE2b-256 |
5868b9ee7a5c326dcb3e9303399b05585212dcc0a5e6364187a5a6827a038024
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl -
Subject digest:
14806c88b428b8935bc064ce352aa031f5d3776afb2921dddd4951ac85318499 - Sigstore transparency entry: 747751848
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.6 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
092d5a0d36d6efbe617c4c87ba432965d4496963b874635e654b7066751b78c5
|
|
| MD5 |
f9650a13be5f2f9fa245a2b29efc5fce
|
|
| BLAKE2b-256 |
de0c6edefc36b199ba957c6c78193d89371f81a450adeaceca533de0bdf9a2b7
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp312-cp312-macosx_11_0_arm64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp312-cp312-macosx_11_0_arm64.whl -
Subject digest:
092d5a0d36d6efbe617c4c87ba432965d4496963b874635e654b7066751b78c5 - Sigstore transparency entry: 747751832
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp312-cp312-macosx_10_13_x86_64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp312-cp312-macosx_10_13_x86_64.whl
- Upload date:
- Size: 4.7 MB
- Tags: CPython 3.12, macOS 10.13+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67deed7408dfc6bb02e4627d3227322a08ef4df57e89075142739c787858b434
|
|
| MD5 |
bd4daee0abb039026a7653d69b78d947
|
|
| BLAKE2b-256 |
ab790b785d4af03e8789150e66d6ab7638f4d26d7a78b9c377f61415e77818a6
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp312-cp312-macosx_10_13_x86_64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp312-cp312-macosx_10_13_x86_64.whl -
Subject digest:
67deed7408dfc6bb02e4627d3227322a08ef4df57e89075142739c787858b434 - Sigstore transparency entry: 747751836
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.11, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
995fc0ed69a63c6519fbd4a848d8648b0c984f56616a13953298e72976684a87
|
|
| MD5 |
02e85eda6938b291f4cffc559c8a6121
|
|
| BLAKE2b-256 |
da4a558a01972bfe506a1a69aaf99547e02113ff0152a98d28886d9b550d0f4a
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp311-cp311-win_amd64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp311-cp311-win_amd64.whl -
Subject digest:
995fc0ed69a63c6519fbd4a848d8648b0c984f56616a13953298e72976684a87 - Sigstore transparency entry: 747751826
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 8.4 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
038d4f79405325f0143184aeed58b40e5ff1f34023c6f9e2b62365cb2519e3fb
|
|
| MD5 |
af348e9bb0af6c76c0a136d5d9ebf1d5
|
|
| BLAKE2b-256 |
0ce2e933575b4808d95caa61c81aa38d1211862920a65016cf88b4723cd30f31
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl -
Subject digest:
038d4f79405325f0143184aeed58b40e5ff1f34023c6f9e2b62365cb2519e3fb - Sigstore transparency entry: 747751831
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.6 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
93d2523d3a9969b8689256c9573b2ae4b6e7bd72a52cfcdfdcbd2d950da9517d
|
|
| MD5 |
6898bf3c1637bcdeb77f61aae528eb01
|
|
| BLAKE2b-256 |
4b3220854f08dfb32a36bedf67a42f83cc3faf37d70430cfa547cb69e1cbd06b
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp311-cp311-macosx_11_0_arm64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp311-cp311-macosx_11_0_arm64.whl -
Subject digest:
93d2523d3a9969b8689256c9573b2ae4b6e7bd72a52cfcdfdcbd2d950da9517d - Sigstore transparency entry: 747751834
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp311-cp311-macosx_10_9_x86_64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp311-cp311-macosx_10_9_x86_64.whl
- Upload date:
- Size: 4.7 MB
- Tags: CPython 3.11, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f93717f370a3d6346cf8dde9644832c6d49f091aa194d7ae439fbcf6136039d9
|
|
| MD5 |
b78d1a1d3c3992f7e8fc88b217158565
|
|
| BLAKE2b-256 |
44c5e7d33ba11eaac4d8a162339f2084e8d7f9e355e5ee60bd105d4df04753f8
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp311-cp311-macosx_10_9_x86_64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp311-cp311-macosx_10_9_x86_64.whl -
Subject digest:
f93717f370a3d6346cf8dde9644832c6d49f091aa194d7ae439fbcf6136039d9 - Sigstore transparency entry: 747751833
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.10, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
636755136e8c961f5607f519f470b6459a0b9563120365f098ca2ea50d1b2e0e
|
|
| MD5 |
9f78fca72e86f467060378dd1358bbd4
|
|
| BLAKE2b-256 |
8bc9da8f75e78cf249d1f21e95a68b745e1447b3f944d1340c331c04640814f8
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp310-cp310-win_amd64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp310-cp310-win_amd64.whl -
Subject digest:
636755136e8c961f5607f519f470b6459a0b9563120365f098ca2ea50d1b2e0e - Sigstore transparency entry: 747751839
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 8.4 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62f866fa6ed46e05525c1a8de23adb82a332544fda1455332d3eefecbf0036cb
|
|
| MD5 |
9c50790f32ecad8595d182b4d5cfa010
|
|
| BLAKE2b-256 |
373673c65b455141a6fb97e93b6fe034d61a11fb55199856acc1dc0132360193
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl -
Subject digest:
62f866fa6ed46e05525c1a8de23adb82a332544fda1455332d3eefecbf0036cb - Sigstore transparency entry: 747751842
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.6 MB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
890ad764c5500ac426444484370fd96b5dc18c4824879ebf058a736a5fdb8663
|
|
| MD5 |
6220cfe8c2af32debe4ade4ffa5d2055
|
|
| BLAKE2b-256 |
ea5ac7c44e12a082ecd8e0d130c88a9867341569c199522fc669e2e18a3544c8
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp310-cp310-macosx_11_0_arm64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp310-cp310-macosx_11_0_arm64.whl -
Subject digest:
890ad764c5500ac426444484370fd96b5dc18c4824879ebf058a736a5fdb8663 - Sigstore transparency entry: 747751846
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp310-cp310-macosx_10_9_x86_64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp310-cp310-macosx_10_9_x86_64.whl
- Upload date:
- Size: 4.7 MB
- Tags: CPython 3.10, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bbfdeff11763c36d087a9159a1a4dc9d180187ead71dcb866a6c282088758943
|
|
| MD5 |
8891b693a42c4397f225c89f1683b5ff
|
|
| BLAKE2b-256 |
7fd46eab1e7b6b6c3bc049c67eafcf09c59e5fa558792916d88cc2150b496c62
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp310-cp310-macosx_10_9_x86_64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp310-cp310-macosx_10_9_x86_64.whl -
Subject digest:
bbfdeff11763c36d087a9159a1a4dc9d180187ead71dcb866a6c282088758943 - Sigstore transparency entry: 747751824
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.9, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f2cdad6cd9f970b8e8e991ffa780b2a9d43d599711e80b2ae08a9b561b49134e
|
|
| MD5 |
6b108c646a2d0438fde2ed2120ed5f67
|
|
| BLAKE2b-256 |
2e6ec6854ea28ef42c06d2e76ed285f6aafc81517b7907f8fbdd4f2d490aa35d
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp39-cp39-win_amd64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp39-cp39-win_amd64.whl -
Subject digest:
f2cdad6cd9f970b8e8e991ffa780b2a9d43d599711e80b2ae08a9b561b49134e - Sigstore transparency entry: 747751828
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 8.4 MB
- Tags: CPython 3.9, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
603b79fd6275281ca3b1c23ee2e52aeac8dc26464e34626f43a958ea75902dbc
|
|
| MD5 |
faf92a601ee213b8c6b278de1e81a906
|
|
| BLAKE2b-256 |
91b536db7ac9ed8bd9fbc4cf582088c38268e536f49c9661e74c1d1c6fef4ea2
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl -
Subject digest:
603b79fd6275281ca3b1c23ee2e52aeac8dc26464e34626f43a958ea75902dbc - Sigstore transparency entry: 747751840
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.6 MB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9baf8a5b23dac7109c68e284b7e1507d1e1ca234848089d627d4ce42d6b94c9b
|
|
| MD5 |
603ddc44ade56ad2f377b1344779b65a
|
|
| BLAKE2b-256 |
98636a24613e719126345238390fa4d4cc498bb88297e32db8a79146c6fa64b2
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp39-cp39-macosx_11_0_arm64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp39-cp39-macosx_11_0_arm64.whl -
Subject digest:
9baf8a5b23dac7109c68e284b7e1507d1e1ca234848089d627d4ce42d6b94c9b - Sigstore transparency entry: 747751830
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp39-cp39-macosx_10_9_x86_64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp39-cp39-macosx_10_9_x86_64.whl
- Upload date:
- Size: 4.7 MB
- Tags: CPython 3.9, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd4bc5c1154bd152a29c7bdc81ce0c1d17a13aef674d9b89982be3b35ae8a4bf
|
|
| MD5 |
71dcf1a42225dcc3aafcd9f4e72afb7b
|
|
| BLAKE2b-256 |
3f8d25dac729afa18df0b5babb185c4880d496f7856f6933b9d99af4f2b18f5a
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp39-cp39-macosx_10_9_x86_64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp39-cp39-macosx_10_9_x86_64.whl -
Subject digest:
dd4bc5c1154bd152a29c7bdc81ce0c1d17a13aef674d9b89982be3b35ae8a4bf - Sigstore transparency entry: 747751825
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp38-cp38-win_amd64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 8.6 MB
- Tags: CPython 3.8, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f52cd25a5db7de430d4e320dd74d0b728f1d105999efcb72fbee753d3c293991
|
|
| MD5 |
918a6ca315fc1307179694081b1f1b82
|
|
| BLAKE2b-256 |
044b9eeb89d7e84c27393033e1db7b56584d6735bcca6cd3cacc6d7b73b53ff7
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp38-cp38-win_amd64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp38-cp38-win_amd64.whl -
Subject digest:
f52cd25a5db7de430d4e320dd74d0b728f1d105999efcb72fbee753d3c293991 - Sigstore transparency entry: 747751843
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
- Upload date:
- Size: 8.4 MB
- Tags: CPython 3.8, manylinux: glibc 2.28+ x86-64, manylinux: glibc 2.5+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
602f6938017013a7b4ac08edace069d643da0a6a4ca9f67d6c412ca13ee3e5dd
|
|
| MD5 |
b541cd2915790fd9bc380f111311bd2f
|
|
| BLAKE2b-256 |
6c7573bfb1fd229942f6be2db6b9ad31ab3eed58ba6577341a7bca9d123756e4
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl -
Subject digest:
602f6938017013a7b4ac08edace069d643da0a6a4ca9f67d6c412ca13ee3e5dd - Sigstore transparency entry: 747751838
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp38-cp38-macosx_11_0_arm64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp38-cp38-macosx_11_0_arm64.whl
- Upload date:
- Size: 4.6 MB
- Tags: CPython 3.8, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53a3e6f5982a19437789ca14e9218fa86b8c22e122b56634a14ee9d4553f146a
|
|
| MD5 |
c22331a52b44ec3a68b0090dee350c34
|
|
| BLAKE2b-256 |
ad5dd2e58004e708100cbc8a02fdea5abf823946cd5109f275bd03245fd5eac5
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp38-cp38-macosx_11_0_arm64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp38-cp38-macosx_11_0_arm64.whl -
Subject digest:
53a3e6f5982a19437789ca14e9218fa86b8c22e122b56634a14ee9d4553f146a - Sigstore transparency entry: 747751827
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type:
File details
Details for the file python_manta-1.4.5.2-cp38-cp38-macosx_10_9_x86_64.whl.
File metadata
- Download URL: python_manta-1.4.5.2-cp38-cp38-macosx_10_9_x86_64.whl
- Upload date:
- Size: 4.7 MB
- Tags: CPython 3.8, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
792db819bcb778fddc0430a4e960b329d2ed6e3121883eac04aeb1839e1b9a3b
|
|
| MD5 |
e817d97845d173f0bb36327d5d17a929
|
|
| BLAKE2b-256 |
4bceba88c16a62362d1f7e0d7754a9de6781cd76dcfda689492274f985bb52c7
|
Provenance
The following attestation bundles were made for python_manta-1.4.5.2-cp38-cp38-macosx_10_9_x86_64.whl:
Publisher:
build-wheels.yml on DeepBlueCoding/python-manta
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
python_manta-1.4.5.2-cp38-cp38-macosx_10_9_x86_64.whl -
Subject digest:
792db819bcb778fddc0430a4e960b329d2ed6e3121883eac04aeb1839e1b9a3b - Sigstore transparency entry: 747751835
- Sigstore integration time:
-
Permalink:
DeepBlueCoding/python-manta@d7c421791ca75cfe17b745d62671926fd40c39da -
Branch / Tag:
refs/tags/v1.4.5.2 - Owner: https://github.com/DeepBlueCoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
build-wheels.yml@d7c421791ca75cfe17b745d62671926fd40c39da -
Trigger Event:
push
-
Statement type: