rexf


Namerexf JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryA lightweight Python library for reproducible experiments
upload_time2025-08-16 20:13:08
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords experiments reproducibility research tracking visualization
VCS
bugtrack_url
requirements numpy matplotlib pandas pyyaml gitpython
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ๐Ÿงช RexF - Smart Experiments Framework

[![CI](https://github.com/dhruv1110/rexf/workflows/CI/badge.svg)](https://github.com/dhruv1110/rexf/actions/workflows/ci.yml)
[![CodeQL](https://github.com/dhruv1110/rexf/workflows/CodeQL/badge.svg)](https://github.com/dhruv1110/rexf/actions/workflows/codeql.yml)
[![PyPI](https://img.shields.io/pypi/v/rexf)](https://pypi.org/project/rexf/)
[![Python Versions](https://img.shields.io/pypi/pyversions/rexf)](https://pypi.org/project/rexf/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

A lightweight Python library for **reproducible computational experiments** with an ultra-simple, smart API. From idea to insight in under 5 minutes, with zero configuration.

## โœจ Key Features

- **๐ŸŽฏ Ultra-Simple API**: Single `@experiment` decorator - that's it!
- **๐Ÿš€ Auto-Everything**: Parameters, metrics, and results detected automatically
- **๐Ÿ” Smart Exploration**: Automated parameter space exploration with multiple strategies
- **๐Ÿ’ก Intelligent Insights**: Automated pattern detection and recommendations
- **๐Ÿ“Š Web Dashboard**: Beautiful real-time experiment monitoring
- **๐Ÿ”ง CLI Analytics**: Powerful command-line tools for ad-hoc analysis
- **๐Ÿ“ˆ Query Interface**: Find experiments using simple expressions like `"accuracy > 0.9"`
- **๐Ÿ”„ Reproducible**: Git commit tracking, environment capture, seed management
- **๐Ÿ’พ Local-First**: SQLite database - no external servers required

## ๐Ÿš€ Quick Start

### Installation

```bash
pip install rexf
```

### Ultra-Simple Usage

```python
from rexf import experiment, run

@experiment
def my_experiment(learning_rate, batch_size=32):
    # Your experiment code here
    accuracy = train_model(learning_rate, batch_size)
    return {"accuracy": accuracy, "loss": 1 - accuracy}

# Run single experiment
run.single(my_experiment, learning_rate=0.01, batch_size=64)

# Get insights
print(run.insights())

# Find best experiments
best = run.best(metric="accuracy", top=5)

# Auto-explore parameter space
run.auto_explore(my_experiment, strategy="random", budget=20)

# Launch web dashboard
run.dashboard()
```

## ๐ŸŽฏ Core Philosophy

**From idea to insight in under 5 minutes, with zero configuration.**

RexF prioritizes user experience over architectural purity. Instead of making you learn complex APIs, it automatically detects what you're doing and provides smart features to accelerate your research.

## ๐Ÿ“– Comprehensive Example

```python
import math
import random
from rexf import experiment, run

@experiment
def estimate_pi(num_samples=10000, method="uniform"):
    """Estimate ฯ€ using Monte Carlo methods."""
    inside_circle = 0
    
    for _ in range(num_samples):
        x, y = random.uniform(-1, 1), random.uniform(-1, 1)
        if x*x + y*y <= 1:
            inside_circle += 1
    
    pi_estimate = 4 * inside_circle / num_samples
    error = abs(pi_estimate - math.pi)
    
    return {
        "pi_estimate": pi_estimate,
        "error": error,
        "accuracy": 1 - (error / math.pi)
    }

# Run experiments
run.single(estimate_pi, num_samples=50000, method="uniform")
run.single(estimate_pi, num_samples=100000, method="stratified")

# Auto-explore to find best parameters
run_ids = run.auto_explore(
    estimate_pi,
    strategy="grid", 
    budget=10,
    optimization_target="accuracy"
)

# Get smart insights
insights = run.insights()
print(f"Success rate: {insights['summary']['success_rate']:.1%}")

# Find high-accuracy runs
accurate_runs = run.find("accuracy > 0.99")

# Compare experiments
run.compare(run.best(top=3))

# Launch web dashboard
run.dashboard()  # Opens http://localhost:8080
```

## ๐Ÿ”ง Advanced Features

### Smart Parameter Exploration

```python
# Random exploration
run.auto_explore(my_experiment, strategy="random", budget=20)

# Grid search
run.auto_explore(my_experiment, strategy="grid", budget=15)

# Adaptive exploration (learns from results)
run.auto_explore(my_experiment, strategy="adaptive", budget=25, 
                optimization_target="accuracy")
```

### Query Interface

```python
# Find experiments using expressions
high_acc = run.find("accuracy > 0.9")
fast_runs = run.find("duration < 30")
recent_good = run.find("accuracy > 0.8 and start_time > '2024-01-01'")

# Query help
run.query_help()
```

### Experiment Suggestions

```python
# Get next experiment suggestions
suggestions = run.suggest(
    my_experiment, 
    count=5, 
    strategy="balanced",  # "exploit", "explore", or "balanced"
    optimization_target="accuracy"
)

for suggestion in suggestions["suggestions"]:
    print(f"Try: {suggestion['parameters']}")
    print(f"Reason: {suggestion['reasoning']}")
```

### CLI Analytics

Analyze experiments from the command line:

```bash
# Show summary
rexf-analytics --summary

# Query experiments
rexf-analytics --query "accuracy > 0.9"

# Generate insights
rexf-analytics --insights

# Compare best experiments
rexf-analytics --compare --best 5

# Export to CSV
rexf-analytics --list --format csv --output results.csv
```

### Web Dashboard

Launch a beautiful web interface:

```python
run.dashboard()  # Opens http://localhost:8080
```

Features:
- ๐Ÿ“Š Real-time experiment monitoring
- ๐Ÿ” Interactive filtering and search
- ๐Ÿ’ก Automated insights generation
- ๐Ÿ“ˆ Statistics overview and trends
- ๐ŸŽฏ Experiment comparison tools

## ๐ŸŽจ Why RexF?

### Before (Traditional Approach)
```python
import mlflow
import sacred
from sacred import Experiment

# Complex setup required
ex = Experiment('my_exp')
mlflow.set_tracking_uri("...")

@ex.config
def config():
    learning_rate = 0.01
    batch_size = 32

@ex.automain
def main(learning_rate, batch_size):
    with mlflow.start_run():
        # Your code here
        mlflow.log_param("lr", learning_rate)
        mlflow.log_metric("accuracy", accuracy)
```

### After (RexF)
```python
from rexf import experiment, run

@experiment
def my_experiment(learning_rate=0.01, batch_size=32):
    # Your code here - that's it!
    return {"accuracy": accuracy}

run.single(my_experiment, learning_rate=0.05)
```

### Key Differences

| Feature | Traditional Tools | RexF |
|---------|------------------|------|
| **Setup** | Complex configuration | Single decorator |
| **Parameter Detection** | Manual logging | Automatic |
| **Metric Tracking** | Manual logging | Automatic |
| **Insights** | Manual analysis | Auto-generated |
| **Exploration** | Write custom loops | `run.auto_explore()` |
| **Comparison** | Custom dashboards | `run.compare()` |
| **Querying** | SQL/Complex APIs | `run.find("accuracy > 0.9")` |

## ๐Ÿ› ๏ธ Architecture

RexF uses a plugin-based architecture:

```
rexf/
โ”œโ”€โ”€ core/           # Core experiment logic
โ”œโ”€โ”€ backends/       # Storage implementations (SQLite, etc.)
โ”œโ”€โ”€ intelligence/   # Smart features (insights, exploration)
โ”œโ”€โ”€ dashboard/      # Web interface
โ”œโ”€โ”€ cli/           # Command-line tools
โ””โ”€โ”€ plugins/       # Extensions (export, visualization)
```

### Backends
- **SQLiteStorage**: Fast local storage (default)
- **IntelligentStorage**: Enhanced analytics and querying
- **FileSystemArtifacts**: Local artifact management

### Intelligence Modules
- **ExplorationEngine**: Automated parameter space exploration
- **InsightsEngine**: Pattern detection and recommendations
- **SuggestionEngine**: Next experiment recommendations
- **SmartQueryEngine**: Natural language-like querying

## ๐Ÿ“Š Data Storage

RexF automatically captures:

- **Experiment metadata**: Name, timestamp, duration, status
- **Parameters**: Function arguments and defaults
- **Results**: Return values (auto-categorized as metrics/results/artifacts)
- **Environment**: Git commit, Python version, dependencies
- **Reproducibility**: Random seeds, system info

All data is stored locally in SQLite with no external dependencies.

## ๐Ÿ”„ Reproducibility

RexF ensures reproducibility by automatically tracking:

- **Code version**: Git commit hash and diff
- **Environment**: Python version, installed packages
- **Parameters**: All function arguments and defaults
- **Random seeds**: Automatic seed capture and restoration
- **System info**: OS, hardware, execution environment

## ๐Ÿšง Roadmap

- โœ… **Phase 1**: Simple API and smart features
- โœ… **Phase 2**: Auto-exploration and insights
- โœ… **Phase 3**: Web dashboard and CLI tools
- ๐Ÿ”„ **Phase 4**: Advanced optimization and ML integration
- ๐Ÿ“‹ **Phase 5**: Cloud sync and collaboration features

## ๐Ÿค Contributing

We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.

### Development Setup

```bash
git clone https://github.com/dhruv1110/rexf.git
cd rexf
pip install -e ".[dev]"
pre-commit install
```

### Running Tests

```bash
pytest tests/ -v --cov=rexf
```

## ๐Ÿ“„ License

MIT License - see [LICENSE](LICENSE) for details.

## ๐Ÿ”— Links

- **Documentation**: [GitHub Pages](https://dhruv1110.github.io/rexf/)
- **PyPI**: [https://pypi.org/project/rexf/](https://pypi.org/project/rexf/)
- **Issues**: [GitHub Issues](https://github.com/dhruv1110/rexf/issues)
- **Discussions**: [GitHub Discussions](https://github.com/dhruv1110/rexf/discussions)

---

**Made with โค๏ธ for researchers who want to focus on science, not infrastructure.**

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "rexf",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "experiments, reproducibility, research, tracking, visualization",
    "author": null,
    "author_email": "dhruv1110 <dhruv1110@users.noreply.github.com>",
    "download_url": "https://files.pythonhosted.org/packages/e1/db/b1a56b60fcc83b95e13e68af1e4f99a414ccf1afac20ff49acb34700ea92/rexf-0.1.0.tar.gz",
    "platform": null,
    "description": "# \ud83e\uddea RexF - Smart Experiments Framework\n\n[![CI](https://github.com/dhruv1110/rexf/workflows/CI/badge.svg)](https://github.com/dhruv1110/rexf/actions/workflows/ci.yml)\n[![CodeQL](https://github.com/dhruv1110/rexf/workflows/CodeQL/badge.svg)](https://github.com/dhruv1110/rexf/actions/workflows/codeql.yml)\n[![PyPI](https://img.shields.io/pypi/v/rexf)](https://pypi.org/project/rexf/)\n[![Python Versions](https://img.shields.io/pypi/pyversions/rexf)](https://pypi.org/project/rexf/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA lightweight Python library for **reproducible computational experiments** with an ultra-simple, smart API. From idea to insight in under 5 minutes, with zero configuration.\n\n## \u2728 Key Features\n\n- **\ud83c\udfaf Ultra-Simple API**: Single `@experiment` decorator - that's it!\n- **\ud83d\ude80 Auto-Everything**: Parameters, metrics, and results detected automatically\n- **\ud83d\udd0d Smart Exploration**: Automated parameter space exploration with multiple strategies\n- **\ud83d\udca1 Intelligent Insights**: Automated pattern detection and recommendations\n- **\ud83d\udcca Web Dashboard**: Beautiful real-time experiment monitoring\n- **\ud83d\udd27 CLI Analytics**: Powerful command-line tools for ad-hoc analysis\n- **\ud83d\udcc8 Query Interface**: Find experiments using simple expressions like `\"accuracy > 0.9\"`\n- **\ud83d\udd04 Reproducible**: Git commit tracking, environment capture, seed management\n- **\ud83d\udcbe Local-First**: SQLite database - no external servers required\n\n## \ud83d\ude80 Quick Start\n\n### Installation\n\n```bash\npip install rexf\n```\n\n### Ultra-Simple Usage\n\n```python\nfrom rexf import experiment, run\n\n@experiment\ndef my_experiment(learning_rate, batch_size=32):\n    # Your experiment code here\n    accuracy = train_model(learning_rate, batch_size)\n    return {\"accuracy\": accuracy, \"loss\": 1 - accuracy}\n\n# Run single experiment\nrun.single(my_experiment, learning_rate=0.01, batch_size=64)\n\n# Get insights\nprint(run.insights())\n\n# Find best experiments\nbest = run.best(metric=\"accuracy\", top=5)\n\n# Auto-explore parameter space\nrun.auto_explore(my_experiment, strategy=\"random\", budget=20)\n\n# Launch web dashboard\nrun.dashboard()\n```\n\n## \ud83c\udfaf Core Philosophy\n\n**From idea to insight in under 5 minutes, with zero configuration.**\n\nRexF prioritizes user experience over architectural purity. Instead of making you learn complex APIs, it automatically detects what you're doing and provides smart features to accelerate your research.\n\n## \ud83d\udcd6 Comprehensive Example\n\n```python\nimport math\nimport random\nfrom rexf import experiment, run\n\n@experiment\ndef estimate_pi(num_samples=10000, method=\"uniform\"):\n    \"\"\"Estimate \u03c0 using Monte Carlo methods.\"\"\"\n    inside_circle = 0\n    \n    for _ in range(num_samples):\n        x, y = random.uniform(-1, 1), random.uniform(-1, 1)\n        if x*x + y*y <= 1:\n            inside_circle += 1\n    \n    pi_estimate = 4 * inside_circle / num_samples\n    error = abs(pi_estimate - math.pi)\n    \n    return {\n        \"pi_estimate\": pi_estimate,\n        \"error\": error,\n        \"accuracy\": 1 - (error / math.pi)\n    }\n\n# Run experiments\nrun.single(estimate_pi, num_samples=50000, method=\"uniform\")\nrun.single(estimate_pi, num_samples=100000, method=\"stratified\")\n\n# Auto-explore to find best parameters\nrun_ids = run.auto_explore(\n    estimate_pi,\n    strategy=\"grid\", \n    budget=10,\n    optimization_target=\"accuracy\"\n)\n\n# Get smart insights\ninsights = run.insights()\nprint(f\"Success rate: {insights['summary']['success_rate']:.1%}\")\n\n# Find high-accuracy runs\naccurate_runs = run.find(\"accuracy > 0.99\")\n\n# Compare experiments\nrun.compare(run.best(top=3))\n\n# Launch web dashboard\nrun.dashboard()  # Opens http://localhost:8080\n```\n\n## \ud83d\udd27 Advanced Features\n\n### Smart Parameter Exploration\n\n```python\n# Random exploration\nrun.auto_explore(my_experiment, strategy=\"random\", budget=20)\n\n# Grid search\nrun.auto_explore(my_experiment, strategy=\"grid\", budget=15)\n\n# Adaptive exploration (learns from results)\nrun.auto_explore(my_experiment, strategy=\"adaptive\", budget=25, \n                optimization_target=\"accuracy\")\n```\n\n### Query Interface\n\n```python\n# Find experiments using expressions\nhigh_acc = run.find(\"accuracy > 0.9\")\nfast_runs = run.find(\"duration < 30\")\nrecent_good = run.find(\"accuracy > 0.8 and start_time > '2024-01-01'\")\n\n# Query help\nrun.query_help()\n```\n\n### Experiment Suggestions\n\n```python\n# Get next experiment suggestions\nsuggestions = run.suggest(\n    my_experiment, \n    count=5, \n    strategy=\"balanced\",  # \"exploit\", \"explore\", or \"balanced\"\n    optimization_target=\"accuracy\"\n)\n\nfor suggestion in suggestions[\"suggestions\"]:\n    print(f\"Try: {suggestion['parameters']}\")\n    print(f\"Reason: {suggestion['reasoning']}\")\n```\n\n### CLI Analytics\n\nAnalyze experiments from the command line:\n\n```bash\n# Show summary\nrexf-analytics --summary\n\n# Query experiments\nrexf-analytics --query \"accuracy > 0.9\"\n\n# Generate insights\nrexf-analytics --insights\n\n# Compare best experiments\nrexf-analytics --compare --best 5\n\n# Export to CSV\nrexf-analytics --list --format csv --output results.csv\n```\n\n### Web Dashboard\n\nLaunch a beautiful web interface:\n\n```python\nrun.dashboard()  # Opens http://localhost:8080\n```\n\nFeatures:\n- \ud83d\udcca Real-time experiment monitoring\n- \ud83d\udd0d Interactive filtering and search\n- \ud83d\udca1 Automated insights generation\n- \ud83d\udcc8 Statistics overview and trends\n- \ud83c\udfaf Experiment comparison tools\n\n## \ud83c\udfa8 Why RexF?\n\n### Before (Traditional Approach)\n```python\nimport mlflow\nimport sacred\nfrom sacred import Experiment\n\n# Complex setup required\nex = Experiment('my_exp')\nmlflow.set_tracking_uri(\"...\")\n\n@ex.config\ndef config():\n    learning_rate = 0.01\n    batch_size = 32\n\n@ex.automain\ndef main(learning_rate, batch_size):\n    with mlflow.start_run():\n        # Your code here\n        mlflow.log_param(\"lr\", learning_rate)\n        mlflow.log_metric(\"accuracy\", accuracy)\n```\n\n### After (RexF)\n```python\nfrom rexf import experiment, run\n\n@experiment\ndef my_experiment(learning_rate=0.01, batch_size=32):\n    # Your code here - that's it!\n    return {\"accuracy\": accuracy}\n\nrun.single(my_experiment, learning_rate=0.05)\n```\n\n### Key Differences\n\n| Feature | Traditional Tools | RexF |\n|---------|------------------|------|\n| **Setup** | Complex configuration | Single decorator |\n| **Parameter Detection** | Manual logging | Automatic |\n| **Metric Tracking** | Manual logging | Automatic |\n| **Insights** | Manual analysis | Auto-generated |\n| **Exploration** | Write custom loops | `run.auto_explore()` |\n| **Comparison** | Custom dashboards | `run.compare()` |\n| **Querying** | SQL/Complex APIs | `run.find(\"accuracy > 0.9\")` |\n\n## \ud83d\udee0\ufe0f Architecture\n\nRexF uses a plugin-based architecture:\n\n```\nrexf/\n\u251c\u2500\u2500 core/           # Core experiment logic\n\u251c\u2500\u2500 backends/       # Storage implementations (SQLite, etc.)\n\u251c\u2500\u2500 intelligence/   # Smart features (insights, exploration)\n\u251c\u2500\u2500 dashboard/      # Web interface\n\u251c\u2500\u2500 cli/           # Command-line tools\n\u2514\u2500\u2500 plugins/       # Extensions (export, visualization)\n```\n\n### Backends\n- **SQLiteStorage**: Fast local storage (default)\n- **IntelligentStorage**: Enhanced analytics and querying\n- **FileSystemArtifacts**: Local artifact management\n\n### Intelligence Modules\n- **ExplorationEngine**: Automated parameter space exploration\n- **InsightsEngine**: Pattern detection and recommendations\n- **SuggestionEngine**: Next experiment recommendations\n- **SmartQueryEngine**: Natural language-like querying\n\n## \ud83d\udcca Data Storage\n\nRexF automatically captures:\n\n- **Experiment metadata**: Name, timestamp, duration, status\n- **Parameters**: Function arguments and defaults\n- **Results**: Return values (auto-categorized as metrics/results/artifacts)\n- **Environment**: Git commit, Python version, dependencies\n- **Reproducibility**: Random seeds, system info\n\nAll data is stored locally in SQLite with no external dependencies.\n\n## \ud83d\udd04 Reproducibility\n\nRexF ensures reproducibility by automatically tracking:\n\n- **Code version**: Git commit hash and diff\n- **Environment**: Python version, installed packages\n- **Parameters**: All function arguments and defaults\n- **Random seeds**: Automatic seed capture and restoration\n- **System info**: OS, hardware, execution environment\n\n## \ud83d\udea7 Roadmap\n\n- \u2705 **Phase 1**: Simple API and smart features\n- \u2705 **Phase 2**: Auto-exploration and insights\n- \u2705 **Phase 3**: Web dashboard and CLI tools\n- \ud83d\udd04 **Phase 4**: Advanced optimization and ML integration\n- \ud83d\udccb **Phase 5**: Cloud sync and collaboration features\n\n## \ud83e\udd1d Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Development Setup\n\n```bash\ngit clone https://github.com/dhruv1110/rexf.git\ncd rexf\npip install -e \".[dev]\"\npre-commit install\n```\n\n### Running Tests\n\n```bash\npytest tests/ -v --cov=rexf\n```\n\n## \ud83d\udcc4 License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## \ud83d\udd17 Links\n\n- **Documentation**: [GitHub Pages](https://dhruv1110.github.io/rexf/)\n- **PyPI**: [https://pypi.org/project/rexf/](https://pypi.org/project/rexf/)\n- **Issues**: [GitHub Issues](https://github.com/dhruv1110/rexf/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/dhruv1110/rexf/discussions)\n\n---\n\n**Made with \u2764\ufe0f for researchers who want to focus on science, not infrastructure.**\n",
    "bugtrack_url": null,
    "license": "MIT License\n        \n        Permission is hereby granted, free of charge, to any person obtaining a copy\n        of this software and associated documentation files (the \"Software\"), to deal\n        in the Software without restriction, including without limitation the rights\n        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n        copies of the Software, and to permit persons to whom the Software is\n        furnished to do so, subject to the following conditions:\n        \n        The above copyright notice and this permission notice shall be included in all\n        copies or substantial portions of the Software.\n        \n        THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n        SOFTWARE.\n        ",
    "summary": "A lightweight Python library for reproducible experiments",
    "version": "0.1.0",
    "project_urls": {
        "Bug Reports": "https://github.com/dhruv1110/rexf/issues",
        "Changelog": "https://github.com/dhruv1110/rexf/blob/main/CHANGELOG.md",
        "Documentation": "https://github.com/dhruv1110/rexf#readme",
        "Homepage": "https://github.com/dhruv1110/rexf",
        "Repository": "https://github.com/dhruv1110/rexf.git"
    },
    "split_keywords": [
        "experiments",
        " reproducibility",
        " research",
        " tracking",
        " visualization"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "78808f95656c722d6f1ec818ccec1a1121607af2b103002f1ffc012d4398faf4",
                "md5": "3e021baecaf150aec930fe8b94f04992",
                "sha256": "70bf6d7bb6ddcfcf77b35766f7381fc9fe524ba01237f649b6d6f48ca6d6e1ed"
            },
            "downloads": -1,
            "filename": "rexf-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3e021baecaf150aec930fe8b94f04992",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 12637,
            "upload_time": "2025-08-16T20:13:06",
            "upload_time_iso_8601": "2025-08-16T20:13:06.790004Z",
            "url": "https://files.pythonhosted.org/packages/78/80/8f95656c722d6f1ec818ccec1a1121607af2b103002f1ffc012d4398faf4/rexf-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e1dbb1a56b60fcc83b95e13e68af1e4f99a414ccf1afac20ff49acb34700ea92",
                "md5": "4c73949a4d7b3b59f2b5a8bec32aab91",
                "sha256": "ea91606a2d050e7dbf32c88682c150b1237734815bfea03de21b077dd1f252fe"
            },
            "downloads": -1,
            "filename": "rexf-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "4c73949a4d7b3b59f2b5a8bec32aab91",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 31226,
            "upload_time": "2025-08-16T20:13:08",
            "upload_time_iso_8601": "2025-08-16T20:13:08.291027Z",
            "url": "https://files.pythonhosted.org/packages/e1/db/b1a56b60fcc83b95e13e68af1e4f99a414ccf1afac20ff49acb34700ea92/rexf-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-16 20:13:08",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "dhruv1110",
    "github_project": "rexf",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "numpy",
            "specs": [
                [
                    ">=",
                    "1.20.0"
                ]
            ]
        },
        {
            "name": "matplotlib",
            "specs": [
                [
                    ">=",
                    "3.3.0"
                ]
            ]
        },
        {
            "name": "pandas",
            "specs": [
                [
                    ">=",
                    "1.3.0"
                ]
            ]
        },
        {
            "name": "pyyaml",
            "specs": [
                [
                    ">=",
                    "6.0"
                ]
            ]
        },
        {
            "name": "gitpython",
            "specs": [
                [
                    ">=",
                    "3.1.0"
                ]
            ]
        }
    ],
    "lcname": "rexf"
}
        
Elapsed time: 0.74710s