# pyre
A package for external creation of code templates for the DiamondFire Minecraft server (mcDiamondFire.com).
PyPi Link: https://pypi.org/project/dfpyre/
## Installation
Run the following command in a terminal:
```
pip install dfpyre
```
### CodeClient Installation
This module works best with [CodeClient](https://modrinth.com/mod/codeclient) installed. Once you've installed it, enable `CodeClient API` in the General config tab.
## Features
- All code block types
- All code item types
- Direct sending to DF via recode or codeclient
- Automatic type conversion (int to num, str to text)
- Warnings for unrecognized actions and tags
- Full tag support
## Documentation
## Basics
- [Setting up a program](#setup)
- [Events and Actions](#events-and-actions)
- [Building](#building)
## Var Items
- [Text](#text)
- [Number](#number)
- [Variable](#variable)
- [Location](#location)
- [Item](#item)
- [Sound](#sound)
- [Particle](#particle)
- [Potion](#potion)
- [Game Value](#game-value)
- [Vector](#vector)
- [Parameter](#parameter)
## Conditionals and Loops
- [Conditionals and Brackets](#conditionals-and-brackets)
- [Loops](#loops)
## Functions and Procedures
- [Creating Functions and Processes](#creating-functions-and-processes)
- [Calling Functions and Processes](#calling-functions-and-processes)
## Extras
- [Editing Tags](#editing-tags)
- [Importing from Code](#importing-from-code)
- [Script Generation](#script-generation)
- [Function List](#function-list)
___
## Setup
To start creating in pyre, use the `player_event`, `entity_event`, `function`, or `process` functions to start a template.
```py
from dfpyre import *
template = player_event('Join', [
])
```
You can then insert additional codeblocks inside of that first function call.
Here's a complete program that prints a message to every player when a player joins:
```py
from dfpyre import *
player_event('Join', [
player_action('SendMessage', '%default has joined!', target=Target.ALL_PLAYERS)
]).build_and_send('codeclient')
```
## Events and Actions
You can find a list of events and actions [here](#function-list)
The following program sends a message to all players and gives a player 10 apples upon joining:
```py
from dfpyre import *
player_event('Join', [
player_action('SendMessage', '%default has joined!', target=Target.ALL_PLAYERS)
player_action('GiveItems', Item('apple', 10))
]).build_and_send('codeclient')
```
## Building
You have 2 different options for building your code line.
You can either:
1. Save the compressed template code to a variable and send it to minecraft later
- Use the `build` method on a template object
2. Build and send directly to your minecraft client (recommended)
- Use the `build_and_send` method on a template object
## Variable Items
### Text
Represents a DiamondFire text item:
```py
Text('hello %default.')
```
If a regular string is passed to a method as a chest parameter, it will automatically be converted to a text object:
```py
# These do the same thing:
player_action('SendMessage', Text('%default joined.'))
player_action('SendMessage', '%default joined.')
```
### Number
Alias: `Num`
Represents a DiamondFire number item:
```py
Number(5)
Number(3.14)
```
If a regular integer or float is passed to a method as a chest parameter, it will automatically be converted to a num object:
```py
# These do the same thing:
set_variable('=', Variable('number'), Number(10))
set_variable('=', Variable('number'), 10)
```
### Variable
Alias: `Var`
Represents a DiamondFire variable item:
```py
Variable('num')
Variable('text1')
```
You can set variable values by using the `set_variable` method:
```py
set_variable('=', Variable('num'), 12) # sets 'num' to 12
set_variable('x', Variable('doubled'), Variable('num'), 2) # sets 'doubled' to 24
```
You can set the scope of the variable using the `scope` argument:
```py
set_variable('=', Variable('num1', scope='unsaved'), 12) # `unsaved` is the same as a game variable.
set_variable('=', Variable('num2', scope='saved'), 12)
set_variable('=', Variable('num3', scope='local'), 12)
```
#### Shorthand Variables
You can also use the variable shorthand format to express variables more tersely:
```py
# These do the same thing:
set_variable('=', Variable('lineVar', scope='line'), 5)
set_variable('=', '$i lineVar', 5)
```
Shorthand vars should be formatted like this: `$[scope id] [var name]`
Here's the list of scope IDs:
- `g` = Game (unsaved)
- `s` = Saved
- `l` = Local
- `i` = Line
### Location
Alias: `Loc`
Represents a DiamondFire location item:
```py
Location(x=25.5, y=50, z=25.5, pitch=0, yaw=-90)
```
Example:
```py
# Teleport player on join
from dfpyre import *
player_event('Join', [
player_action('Teleport', Location(10, 50, 10))
])
```
### Item
Represents a minecraft item:
```py
Item('stick', count=5)
Item('stone', 64)
```
To add extra data to an item, you can use any methods from the [mcitemlib](https://github.com/Amp63/mcitemlib) library
### Sound
Alias: `Snd`
Represents a DiamondFire sound item:
```py
Sound('Wood Break', pitch=1.5, vol=2.0)
```
Example:
```py
# Plays 'Grass Place' sound on join
from dfpyre import *
player_event('Join', [
player_action('PlaySound', Sound('Grass Place'))
])
```
### Particle
Represents a DiamondFire particle item:
```py
Particle({'particle':'Cloud','cluster':{'amount':1,'horizontal':0.0,'vertical':0.0},'data':{'x':1.0,'y':0.0,'z':0.0,'motionVariation':100}})
```
Example:
```py
# Plays a white cloud particle effect at 5, 50, 5
from dfpyre import *
part = Particle({'particle':'Cloud','cluster':{'amount':1,'horizontal':0.0,'vertical':0.0},'data':{'x':1.0,'y':0.0,'z':0.0,'motionVariation':100}})
player_event('Join', [
player_action('Particle', part, Location(5, 50, 5))
])
```
Currently, the particle object does not support colors.
### Potion
Alias: `Pot`
Represents a DiamondFire potion item:
```py
# Gives speed 1 for 1 minute
Potion('Speed', dur=1200, amp=0)
```
Example:
```py
# Gives the player infinite saturation 10
from dfpyre import *
player_event('Join', [
player_action('GivePotion', Potion('Saturation', amp=10))
])
```
### Game Value
Represents a DiamondFire game value item:
```py
GameValue('Player Count')
GameValue('Location' target='Selection')
```
Example:
```py
# Function that prints player count and CPU usage
from dfpyre import *
function('printData', [
player_action('SendMessage', GameValue('Player Count'), GameValue('CPU Usage'))
])
```
### Vector
Alias: `Vec`
Represents a DiamondFire vector item:
```py
Vector(x=1.1, y=0.0, z=0.5)
```
Example:
```py
# Sets the player's x velocity to 1.0 on join
from dfpyre import *
player_event('Join', [
player_action('SetVelocity', Vector(x=1.0, y=0.0, z=0.0))
])
```
### Parameter
Represents a DiamondFire parameter item:
```py
Parameter('text', ParameterType.STRING)
```
Example:
```py
# Builds a function that says "Hello, [name]" where `name` is the inputted parameter.
from dfpyre import *
name_parameter = parameter('name', ParameterType.TEXT)
function('SayHi', name_parameter codeblocks=[
player_action('SendMessage', 'Hello, ', Variable('name', 'line'))
])
```
### Conditionals and Brackets
A list of conditionals and loops can be found [here](#function-list).
To create code inside of brackets, use the `codeblocks` argument. Here's an example:
```py
# Prints 'clicked' when a player right clicks with a stick in their hand
from dfpyre import *
player_event('RightClick', [
if_player('IsHolding', Item('stick'), codeblocks=[
player_action('SendMessage', 'clicked')
])
])
```
To create an `else` statement, use the `else_` method:
```py
# Says the player is 'on the ground' when grounded and 'in the air' otherwise.
from dfpyre import *
function('grounded', codeblocks=[
if_player('IsGrounded', codeblocks=[
player_action('ActionBar', 'on the ground')
]),
else_([
player_action('ActionBar', 'in the air')
])
])
```
Note that `player_event`, `entity_event`, and `else_` do not require `codeblocks=`, but all other bracket blocks do.
### Loops
As for loops, the syntax is the same and will automatically change to "repeat-type" brackets:
```py
# Prints numbers 1-5
from dfpyre import *
player_event('Join', [
repeat('Multiple', Variable('i'), 5, codeblocks=[
player_action('SendMessage', Variable('i'))
])
])
```
### Creating Functions and Processes
To create a function or process, just start the template with `function` or `process`:
```py
# Function that gives a player 64 golden apples
from dfpyre import *
function('giveApples', codeblocks=[
player_action('GiveItems', Item('golden_apple', 64))
])
```
### Calling Functions and Processes
Calling Functions and processes is also simple:
```py
from dfpyre import *
player_event('Join', [
call_function('giveApples')
])
```
### Editing Tags
You can modify an action's tags by passing the `tags` argument to a template method:
```py
from dfpyre import *
player_event('Join', [
player_action('SendMessage', 'hello', tags={'Alignment Mode': 'Centered'})
])
```
If you choose not to modify a specific tag, its default value will be used.
Order does not matter when adding multiple tag entries.
### Importing from Code
You can import existing templates from their built code using the `from_code` method:
```py
from dfpyre import *
template_code = 'H4sIAGVyIGYC/3WOMQ7CMAxFz4LnDsw5AhITI6qQSaw2IrGrxkJCVe5eh3boAJP9n/Kfs8AziX8VcPcFYgC3Zej26YDexGoZvUZhAxeJ3PI8WMtKSrnV+1q7P4op4Yfmx244qG7E4Uql4EA/jNv2Jc3qJU/2KqBiY4yZjI6UkpzAjkNJouDO1X7S1xUDaGUl2QAAAA=='
t = DFTemplate.from_code(template_code)
# Do stuff with the template here
```
### Script Generation
You can also generate an equivalent Python script for a template from a template object:
```py
from dfpyre import *
template_code = 'H4sIAGVyIGYC/3WOMQ7CMAxFz4LnDsw5AhITI6qQSaw2IrGrxkJCVe5eh3boAJP9n/Kfs8AziX8VcPcFYgC3Zej26YDexGoZvUZhAxeJ3PI8WMtKSrnV+1q7P4op4Yfmx244qG7E4Uql4EA/jNv2Jc3qJU/2KqBiY4yZjI6UkpzAjkNJouDO1X7S1xUDaGUl2QAAAA=='
t = DFTemplate.from_code(template_code)
t.generate_script('my_template.py') # generated python script will be written to my_template.py
```
This feature is useful for getting a text representation of existing templates.
### Function List
- **Events / Function / Process**
- player_event
- entity_event
- function
- process
- call_function
- start_process
- **Actions**
- player_action
- game_action
- entity_action
- **Conditionals / Loops**
- if_player
- if_variable
- if_game
- if_entity
- else_
- repeat
- **Other**
- control
- select_object
- set_variable
Raw data
{
"_id": null,
"home_page": "https://github.com/Amp63/pyre",
"name": "dfpyre",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": null,
"keywords": "diamondfire, minecraft, template, item",
"author": "Amp",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/c3/65/ce5d40cc69abeca7110bf16b01ee7229b9dc63f7145a3afc3d90b0884b75/dfpyre-0.8.1.tar.gz",
"platform": null,
"description": "# pyre\n\nA package for external creation of code templates for the DiamondFire Minecraft server (mcDiamondFire.com).\n\nPyPi Link: https://pypi.org/project/dfpyre/\n\n## Installation\n\nRun the following command in a terminal:\n```\npip install dfpyre\n```\n\n\n### CodeClient Installation\n\nThis module works best with [CodeClient](https://modrinth.com/mod/codeclient) installed. Once you've installed it, enable `CodeClient API` in the General config tab.\n\n## Features\n- All code block types\n- All code item types\n- Direct sending to DF via recode or codeclient\n- Automatic type conversion (int to num, str to text)\n- Warnings for unrecognized actions and tags\n- Full tag support\n\n## Documentation\n## Basics\n\n- [Setting up a program](#setup)\n- [Events and Actions](#events-and-actions)\n- [Building](#building)\n\n## Var Items\n\n- [Text](#text)\n- [Number](#number)\n- [Variable](#variable)\n- [Location](#location)\n- [Item](#item)\n- [Sound](#sound)\n- [Particle](#particle)\n- [Potion](#potion)\n- [Game Value](#game-value)\n- [Vector](#vector)\n- [Parameter](#parameter)\n\n## Conditionals and Loops\n\n- [Conditionals and Brackets](#conditionals-and-brackets)\n- [Loops](#loops)\n\n## Functions and Procedures\n\n- [Creating Functions and Processes](#creating-functions-and-processes)\n- [Calling Functions and Processes](#calling-functions-and-processes)\n\n## Extras\n\n- [Editing Tags](#editing-tags)\n- [Importing from Code](#importing-from-code)\n- [Script Generation](#script-generation)\n- [Function List](#function-list)\n\n___\n\n## Setup\n\nTo start creating in pyre, use the `player_event`, `entity_event`, `function`, or `process` functions to start a template.\n\n```py\nfrom dfpyre import *\n\ntemplate = player_event('Join', [\n\n])\n```\n\nYou can then insert additional codeblocks inside of that first function call.\n\nHere's a complete program that prints a message to every player when a player joins:\n\n```py\nfrom dfpyre import *\n\nplayer_event('Join', [\n player_action('SendMessage', '%default has joined!', target=Target.ALL_PLAYERS)\n]).build_and_send('codeclient')\n```\n\n## Events and Actions\n\nYou can find a list of events and actions [here](#function-list)\n\nThe following program sends a message to all players and gives a player 10 apples upon joining:\n\n```py\nfrom dfpyre import *\n\nplayer_event('Join', [\n player_action('SendMessage', '%default has joined!', target=Target.ALL_PLAYERS)\n player_action('GiveItems', Item('apple', 10))\n]).build_and_send('codeclient')\n```\n\n## Building\n\nYou have 2 different options for building your code line.\nYou can either:\n\n1. Save the compressed template code to a variable and send it to minecraft later\n - Use the `build` method on a template object\n2. Build and send directly to your minecraft client (recommended)\n - Use the `build_and_send` method on a template object\n\n## Variable Items\n\n### Text\n\nRepresents a DiamondFire text item:\n\n```py\nText('hello %default.')\n```\n\nIf a regular string is passed to a method as a chest parameter, it will automatically be converted to a text object:\n\n```py\n# These do the same thing:\nplayer_action('SendMessage', Text('%default joined.'))\nplayer_action('SendMessage', '%default joined.')\n```\n\n### Number\n\nAlias: `Num`\n\nRepresents a DiamondFire number item:\n\n```py\nNumber(5)\nNumber(3.14)\n```\n\nIf a regular integer or float is passed to a method as a chest parameter, it will automatically be converted to a num object:\n\n```py\n# These do the same thing:\nset_variable('=', Variable('number'), Number(10))\nset_variable('=', Variable('number'), 10)\n```\n\n### Variable\n\nAlias: `Var`\n\nRepresents a DiamondFire variable item:\n\n```py\nVariable('num')\nVariable('text1')\n```\n\nYou can set variable values by using the `set_variable` method:\n\n```py\nset_variable('=', Variable('num'), 12) # sets 'num' to 12\nset_variable('x', Variable('doubled'), Variable('num'), 2) # sets 'doubled' to 24\n```\n\nYou can set the scope of the variable using the `scope` argument:\n\n```py\nset_variable('=', Variable('num1', scope='unsaved'), 12) # `unsaved` is the same as a game variable.\nset_variable('=', Variable('num2', scope='saved'), 12)\nset_variable('=', Variable('num3', scope='local'), 12)\n```\n\n#### Shorthand Variables\n\nYou can also use the variable shorthand format to express variables more tersely:\n```py\n# These do the same thing:\nset_variable('=', Variable('lineVar', scope='line'), 5)\nset_variable('=', '$i lineVar', 5)\n```\n\nShorthand vars should be formatted like this: `$[scope id] [var name]`\n\nHere's the list of scope IDs:\n- `g` = Game (unsaved)\n- `s` = Saved\n- `l` = Local\n- `i` = Line\n\n### Location\n\nAlias: `Loc`\n\nRepresents a DiamondFire location item:\n\n```py\nLocation(x=25.5, y=50, z=25.5, pitch=0, yaw=-90)\n```\n\nExample:\n\n```py\n# Teleport player on join\nfrom dfpyre import *\n\nplayer_event('Join', [\n player_action('Teleport', Location(10, 50, 10))\n])\n```\n\n### Item\n\nRepresents a minecraft item:\n\n```py\nItem('stick', count=5)\nItem('stone', 64)\n```\n\nTo add extra data to an item, you can use any methods from the [mcitemlib](https://github.com/Amp63/mcitemlib) library\n\n### Sound\n\nAlias: `Snd`\n\nRepresents a DiamondFire sound item:\n\n```py\nSound('Wood Break', pitch=1.5, vol=2.0)\n```\n\nExample:\n\n```py\n# Plays 'Grass Place' sound on join\nfrom dfpyre import *\n\nplayer_event('Join', [\n player_action('PlaySound', Sound('Grass Place'))\n])\n```\n\n### Particle\n\nRepresents a DiamondFire particle item:\n\n```py\nParticle({'particle':'Cloud','cluster':{'amount':1,'horizontal':0.0,'vertical':0.0},'data':{'x':1.0,'y':0.0,'z':0.0,'motionVariation':100}})\n```\n\nExample:\n\n```py\n# Plays a white cloud particle effect at 5, 50, 5\nfrom dfpyre import *\n\npart = Particle({'particle':'Cloud','cluster':{'amount':1,'horizontal':0.0,'vertical':0.0},'data':{'x':1.0,'y':0.0,'z':0.0,'motionVariation':100}})\nplayer_event('Join', [\n player_action('Particle', part, Location(5, 50, 5))\n])\n```\n\nCurrently, the particle object does not support colors.\n\n### Potion\n\nAlias: `Pot`\n\nRepresents a DiamondFire potion item:\n\n```py\n# Gives speed 1 for 1 minute\nPotion('Speed', dur=1200, amp=0)\n```\n\nExample:\n\n```py\n# Gives the player infinite saturation 10\nfrom dfpyre import *\n\nplayer_event('Join', [\n player_action('GivePotion', Potion('Saturation', amp=10))\n])\n```\n\n### Game Value\n\nRepresents a DiamondFire game value item:\n\n```py\nGameValue('Player Count')\nGameValue('Location' target='Selection')\n```\n\nExample:\n\n```py\n# Function that prints player count and CPU usage\nfrom dfpyre import *\n\nfunction('printData', [\n player_action('SendMessage', GameValue('Player Count'), GameValue('CPU Usage'))\n])\n```\n\n### Vector\n\nAlias: `Vec`\n\nRepresents a DiamondFire vector item:\n\n```py\nVector(x=1.1, y=0.0, z=0.5)\n```\n\nExample:\n\n```py\n# Sets the player's x velocity to 1.0 on join\nfrom dfpyre import *\n\nplayer_event('Join', [\n player_action('SetVelocity', Vector(x=1.0, y=0.0, z=0.0))\n])\n```\n\n### Parameter\n\nRepresents a DiamondFire parameter item:\n\n```py\nParameter('text', ParameterType.STRING)\n```\n\nExample:\n\n```py\n# Builds a function that says \"Hello, [name]\" where `name` is the inputted parameter.\nfrom dfpyre import *\n\nname_parameter = parameter('name', ParameterType.TEXT)\nfunction('SayHi', name_parameter codeblocks=[\n player_action('SendMessage', 'Hello, ', Variable('name', 'line'))\n])\n```\n\n### Conditionals and Brackets\n\nA list of conditionals and loops can be found [here](#function-list).\n\nTo create code inside of brackets, use the `codeblocks` argument. Here's an example:\n\n```py\n# Prints 'clicked' when a player right clicks with a stick in their hand\nfrom dfpyre import *\n\nplayer_event('RightClick', [\n if_player('IsHolding', Item('stick'), codeblocks=[\n player_action('SendMessage', 'clicked')\n ])\n])\n```\n\nTo create an `else` statement, use the `else_` method:\n\n```py\n# Says the player is 'on the ground' when grounded and 'in the air' otherwise.\nfrom dfpyre import *\n\nfunction('grounded', codeblocks=[\n if_player('IsGrounded', codeblocks=[\n player_action('ActionBar', 'on the ground')\n ]),\n else_([\n player_action('ActionBar', 'in the air')\n ])\n])\n```\n\nNote that `player_event`, `entity_event`, and `else_` do not require `codeblocks=`, but all other bracket blocks do.\n\n### Loops\n\nAs for loops, the syntax is the same and will automatically change to \"repeat-type\" brackets:\n\n```py\n# Prints numbers 1-5\nfrom dfpyre import *\n\nplayer_event('Join', [\n repeat('Multiple', Variable('i'), 5, codeblocks=[\n player_action('SendMessage', Variable('i'))\n ])\n])\n```\n\n### Creating Functions and Processes\n\nTo create a function or process, just start the template with `function` or `process`:\n\n```py\n# Function that gives a player 64 golden apples\nfrom dfpyre import *\n\nfunction('giveApples', codeblocks=[\n player_action('GiveItems', Item('golden_apple', 64))\n])\n```\n\n### Calling Functions and Processes\n\nCalling Functions and processes is also simple:\n\n```py\nfrom dfpyre import *\n\nplayer_event('Join', [\n call_function('giveApples')\n])\n```\n\n### Editing Tags\nYou can modify an action's tags by passing the `tags` argument to a template method:\n\n```py\nfrom dfpyre import *\n\nplayer_event('Join', [\n player_action('SendMessage', 'hello', tags={'Alignment Mode': 'Centered'})\n])\n```\n\nIf you choose not to modify a specific tag, its default value will be used.\nOrder does not matter when adding multiple tag entries.\n \n### Importing from Code\n\nYou can import existing templates from their built code using the `from_code` method:\n\n```py\nfrom dfpyre import *\n\ntemplate_code = 'H4sIAGVyIGYC/3WOMQ7CMAxFz4LnDsw5AhITI6qQSaw2IrGrxkJCVe5eh3boAJP9n/Kfs8AziX8VcPcFYgC3Zej26YDexGoZvUZhAxeJ3PI8WMtKSrnV+1q7P4op4Yfmx244qG7E4Uql4EA/jNv2Jc3qJU/2KqBiY4yZjI6UkpzAjkNJouDO1X7S1xUDaGUl2QAAAA=='\nt = DFTemplate.from_code(template_code)\n# Do stuff with the template here\n```\n\n\n### Script Generation\n\nYou can also generate an equivalent Python script for a template from a template object:\n\n```py\nfrom dfpyre import *\n\ntemplate_code = 'H4sIAGVyIGYC/3WOMQ7CMAxFz4LnDsw5AhITI6qQSaw2IrGrxkJCVe5eh3boAJP9n/Kfs8AziX8VcPcFYgC3Zej26YDexGoZvUZhAxeJ3PI8WMtKSrnV+1q7P4op4Yfmx244qG7E4Uql4EA/jNv2Jc3qJU/2KqBiY4yZjI6UkpzAjkNJouDO1X7S1xUDaGUl2QAAAA=='\nt = DFTemplate.from_code(template_code)\nt.generate_script('my_template.py') # generated python script will be written to my_template.py\n```\n\nThis feature is useful for getting a text representation of existing templates.\n\n### Function List\n\n- **Events / Function / Process**\n - player_event\n - entity_event\n - function\n - process\n - call_function\n - start_process\n\n- **Actions**\n - player_action\n - game_action\n - entity_action\n\n- **Conditionals / Loops**\n - if_player\n - if_variable\n - if_game\n - if_entity\n - else_\n - repeat\n\n- **Other**\n - control\n - select_object\n - set_variable",
"bugtrack_url": null,
"license": "MIT",
"summary": "A package for creating and modifying code templates for the DiamondFire Minecraft server.",
"version": "0.8.1",
"project_urls": {
"Homepage": "https://github.com/Amp63/pyre",
"Repository": "https://github.com/Amp63/pyre"
},
"split_keywords": [
"diamondfire",
" minecraft",
" template",
" item"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "01418834ae2b9c457d0c1457b2c23cb52e9dc02bc651c2ecd72a0fbf187eccd7",
"md5": "42cf6de3e1f38768a29116b648db329f",
"sha256": "786db0e3bf385a4e81c18289c5d82fea88e2d9baa6b2cd7c1359180a1952f3cd"
},
"downloads": -1,
"filename": "dfpyre-0.8.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "42cf6de3e1f38768a29116b648db329f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 197867,
"upload_time": "2025-01-15T05:43:49",
"upload_time_iso_8601": "2025-01-15T05:43:49.063464Z",
"url": "https://files.pythonhosted.org/packages/01/41/8834ae2b9c457d0c1457b2c23cb52e9dc02bc651c2ecd72a0fbf187eccd7/dfpyre-0.8.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c365ce5d40cc69abeca7110bf16b01ee7229b9dc63f7145a3afc3d90b0884b75",
"md5": "f564f9458f0f7102d44a0efe1bd3cd71",
"sha256": "0fff05ede444e48acb86a6e902232050533fed102be6c92e66f3d17ddf1ccaf6"
},
"downloads": -1,
"filename": "dfpyre-0.8.1.tar.gz",
"has_sig": false,
"md5_digest": "f564f9458f0f7102d44a0efe1bd3cd71",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 194190,
"upload_time": "2025-01-15T05:43:51",
"upload_time_iso_8601": "2025-01-15T05:43:51.515720Z",
"url": "https://files.pythonhosted.org/packages/c3/65/ce5d40cc69abeca7110bf16b01ee7229b9dc63f7145a3afc3d90b0884b75/dfpyre-0.8.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-15 05:43:51",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Amp63",
"github_project": "pyre",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "mcitemlib",
"specs": [
[
"==",
"0.3.4"
]
]
},
{
"name": "nbtlib",
"specs": [
[
"==",
"2.0.4"
]
]
},
{
"name": "numpy",
"specs": [
[
"==",
"2.2.1"
]
]
},
{
"name": "websocket-client",
"specs": [
[
"==",
"1.8.0"
]
]
}
],
"lcname": "dfpyre"
}