semvec/pypi-packages huggingface dataset:
EXtra-geom 1.15.0
Tools to work with EuXFEL detector geometry and assemble detector images
License: BSD-3-Clause
Requires Python: >=3.10

[![Build Status](https://github.com/European-XFEL/EXtra-geom/workflows/Tests/badge.svg)](https://github.com/European-XFEL/EXtra-geom/actions?query=workflow%3ATests)
[![codecov](https://codecov.io/gh/European-XFEL/EXtra-geom/branch/master/graph/badge.svg)](https://codecov.io/gh/European-XFEL/EXtra-geom)

Python tools to work with EuXFEL detector geometry and assemble detector images.

[Documentation](https://extra-geom.readthedocs.io/en/latest/)

Installing
==========

*EXtra-geom* is available in our Python environment on the Maxwell cluster:

    module load exfel exfel-python

You can also install it [from PyPI](https://pypi.org/project/EXtra-geom/)
to use in other environments with Python 3:

    pip install extra_geom

If you get a permissions error, add the `--user` flag to that command.


Contributing
===========

Tests
-----

Tests can be run as follows:

    python3 -m pytest -v --pyargs extra_geom

In the source directory, you can also omit `--pyargs extra_geom`.
theaddressor 0.1.2
A tool to parse text into structured address data
License: BSD-3-Clause
Requires Python: >=3.7

# 📬 TheAddressor

Turn messy strings into structured addresses.  
Supports U.S. and Canadian formats with fuzzy parsing, reference extraction, and more.

---

## 🚀 Features

- Parses unstructured address lines into clean components
- Supports:
  - Street addresses
  - Suite/unit numbers
  - U.S. and Canadian cities, states/provinces, ZIP/postal codes
  - Emails, phone numbers, URLs, and reference tags
- Handles noisy, shuffled, or incomplete input
- Easy to plug into shipping, billing, or CRM pipelines

---

## 🛠️ Installation

```bash
pip install theaddressor
```

---

## 🧠 Example

```python
from theaddressor import AddressParser

lines = [
    "DeepMind HQ",
    "48 Innovation Way",
    "Suite B",
    "London ON N6A 3K7",
    "contact@deep.ai",
    "(519) 555-0188"
]

parsed = AddressParser(lines).get()

print(parsed['address1'])  # '48 Innovation Way'
print(parsed['zipcode'])   # 'N6A3K7'
print(parsed['country'])   # 'Canada'
print(parsed['email'][0])  # 'contact@deep.ai'
```

---

## 🧪 Testing

Run unit tests with:

```bash
make test
```

Or manually:

```bash
python3 -m unittest discover tests
```

---

## 📦 Packaging

To build and upload to PyPI:

```bash
make build check upload
```

---

## 📄 License

BSD 3-Clause License © 2025 – Charles Watkins