solderx


Namesolderx JSON
Version 0.1.0 PyPI version JSON
download
home_pagehttps://github.com/sidarth16/solderx
Summaryโšก๏ธ SolderX โ€“ Melt Imports. Solder Solidity. Flatten Everything ๐Ÿ”ฅ
upload_time2025-07-24 04:51:03
maintainerNone
docs_urlNone
authorSidarth S
requires_python>=3.8
licenseMIT
keywords solidity flattener smart-contracts cli etherscan imports
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # โšก๏ธ SolderX โ€“ Fuse, Flatten & Forge Solidity Contracts ๐Ÿ”ฅ
> **The Smart Contract Flattener tool- that Melts your imports, Solders your contracts & Forges into a single fused output.**


**SolderX** is a developer-first, all-in-one Solidity flattener that handles files, folders, and also verified contracts from various Explorers (on-the-fly) โ€” with robust import resolutions, complex remapping support, SPDX unification, topological sorting, import ordering & cyclic detection.

Whether you're preparing for Etherscan (re)verification, security reviews, or tooling integrations like Slither or Mythril, *SolderX* fuses your contracts into a clean, flattened `.sol` file in seconds.

---

[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

---
## ๐Ÿ’ญ Why use SolderX ? :
SolderX handles all:
- โœ… Flatten a single file, full project, or verified explorer contract
- โœ… Supports remappings, relative imports, and complex cycles
- โœ… Parses and flattens in-memory โ€” no .sol clutter from explorer downloads
>One CLI + Python tool โ€” clean output, ready for audit.

Most flatteners break on remappings, folder imports, Etherscan blobs or doesnt support everything.



## ๐Ÿš€ Features Overview

| ๐Ÿ”ง Feature                          | ๐Ÿง  Description                                                                 | โœ… Status      |
|------------------------------------|--------------------------------------------------------------------------------|----------------|
| ๐Ÿ”ฉ **Flatten Everything**          | Flatten from single files, full folders, or on-chain verified contracts        | โœ…             |
| ๐Ÿง  **Smart Import Resolver**       | Handles nested imports, multiline/same-line cases, and deduplicates cleanly    | โœ…             |
| ๐Ÿ“ฆ **Scan from Explorers**         | Supports Etherscan, Polygonscan, BscScan, Arbiscan, Base, Optimism, Avalanche  | โœ…             |
| ๐Ÿ“„ **In-Memory Flattening**  | **No temp or unflattened junk files saved โ€” All flattening done in-memory**                  | โœ…             |
| ๐Ÿช„ **Remapping Support**           | Supports & resolves robust remappings (basic, deep, longest-match)                       | โœ… (file)      |
| ๐Ÿงญ **Relative Imports in Remappings** | Resolves `./` and `../` paths even within remapped libraries                 | โœ… (file)      |
| ๐Ÿ”Ž **Import Parsing Engine**       | Extracts imports safely โ€” ignores inside comments and strings                  | โœ…             |
| ๐Ÿงฑ **Cyclic Import Detection**     | Flags and breaks infinite loops in import trees                                | โœ…             |
| ๐Ÿ“ **Folder-Aware Flattening**     | Detects and blocks out-of-scope imports across folder boundaries               | โœ…             |
| ๐Ÿ”— **Chain + Address Validation**  | Catches malformed contract addresses and unsupported chains                    | โœ…             |
| ๐Ÿ“„ **SPDX Header Merging**        | Deduplicates and merges license headers cleanly                                | โœ…             |
| ๐Ÿงฑ **Import Deduplication**        | Ensures each dependency is flattened only once                                 | โœ…             |
| ๐Ÿงฐ **Python API Support**          | Expose all core functions (`file`, `folder`, `scan`) via clean Python API      | โœ…             |
| ๐Ÿ’ป **Themed CLI Interface**        | Minimal, expressive CLI with emoji-based output and colored logs               | โœ…             |
| โšก **Fast & Lightweight**          | Built with Python, no heavy dependencies                                       | โœ…             |
| ๐Ÿ”Ž **Static Analysis Ready**       | Output works with all static analyzers                                | โœ…             |
| ๐Ÿ”ง **Pluggable Design**            | Designed to extend โ€” GitHub flattening, config aliasing, IDE plugins           | ๐Ÿ”ง Planned     |

---

## ๐ŸฅŠ How SolderX Compares :

```
โš ๏ธ Note: This comparison is a working draft. Feature support for third-party tools may be evolving, and accuracy is based on current public documentation and observed behavior. Final evaluation pending deeper testing.
```

| Feature                                    | [**SolderX**](https://github.com/your-org/solderx) | Hardhat / Foundry / Remix | [poa/solidity-flattener](https://github.com/poanetwork/solidity-flattener) | [solidity-flattener](https://github.com/BlockCatIO/solidity-flattener) | [truffle-flattener](https://github.com/nomiclabs/truffle-flattener) | [sol-merger](https://github.com/RyuuGan/sol-merger) | [slither-flatten](https://github.com/crytic/slither) |
|--------------------------------------------|----------------|-----------------------------|-------------------------|---------------------|--------------------|-------------|------------------|
| ๐Ÿงฉ Standalone file flattening              | โœ…             | โœ…                          | โœ…                      | โœ…                  | โœ…                 | โœ…          | โœ…               |
| ๐Ÿ“ Folder/project flattening               | โœ…             | โŒ                          | โŒ                      | โš ๏ธ Limited          | โš ๏ธ Partial         | โœ…          | โŒ               |
| ๐ŸŒ Etherscan flattening (verified source)  | โœ…             | โŒ                          | โŒ                      | โŒ                  | โŒ                 | โŒ          | โœ…               |
| โšก On-the-fly (no temp files saved)        | โœ…             | โŒ                          | โŒ                      | โŒ                  | โŒ                 | โŒ          | โŒ               |
| ๐Ÿ”„ Smart remapping resolution (`@...`)     | โœ… Deep        | โš ๏ธ Hardcoded               | โŒ                      | โŒ                  | โŒ                 | โœ… Basic    | โŒ               |
| ๐Ÿ“š Relative imports in remapped libs       | โœ…             | โŒ                          | โŒ                      | โŒ                  | โŒ                 | โŒ          | โŒ               |
| ๐Ÿงช Multiline & nested import handling      | โœ…             | โš ๏ธ Partial                 | โŒ                      | โŒ                  | โŒ                 | โŒ          | โŒ               |
| โ™ป๏ธ Cyclic import detection & handling      | โœ…             | โŒ                          | โŒ                      | โŒ                  | โŒ                 | โŒ          | โŒ               |
| ๐Ÿงน SPDX / license metadata cleanup         | โœ…             | โŒ                          | โŒ                      | โŒ                  | โŒ                 | โŒ          | โŒ               |
| ๐Ÿงฌ Deduplicated output                     | โœ…             | โŒ                          | โŒ                      | โŒ                  | โŒ                 | โš ๏ธ Partial | โŒ               |
| ๐Ÿง  Comment-aware import extraction         | โœ…             | โŒ                          | โŒ                      | โŒ                  | โŒ                 | โŒ          | โŒ               |
| ๐Ÿ Python API support                      | โœ…             | โŒ                          | โŒ                      | โŒ                  | โŒ                 | โŒ          | โœ…               |
| ๐Ÿ’ป CLI with themed logs                    | โœ…             | โš ๏ธ Basic                   | โŒ                      | โŒ                  | โœ… Basic           | โŒ          | โš ๏ธ Minimal       |
| ๐Ÿ” Slither-compatible output               | โœ…             | โœ…                          | โš ๏ธ Maybe                | โš ๏ธ Maybe            | โš ๏ธ Maybe           | โš ๏ธ Maybe   | โœ…               |
| ๐Ÿšซ Chain/address validation (Etherscan)    | โœ…             | โŒ                          | โŒ                      | โŒ                  | โŒ                 | โŒ          | โŒ               |
| ๐Ÿ”ง Future-ready: GitHub flattening, aliases| โœ… Planned     | โŒ                          | โŒ                      | โŒ                  | โŒ                 | โŒ          | โš ๏ธ Limited       |
| ๐Ÿง  Maintained actively                     | โœ…             | โœ…                          | โŒ                      | โŒ                  | โŒ                 | โš ๏ธ Rare    | โœ…               |


<br/>

>**โšก๏ธ SolderX** is the only tool that combines **all flattening modes** into a single interface โ€” file, folder, or Etherscan โ€” and handles real-world Solidity quirks out of the box.


---

## ๐Ÿ“ฆ Installation

```bash
pip install solderx
```

## ๐Ÿง‘โ€๐Ÿ’ป CLI Usage

```bash
# Simple file
solderx MyContract.sol

# Simple file with output path
solderx MyContract.sol --output MyContract_Flat.sol

# With remappings
solderx path/to/Contract.sol -r remappings.json
```
```bash
# Project folder with inline remapping
solderx src/ --remappings "@a=lib/a,@b=node_modules/b"

# With a remappings json
solderx project/contracts --remappings remappings.json

# With remappings and output filepath
solderx path/to/project/ -r remappings.json -o flattened/soldered_project.sol
```
```bash
# fetch from etherscan 
solderx 0xAbC...123 -chain eth --api-key YOUR_API_KEY

# also fetch from etherscan 
solderx eth:0xAbC...123 --api-key YOUR_API_KEY

```

## ๐Ÿ Python API Usage
```python
from solderx import solder_file, solder_folder, solder_scan

# ๐Ÿ”น 1. Flatten a single file
flattened_code = solder_file("path/to/Contract.sol")

# With remappings
flattened_code = solder_file("path/to/Contract.sol", remappings={"@oz": "lib/openzeppelin-contracts"})


# ๐Ÿ”น 2. Flatten an entire folder
flattened_code = solderx("contracts/")

# With remappings
flattened_code = solder_file("path/to/Contract.sol", remappings={"@oz": "lib/openzeppelin-contracts"})


# ๐Ÿ”น 3. Flatten from verified explorer source

# Flatten from Etherscan
flattened_code = solderx("0x123..789", chain = 'eth')

flattened_code = solderx("eth:0x123..789")


# ๐Ÿ”น save file (default = False)
_ = solder_file("path/to/Contract.sol", save_file=True)

# save file in specified path
_ = solder_file("path/to/Contract.sol", output_path='./Contract_Flat.sol')
```

---

## ๐Ÿ”ฎ Roadmap & Future Additions

- [ ] ๐Ÿ› ๏ธ Aliasing via config file (`solidify.toml`)
- [ ] ๐ŸŒ Github repo flattening
- [ ] ๐Ÿงน Strip comments (inline, block, NatSpec - toggleable)
- [ ] ๐Ÿงช `solc` output validation (AST / compile test)
- [ ] ๐Ÿ”Œ Plugin support: `slither`, `mythril`, `sourcify`
- [ ] ๐Ÿ” Flatten by contract name (regex filtering)
- [ ] ๐ŸŒˆ Color logs and interactive CLI summaries

---

## ๐Ÿง‘โ€๐Ÿ”ง Contributing

Pull requests are welcome!  
If youโ€™ve found a bug, a confusing case, or have feature ideas โ€” open an issue or discussion on the repo.

Weโ€™re building this tool for Solidity developers like you.

---

## ๐Ÿงช Real Use Cases

- ๐Ÿ” **Re-verify** contracts on Etherscan after audits or refactors
- ๐Ÿ›ก๏ธ **Feed single files** into static analyzers like Slither, Mythril, Semgrep
- ๐Ÿงฉ **Compare bytecode** outputs between flattened and deployed versions
- ๐Ÿ“– **Onboard contributors** by flattening large repos for easier reading
- ๐Ÿงฐ **Pipeline-ready** for CI/CD, security scans, or deployment packaging

---
## Test Summary : 
| Category | `solder_file()` | `solder_folder()` | `solder_scan()` |
| --- | --- | --- | --- |
| Flat imports | โœ… | โœ… | โœ… |
| Nested imports | โœ… | โœ… | โœ… |
| Save Flat File | โœ… | โœ… | โœ… |
| Multiline imports | โœ… | โœ… | โœ… |
| Multiple imports on same line | โœ… | โœ… | โœ… |
| Missing import (in-scope) | โœ… | โœ… | โœ… |
| Missing import (out-of-scope) | N/A | โœ… | โœ… |
| Import outside folder scope detection | N/A | โœ… | โœ… |
| Cyclic imports | โœ… | โœ… | โœ… |
| Remapping (basic + deep + longest) | โœ…โœ…โœ… | ๐Ÿ”ง N/A | ๐Ÿ”ง N/A |
| SPDX header merging | โœ… | โœ… | โœ… |
| Import deduplication | โœ… | โœ… | โœ… |
| Handle empty files | โœ… | โœ… | โœ… |
| Relative imports in remapped libs | โœ… | ๐Ÿ”ง N/A | ๐Ÿ”ง N/A |
| **Relative import resolution** | โœ… | โœ… | โœ… |
| Flattened & multi-file JSON parsing | N/A | N/A | โœ… |
| Contract name parsing | N/A | N/A | โœ… |
| **Chain support handling** | N/A | N/A | โœ… |
| **Invalid address handling** | N/A | N/A | โœ… |
---
>All core behaviors are verified using Pytest.<br/>
>Want more scenarios covered? [Open an issue](https://github.com/your-repo/issues)


## ๐Ÿ“„ License

**MIT License**  
ยฉ 2025 โ€” Built with โค๏ธ for devs who are tired of broken flatteners and half-baked tools.

---



## ๐Ÿ’ฌ Support & Updates

Stay tuned for updates โ€” more chains, integrations, and dev-focused features are coming.

๐Ÿ‘‰ Follow development, submit issues, or request features on the GitHub repo.  
Letโ€™s Solidify and make Solidity flattening reliable, smart, and painless.

---

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/sidarth16/solderx",
    "name": "solderx",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "solidity, flattener, smart-contracts, cli, etherscan, imports",
    "author": "Sidarth S",
    "author_email": "Sidarth S <ssidarth1999@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/2e/b3/b93a4a3582e182b79d80fef6f35521db0ece281c336bba66e38bbdffdeba/solderx-0.1.0.tar.gz",
    "platform": null,
    "description": "# \u26a1\ufe0f SolderX \u2013 Fuse, Flatten & Forge Solidity Contracts \ud83d\udd25\n> **The Smart Contract Flattener tool- that Melts your imports, Solders your contracts & Forges into a single fused output.**\n\n\n**SolderX** is a developer-first, all-in-one Solidity flattener that handles files, folders, and also verified contracts from various Explorers (on-the-fly) \u2014 with robust import resolutions, complex remapping support, SPDX unification, topological sorting, import ordering & cyclic detection.\n\nWhether you're preparing for Etherscan (re)verification, security reviews, or tooling integrations like Slither or Mythril, *SolderX* fuses your contracts into a clean, flattened `.sol` file in seconds.\n\n---\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n---\n## \ud83d\udcad Why use SolderX ? :\nSolderX handles all:\n- \u2705 Flatten a single file, full project, or verified explorer contract\n- \u2705 Supports remappings, relative imports, and complex cycles\n- \u2705 Parses and flattens in-memory \u2014 no .sol clutter from explorer downloads\n>One CLI + Python tool \u2014 clean output, ready for audit.\n\nMost flatteners break on remappings, folder imports, Etherscan blobs or doesnt support everything.\n\n\n\n## \ud83d\ude80 Features Overview\n\n| \ud83d\udd27 Feature                          | \ud83e\udde0 Description                                                                 | \u2705 Status      |\n|------------------------------------|--------------------------------------------------------------------------------|----------------|\n| \ud83d\udd29 **Flatten Everything**          | Flatten from single files, full folders, or on-chain verified contracts        | \u2705             |\n| \ud83e\udde0 **Smart Import Resolver**       | Handles nested imports, multiline/same-line cases, and deduplicates cleanly    | \u2705             |\n| \ud83d\udce6 **Scan from Explorers**         | Supports Etherscan, Polygonscan, BscScan, Arbiscan, Base, Optimism, Avalanche  | \u2705             |\n| \ud83d\udcc4 **In-Memory Flattening**  | **No temp or unflattened junk files saved \u2014 All flattening done in-memory**                  | \u2705             |\n| \ud83e\ude84 **Remapping Support**           | Supports & resolves robust remappings (basic, deep, longest-match)                       | \u2705 (file)      |\n| \ud83e\udded **Relative Imports in Remappings** | Resolves `./` and `../` paths even within remapped libraries                 | \u2705 (file)      |\n| \ud83d\udd0e **Import Parsing Engine**       | Extracts imports safely \u2014 ignores inside comments and strings                  | \u2705             |\n| \ud83e\uddf1 **Cyclic Import Detection**     | Flags and breaks infinite loops in import trees                                | \u2705             |\n| \ud83d\udcc1 **Folder-Aware Flattening**     | Detects and blocks out-of-scope imports across folder boundaries               | \u2705             |\n| \ud83d\udd17 **Chain + Address Validation**  | Catches malformed contract addresses and unsupported chains                    | \u2705             |\n| \ud83d\udcc4 **SPDX Header Merging**        | Deduplicates and merges license headers cleanly                                | \u2705             |\n| \ud83e\uddf1 **Import Deduplication**        | Ensures each dependency is flattened only once                                 | \u2705             |\n| \ud83e\uddf0 **Python API Support**          | Expose all core functions (`file`, `folder`, `scan`) via clean Python API      | \u2705             |\n| \ud83d\udcbb **Themed CLI Interface**        | Minimal, expressive CLI with emoji-based output and colored logs               | \u2705             |\n| \u26a1 **Fast & Lightweight**          | Built with Python, no heavy dependencies                                       | \u2705             |\n| \ud83d\udd0e **Static Analysis Ready**       | Output works with all static analyzers                                | \u2705             |\n| \ud83d\udd27 **Pluggable Design**            | Designed to extend \u2014 GitHub flattening, config aliasing, IDE plugins           | \ud83d\udd27 Planned     |\n\n---\n\n## \ud83e\udd4a How SolderX Compares :\n\n```\n\u26a0\ufe0f Note: This comparison is a working draft. Feature support for third-party tools may be evolving, and accuracy is based on current public documentation and observed behavior. Final evaluation pending deeper testing.\n```\n\n| Feature                                    | [**SolderX**](https://github.com/your-org/solderx) | Hardhat / Foundry / Remix | [poa/solidity-flattener](https://github.com/poanetwork/solidity-flattener) | [solidity-flattener](https://github.com/BlockCatIO/solidity-flattener) | [truffle-flattener](https://github.com/nomiclabs/truffle-flattener) | [sol-merger](https://github.com/RyuuGan/sol-merger) | [slither-flatten](https://github.com/crytic/slither) |\n|--------------------------------------------|----------------|-----------------------------|-------------------------|---------------------|--------------------|-------------|------------------|\n| \ud83e\udde9 Standalone file flattening              | \u2705             | \u2705                          | \u2705                      | \u2705                  | \u2705                 | \u2705          | \u2705               |\n| \ud83d\udcc1 Folder/project flattening               | \u2705             | \u274c                          | \u274c                      | \u26a0\ufe0f Limited          | \u26a0\ufe0f Partial         | \u2705          | \u274c               |\n| \ud83c\udf10 Etherscan flattening (verified source)  | \u2705             | \u274c                          | \u274c                      | \u274c                  | \u274c                 | \u274c          | \u2705               |\n| \u26a1 On-the-fly (no temp files saved)        | \u2705             | \u274c                          | \u274c                      | \u274c                  | \u274c                 | \u274c          | \u274c               |\n| \ud83d\udd04 Smart remapping resolution (`@...`)     | \u2705 Deep        | \u26a0\ufe0f Hardcoded               | \u274c                      | \u274c                  | \u274c                 | \u2705 Basic    | \u274c               |\n| \ud83d\udcda Relative imports in remapped libs       | \u2705             | \u274c                          | \u274c                      | \u274c                  | \u274c                 | \u274c          | \u274c               |\n| \ud83e\uddea Multiline & nested import handling      | \u2705             | \u26a0\ufe0f Partial                 | \u274c                      | \u274c                  | \u274c                 | \u274c          | \u274c               |\n| \u267b\ufe0f Cyclic import detection & handling      | \u2705             | \u274c                          | \u274c                      | \u274c                  | \u274c                 | \u274c          | \u274c               |\n| \ud83e\uddf9 SPDX / license metadata cleanup         | \u2705             | \u274c                          | \u274c                      | \u274c                  | \u274c                 | \u274c          | \u274c               |\n| \ud83e\uddec Deduplicated output                     | \u2705             | \u274c                          | \u274c                      | \u274c                  | \u274c                 | \u26a0\ufe0f Partial | \u274c               |\n| \ud83e\udde0 Comment-aware import extraction         | \u2705             | \u274c                          | \u274c                      | \u274c                  | \u274c                 | \u274c          | \u274c               |\n| \ud83d\udc0d Python API support                      | \u2705             | \u274c                          | \u274c                      | \u274c                  | \u274c                 | \u274c          | \u2705               |\n| \ud83d\udcbb CLI with themed logs                    | \u2705             | \u26a0\ufe0f Basic                   | \u274c                      | \u274c                  | \u2705 Basic           | \u274c          | \u26a0\ufe0f Minimal       |\n| \ud83d\udd0d Slither-compatible output               | \u2705             | \u2705                          | \u26a0\ufe0f Maybe                | \u26a0\ufe0f Maybe            | \u26a0\ufe0f Maybe           | \u26a0\ufe0f Maybe   | \u2705               |\n| \ud83d\udeab Chain/address validation (Etherscan)    | \u2705             | \u274c                          | \u274c                      | \u274c                  | \u274c                 | \u274c          | \u274c               |\n| \ud83d\udd27 Future-ready: GitHub flattening, aliases| \u2705 Planned     | \u274c                          | \u274c                      | \u274c                  | \u274c                 | \u274c          | \u26a0\ufe0f Limited       |\n| \ud83e\udde0 Maintained actively                     | \u2705             | \u2705                          | \u274c                      | \u274c                  | \u274c                 | \u26a0\ufe0f Rare    | \u2705               |\n\n\n<br/>\n\n>**\u26a1\ufe0f SolderX** is the only tool that combines **all flattening modes** into a single interface \u2014 file, folder, or Etherscan \u2014 and handles real-world Solidity quirks out of the box.\n\n\n---\n\n## \ud83d\udce6 Installation\n\n```bash\npip install solderx\n```\n\n## \ud83e\uddd1\u200d\ud83d\udcbb CLI Usage\n\n```bash\n# Simple file\nsolderx MyContract.sol\n\n# Simple file with output path\nsolderx MyContract.sol --output MyContract_Flat.sol\n\n# With remappings\nsolderx path/to/Contract.sol -r remappings.json\n```\n```bash\n# Project folder with inline remapping\nsolderx src/ --remappings \"@a=lib/a,@b=node_modules/b\"\n\n# With a remappings json\nsolderx project/contracts --remappings remappings.json\n\n# With remappings and output filepath\nsolderx path/to/project/ -r remappings.json -o flattened/soldered_project.sol\n```\n```bash\n# fetch from etherscan \nsolderx 0xAbC...123 -chain eth --api-key YOUR_API_KEY\n\n# also fetch from etherscan \nsolderx eth:0xAbC...123 --api-key YOUR_API_KEY\n\n```\n\n## \ud83d\udc0d Python API Usage\n```python\nfrom solderx import solder_file, solder_folder, solder_scan\n\n# \ud83d\udd39 1. Flatten a single file\nflattened_code = solder_file(\"path/to/Contract.sol\")\n\n# With remappings\nflattened_code = solder_file(\"path/to/Contract.sol\", remappings={\"@oz\": \"lib/openzeppelin-contracts\"})\n\n\n# \ud83d\udd39 2. Flatten an entire folder\nflattened_code = solderx(\"contracts/\")\n\n# With remappings\nflattened_code = solder_file(\"path/to/Contract.sol\", remappings={\"@oz\": \"lib/openzeppelin-contracts\"})\n\n\n# \ud83d\udd39 3. Flatten from verified explorer source\n\n# Flatten from Etherscan\nflattened_code = solderx(\"0x123..789\", chain = 'eth')\n\nflattened_code = solderx(\"eth:0x123..789\")\n\n\n# \ud83d\udd39 save file (default = False)\n_ = solder_file(\"path/to/Contract.sol\", save_file=True)\n\n# save file in specified path\n_ = solder_file(\"path/to/Contract.sol\", output_path='./Contract_Flat.sol')\n```\n\n---\n\n## \ud83d\udd2e Roadmap & Future Additions\n\n- [ ] \ud83d\udee0\ufe0f Aliasing via config file (`solidify.toml`)\n- [ ] \ud83c\udf10 Github repo flattening\n- [ ] \ud83e\uddf9 Strip comments (inline, block, NatSpec - toggleable)\n- [ ] \ud83e\uddea `solc` output validation (AST / compile test)\n- [ ] \ud83d\udd0c Plugin support: `slither`, `mythril`, `sourcify`\n- [ ] \ud83d\udd0d Flatten by contract name (regex filtering)\n- [ ] \ud83c\udf08 Color logs and interactive CLI summaries\n\n---\n\n## \ud83e\uddd1\u200d\ud83d\udd27 Contributing\n\nPull requests are welcome!  \nIf you\u2019ve found a bug, a confusing case, or have feature ideas \u2014 open an issue or discussion on the repo.\n\nWe\u2019re building this tool for Solidity developers like you.\n\n---\n\n## \ud83e\uddea Real Use Cases\n\n- \ud83d\udd01 **Re-verify** contracts on Etherscan after audits or refactors\n- \ud83d\udee1\ufe0f **Feed single files** into static analyzers like Slither, Mythril, Semgrep\n- \ud83e\udde9 **Compare bytecode** outputs between flattened and deployed versions\n- \ud83d\udcd6 **Onboard contributors** by flattening large repos for easier reading\n- \ud83e\uddf0 **Pipeline-ready** for CI/CD, security scans, or deployment packaging\n\n---\n## Test Summary : \n| Category | `solder_file()` | `solder_folder()` | `solder_scan()` |\n| --- | --- | --- | --- |\n| Flat imports | \u2705 | \u2705 | \u2705 |\n| Nested imports | \u2705 | \u2705 | \u2705 |\n| Save Flat File | \u2705 | \u2705 | \u2705 |\n| Multiline imports | \u2705 | \u2705 | \u2705 |\n| Multiple imports on same line | \u2705 | \u2705 | \u2705 |\n| Missing import (in-scope) | \u2705 | \u2705 | \u2705 |\n| Missing import (out-of-scope) | N/A | \u2705 | \u2705 |\n| Import outside folder scope detection | N/A | \u2705 | \u2705 |\n| Cyclic imports | \u2705 | \u2705 | \u2705 |\n| Remapping (basic + deep + longest) | \u2705\u2705\u2705 | \ud83d\udd27 N/A | \ud83d\udd27 N/A |\n| SPDX header merging | \u2705 | \u2705 | \u2705 |\n| Import deduplication | \u2705 | \u2705 | \u2705 |\n| Handle empty files | \u2705 | \u2705 | \u2705 |\n| Relative imports in remapped libs | \u2705 | \ud83d\udd27 N/A | \ud83d\udd27 N/A |\n| **Relative import resolution** | \u2705 | \u2705 | \u2705 |\n| Flattened & multi-file JSON parsing | N/A | N/A | \u2705 |\n| Contract name parsing | N/A | N/A | \u2705 |\n| **Chain support handling** | N/A | N/A | \u2705 |\n| **Invalid address handling** | N/A | N/A | \u2705 |\n---\n>All core behaviors are verified using Pytest.<br/>\n>Want more scenarios covered? [Open an issue](https://github.com/your-repo/issues)\n\n\n## \ud83d\udcc4 License\n\n**MIT License**  \n\u00a9 2025 \u2014 Built with \u2764\ufe0f for devs who are tired of broken flatteners and half-baked tools.\n\n---\n\n\n\n## \ud83d\udcac Support & Updates\n\nStay tuned for updates \u2014 more chains, integrations, and dev-focused features are coming.\n\n\ud83d\udc49 Follow development, submit issues, or request features on the GitHub repo.  \nLet\u2019s Solidify and make Solidity flattening reliable, smart, and painless.\n\n---\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "\u26a1\ufe0f SolderX \u2013 Melt Imports. Solder Solidity. Flatten Everything \ud83d\udd25",
    "version": "0.1.0",
    "project_urls": {
        "Homepage": "https://github.com/sidarth16/solderx"
    },
    "split_keywords": [
        "solidity",
        " flattener",
        " smart-contracts",
        " cli",
        " etherscan",
        " imports"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "98a112cb72c21c4dae79a417a4224f57d4059ae84b3dcc8265b8b74d96fa075c",
                "md5": "23e3f056e0477b44b68d543f26f0b75f",
                "sha256": "83184818d75f0bca4aeadef8155ce64ab715e12741b181441d5fe2bde77fc308"
            },
            "downloads": -1,
            "filename": "solderx-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "23e3f056e0477b44b68d543f26f0b75f",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 17313,
            "upload_time": "2025-07-24T04:51:01",
            "upload_time_iso_8601": "2025-07-24T04:51:01.822057Z",
            "url": "https://files.pythonhosted.org/packages/98/a1/12cb72c21c4dae79a417a4224f57d4059ae84b3dcc8265b8b74d96fa075c/solderx-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2eb3b93a4a3582e182b79d80fef6f35521db0ece281c336bba66e38bbdffdeba",
                "md5": "f4bbe24d3f315c7039d23ed1aaaf3d65",
                "sha256": "6cbb5c5d03c620f2122f0564427add2a7b73665270fe0f2f6004e03266039955"
            },
            "downloads": -1,
            "filename": "solderx-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "f4bbe24d3f315c7039d23ed1aaaf3d65",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 22243,
            "upload_time": "2025-07-24T04:51:03",
            "upload_time_iso_8601": "2025-07-24T04:51:03.518948Z",
            "url": "https://files.pythonhosted.org/packages/2e/b3/b93a4a3582e182b79d80fef6f35521db0ece281c336bba66e38bbdffdeba/solderx-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-24 04:51:03",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "sidarth16",
    "github_project": "solderx",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "solderx"
}
        
Elapsed time: 1.17360s