semvec/pypi-packages huggingface dataset:
exonware-xnode 0.0.1
Node-based data processing and graph computation library
License: MIT
Requires Python: >=3.8
Keywords: computation, data-processing, exonware, graph, node, workflow

# 🚀 **xnode: Node-Based Data Processing Library**

**Company:** eXonware.com  
**Author:** Eng. Muhammad AlShehri  
**Email:** connect@exonware.com  
**Version:** 0.0.1  

## 🎯 **What is xnode?**

xnode is a powerful Python library for node-based data processing and graph computation. It provides a flexible framework for building data processing workflows using interconnected nodes, enabling complex data transformations and computations through an intuitive graph-based approach.

## ⚡ **Quick Start**

### **Installation**
```bash
pip install exonware-xnode
```

### **Basic Usage**
```python
from exonware.xnode import *
# Or use convenience import:
# import xnode

# Your node-based processing code here
```

## 🎯 **Perfect For:**

- **🔄 Data Processing Pipelines** - Build complex data transformation workflows
- **📊 Graph Computation** - Process data through interconnected node networks
- **🔀 Workflow Management** - Create reusable processing components
- **🧠 Algorithm Development** - Implement graph-based algorithms and computations
- **🔗 System Integration** - Connect different data processing stages

## 🚀 **Key Features**

✅ **Node-based architecture** for modular data processing  
✅ **Graph computation engine** for complex workflows  
✅ **Flexible data flow** between processing nodes  
✅ **Reusable components** for common operations  
✅ **Performance optimized** for large-scale processing  
✅ **Easy integration** with existing Python data tools  

## 📚 **Documentation**

- **[API Documentation](docs/)** - Complete reference and examples
- **[Examples](examples/)** - Practical usage examples
- **[Tests](tests/)** - Test suites and usage patterns

## 🔧 **Development**

```bash
# Install in development mode
pip install -e .

# Run tests
python tests/runner.py

# Run specific test types
python tests/runner.py --core
python tests/runner.py --unit
python tests/runner.py --integration
```

## 🤝 **Contributing**

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests
5. Run the test suite
6. Submit a pull request

## 📄 **License**

MIT License - see LICENSE file for details.

---

*Built with ❤️ by eXonware.com - Making node-based data processing effortless*
pure-protobuf 3.1.5
Protocol Buffers using Python type annotations
License: MIT
Requires Python: <4.0.0,>=3.9.0
Keywords: protobuf, protocol-buffers

# `pure-protobuf`

[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/eigenein/protobuf/check.yml?label=checks&logo=github)](https://github.com/eigenein/protobuf/actions/workflows/check.yml)
[![Code coverage](https://codecov.io/gh/eigenein/protobuf/branch/master/graph/badge.svg?token=bJarwbLlY7)](https://codecov.io/gh/eigenein/protobuf)
[![PyPI - Downloads](https://img.shields.io/pypi/dm/pure-protobuf.svg)](https://pypistats.org/packages/pure-protobuf)
[![PyPI – Version](https://img.shields.io/pypi/v/pure-protobuf.svg)](https://pypi.org/project/pure-protobuf/#history)
[![PyPI – Python](https://img.shields.io/pypi/pyversions/pure-protobuf.svg?logo=python&logoColor=yellow)](https://pypi.org/project/pure-protobuf/#files)
[![License](https://img.shields.io/pypi/l/pure-protobuf.svg)](https://github.com/eigenein/protobuf/blob/master/LICENSE)

<small><strong>Wow! Such annotated! Very buffers!</strong></small>

## Documentation

<a href="https://eigenein.github.io/protobuf/">
    <img alt="Documentation" height="30em" src="https://img.shields.io/github/actions/workflow/status/eigenein/protobuf/docs.yml?label=documentation&logo=github">
</a>

## Quick examples

### `.proto` definition

It's not needed for `pure-protobuf`, but for the sake of an example, let's consider the following definition:

```protobuf
syntax = "proto3";

message SearchRequest {
  string query = 1;
  int32 page_number = 2;
  int32 result_per_page = 3;
}
```

And here's the same via `pure-protobuf`:

### With [dataclasses](https://docs.python.org/3/library/dataclasses.html)

```python title="dataclass_example.py"
from dataclasses import dataclass
from io import BytesIO

from pure_protobuf.annotations import Field
from pure_protobuf.message import BaseMessage
from typing_extensions import Annotated


@dataclass
class SearchRequest(BaseMessage):
    query: Annotated[str, Field(1)] = ""
    page_number: Annotated[int, Field(2)] = 0
    result_per_page: Annotated[int, Field(3)] = 0


request = SearchRequest(query="hello", page_number=1, result_per_page=10)
buffer = bytes(request)
assert buffer == b"\x0A\x05hello\x10\x01\x18\x0A"
assert SearchRequest.read_from(BytesIO(buffer)) == request
```

### With [`pydantic`](https://docs.pydantic.dev/)

```python title="pydantic_example.py"
from io import BytesIO

from pure_protobuf.annotations import Field
from pure_protobuf.message import BaseMessage
from pydantic import BaseModel
from typing_extensions import Annotated


class SearchRequest(BaseMessage, BaseModel):
    query: Annotated[str, Field(1)] = ""
    page_number: Annotated[int, Field(2)] = 0
    result_per_page: Annotated[int, Field(3)] = 0


request = SearchRequest(query="hello", page_number=1, result_per_page=10)
buffer = bytes(request)
assert buffer == b"\x0A\x05hello\x10\x01\x18\x0A"
assert SearchRequest.read_from(BytesIO(buffer)) == request
```
aioapcaccess 1.0.0
Async version of apcaccess library implemented in python.
License: MIT
Requires Python: >=3.9

# aioapcaccess

[![build](https://github.com/yuxincs/aioapcaccess/actions/workflows/build.yaml/badge.svg)](https://github.com/yuxincs/aioapcaccess/actions/workflows/build.yaml?query=branch%3Amain)
[![codecov](https://codecov.io/github/yuxincs/aioapcaccess/branch/main/graph/badge.svg?token=8zhys5YAk9)](https://codecov.io/github/yuxincs/aioapcaccess)
[![PyPI](https://img.shields.io/pypi/v/aioapcaccess)](https://pypi.org/project/aioapcaccess/)
[![GitHub](https://img.shields.io/github/license/yuxincs/aioapcaccess)](https://github.com/yuxincs/aioapcaccess/blob/main/LICENSE)

An async implementation of [apcaccess](https://linux.die.net/man/8/apcaccess). This
library provides programmatic access to the status information provided by
[apcupsd](http://www.apcupsd.org/) over its Network Information Server (NIS) which
usually listens on TCP port 3551.

This project is a re-implementation of the synchronous version
[flyte/apcaccess](https://github.com/flyte/apcaccess) using
[asyncio](https://docs.python.org/3/library/asyncio.html), where a lot of the logic is
borrowed and improved.

# Install

Install with pip:

```
$ pip install aioapcaccess
```

# Usage

The primary API for getting the status from APCUPS is `aioapcaccess.request_status`.
It returns a `collections.OrderedDict` mapping from field names (e.g., "SERIALNO") to
their values in string format. What fields are available will depend on the model of
your APC UPS, see [APCUPSD manual](http://www.apcupsd.org/manual/) for details.

The following example shows a typical usage of `aioapcaccess`

```python
import asyncio
import aioapcaccess

async def main():
    result = await aioapcaccess.request_status(host='localhost', port=3551)
    print(result)

if __name__ == '__main__':
    asyncio.run(main())
```

The example above will print the following (prettified and simplified):

```
OrderedDict([
  ('APC', '001,036,0879'),
  ...,
  ('BATTV', '13.7 Volts'),
  ('CUMONBATT', '0 Seconds')
))])
```

In addition to `request_status`, we offer the following functions for advanced uses:

- `aioapcaccess.request_raw_status` for getting raw (unparsed) status in `bytes`.
- `aioapcaccess.parse_raw_status` for parsing the `bytes` to the dict shown above.
- `aioapcaccess.split_unit` for splitting the supported unit suffix from the value
  strings, returning a tuple `(value, unit)`. You can check `aioapcaccess.UNITS` for
  the set of supported units. Note that units are also in the forms of strings
  (e.g., "Seconds", "Volts"). If no valid units are found in the value strings, `unit`
  will be `None`.