✓ Verified 📱 Social Media ✓ Enhanced Data

Neo Py2py3 Converter

Automatically converts legacy Python 2 code to Python 3 with compatibility checks and test generatio

Rating
4.8 (480 reviews)
Downloads
18,754 downloads
Version
1.0.0

Overview

Automatically converts legacy Python 2 code to Python 3 with compatibility checks and test generation.

Complete Documentation

View Source →

py2py3-converter

1. Introduction

py2py3-converter is an OpenClaw skill that automatically converts legacy Python 2 code to modern Python 3 syntax. It handles the most common migration patterns, generates compatibility reports, and creates unit tests for the converted code.

Python 2 reached end-of-life on January 1, 2020, yet many codebases still contain Python 2 code. This skill automates the tedious work of manual migration, reducing human error and accelerating the upgrade process.

2. Core Capabilities

Conversion Logic

The converter handles these Python 2 → 3 transformations:
  • print statements → print() function calls
  • raw_input()input()
  • xrange()range()
  • unicode()str()
  • basestringstr
  • long type → int
  • dict.has_key(k)k in dict
  • except Exception, eexcept Exception as e
  • raise ValueError, "msg"raise ValueError("msg")
  • Integer division / awareness
  • __future__ import removal
  • iteritems() / itervalues() / iterkeys()items() / values() / keys()
  • reduce()functools.reduce()

Compatibility Checking

After conversion, a compatibility report is generated listing:
  • Warnings for patterns that may need manual review
  • Errors for constructs that could not be safely converted
  • Informational notes about behavior changes

Test Generation

For each converted file, a companion pytest test file is generated that:
  • Validates syntax correctness of converted code
  • Tests key functions for expected behavior
  • Covers detected edge cases

3. Edge Cases Handling

Print Statements

  • print "hello"print("hello")
  • print "a", "b"print("a", "b")
  • print >> sys.stderr, "err"print("err", file=sys.stderr)
  • print() already valid → left unchanged

String/Bytes Compatibility

  • u"string" prefix → "string" (default in Python 3)
  • Warns about b"bytes" patterns that may need review
  • basestring references → str

Import Resolution

  • from __future__ import print_function → removed (default in Python 3)
  • import urllib2import urllib.request
  • import ConfigParserimport configparser
  • reduce → adds from functools import reduce

4. CLI Interface

Command Syntax

bash
# Convert a file
node scripts/cli.js convert --input path/to/py2file.py --output path/to/py3file.py

# Convert from stdin
cat py2file.py | node scripts/cli.js convert

# Convert and generate tests
node scripts/cli.js convert --input file.py --output converted.py --generate-tests

# Show compatibility report only
node scripts/cli.js check --input file.py

Exit Codes

  • 0 - Conversion successful, no errors
  • 1 - Conversion completed with warnings
  • 2 - Conversion failed due to errors

5. Integration

OpenClaw Agent Workflow

Agents invoke the skill via the CLI interface. The standard workflow:
  • Agent receives Python 2 code from user
  • Agent calls node scripts/cli.js convert --input
  • Skill returns converted code + compatibility report
  • Agent presents results to user

API Contract

Input:
json
{
  "code": "print 'hello world'",
  "options": {
    "generateTests": false,
    "keepWarnings": true
  }
}

Output:

json
{
  "convertedCode": "print('hello world')",
  "issues": [
    {
      "type": "info",
      "line": 1,
      "message": "Converted print statement to function call"
    }
  ]
}

Installation

Terminal bash

openclaw install neo-py2py3-converter
    
Copied!

💻Code Examples

### Command Syntax

-command-syntax.sh
# Convert a file
node scripts/cli.js convert --input path/to/py2file.py --output path/to/py3file.py

# Convert from stdin
cat py2file.py | node scripts/cli.js convert

# Convert and generate tests
node scripts/cli.js convert --input file.py --output converted.py --generate-tests

# Show compatibility report only
node scripts/cli.js check --input file.py

**Input:**

input.json
{
  "code": "print 'hello world'",
  "options": {
    "generateTests": false,
    "keepWarnings": true
  }
}

**Output:**

output.json
{
  "convertedCode": "print('hello world')",
  "issues": [
    {
      "type": "info",
      "line": 1,
      "message": "Converted print statement to function call"
    }
  ]
}

Tags

#communication #code

Quick Info

Category Social Media
Model Claude 3.5
Complexity One-Click
Author martinforsulu
Last Updated 3/10/2026
🚀
Optimized for
Claude 3.5
🧠

Ready to Install?

Get started with this skill in seconds

openclaw install neo-py2py3-converter