semvec/pypi-packages huggingface dataset:
google-map-scraper 1.0.1
A fast business scraper for Google Maps using Selenium
Requires Python: >=3.6

# 🗺️ Google Maps Business Scraper Appication

This project is a **Web application** that allows users to scrape business information from Google Maps based on a search keyword. The extracted data includes the business name, website, Google Maps link, phone number, and ratings. The results are downloadable in both **JSON** and **CSV** formats.

---

## 🚀 Features

- 🔍 Input any business search keyword (e.g., `restaurant in India`)
- 🧠 Automatically scrapes:
  - Business Name
  - Website
  - Google Maps Link
  - Phone Number
  - Rating & Review Count
- 📁 Downloadable output in both:
  - `results.json`
  - `results.csv`
- ✅ Clean and simple
- 🕵️ Built-in support for scrolling Google Maps listings

---

## Prerequisites

Before running this project, ensure you have the following installed:
- Python (3.6 or higher recommended)
- pip (usually comes with Python)

## 🛠 Installation

1. **Clone this repository**

   ```bash
   git clone https://github.com/mukhtar-ul-islam88/google_map_scraper.git
   
   ```

2. **create the environment**
   ```bash
        python -m venv venv
        source venv/bin/activate  # On Windows: venv\Scripts\activate      
    ```
3. **Navigate to the project directory:**
   ```bash
   cd google_map_scraper
   ```
4. **Install the dependencies:**
   ```bash
   pip install -r requirements.txt
   ```



## ✨ Usage Instructions
Type your search keyword (e.g., restaurant India) in the input box.




```bash
from google_map_scraper.scraper import GoogleMapsScraper

scraper = GoogleMapsScraper()
results = scraper.scrape("CA in Hyderabad India")

```

## 📁 Output
-  results.json — full list of businesses

-  results.csv — same in spreadsheet form


## 🧪 Testing
```bash
python tests/test_scraper.py

```

# ❗ Notes
- The scraper uses Selenium with ChromeDriver, make sure Google Chrome is installed.

- Google Maps may temporarily block access if too many requests are made in a short time.

- The scraping process scrolls through Google Maps listings and collects visible information only.
orange-mcp-email-client 0.1.0
Add your description here
Requires Python: >=3.12

# Mail Client MCP

## Overview

Mail Client MCP is a Python-based email client that allows users to manage email configurations, send emails, and read the latest unread emails. It provide MCP for Claude Desktop

## Features

- List all email configurations
- Add new email configurations
- Update existing email configurations
- Delete email configurations
- Send emails using specified configurations
- Read the latest 5 unread emails

## Installation

1. Clone the repository:
    ```sh
    git clone https://github.com/gamalan/mcp-email-client.git
    cd mcp-email-client
    ```
2. Install uv
    Linux/MacOS
    ```sh
    curl -LsSf https://astral.sh/uv/install.sh | sh
    ```
    Windows
    ```powershell
    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    ```

3. Install dependencies:
    ```sh
    uv sync
    ```

## Configuration

Configuration example using Claude Desktop
```json
{
  "mcpServers": {
    "mcp_email_client": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "D:\\Project\\replace-with-repo-folder-location", 
        "mcp_email_client"
      ]
    }
  }
}
```
orange-shopify-py-mcp 0.1.0
A MCP server project
Requires Python: >=3.11.6

# Shopify Python MCP Server

Shopify APIと連携するMCPサーバーです。このサーバーを使用することで、Claude DesktopからShopifyの商品情報を取得・操作することができます。

<a href="https://glama.ai/mcp/servers/zfff0mhppb">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/zfff0mhppb/badge" alt="Shopify Python Server MCP server" />
</a>

## 機能

### ツール

このサーバーは以下のツールを提供します：

1. **list_products**: 商品一覧を取得する
   - `limit`: 取得する商品数（最大250、デフォルト値は50）

2. **get_product**: 商品の詳細情報を取得する
   - `product_id`: 商品ID（必須）

3. **create_product**: 新しい商品を作成する
   - `title`: 商品名（必須）
   - `body_html`: 商品の説明（HTML形式）
   - `vendor`: ベンダー名
   - `product_type`: 商品タイプ
   - `tags`: タグ（カンマ区切り）
   - `status`: ステータス（active/draft/archived）
   - `variants`: バリエーション
   - `options`: オプション
   - `images`: 画像

4. **update_product**: 商品を更新する
   - `product_id`: 商品ID（必須）
   - `title`: 商品名
   - `body_html`: 商品の説明（HTML形式）
   - `vendor`: ベンダー名
   - `product_type`: 商品タイプ
   - `tags`: タグ（カンマ区切り）
   - `status`: ステータス（active/draft/archived）
   - `variants`: バリエーション
   - `options`: オプション
   - `images`: 画像

5. **delete_product**: 商品を削除する
   - `product_id`: 商品ID（必須）

## 設定

### 必要な環境変数

このサーバーを使用するには、以下の環境変数を設定する必要があります：

- `SHOPIFY_SHOP_URL`: ShopifyストアのURL（例: mystore.myshopify.com）
- `SHOPIFY_API_KEY`: Shopify Admin APIのAPIキー
- `SHOPIFY_API_PASSWORD`: Shopify Admin APIのAPIパスワード（Secret）
- `SHOPIFY_API_VERSION`: Shopify APIのバージョン（デフォルト: 2023-10）

### Claude Desktopでの設定

Claude Desktopで使用する場合は、以下の設定をclaude_desktop_config.jsonに追加します：

#### macOS
設定ファイルの場所: `~/Library/Application Support/Claude/claude_desktop_config.json`

```json
"mcpServers": {
  "shopify-py-mcp": {
    "command": "uv",
    "args": [
      "--directory",
      "/your_path/shopify-py-mcp",
      "run",
      "shopify-py-mcp"
    ],
    "env": {
      "SHOPIFY_SHOP_URL": "your-store.myshopify.com",
      "SHOPIFY_API_KEY": "your-api-key",
      "SHOPIFY_API_PASSWORD": "your-api-password",
      "SHOPIFY_API_VERSION": "2023-10"
    }
  }
}
```

## 使用方法

Claude Desktopでこのサーバーを使用するには、以下のようにツールを呼び出します：

### 商品一覧の取得

```
商品一覧を取得してください。
```

### 商品の詳細情報の取得

```
商品ID 1234567890の詳細情報を取得してください。
```

### 新しい商品の作成

```
以下の情報で新しい商品を作成してください：
- 商品名: サンプル商品
- 説明: これはサンプル商品です。
- 価格: 1000円
```

### 商品の更新

```
商品ID 1234567890を以下の情報で更新してください：
- 商品名: 更新後の商品名
- 価格: 2000円
```

### 商品の削除

```
商品ID 1234567890を削除してください。
```

## 開発

### 依存関係のインストール

```bash
cd shopify-py-mcp
uv sync --dev --all-extras
```

### デバッグ

MCP Inspectorを使用してデバッグすることができます：

```bash
npx @modelcontextprotocol/inspector uv --directory /your_path/shopify-py-mcp run shopify-py-mcp
```

### ビルドと公開

パッケージを配布用に準備するには：

1. 依存関係を同期してロックファイルを更新：
```bash
uv sync
```

2. パッケージのビルド：
```bash
uv build
```

3. PyPIに公開：
```bash
uv publish
```

注意: PyPIの認証情報を環境変数またはコマンドフラグで設定する必要があります：
- トークン: `--token` または `UV_PUBLISH_TOKEN`
- またはユーザー名/パスワード: `--username`/`UV_PUBLISH_USERNAME` と `--password`/`UV_PUBLISH_PASSWORD`
obragtools 0.1.3
优化了issue 
Requires Python: >=3.10

# obragtools
一个将第三方包导入到基层笔记
实践级别

#### 本工具的主要目标是让大模型可以丝滑的使用和理解第三方的工具包
这是一个偏项目级别的工具包了
我们大致的思路是: 大模型可以达到理解并使用第三方包的程度
而我们开发的私有包则通过标准化和规范化,进而使大模型理解

在大模型可以完美使用一个三方包时, 可以开始拓展到多个包的配合使用
框架级别的包的使用等.为最终的调度赋能.

## 常规操作

### 导出环境
```
uv export --format requirements-txt > requirements.txt
```
### 更新文档
```
mkdocs serve # 预览
mkdocs gh-deploy -d ../.temp # 同步到github网站
```

### 发布
```
uv build
uv publish
```

### 运行测试并同步到测试服务
```
bash run_test.sh
```
orange-oracledb-mcp-server 0.1.0
MCP Server For Oracle Database
Requires Python: >=3.6

# OracleDB MCP Server

[![smithery badge](https://smithery.ai/badge/@rahgadda/oracledb_mcp_server)](https://smithery.ai/server/@rahgadda/oracledb_mcp_server)

## Overview
- This project will install `MCP - Model Context Protocol Server`, that provides configured Oracle Database Table/Columns as context to LLM's.
- Using this we can enable LLMs to interact with Oracle Database, Generate SQL Statements and Return Results using LLM prompts.

## Installation
- Install package
  ```bash
  pip install oracledb_mcp_server
  ```
- Create .env in a folder with minimum value of `Oracle DB Connection String`. Sample file available [here](https://raw.githubusercontent.com/rahgadda/oracledb_mcp_server/refs/heads/main/.env)
- Test `oracledb_mcp_server` server using `uv run oracledb_mcp_server` from the above folder.

## Claud Desktop
- Configuration details for Claud Desktop
  ```json
  {
    "mcpServers": {
      "oracledb_mcp_server":{
        "command": "uv",
        "args": ["run","oracledb_mcp_server"],
        "env": {
            "DEBUG":"True",
            "COMMENT_DB_CONNECTION_STRING":"oracle+oracledb://USERNAME:PASSWORD@IP:PORT/?service_name=SERVICENAME",
            "DB_CONNECTION_STRING":"oracle+oracledb://USERNAME:PASSWORD@IP:PORT/?service_name=SERVICENAME",
            "TABLE_WHITE_LIST":"ACCOUNTS,CUS_ACC_RELATIONS,CUSTOMERS",
            "COLUMN_WHITE_LIST":"ACCOUNTS.ACC_AAD_ID,CUS_ACC_RELATIONS.CAR_CUS_ID,CUS_ACC_RELATIONS.CAR_AAD_ID,CUSTOMERS.CUS_ID"
        }
      }
    }
  }
  ```

### Configuration
- List of available environment variables
  - `DEBUG`: Enable debug logging (optional default is False)
  - `COMMENT_DB_CONNECTION_STRING`: Oracle DB connection String for comments. (required)
  - `DB_CONNECTION_STRING`: Oracle DB connection String for execution of queries. (required)
  - `TABLE_WHITE_LIST`: White Listed table names in list format ["table1", "table2"] (required)
  - `COLUMN_WHITE_LIST`: White Listed table-column names in list format ["table.column1", "table.column2"] (required)
  - `QUERY_LIMIT_SIZE`: Default value is 10 records if not provided(optional default is 10)

## Interceptor
```bash
npx @modelcontextprotocol/inspector uv --directory "D:\\MyDev\\mcp\\oracledb_mcp_server" run -m oracledb_mcp_server
```

## Contributing
Contributions are welcome.    
Please feel free to submit a Pull Request.

## License
This project is licensed under the terms of the MIT license.

## Demo
![](./images/demo.png)

## Github Stars
[![Star History Chart](https://api.star-history.com/svg?repos=rahgadda/oracledb_mcp_server=Date)](https://star-history.com/#rahgadda/oracledb_mcp_server&Date)
zmp-a2a-sdk 0.1.3
Agent2Agent samples SDK
Requires Python: <4.0,>=3.11

# Sample Code

This code is used to demonstrate A2A capabilities as the spec progresses.\ Samples are divided into 3 sub directories:

* [**Common**](/samples/python/common)  
Common code that all sample agents and apps use to speak A2A over HTTP. 

* [**Agents**](/samples/python/agents/README.md)  
Sample agents written in multiple frameworks that perform example tasks with tools. These all use the common A2AServer.

* [**Hosts**](/samples/python/hosts/README.md)  
Host applications that use the A2AClient. Includes a CLI which shows simple task completion with a single agent, a mesop web application that can speak to multiple agents, and an orchestrator agent that delegates tasks to one of multiple remote A2A agents.

## Prerequisites

- Python 3.13 or higher
- UV

## Running the Samples

Run one (or more) [agent](/samples/python/agents/README.md) A2A server and one of the [host applications](/samples/python/hosts/README.md). 

The following example will run the langgraph agent with the python CLI host:

1. Navigate to the samples/python directory:
    ```bash
    cd samples/python
    ```
2. Run an agent:
    ```bash
    uv run agents/langgraph
    ```
3. Run the example client
    ```
    uv run hosts/cli
    ```
---
**NOTE:** 
This is sample code and not production-quality libraries.
---
tomlserializer 0.2.0
Add your description here
Requires Python: >=3.11

# TOMLSerializer 📝

A powerful and flexible Python library for serializing Python objects to TOML format with robust type handling support.

## ✨ Features

- 🔄 Serializes Python dataclasses to TOML format and back
- 🏷️ Preserves type information during serialization
- 📦 Supports complex data types including:
  - 🔢 Basic types (int, float, str, bool)
  - 📚 Collections (list, dict, set, tuple)
  - 📂 Path objects
  - 🎯 Callable functions
  - ❓ Optional fields
  - 🔀 Union types
  - 🪢 Nested data structures
  - 🕳️ Empty collections
  - 👨‍👦 Inheritance hierarchies

## 🚀 Installation

```bash
pip install tomlserializer  # Package name may vary
```

## 🏃 Quick Start

```python
from dataclasses import dataclass
from pathlib import Path
from tomlserializer import TOMLSerializer

@dataclass
class Config:
    name: str
    values: list[int]
    output_path: Path
    enabled: bool

# Create an instance
config = Config(
    name="example",
    values=[1, 2, 3],
    output_path=Path("/tmp/output"),
    enabled=True
)

# Save to TOML
TOMLSerializer.save(config, "config.toml")

# Load from TOML
loaded_data = TOMLSerializer.load_typed_dict("config.toml")
```

## 🔧 Advanced Usage

### 🛠️ Custom Type Registration

You can register custom type handlers for serialization and deserialization:

```python
def custom_type_to_toml(value):
    return str(value)

def custom_type_from_toml(value):
    return CustomType(value)

TOMLSerializer.register_type(CustomType, custom_type_to_toml, custom_type_from_toml)
```

### 🌟 Supporting Complex Types

The library handles various complex scenarios:

```python
@dataclass
class ComplexConfig:
    # Optional fields
    optional_value: Optional[int] = None

    # Union types
    flexible_field: Union[str, int]

    # Nested collections
    nested_dict: Dict[str, Dict[str, int]]

    # Function references
    callback: Callable
```

### 👨‍👦 Inheritance Support

```python
@dataclass
class BaseConfig:
    base_field: str

@dataclass
class DerivedConfig(BaseConfig):
    derived_field: int

# Both base and derived fields are preserved during serialization
```

## 📋 Type Support

The library includes built-in support for:
- 🔢 Basic types (int, float, str, bool)
- 📚 Collection types (list, dict, set, tuple)
- 📂 Pathlib Path objects
- 🎯 Python functions (via module path resolution)
- ❌ None values
- ❓ Optional fields
- 🔀 Union types

## ⚠️ Error Handling

The library includes robust error handling for:
- 🚫 Invalid file paths
- 🔄 Type conversion errors
- ❗ Missing required fields
- 🏗️ Invalid TOML syntax

## 🤝 Contributing
Contributions are welcome! Please feel free to submit pull requests.
serwersmsv2api 0.0.1
Python client for remote communication with SerwerSMS.pl API v2
Requires Python: >=3.9

# SerwerSMS.pl Python Client API
Python client for remote communication with SerwerSMS.pl API v2

Attention. The current version works based on the API token.

In order to authorize via an API Token, it must be generated on the Customer Panel side in the Interface Settings → HTTPS API → API Tokens menu. The authorization header format follows the Bearer token format.

#### Example usage
```python
import sys
import json

from serwersms import SerwerSMS

api = SerwerSMS('token')

try:

    params = {
        'test': 'true',
        'details': 'true'
    }

    response = api.message.send_sms('500600700', 'Test message', 'INFORMACJA', params)

    result = json.loads(response)

    if 'items' not in result:
        raise Exception('Empty items')

    for item in result['items']:
        print(item['id'] + ' - ' + item['phone'] + ' - ' + item['status'])
        
except Exception:

    print('ERROR: ', sys.exc_info()[1])
```

#### Sending SMS
```python
api = SerwerSMS('token')

try:

    params = {
        'details': 'true'
    }

    response = api.message.send_sms('500600700', 'Test message', 'INFORMACJA', params)
    
    print(response)
    
except Exception:

    print('ERROR: ', sys.exc_info()[1])
```

#### Sending personalized SMS
```python
api = SerwerSMS('token')

try:

    messages = []

    message1 = {
        'phone': '500600700',
        'text': 'First message'
    }
    
    messages.append(message1)

    message2 = {
        'phone': '600700800',
        'text': 'Second  message'
    }
    
    messages.append(message2)

    params = {
        'details': 'true'
    }

    response = api.message.send_personalized(messages, 'INFORMACJA', params)
    
    print(response)
    
except Exception:

    print('ERROR: ', sys.exc_info()[1])
```

#### Downloading delivery reports
```python
api = SerwerSMS('token')

try:

    params = {
        'id': 'aca3944055'
    }
    
    response = api.message.reports(params)
    
    print(response)
    
except Exception:

    print('ERROR: ', sys.exc_info()[1])
```

#### Downloading incoming messages
```python
api = SerwerSMS('token')

try:

    params = {
        'phone': '500600700'
    }
    response = api.message.recived('ndi',params)
    
    print(response)
    
except Exception:

    print('ERROR: ', sys.exc_info()[1])
```

## Requirements
Python 3.5.*

## Documentation
http://dev.serwersms.pl

## API Console
http://apiconsole.serwersms.pl
ledwallcontroller 0.2.0
An Interface to work with the Multivision and OnlyGlass Generic LED Controller via TCP
Requires Python: >=3.11

# LED Controller API Wrapper

used to communicate with different LED-Controllers via TCP to read and set the overall brightness.

## Example Usage

```python
import asyncio
from ledwallcontroller import Multivision, TCPHandler, OnlyGlass


async def main():
    conn1 = TCPHandler(host="192.168.20.197", port=4010)
    mv = Multivision(conn1, controller_id=1)
    await mv.set_brightness_percent(98)
    await mv.update()

    print(f"Multivision 1 brightness: {mv.brightness_percent}")

    mv2 = Multivision(conn1, controller_id=2)
    await mv2.set_brightness_percent(98)
    await mv2.update()

    print(f"Multivision 2 brightness: {mv2.brightness_percent}")

    conn2 = TCPHandler(host="192.168.20.197", port=4001)
    og = OnlyGlass(conn2)
    await og.set_brightness_percent(50)
    await og.update()

    print(f"OnlyGlass brightness: {og.brightness_percent}")


asyncio.run(main())
```


## Example Communication for Multivision

Sending an ASCII-encoded String via TCP

### Setting Values

Set Brightness to 75%

```
SOH L E D S B R I G H 0 1 = 7 5 CR
```

-> No return

### Getting Values

Get current Brightnesss

```
SOH L E D G B R I G H 0 1 = ? CR
```

->

```
SOH L E D R B R I G H 0 1 = 7 5 CR
```

Brightness 75%
Kenar 0.7.1
facilitate using kenar divar APIs
Requires Python: >=3.10

<div dir="rtl">

# kenar-api
## درباره
این کتابخانه برای استفاده ی راحت‌تر و سریع‌تر از سرویس های کنار دیوار توسعه داده شده است.
>توجه: برای استفاده از این کتابخانه باید نیازمند نسخه ی پایتون بالاتر از 3.10 هستید. 

## ویژگی های اصلی
* تولید آدرس ریدایرکت به احراز باز برای دریافت دسترسی ها از کاربر
* امکان ارسال پیام در چت دیوار و ثبت درخواست برای مطلع شدن از پیام های چت دیوار روی یک آگهی
* امکان درج/حذف/دریافت افزونه در آگهی های دیوار
* امکان درج/حذف/دریافت افزونه روی دسته ای از آگهی های یک کاربر (بر اساس دسته بندی آگهی)

## نحوه ی نصب 
برای این منظور میتوانید از پکیج منیجر [pip](https://pypi.org/project/Kenar) استفاده کنید

<div dir="ltr">

```bash
pip install Kenar
```
</div>

## راهنمای استفاده
پس از ساخت برنامه در پنل کنار و گرفتن کلید API و کلید محرمانه OAuth مربوط به آن ، با قرار دادن این فیلد ها در environment variable های پروژه ی خود ، میتوانید از این SDK استفاده کنید.  
- [نمونه ساخت اپ](https://github.com/divar-ir/kenar-api/blob/main/samples/sample_app.py)
- [نمونه ساخت ریدایرکت احراز باز و گرفتن اکسس توکن احراز](https://github.com/divar-ir/kenar-api/blob/main/samples/sample_oauth.py)
- [نمونه ساخت افزونه آگهی و کاربر](https://github.com/divar-ir/kenar-api/blob/main/samples/sample_addon.py)
- [نمونه سرچ آگهی با فیلتر، دریافت اطلاعات یک آگهی، آگهی های کاربر و اطلاعات شماره تلفن کاربر](https://github.com/divar-ir/kenar-api/blob/main/samples/sample_finder.py)
- [نمونه ارسال پیام در چت و اجازه دریافت پیام ها روی یک آگهی](https://github.com/divar-ir/kenar-api/blob/main/samples/sample_chat.py)

به عنوان نمونه ، برای ساخت کلاینت کنار، نیاز است متغیر های محیطی `KENAR_APP_SLUG` (با مقدار برابر با شناسه یکتای برنامه) و `KENAR_API_KEY`(برابر با کلید محرمانه دریافت شده برای برنامه) ، `KENAR_OAUTH_SECRET` (برابر با کلید محرمانه ی OAuth) و `KENAR_OAUTH_REDIRECT_URL` (برابر با لینک بازگشت احراز باز) ست شوند و از طریق نمونه کد زیر کلاینت ساخته شود.


<div dir="ltr">

```python
import os
from kenar import ClientConfig, Client

client_conf = ClientConfig(
    app_slug=os.environ.get("KENAR_APP_SLUG"),
    api_key=os.environ.get("KENAR_API_KEY"),
    oauth_secret=os.environ.get("KENAR_OAUTH_SECRET"),
    oauth_redirect_url=os.environ.get("KENAR_OAUTH_REDIRECT_URL"),
)

kenar_client = Client(client_conf)
```
</div>

پس از ساخت کلاینت میتوان از تمام سرویس های نام برده ، با فراخوانی property مربوطه ، استفاده کرد. به عنوان مثال برای آپلود عکس میتوان از کد زیر بهره گرفت:

<div dir="ltr">

```python
rsp = kenar_client.addon.upload_image("PATH_TO_FILE")
```

</div>

## پیشنهادات برای بهبود
پذیرای هر گونه پیشنهادات شما برای بهتر کردن این کتاب‌خانه هستیم. در قسمت [issues](https://github.com/divar-ir/kenar-api/issues) پروژه میتوانید مسائل خود را با ما مطرح کنید.

## ادرس پنل توسعه دهندگان
[کنار دیوار](https://divar.ir/kenar)

## مستندات کنار دیوار
در صورتی که از زبان پایتون برای توسعه ی برنامه خود استفاده نمیکنید ، میتوانید با بهره گیری از [مستندات کنار دیوار](https://github.com/divar-ir/kenar-docs) مستقیما اندپوینت های سرویس را فراخوانی کند.
</div>
datalitex 1.0.1
Datalitex: A smart data assistant for data analysts and scientists — clean, transform, visualize and analyze datasets with ease.
Requires Python: >=3.7

# Datalitex

**Datalitex** is a simple and powerful data analysis toolkit for Python. Designed especially for students, data analysts, and developers, it provides one-line solutions for data cleaning, transformation, visualization, and exploration.

## 📦 Features

- 🧼 Data cleaning (null handling, duplicates, formatting)
- 🔍 Easy filtering, querying, and manipulation
- 📊 Quick plots: bar, line, box, pie, scatter, heatmap, pairplot
- 📈 Outlier detection using IQR & Z-score
- 🧠 GroupBy summaries, crosstab, pivot tables
- 🚀 Feature importance using correlation & ANOVA

## 📥 Installation

```bash
pip install datalitex
configshell-fb 2.0.2
A framework to implement simple but nice CLIs.
Requires Python: >=3.9

configshell-fb
==============

A Python library for building configuration shells
--------------------------------------------------
configshell-fb is a Python library that provides a framework
for building simple but nice CLI-based applications.

configshell-fb development
--------------------------
configshell-fb is licensed under the Apache 2.0 license. Contributions are welcome.

Since configshell-fb is used most often with targetcli-fb, the
targetcli-fb mailing should be used for configshell-fb discussion.

 * Mailing list: [targetcli-fb-devel](https://lists.fedorahosted.org/mailman/listinfo/targetcli-fb-devel)
 * Source repo: [GitHub](https://github.com/open-iscsi/configshell-fb)
 * Bugs: [GitHub](https://github.com/open-iscsi/configshell-fb/issues) or [Trac](https://fedorahosted.org/targetcli-fb/)
 * Tarballs: [fedorahosted](https://fedorahosted.org/releases/t/a/targetcli-fb/)

Packages
--------
configshell-fb is packaged for a number of Linux distributions
including RHEL,
[Fedora](https://apps.fedoraproject.org/packages/python-configshell),
openSUSE, Arch Linux,
[Gentoo](https://packages.gentoo.org/packages/dev-python/configshell-fb), and
[Debian](https://tracker.debian.org/pkg/python-configshell-fb).

"fb" -- "free branch"
---------------------

configshell-fb is a fork of the "configshell" code written by
RisingTide Systems. The "-fb" differentiates between the original and
this version. Please ensure to use either all "fb" versions of the
targetcli components -- targetcli, rtslib, and configshell, or stick
with all non-fb versions, since they are no longer strictly
compatible.