Skip to content

Hermanzdosilovic/langs #13

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Dec 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,15 @@ docs = ["sphinx==7.4.7"]

[tool.flake8]
docstring-convention = "numpy"
extend-ignore = ["D205", "D400", "D105", "D100", "D101", "D102", "D103", "F821"]
extend-ignore = [
'D100',
'D101',
'D102',
'D103',
'D104',
'D105',
'D205',
'D400',
'F821',
]
max-line-length = 88
69 changes: 64 additions & 5 deletions src/judge0/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,70 @@ def _get_implicit_client(flavor: Flavor) -> Client:
CE = Flavor.CE
EXTRA_CE = Flavor.EXTRA_CE

# TODO: Let's use getattr and setattr for this language ALIASES and raise an
# exception if a value already exists.
PYTHON = LanguageAlias.PYTHON
ASSEMBLY = LanguageAlias.ASSEMBLY
BASH = LanguageAlias.BASH
BASIC = LanguageAlias.BASIC
BOSQUE = LanguageAlias.BOSQUE
C = LanguageAlias.C
C3 = LanguageAlias.C3
CLOJURE = LanguageAlias.CLOJURE
COBOL = LanguageAlias.COBOL
COMMON_LISP = LanguageAlias.COMMON_LISP
CPP = LanguageAlias.CPP
JAVA = LanguageAlias.JAVA
CPP_GCC = LanguageAlias.CPP_GCC
CPP_CLANG = LanguageAlias.CPP_CLANG
CPP_GCC = LanguageAlias.CPP_GCC
CPP_TEST = LanguageAlias.CPP_TEST
CPP_TEST_CLANG = LanguageAlias.CPP_TEST_CLANG
CPP_TEST_GCC = LanguageAlias.CPP_TEST_GCC
CSHARP = LanguageAlias.CSHARP
CSHARP_DOTNET = LanguageAlias.CSHARP_DOTNET
CSHARP_MONO = LanguageAlias.CSHARP_MONO
CSHARP_TEST = LanguageAlias.CSHARP_TEST
C_CLANG = LanguageAlias.C_CLANG
C_GCC = LanguageAlias.C_GCC
D = LanguageAlias.D
DART = LanguageAlias.DART
ELIXIR = LanguageAlias.ELIXIR
ERLANG = LanguageAlias.ERLANG
EXECUTABLE = LanguageAlias.EXECUTABLE
FORTRAN = LanguageAlias.FORTRAN
FSHARP = LanguageAlias.FSHARP
GO = LanguageAlias.GO
GROOVY = LanguageAlias.GROOVY
HASKELL = LanguageAlias.HASKELL
JAVA = LanguageAlias.JAVA
JAVAFX = LanguageAlias.JAVAFX
JAVASCRIPT = LanguageAlias.JAVASCRIPT
JAVA_JDK = LanguageAlias.JAVA_JDK
JAVA_OPENJDK = LanguageAlias.JAVA_OPENJDK
JAVA_TEST = LanguageAlias.JAVA_TEST
KOTLIN = LanguageAlias.KOTLIN
LUA = LanguageAlias.LUA
MPI_C = LanguageAlias.MPI_C
MPI_CPP = LanguageAlias.MPI_CPP
MPI_PYTHON = LanguageAlias.MPI_PYTHON
MULTI_FILE = LanguageAlias.MULTI_FILE
NIM = LanguageAlias.NIM
OBJECTIVE_C = LanguageAlias.OBJECTIVE_C
OCAML = LanguageAlias.OCAML
OCTAVE = LanguageAlias.OCTAVE
PASCAL = LanguageAlias.PASCAL
PERL = LanguageAlias.PERL
PHP = LanguageAlias.PHP
PLAIN_TEXT = LanguageAlias.PLAIN_TEXT
PROLOG = LanguageAlias.PROLOG
PYTHON = LanguageAlias.PYTHON
PYTHON2 = LanguageAlias.PYTHON2
PYTHON2_PYPY = LanguageAlias.PYTHON2_PYPY
PYTHON3 = LanguageAlias.PYTHON3
PYTHON3_PYPY = LanguageAlias.PYTHON3_PYPY
PYTHON_FOR_ML = LanguageAlias.PYTHON_FOR_ML
PYTHON_PYPY = LanguageAlias.PYTHON_PYPY
R = LanguageAlias.R
RUBY = LanguageAlias.RUBY
RUST = LanguageAlias.RUST
SCALA = LanguageAlias.SCALA
SQLITE = LanguageAlias.SQLITE
SWIFT = LanguageAlias.SWIFT
TYPESCRIPT = LanguageAlias.TYPESCRIPT
VISUAL_BASIC = LanguageAlias.VISUAL_BASIC
76 changes: 68 additions & 8 deletions src/judge0/base_types.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import copy

from dataclasses import dataclass
from enum import IntEnum
from enum import IntEnum, auto
from typing import Optional, Protocol, runtime_checkable, Sequence, Union

from pydantic import BaseModel
Expand Down Expand Up @@ -59,13 +59,73 @@ class Language(BaseModel):

class LanguageAlias(IntEnum):
"""Language enumeration."""

PYTHON = 0
CPP = 1
JAVA = 2
CPP_GCC = 3
CPP_CLANG = 4
PYTHON_FOR_ML = 5
ASSEMBLY = auto()
BASH = auto()
BASIC = auto()
BOSQUE = auto()
C = auto()
C3 = auto()
CLOJURE = auto()
COBOL = auto()
COMMON_LISP = auto()
CPP = auto()
CPP_CLANG = auto()
CPP_GCC = auto()
CPP_TEST = auto()
CPP_TEST_CLANG = auto()
CPP_TEST_GCC = auto()
CSHARP = auto()
CSHARP_DOTNET = auto()
CSHARP_MONO = auto()
CSHARP_TEST = auto()
C_CLANG = auto()
C_GCC = auto()
D = auto()
DART = auto()
ELIXIR = auto()
ERLANG = auto()
EXECUTABLE = auto()
FORTRAN = auto()
FSHARP = auto()
GO = auto()
GROOVY = auto()
HASKELL = auto()
JAVA = auto()
JAVAFX = auto()
JAVASCRIPT = auto()
JAVA_JDK = auto()
JAVA_OPENJDK = auto()
JAVA_TEST = auto()
KOTLIN = auto()
LUA = auto()
MPI_C = auto()
MPI_CPP = auto()
MPI_PYTHON = auto()
MULTI_FILE = auto()
NIM = auto()
OBJECTIVE_C = auto()
OCAML = auto()
OCTAVE = auto()
PASCAL = auto()
PERL = auto()
PHP = auto()
PLAIN_TEXT = auto()
PROLOG = auto()
PYTHON = auto()
PYTHON2 = auto()
PYTHON2_PYPY = auto()
PYTHON3 = auto()
PYTHON3_PYPY = auto()
PYTHON_FOR_ML = auto()
PYTHON_PYPY = auto()
R = auto()
RUBY = auto()
RUST = auto()
SCALA = auto()
SQLITE = auto()
SWIFT = auto()
TYPESCRIPT = auto()
VISUAL_BASIC = auto()


class Flavor(IntEnum):
Expand Down
156 changes: 145 additions & 11 deletions src/judge0/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,165 @@

LANGUAGE_TO_LANGUAGE_ID = {
"1.13.1": {
LanguageAlias.PYTHON: 71,
LanguageAlias.CPP: 54,
LanguageAlias.JAVA: 62,
LanguageAlias.CPP_GCC: 54,
LanguageAlias.ASSEMBLY: 45,
LanguageAlias.BASH: 46,
LanguageAlias.BASIC: 47,
LanguageAlias.C: 50,
LanguageAlias.CLOJURE: 86,
LanguageAlias.COBOL: 77,
LanguageAlias.COMMON_LISP: 55,
LanguageAlias.CPP: 52,
LanguageAlias.CPP_CLANG: 76,
LanguageAlias.CPP_GCC: 52,
LanguageAlias.CSHARP: 51,
LanguageAlias.CSHARP_MONO: 51,
LanguageAlias.C_CLANG: 75,
LanguageAlias.C_GCC: 50,
LanguageAlias.D: 56,
LanguageAlias.ELIXIR: 57,
LanguageAlias.ERLANG: 58,
LanguageAlias.EXECUTABLE: 44,
LanguageAlias.FORTRAN: 59,
LanguageAlias.FSHARP: 87,
LanguageAlias.GO: 60,
LanguageAlias.GROOVY: 88,
LanguageAlias.HASKELL: 61,
LanguageAlias.JAVA: 62,
LanguageAlias.JAVASCRIPT: 63,
LanguageAlias.JAVA_OPENJDK: 62,
LanguageAlias.KOTLIN: 78,
LanguageAlias.LUA: 64,
LanguageAlias.MULTI_FILE: 89,
LanguageAlias.OBJECTIVE_C: 79,
LanguageAlias.OCAML: 65,
LanguageAlias.OCTAVE: 66,
LanguageAlias.PASCAL: 67,
LanguageAlias.PERL: 85,
LanguageAlias.PHP: 68,
LanguageAlias.PLAIN_TEXT: 43,
LanguageAlias.PROLOG: 69,
LanguageAlias.PYTHON: 71,
LanguageAlias.PYTHON2: 70,
LanguageAlias.PYTHON3: 71,
LanguageAlias.R: 80,
LanguageAlias.RUBY: 72,
LanguageAlias.RUST: 73,
LanguageAlias.SCALA: 81,
LanguageAlias.SQLITE: 82,
LanguageAlias.SWIFT: 83,
LanguageAlias.TYPESCRIPT: 74,
LanguageAlias.VISUAL_BASIC: 84,
},
"1.13.1-extra": {
LanguageAlias.PYTHON: 10,
LanguageAlias.BOSQUE: 11,
LanguageAlias.C: 1,
LanguageAlias.C3: 3,
LanguageAlias.CPP: 2,
LanguageAlias.JAVA: 4,
LanguageAlias.CPP_CLANG: 2,
LanguageAlias.CPP_TEST: 12,
LanguageAlias.CPP_TEST_CLANG: 15,
LanguageAlias.CPP_TEST_GCC: 12,
LanguageAlias.CSHARP: 22,
LanguageAlias.CSHARP_MONO: 22,
LanguageAlias.CSHARP_DOTNET: 21,
LanguageAlias.CSHARP_TEST: 23,
LanguageAlias.C_CLANG: 1,
LanguageAlias.FSHARP: 24,
LanguageAlias.JAVA: 4,
LanguageAlias.JAVA_OPENJDK: 4,
LanguageAlias.JAVA_TEST: 5,
LanguageAlias.MPI_C: 6,
LanguageAlias.MPI_CPP: 7,
LanguageAlias.MPI_PYTHON: 8,
LanguageAlias.MULTI_FILE: 89,
LanguageAlias.NIM: 9,
LanguageAlias.PYTHON: 10,
LanguageAlias.PYTHON3: 10,
LanguageAlias.PYTHON_FOR_ML: 10,
LanguageAlias.VISUAL_BASIC: 20,
},
"1.14.0": {
LanguageAlias.PYTHON: 100,
LanguageAlias.ASSEMBLY: 45,
LanguageAlias.BASH: 46,
LanguageAlias.BASIC: 47,
LanguageAlias.C: 103,
LanguageAlias.CLOJURE: 86,
LanguageAlias.COBOL: 77,
LanguageAlias.COMMON_LISP: 55,
LanguageAlias.CPP: 105,
LanguageAlias.JAVA: 91,
LanguageAlias.CPP_GCC: 105,
LanguageAlias.CPP_CLANG: 76,
LanguageAlias.CPP_GCC: 105,
LanguageAlias.CSHARP: 51,
LanguageAlias.CSHARP_MONO: 51,
LanguageAlias.C_CLANG: 104,
LanguageAlias.C_GCC: 103,
LanguageAlias.D: 56,
LanguageAlias.DART: 90,
LanguageAlias.ELIXIR: 57,
LanguageAlias.ERLANG: 58,
LanguageAlias.EXECUTABLE: 44,
LanguageAlias.FORTRAN: 59,
LanguageAlias.FSHARP: 87,
LanguageAlias.GO: 95,
LanguageAlias.GROOVY: 88,
LanguageAlias.HASKELL: 61,
LanguageAlias.JAVA: 62,
LanguageAlias.JAVAFX: 96,
LanguageAlias.JAVASCRIPT: 102,
LanguageAlias.JAVA_JDK: 91,
LanguageAlias.JAVA_OPENJDK: 62,
LanguageAlias.KOTLIN: 78,
LanguageAlias.LUA: 64,
LanguageAlias.MULTI_FILE: 89,
LanguageAlias.OBJECTIVE_C: 79,
LanguageAlias.OCAML: 65,
LanguageAlias.OCTAVE: 66,
LanguageAlias.PASCAL: 67,
LanguageAlias.PERL: 85,
LanguageAlias.PHP: 98,
LanguageAlias.PLAIN_TEXT: 43,
LanguageAlias.PROLOG: 69,
LanguageAlias.PYTHON: 100,
LanguageAlias.PYTHON2: 70,
LanguageAlias.PYTHON3: 100,
LanguageAlias.R: 99,
LanguageAlias.RUBY: 72,
LanguageAlias.RUST: 73,
LanguageAlias.SCALA: 81,
LanguageAlias.SQLITE: 82,
LanguageAlias.SWIFT: 83,
LanguageAlias.TYPESCRIPT: 101,
LanguageAlias.VISUAL_BASIC: 84,
},
"1.14.0-extra": {
LanguageAlias.PYTHON: 25,
LanguageAlias.BOSQUE: 11,
LanguageAlias.C: 1,
LanguageAlias.C3: 3,
LanguageAlias.CPP: 2,
LanguageAlias.JAVA: 4,
LanguageAlias.CPP_CLANG: 2,
LanguageAlias.CPP_TEST: 12,
LanguageAlias.CPP_TEST_CLANG: 15,
LanguageAlias.CPP_TEST_GCC: 12,
LanguageAlias.CSHARP: 29,
LanguageAlias.CSHARP_MONO: 22,
LanguageAlias.CSHARP_DOTNET: 29,
LanguageAlias.CSHARP_TEST: 23,
LanguageAlias.C_CLANG: 1,
LanguageAlias.FSHARP: 24,
LanguageAlias.JAVA: 4,
LanguageAlias.JAVA_OPENJDK: 4,
LanguageAlias.JAVA_TEST: 5,
LanguageAlias.MPI_C: 6,
LanguageAlias.MPI_CPP: 7,
LanguageAlias.MPI_PYTHON: 8,
LanguageAlias.MULTI_FILE: 89,
LanguageAlias.NIM: 9,
LanguageAlias.PYTHON: 25,
LanguageAlias.PYTHON2: 26,
LanguageAlias.PYTHON2_PYPY: 26,
LanguageAlias.PYTHON3: 25,
LanguageAlias.PYTHON3_PYPY: 28,
LanguageAlias.PYTHON_FOR_ML: 25,
LanguageAlias.VISUAL_BASIC: 20,
},
}