Skip to main content

A cross-platform command line utility for bootstrapping and running code with tests

Project description

Code Faster

Cross-platform command line utility for bootstrapping online codes (especially codeforces) and running with automatic testing.

Index


Uses

This package installs two commands:

  • cfetch

    This will fetches the code from given url.

    cfetch <code-url> [language|sample-dir]
    

    Where language can be one of:

    • cpp (default)
    • java
    • py

    If sample-dir is provided instead of language then it'll copy the contents of your sample dir into the created one. Using this you can use your own template for any language whatsoever. However, runner will still work only on supported languages.

    example:

    cfetch http://codeforces.com/problemset/problem/1/A cpp
    

    This will create a folder named CF1-A in the current directory with sample test cases and main.cpp file.

  • crun This will run the file and if there are test cases present in the file's directory it will run them too.

    crun <file-path> [args]
    

    Where args are compiler args for compiled languages like c++ and java.

    example:

    crun CF1-A\main.cpp
    

    This will create a folder for binaries in the file's directory with the output of sample tests. It will also generates the test report.


Example

First we will fetch a problem from codeforces.com

> cfetch http://codeforces.com/problemset/problem/1/A cpp
CF1-A created
test_1 created
main.cpp created

Now we will try to run it with our sample generated code.

> crun CF1-A\main.cpp
g++  -o CF1-A\bin\main.exe CF1-A\main.cpp
========================================
test_1 FAILED
---------------------------------------- [output]
6
---------------------------------------- [answer]
4
========================================
:( 0/1 passed.

Now fix the main.cpp file to solve the problem.

int main() {
    using namespace std;

    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int n, m, a;
    cin >> n >> m >> a;

    int r = ((n + a - 1) / a) * ((m + a - 1) / a);
    cout << r << '\n';
}
> crun CF1-A\main.cpp
g++  -o CF1-A\bin\main.exe CF1-A\main.cpp
========================================
test_1 PASSED
========================================
:) 1/1 passed.

Installing

You can install from pypi.

pip install code-faster -U

Or, you can install directly from the repository using pip.

pip install git+https://github.com/rahulsrma26/code_faster

Setting up with VSCode

You can set keyboard shortcuts to any editor basically. There are plenty of extensions in VSCode that can do that but for demonstration we will be using Code Runner

For code-runner, edit settings.json file in .vscode folder.

{
    "code-runner.fileDirectoryAsCwd": true,
    "code-runner.runInTerminal": true,
    "code-runner.saveFileBeforeRun": true,
    "code-runner.executorMap": {
        "cpp": "crun $fileName",
        "java": "crun $fileName",
        "python": "crun $fileName"
    }
}

Now to run a file just open it and press control+option+n (on mac) or control+alt+n (on pc).

Note: If you are using conda environments and if it's not added to the path environments (or bash). Then crun may be unaccessible in the terminal by default. So, you either need to activate it in the terminal, or you need to update the shell args.

"terminal.integrated.shellArgs.windows": ["/K", "<conda-install-path>/Scripts/activate && conda activate <your-env>"]

For linux you can change terminal.integrated.shellArgs.linux and for mac change terminal.integrated.shellArgs.osx

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

code_faster-0.2.2.tar.gz (12.0 kB view hashes)

Uploaded Source

Built Distribution

code_faster-0.2.2-py3-none-any.whl (13.2 kB view hashes)

Uploaded Python 3

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