Skip to main content

A CLI app to run any given Leetcode python solution.

Project description

python_leetcode_runner

Test your leetcode Python solutions locally.

demo image

Installation

pip install python-leetcode-runner

Usage

I have a beginner's guide over here

Say your solution file add_numbers.py looks like this:

class Solution:
    def addNumbers(self, x: int, y: int) -> int:
        return x + y

All you need to add to the file is a few test cases, usually provided to you in the leetcode question description:

class Solution:
    def addNumbers(self, x: int, y: int) -> int:
        return x + y

tests = [
    (
        (2, 4,),      # input tuple
        6,            # output
    ),
    (
        (45, 67,),    # input tuple
        112,          # output
    ),
]

Now, run the code locally by doing:

> pyleet add_numbers.py
Test 1 - ([1, 2, 3])......................................................PASSED
Test 2 - ([4, 5, 6, 7])...................................................PASSED

Custom Validators

In some questions, you don't just have to match expected output with function output. For eg, in some questions it might ask you to modify a list in-place, or some questions might have many acceptable answers.

For that case, you can provide your own custom validator function.

A validator is a function that receives 3 arguments:

  • method: your leetcode solution function
  • inputs: your test inputs tuple
  • expected: your expected test output value

To make assertions, you have to use assert statements in the following way:

assert output == expected, (output, expected)  # this tuple is important!

For example, let's add custom validation to the addNumbers method:

class Solution:
    def addNumbers(self, nums: list[int]) -> int:
        return sum(nums)

tests = [
    (
        ([1, 2, 3],),     # input tuple
        6,                # output
    ),
    (
        ([4, 5, 6, 7],),  # input tuple
        22,               # output
    ),
]

def validator(addNumbers, inputs, expected):
    nums = inputs[0]
    output = addNumbers(nums)
    assert output == expected, (output, expected)

Here's a more elaborate example, remove_duplicates:

class Solution:
    def removeDuplicates(self, nums: list[int]) -> int:
        offset = 0
        values: set[int] = set()
        for index, num in enumerate(nums):
            nums[index - offset] = num

            if num in values:
                offset += 1
            else:
                values.add(num)

        new_length = len(nums) - offset
        return new_length


tests = [
    (
        ([1, 1, 2],),
        (2, [1, 2]),
    ),
    (
        ([0, 0, 1, 1, 1, 2, 2, 3, 3, 4],),
        (5, [0, 1, 2, 3, 4]),
    ),
]


def validator(removeDuplicates, inputs, outputs):
    nums, = inputs
    length, expected = outputs

    new_length = removeDuplicates(nums)

    assert length == new_length, (length, new_length)
    assert nums[:new_length] == expected, (nums[:new_length], expected)

Run the file against sample inputs by doing:

> pyleet remove_duplicates.py
Test 1 - ([1, 2, 2])......................................................PASSED
Test 2 - ([0, 1, 2, 3, 4, 2, 2, 3, 3, 4]).................................PASSED

Code Snippets

If you're using VSCode, you can use the provided code snippets to help write the test cases faster.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_leetcode_runner-1.0.9.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

python_leetcode_runner-1.0.9-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file python_leetcode_runner-1.0.9.tar.gz.

File metadata

  • Download URL: python_leetcode_runner-1.0.9.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.9.5

File hashes

Hashes for python_leetcode_runner-1.0.9.tar.gz
Algorithm Hash digest
SHA256 a624a8a6fa9c3e0eded1701ebd71935f3eef1f8d21586f2a8ce05421ca8a66de
MD5 a0aa6298f6790c85c5ec71b4d30cab43
BLAKE2b-256 452d009723fc86c276a8709c78ad1953b12ae4d6cd6b7c67379f230fba26761a

See more details on using hashes here.

File details

Details for the file python_leetcode_runner-1.0.9-py3-none-any.whl.

File metadata

  • Download URL: python_leetcode_runner-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 8.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.9.5

File hashes

Hashes for python_leetcode_runner-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 31e4a0a8b78757aa6ae82607cbbb14ea6bf2fcd99be4c72756bc791108378293
MD5 541ea8c3519880f01121a9b8891d0e01
BLAKE2b-256 1fb476c64b702ed799b46a5bed46cb3a986808d53ca175a56f1d10b43bb81655

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page