csv2sendy


Namecsv2sendy JSON
Version 1.0.3 PyPI version JSON
download
home_pagehttps://github.com/skaisser/csv2sendy
SummaryA CSV processor for Sendy.co with Brazilian data format support
upload_time2024-11-29 13:41:51
maintainerNone
docs_urlNone
authorShirleyson Kaisser
requires_python>=3.9
licenseNone
keywords csv sendy email contacts brazil
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # CSV2Sendy

<div align="center">

[![PyPI version](https://badge.fury.io/py/csv2sendy.svg)](https://badge.fury.io/py/csv2sendy)
[![Python Version](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-390/)
[![Tests](https://github.com/skaisser/csv2sendy/actions/workflows/tests.yml/badge.svg)](https://github.com/skaisser/csv2sendy/actions/workflows/tests.yml)
[![Coverage Status](https://coveralls.io/repos/github/skaisser/csv2sendy/badge.svg?branch=main)](https://coveralls.io/github/skaisser/csv2sendy?branch=main)
[![Documentation Status](https://readthedocs.org/projects/csv2sendy/badge/?version=latest)](https://csv2sendy.readthedocs.io/en/latest/?badge=latest)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Code Style: Mypy](https://img.shields.io/badge/type%20checked-mypy-blue.svg)](http://mypy-lang.org/)

A powerful CSV processor for Sendy.co with Brazilian data format support.

[Documentation](https://csv2sendy.readthedocs.io) |
[GitHub Repository](https://github.com/skaisser/csv2sendy)

</div>

## 🌟 Features

- 🔄 **Intelligent CSV Processing**
  - Auto-detection of delimiters (`,` or `;`)
  - Multiple encoding support (utf-8-sig, latin1, iso-8859-1, cp1252)
  - Smart column mapping and normalization
  - Robust error handling

- 📧 **Email Validation**
  - RFC-compliant email validation
  - Case normalization
  - Duplicate removal
  - Invalid email filtering

- 📱 **Phone Number Processing**
  - Brazilian format support
  - Format standardization
  - Invalid number filtering
  - DDD (area code) validation

- 👤 **Name Processing**
  - First/last name splitting
  - Proper capitalization
  - Special character handling
  - Empty name filtering

- 🌐 **Web Interface**
  - File upload and processing
  - Column mapping
  - Tag management
  - CSV download

- 🔒 **Security**
  - Secure file handling
  - Automatic file cleanup
  - Input sanitization
  - File size limits

## 📦 Installation

### Using pip

```bash
pip install csv2sendy
```

### From source

```bash
git clone https://github.com/skaisser/csv2sendy.git
cd csv2sendy
pip install -e ".[dev]"
```

## 🚀 Quick Start

### Web Interface

```bash
# Start the web server
python -m csv2sendy.web.app
```

Visit http://localhost:8080 in your browser.

### Python API

```python
from csv2sendy.core import CSVProcessor

# Process a CSV file
processor = CSVProcessor()
df = processor.process_file('input.csv')
df.to_csv('output.csv', index=False)

# Process CSV content directly
content = '''name,email,phone
John Doe,john@example.com,(11) 98765-4321'''
df = processor.process_file(content)
```

## 💻 Development

### Setup

1. Clone the repository:
```bash
git clone https://github.com/skaisser/csv2sendy.git
cd csv2sendy
```

2. Create a virtual environment:
```bash
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
```

3. Install development dependencies:
```bash
pip install -e ".[dev,test,doc]"
```

### Testing

Run tests with coverage:
```bash
pytest --cov=csv2sendy tests/
```

Run type checking:
```bash
mypy csv2sendy
```

### Documentation

Build documentation:
```bash
cd docs
make html
```

## 🔧 Dependencies

- Python 3.9
- pandas >= 1.3.0
- email-validator >= 1.1.0
- flask >= 2.0.0
- werkzeug >= 2.0.0

## 🤝 Contributing

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Install development dependencies (`pip install -e ".[dev,test,doc]"`)
4. Make your changes
5. Run tests and type checking (`pytest` and `mypy csv2sendy`)
6. Commit your changes (`git commit -m 'Add amazing feature'`)
7. Push to the branch (`git push origin feature/amazing-feature`)
8. Open a Pull Request

## 📄 License

This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

## 👤 Author

**Shirleyson Kaisser**

- GitHub: [@skaisser](https://github.com/skaisser)
- Email: skaisser@gmail.com

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/skaisser/csv2sendy",
    "name": "csv2sendy",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "csv, sendy, email, contacts, brazil",
    "author": "Shirleyson Kaisser",
    "author_email": "skaisser@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/60/7e/964aca0dc3ef66be6a263a7d284b256c3b83519d8ecc9049a2bdbdb3f3c6/csv2sendy-1.0.3.tar.gz",
    "platform": null,
    "description": "# CSV2Sendy\n\n<div align=\"center\">\n\n[![PyPI version](https://badge.fury.io/py/csv2sendy.svg)](https://badge.fury.io/py/csv2sendy)\n[![Python Version](https://img.shields.io/badge/python-3.9-blue.svg)](https://www.python.org/downloads/release/python-390/)\n[![Tests](https://github.com/skaisser/csv2sendy/actions/workflows/tests.yml/badge.svg)](https://github.com/skaisser/csv2sendy/actions/workflows/tests.yml)\n[![Coverage Status](https://coveralls.io/repos/github/skaisser/csv2sendy/badge.svg?branch=main)](https://coveralls.io/github/skaisser/csv2sendy?branch=main)\n[![Documentation Status](https://readthedocs.org/projects/csv2sendy/badge/?version=latest)](https://csv2sendy.readthedocs.io/en/latest/?badge=latest)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Code Style: Mypy](https://img.shields.io/badge/type%20checked-mypy-blue.svg)](http://mypy-lang.org/)\n\nA powerful CSV processor for Sendy.co with Brazilian data format support.\n\n[Documentation](https://csv2sendy.readthedocs.io) |\n[GitHub Repository](https://github.com/skaisser/csv2sendy)\n\n</div>\n\n## \ud83c\udf1f Features\n\n- \ud83d\udd04 **Intelligent CSV Processing**\n  - Auto-detection of delimiters (`,` or `;`)\n  - Multiple encoding support (utf-8-sig, latin1, iso-8859-1, cp1252)\n  - Smart column mapping and normalization\n  - Robust error handling\n\n- \ud83d\udce7 **Email Validation**\n  - RFC-compliant email validation\n  - Case normalization\n  - Duplicate removal\n  - Invalid email filtering\n\n- \ud83d\udcf1 **Phone Number Processing**\n  - Brazilian format support\n  - Format standardization\n  - Invalid number filtering\n  - DDD (area code) validation\n\n- \ud83d\udc64 **Name Processing**\n  - First/last name splitting\n  - Proper capitalization\n  - Special character handling\n  - Empty name filtering\n\n- \ud83c\udf10 **Web Interface**\n  - File upload and processing\n  - Column mapping\n  - Tag management\n  - CSV download\n\n- \ud83d\udd12 **Security**\n  - Secure file handling\n  - Automatic file cleanup\n  - Input sanitization\n  - File size limits\n\n## \ud83d\udce6 Installation\n\n### Using pip\n\n```bash\npip install csv2sendy\n```\n\n### From source\n\n```bash\ngit clone https://github.com/skaisser/csv2sendy.git\ncd csv2sendy\npip install -e \".[dev]\"\n```\n\n## \ud83d\ude80 Quick Start\n\n### Web Interface\n\n```bash\n# Start the web server\npython -m csv2sendy.web.app\n```\n\nVisit http://localhost:8080 in your browser.\n\n### Python API\n\n```python\nfrom csv2sendy.core import CSVProcessor\n\n# Process a CSV file\nprocessor = CSVProcessor()\ndf = processor.process_file('input.csv')\ndf.to_csv('output.csv', index=False)\n\n# Process CSV content directly\ncontent = '''name,email,phone\nJohn Doe,john@example.com,(11) 98765-4321'''\ndf = processor.process_file(content)\n```\n\n## \ud83d\udcbb Development\n\n### Setup\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/skaisser/csv2sendy.git\ncd csv2sendy\n```\n\n2. Create a virtual environment:\n```bash\npython -m venv venv\nsource venv/bin/activate  # On Windows: venv\\Scripts\\activate\n```\n\n3. Install development dependencies:\n```bash\npip install -e \".[dev,test,doc]\"\n```\n\n### Testing\n\nRun tests with coverage:\n```bash\npytest --cov=csv2sendy tests/\n```\n\nRun type checking:\n```bash\nmypy csv2sendy\n```\n\n### Documentation\n\nBuild documentation:\n```bash\ncd docs\nmake html\n```\n\n## \ud83d\udd27 Dependencies\n\n- Python 3.9\n- pandas >= 1.3.0\n- email-validator >= 1.1.0\n- flask >= 2.0.0\n- werkzeug >= 2.0.0\n\n## \ud83e\udd1d Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Install development dependencies (`pip install -e \".[dev,test,doc]\"`)\n4. Make your changes\n5. Run tests and type checking (`pytest` and `mypy csv2sendy`)\n6. Commit your changes (`git commit -m 'Add amazing feature'`)\n7. Push to the branch (`git push origin feature/amazing-feature`)\n8. Open a Pull Request\n\n## \ud83d\udcc4 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## \ud83d\udc64 Author\n\n**Shirleyson Kaisser**\n\n- GitHub: [@skaisser](https://github.com/skaisser)\n- Email: skaisser@gmail.com\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A CSV processor for Sendy.co with Brazilian data format support",
    "version": "1.0.3",
    "project_urls": {
        "Bug Tracker": "https://github.com/skaisser/csv2sendy/issues",
        "Documentation": "https://csv2sendy.readthedocs.io/",
        "Homepage": "https://github.com/skaisser/csv2sendy"
    },
    "split_keywords": [
        "csv",
        " sendy",
        " email",
        " contacts",
        " brazil"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "72d7bf1bdadaa015871e49ed47ac6d559fa366885f25a0d9ec0480bada356163",
                "md5": "01f3ab8dddc7e0e2f75ec08b7ddcb413",
                "sha256": "ab23ba7ee94e992e59efbcbf3caf18b88c2af91fb05beb03dc083dee0aeaf44d"
            },
            "downloads": -1,
            "filename": "csv2sendy-1.0.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "01f3ab8dddc7e0e2f75ec08b7ddcb413",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 11070,
            "upload_time": "2024-11-29T13:41:23",
            "upload_time_iso_8601": "2024-11-29T13:41:23.716663Z",
            "url": "https://files.pythonhosted.org/packages/72/d7/bf1bdadaa015871e49ed47ac6d559fa366885f25a0d9ec0480bada356163/csv2sendy-1.0.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "607e964aca0dc3ef66be6a263a7d284b256c3b83519d8ecc9049a2bdbdb3f3c6",
                "md5": "8130b7e9aa85e94b7ed9bd3dfa52140c",
                "sha256": "ff9c86151f892f05043ddcdfcaa6f92b517bbf28d495e663c3d5934cb3883d86"
            },
            "downloads": -1,
            "filename": "csv2sendy-1.0.3.tar.gz",
            "has_sig": false,
            "md5_digest": "8130b7e9aa85e94b7ed9bd3dfa52140c",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 11318,
            "upload_time": "2024-11-29T13:41:51",
            "upload_time_iso_8601": "2024-11-29T13:41:51.747270Z",
            "url": "https://files.pythonhosted.org/packages/60/7e/964aca0dc3ef66be6a263a7d284b256c3b83519d8ecc9049a2bdbdb3f3c6/csv2sendy-1.0.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-29 13:41:51",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "skaisser",
    "github_project": "csv2sendy",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [],
    "lcname": "csv2sendy"
}
        
Elapsed time: 0.40358s