semvec/pypi-packages huggingface dataset:
satisfactory-save 0.9.0
A savegame parsing package for Satisfactory.
Requires Python: >=3.9

# Satisfactory Save Library

A library to parse and edit save games of the game [Satisfactory](https://www.satisfactorygame.com/)
by Coffee Stain Studios.

# Install

```shell
pip install satisfactory-save
```

# Usage

```python
import satisfactory_save as s

# Load a save game
save = s.SaveGame('test.sav')

# Store a save game
save.save('test_edit.sav')

# Get save header, e.g., SessionName
print(save.mSaveHeader.SessionName)
```

A save game could be seen as mainly consisting of objects stored in several levels.
Each object is of a specific class, which is identified by a class name, e.g., a foundation is of the class `/Game/FactoryGame/Buildable/Building/Foundation/Build_Foundation_8x4_01.Build_Foundation_8x4_01_C`.
For further details about the save game structure, please refer to the detailed documentation [here](https://github.com/moritz-h/satisfactory-3d-map/blob/master/docs/SATISFACTORY_SAVE.md).

To access the save objects, the following methods exist:

```python
# List of objects of the main level (including buildings)
save.mPersistentAndRuntimeData.SaveObjects

# List of other level save objects
for i in range(len(save.mPerLevelDataMap)):
    level_name = save.mPerLevelDataMap.Keys[i]
    level_objects = save.mPerLevelDataMap.Values[i].SaveObjects

# Unified list of all objects
save.allSaveObjects()
```

To access the objects by class name, the following methods exist:

```python
save.isObjectClass('/Class/Name')
save.getObjectsByClass('/Class/Name')
```

To access the objects by path name, the following methods exist:

```python
save.isObjectPath('Path_Name')
save.getObjectsByPath('Path_Name')
```

Objects can be added and removed to a save game:

```python
# Add object, a level must be provided, -1 refers to the main level
save.addObject(object, level=-1)

# Remove object from save game
save.removeObject(object)
```

Adding and removing objects is computationally expensive because internal structures are rebuilt every time.
To overcome this limitation, an interface to add or remove lists of objects exists:

```python
save.addObjects(objects, level=-1)
save.removeObjects(objects)
```

For more details about creating objects and adding properties, some examples are available [here](https://github.com/moritz-h/satisfactory-3d-map/tree/master/libsavepy/examples).
Colectica-API 0.0.10
Python interface to the Colectica API
Requires Python: >=3.7

## Overview

This repository provides some utility classes to use the Rest APIs on a Colectica Portal. 
Developed as an in-house resource for CLOSER, we are making it publicly avaliable for others using the Colectica Portal.
If you have any requests or find any bugs, please log it under *Issues*.

If you want further advice or support please contact us at: closer@ucl.ac.uk

Colectica provide examples at https://docs.colectica.com/repository/functionality/rest-api/examples/
and the Colectica Documentation for the API is available at https://discovery.closer.ac.uk/swagger/index.html

## Installation

```
pip install colectica-api
```

## Basic usage

```
from colectica_api import ColecticaObject
C = ColecticaObject("colectica.example.com", <username>, <password>)
C.search_items(...)
```

See `example.ipynb` for a more complete example.

## API relationship graph
Colectica Portal supports DDI LIfecycle, the graph below, represents the relationship between the various DDI Elements to enable retrieval of related elements, e.g. variables linked to a specific question

```mermaid
graph LR
  QGr[Question Group] --> Concept
  QGr[Question Group] --> Question
  QGr[Question Group] --> QG[Question Grid]
  VG[Variable Group] --> Variable
  VG[Variable Group] --> Concept
  UnG[Universe Group] --> Universe
  Variable --> Question
  Group --> Organization
  Group --> Universe
  Group --> Study
  Study --> Organization
  Study --> Universe
  Study --> DaC[Data Collection]
  Study --> DaS[Data Set]
  DaC[Data Collection] --> Organization
  DaC[Data Collection] ==> Instrument
  UnG[Universe Group] --> Universe
  Instrument --> Sequence
  Sequence --> Statement
  Sequence --> QA[Question Activity]
  QA[Question Activity] --> Question
  QG[Question Grid] --> CoS[Code Set]
  QG[Question Grid] --> II[Interviewer Instruction]
  Question --> CoS[Code Set]
  Question --> II[Interviewer Instruction]
  CoS --> Category
  CCS[Control Construct Set] --> Sequence
  Conditional --> Sequence
  CCS[Control Construct Set] --> Conditional
  CCS[Control Construct Set] --> Statement
  CCS[Control Construct Set] --> Loop
  CCS[Control Construct Set] --> QA[Question Activity]
  DaS[Data Set] --> VaS[Variable Statistic]
  DaS[Data Set] --> Variable
  VaS[Variable Statistic] --> Variable
  Variable --> VariableRepresentation
  VariableRepresentation ==> CoS[Code Set]
  VariableRepresentation ==> Numeric
  VariableRepresentation ==> Text
  VariableRepresentation ==> DateTime
  Loop --> Sequence
```
hive-chat 0.1.4
Chatbot interface for Hive

[![version badge]](https://pypi.org/project/hive-chat/)

[version badge]: https://img.shields.io/pypi/v/hive-chat?color=limegreen

# hive-chat

Chatbot interface for Hive

## Installation

### With PIP

```sh
pip install hive-chat
```

### From source

```sh
git clone https://github.com/gbenson/hive.git
cd hive/libs/chat
python3 -m venv .venv
. .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
pip install -e .
flake8 && pytest
```
runway-sdk 0.1.2
Runway SDK - Open Source LLM Observability and Monitoring
Requires Python: >=3.12

# Runway SDK

Open Source LLM Observability Platform

## Installation 
```bash
pip install runway-sdk
```

## Usage
```python 
from runway import RunwayApp
from runway.sdks import RunwayOpenAI
from os import getenv

app = RunwayApp(api_key="<NotImportantForNow>", title="My App", log_to="console")
client = RunwayOpenAI()

@app.serve(route="/")
def get_4o():
    response = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": "Hello, how are you?"}]
    )
    return response.choices[0].message.content

app.run()
```