semvec/pypi-packages huggingface dataset:
thermal-sim 1.0
Create thermal system based on componennts, automatically calculates differetial equations based on connections and simulates using a variety of solvers.
Requires Python: >=3.8

# Thermal Sim
Create thermal system based on componennts, automatically calculates differetial equations based on connections and simulates using a variety of solvers.
Basic components:
- Thermal Resistor   
- Thermal Mass 
- Power Source
- Temperature source (infinite)


## Usage
### Simulate
Create a basic parallell thermal mass and leakage resistor with a PWM controlled powersource.
```python
from thermal_sim import ThermalSystem, Resistor, Capacitor, PowerSource, TemperatureSource

# Power source (PWM controlled)
def pwm(t: float, prev_Q: float, system: ThermalSystem) -> float:
    P = 500
    period = 3600
    duty = 0.5
    return P if (t % period) < duty*period else 0

# Create components
GND = ThermalMass.get_ground(T=0) # A thermal ground is always reqquired
m_floor = ThermalMass(C=1440 * 440, name="Floor") # [J/°C] Concrete floor 
R_floor_gnd = ThermalResistance(R=0.01) # [°C/W]
heat_source = PowerSource(pwm)

# Connection is done by connecting thermal masses to the elements via connect()
m_floor.connect(heat_source)
m_floor.connect(R_floor_gnd, GND)


# Simulate
dt = 60 # [s]
total_time = 1 * 24 * 3600 # [s]
system = ThermalSystem(m_floor)
system.simulate(dt, total_time)
```

### Diagram
Create a diagram of the system
```python
system = ThermalSystem(thermal_masses)
system.draw_diagram()
```


## Examples
### PWM controlled RC circuit
<img src="img/example_PWM_RC.png" height="500px" />

## Bang-Bang controlled RC circuit
<img src="img/example_bangbang_RC.png" height="500px" />

### Multiple masses connected
<img src="img/example_multimass.png" height="500px" />
python-printr 4.9
printr

### python-printr
Python print functions to beautify output

Installation:
`pip install python-printr`

Usage:
```
from printr import logger

logger = logger(filename='test.log')
log, current_time = logger.log, logger.current_time

log('Here') # Prints to terminal and saves message to test.log
```

```
from printr import print, same_line, current_time

test_list = [{'id': 1, 'name': 'Leanne Graham', 'username': 'Bret', 'email': 'Sincere@april.biz', 'address': {'street': 'Kulas Light', 'suite': 'Apt. 556', 'city': 'Gwenborough', 'zipcode': '92998-3874', 'geo': {'lat': '-37.3159', 'lng': '81.1496'}}, 'phone': '1-770-736-8031 x56442', 'website': 'hildegard.org', 'company': {'name': 'Romaguera-Crona', 'catchPhrase': 'Multi-layered client-server neural-net', 'bs': 'harness real-time e-markets'}}, {'id': 2, 'name': 'Ervin Howell', 'username': 'Antonette', 'email': 'Shanna@melissa.tv', 'address': {'street': 'Victor Plains', 'suite': 'Suite 879', 'city': 'Wisokyburgh', 'zipcode': '90566-7771', 'geo': {'lat': '-43.9509', 'lng': '-34.4618'}}, 'phone': '010-692-6593 x09125', 'website': 'anastasia.net', 'company': {'name': 'Deckow-Crist', 'catchPhrase': 'Proactive didactic contingency', 'bs': 'synergize scalable supply-chains'}}]

print(test_list) # Formats dictionary with indents
print() # Print a line break
same_line('test', current_time=True) # Print the current_time with the message test to the same line
sleep(1)
same_line('testing', current_time=True) # Print the current_time with the message testing to the same line
```

Output:
```
[
    {
        "id": 1,
        "name": "Leanne Graham",
        "username": "Bret",
        "email": "Sincere@april.biz",
        "address": {
            "street": "Kulas Light",
            "suite": "Apt. 556",
            "city": "Gwenborough",
            "zipcode": "92998-3874",
            "geo": {
                "lat": "-37.3159",
                "lng": "81.1496"
            }
        },
        "phone": "1-770-736-8031 x56442",
        "website": "hildegard.org",
        "company": {
            "name": "Romaguera-Crona",
            "catchPhrase": "Multi-layered client-server neural-net",
            "bs": "harness real-time e-markets"
        }
    },
    {
        "id": 2,
        "name": "Ervin Howell",
        "username": "Antonette",
        "email": "Shanna@melissa.tv",
        "address": {
            "street": "Victor Plains",
            "suite": "Suite 879",
            "city": "Wisokyburgh",
            "zipcode": "90566-7771",
            "geo": {
                "lat": "-43.9509",
                "lng": "-34.4618"
            }
        },
        "phone": "010-692-6593 x09125",
        "website": "anastasia.net",
        "company": {
            "name": "Deckow-Crist",
            "catchPhrase": "Proactive didactic contingency",
            "bs": "synergize scalable supply-chains"
        }
    }
]

14:25:49:620170: test
# One second later this line was overwritten with testing
14:25:50:620170: testing
```
OfficeToolSetup 5.0
A collection of office tools for PDF and Excel manipulation.
Requires Python: >=3.11

# Office Tools PyQt5

## Description
Office Tools is a Python application built using PyQt5 that automates various office tasks. It includes features for automating GUI interactions with `pyautogui` and making adjustments in Excel files.

## Features
- Automate GUI tasks using `pyautogui`
- Adjust and manipulate Excel files
- User-friendly interface built with PyQt5

## Installation
To install the necessary dependencies, you can use the following command:
```bash
pip install -r requirements.txt