semvec/pypi-packages huggingface dataset:
aws-s3-access-grants-boto3-plugin 1.3.0
AWS S3 Access Grants plugin provides the functionality to enable S3 customers to configure S3 Access Grants as a permission layer on top of the S3 Clients.
Requires Python: >=3.9

## Amazon S3 Access Grants plugin for boto3

Amazon S3 Access Grants Plugin provides the functionality to enable S3 customers to configure S3 ACCESS GRANTS as a permission layer on top of the S3 Clients.

S3 Access Grants is a feature from S3 that allows its customers to configure fine-grained access permissions for the data in their buckets.

---

### Installing the plugin
Run this command to install the plugin.
```
pip install aws-s3-access-grants-boto3-plugin==<Latest_Version>
```
### Using the plugin
1. Create your S3 Client.
2. Create a S3AccessGrantsPlugin object and pass the S3 Client and fallback option during initialization.
3. Register the plugin.

```
import botocore.session
from aws_s3_access_grants_boto3_plugin.s3_access_grants_plugin import S3AccessGrantsPlugin

session = botocore.session.get_session()
s3_client = session.create_client('s3')
plugin = S3AccessGrantsPlugin(s3_client, fallback_enabled=True, customer_session=session)
plugin.register()
```

fallback_enabled takes in a boolean value. This option decides if we will fall back to the credentials set on the S3 Client by the user.
1. If fallback_enabled is set to True then we will fall back every time we are not able to get the credentials from Access Grants, no matter the reason.
2. If fallback_enabled option is set to False we will fall back only in case the operation/API is not supported by Access Grants.

Note that fallback_enabled can be passed while creating the plugin (as showed in example above). If fallback_enabled is not set, we will default to False.

customer_session is an optional parameter of type botocore.session.Session. This session will be used to create the internal sts, s3, and s3control clients. If no session is passed the default botocore session will be used to create these clients.

### Notes
* The plugin supports delete_objects API and copy_object API which S3 Access Grants does not implicitly support. For these APIs we get the common prefix of all the object keys and find their common ancestor. If you  have a grant present on the common ancestor, you will get Access Grants credentials based on that grant.
For copy_object API the source and destination buckets should be same, since a grant cannot give access to multiple buckets.
* The plugin's support for a specific python version is inline with the minimum python version requirements of botocore. This is to ensure that our customers are always getting the latest security and feature updates of botocore.

---
### Contributions
* See CONTRIBUTING.md
---

### License

This project is licensed under the Apache-2.0 License.
advx-shit-offline 1.0.14
一个用于随机输出AdventureX文案的Python包（离线版本）
Requires Python: >=3.6
Keywords: adventurex, shit, random, text, offline

# advx-shit-offline

一个用于随机输出AdventureX文案的Python包（离线版本）

## 🚀 快速开始

### 安装

```bash
pip install advx-shit-offline
```

### 使用

```python
from advx_shit_offline import advx
print(advx.random)
```

## 📦 功能特性

- ✅ **离线使用** - 无需网络连接
- ✅ **智能解析** - 自动提取和过滤文案
- ✅ **随机输出** - 从165条文案中随机选择
- ✅ **缓存机制** - 提高性能
- ✅ **完整文案** - 保证多行文案的完整性
- ✅ **自定义路径** - 支持自定义文件路径

## 📖 详细用法

### 基本用法

```python
from advx_shit_offline import advx

# 随机输出一条文案
print(advx.random)
```

### 获取所有文案

```python
from advx_shit_offline import advx

# 获取所有文案
all_texts = advx.get_all()
print(f"总共有 {len(all_texts)} 条文案")

# 显示前5条文案
for i, text in enumerate(all_texts[:5], 1):
    print(f"{i}. {text}")
```

### 自定义文件路径

```python
from advx_shit_offline import AdvXShitOffline

# 使用自定义文件
custom_advx = AdvXShitOffline("your_file.md")
print(custom_advx.random)
```

### 刷新缓存

```python
from advx_shit_offline import advx

# 刷新缓存
advx.refresh()
print(advx.random)
```

## 🎯 示例输出

```
是谁杀死了找💩比赛
原来是可以自行移动的 AI 马桶
再也不用到处找厕所了，更不会有溢出风险
```

## 📁 项目结构

```
advx-shit-offline/
├── advx_shit_offline/
│   └── __init__.py          # 核心代码
├── setup.py                 # 安装配置
├── README.md               # 说明文档
├── LICENSE                 # 许可证
├── requirements.txt        # 依赖文件
└── MANIFEST.in            # 打包配置
```

## 🔧 开发

### 克隆仓库

```bash
git clone https://github.com/RATING3PRO/advx-shit-offline.git
cd advx-shit-offline
```

### 安装开发依赖

```bash
cd advx_shit_offline
pip install -e .[dev]
```

### 构建包

```bash
python setup.py sdist bdist_wheel
```

## 📦 发布

### 手动发布

```bash
# 构建包
python setup.py sdist bdist_wheel

# 检查包
twine check dist/*

# 上传到PyPI
twine upload dist/*
```

### 自动发布

使用GitHub Actions自动发布：

```bash
# 创建标签
git tag v1.0.0
git push origin v1.0.0
```

## 🤝 贡献

欢迎提交Issue和Pull Request！

1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 打开 Pull Request

## 📄 许可证

本项目采用 MIT 许可证 - 查看 [LICENSE](advx_shit_offline/LICENSE) 文件了解详情

## 🔗 相关链接

- [GitHub仓库](https://github.com/RATING3PRO/advx-shit-offline)
- [PyPI包](https://pypi.org/project/advx-shit-offline/)

## ⭐ 支持

如果这个项目对您有帮助，请给我们一个星标！

---

**注意**: 这个包是AdventureX活动的娱乐项目，仅供学习和娱乐使用。
neohubapi 3.1
Async library to communicate with Heatmiser NeoHub 2 API.
Keywords: neohub, heatmiser

<!--
    SPDX-FileCopyrightText: 2020 Andrius Štikonas <andrius@stikonas.eu>
    SPDX-License-Identifier: CC-BY-4.0
-->

# NeoHubAPI

This is a simple python wrapper around Heatmiser's Neohub API. Up-to-date
documentation for the API can be obtained from the [Heatmiser Developer
Portal](https://dev.heatmiser.com). You will need to sign up for a free account.

The primary purpose of this module is to help with [Home
Assistant](https://www.home-assistant.io) integration but it can also be used as
a standalone library for other projects.

## Connection methods

The API provides two connection methods. The so-called "legacy" method is by way of an unencrypted connection to port 4242 of the Neohub. The newer method uses an encrypted websocket on port 4243, but only works on a second generation hub (look for the sticker on the back).

To use the websocket connection, you need to obtain a token from the Heatmiser Neo app. Go to `Settings > API > +` in the app and create one.

On newer hubs, the legacy connection may be disabled by default. If you want to use it, go to `Settings > API` in the app, and enable it from there.

## Usage example

```python
import asyncio
import neohubapi.neohub as neohub


async def run():
    # Legacy connection
    hub = neohub.NeoHub()
    # Or, for a websocket connection:
    # hub = neohub.Neohub(port=4243, token='xxx-xxxxxxx')
    system = await hub.get_system()
    hub_data = await hub.get_devices_data()
    devices = hub_data['neo_devices']
    for device in devices:
        print(f"Temperature in zone {device.name}: {device.temperature}")
        await device.identify()


asyncio.run(run())
```

## neohub_cli.py

This package includes a CLI for performing common tasks.

```
$ neohub_cli.py help  # Shows all commands
$ neohub_cli.py help set_time  # Displays help for the set_time function
$ neohub_cli.py --hub_ip=myneohub set_time "2021-01-31 15:43:00"  # Specify times like this
$ neohub_cli.py --hub_ip=myneohub set_lock 1234 "Living Room"  # Name NeoStats like this.
$ neohub_cli.py --hub_ip=myneohub --hub_token=XXX get_system  # Get system variables with websocket connection
```