From f5f6f40170665db918fc4198717331ed786a9322 Mon Sep 17 00:00:00 2001 From: xiongjx751 Date: Sat, 13 Apr 2024 14:08:26 +0800 Subject: [PATCH] [fix] format --- .gitignore | 3 +- ccnuacm_datamocker/__init__.py | 6 + ccnuacm_datamocker/common/context.py | 16 ++ .../data_model/helper/dataset.py | 18 +- examples/example.ipynb | 265 ++++++++++++++++++ examples/test.ipynb | 147 ---------- requirements.txt | 1 + 7 files changed, 303 insertions(+), 153 deletions(-) create mode 100644 examples/example.ipynb delete mode 100644 examples/test.ipynb diff --git a/.gitignore b/.gitignore index 014ceb6..d7f5616 100644 --- a/.gitignore +++ b/.gitignore @@ -2,10 +2,11 @@ .idea __pycache__ *.log -*.egg-info dist build .ipynb_checkpoints examples/exec examples/tmp examples/zip +.venv +venv diff --git a/ccnuacm_datamocker/__init__.py b/ccnuacm_datamocker/__init__.py index 2e1fa8a..2b9f0f9 100644 --- a/ccnuacm_datamocker/__init__.py +++ b/ccnuacm_datamocker/__init__.py @@ -11,3 +11,9 @@ def set_seed(seed_): def set_work_dir(work_dir): from .common import context context().work_dir = work_dir + + +def set_compiler(compiler_path): + from .common import context + context().CXX = compiler_path + context().logger.info(f"Setting compiler path to `{compiler_path}`") diff --git a/ccnuacm_datamocker/common/context.py b/ccnuacm_datamocker/common/context.py index 38e1652..154208e 100644 --- a/ccnuacm_datamocker/common/context.py +++ b/ccnuacm_datamocker/common/context.py @@ -2,6 +2,7 @@ from .random_generator import RandomGenerator import shutil import os +import subprocess __all__ = ["context"] __author__ = "JixiangXiong" @@ -89,6 +90,21 @@ def exec_dir(self): os.makedirs(exec_dir_) return exec_dir_ + @property + def CXX(self): + return self._CXX + + @CXX.setter + def CXX(self, path): + context().logger.info(f"Setting CXX to `{path}`.") + result = subprocess.run([path, "-dumpversion"], capture_output=True) + if result.returncode != 0: + raise ValueError( + f'Invalid compiler path: `{path}`. Failed to get version. Errmsg:\n{result.stdout.decode("utf-8")}\n' + f'{result.stderr.decode("utf-8")}') + context().logger.info(f'compiler version: {result.stdout.decode("utf-8").strip()}') + self._CXX = path + def clear_tmp(self): self.clear_dir(self.tmp_dir) diff --git a/ccnuacm_datamocker/data_model/helper/dataset.py b/ccnuacm_datamocker/data_model/helper/dataset.py index 069e94d..132130d 100644 --- a/ccnuacm_datamocker/data_model/helper/dataset.py +++ b/ccnuacm_datamocker/data_model/helper/dataset.py @@ -1,3 +1,5 @@ +import subprocess + from ccnuacm_datamocker.data_model.base import DataModel import os from ccnuacm_datamocker.common import context @@ -56,7 +58,7 @@ def add(self, *case): def run(self): std_path = self.std_path - exe_path = os.path.join(context().exec_dir, self._zip_name) + exe_path = os.path.join(context().exec_dir, self._zip_name + ".exe") out_dir = self._dir cxx = context().get_compile_options("CXX") cxxflags = context().get_compile_options("CXXFLAGS") @@ -66,8 +68,12 @@ def run(self): os.remove(exe_path) context().logger.info( f"Compiling `{std_path}` with command: `{cxx} -o {exe_path} {cxxflags} {ldflags} {std_path}`.") - if os.system(f"{cxx} -o {exe_path} {cxxflags} {ldflags} {std_path}"): - raise ValueError(f"Failed to compile `{std_path}`.") + compile_result = subprocess.run(f"{cxx} -o {exe_path} -O2 -std=c++17 {cxxflags} {ldflags} {std_path}", + capture_output=True) + if compile_result.returncode: + raise ValueError( + f'Failed to compile `{std_path}`.\nerrmsg:\n{compile_result.stdout.decode("utf-8")}\n' + f'{compile_result.stderr.decode("utf-8")}') context().logger.info(f"Compiling `{std_path}` succeed.") context().clear_dir(out_dir) @@ -81,8 +87,10 @@ def run(self): f.write(str(case)) context().logger.info(f"Generating infile `{in_file}` succeed.") context().logger.info(f"Generating outfile using command: `{exe_path} < {in_file} > {out_file}`.") - if os.system(f"{exe_path} < {in_file} > {out_file}"): - raise ValueError(f"Failed to exec command: `{exe_path} < {in_file} > {out_file}`.") + exec_result = subprocess.run(f"{exe_path} < {in_file} > {out_file}", capture_output=True) + if exec_result.returncode: + raise ValueError(f"Failed to exec command: `{exe_path} < {in_file} > {out_file}`.\nerrmsg:\n" + f'{exec_result.stdout.decode("utf-8")}\n{exec_result.stderr.decode("utf-8")}') context().logger.info(f"Generating outfile `{out_file}` succeed.") context().logger.info(f"All cases generated. Start zipping `{self._zip_name}.zip`...") diff --git a/examples/example.ipynb b/examples/example.ipynb new file mode 100644 index 0000000..d180a4d --- /dev/null +++ b/examples/example.ipynb @@ -0,0 +1,265 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-13T13:41:15.392971Z", + "end_time": "2024-04-13T13:41:17.789164Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Obtaining file:///D:/workspace/CCNUACM_DataMocker\n", + " Preparing metadata (setup.py): started\n", + " Preparing metadata (setup.py): finished with status 'done'\n", + "Requirement already satisfied: numpy in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ccnuacm-datamocker==0.0.1) (1.26.4)\n", + "Requirement already satisfied: jupyter in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ccnuacm-datamocker==0.0.1) (1.0.0)\n", + "Requirement already satisfied: qtconsole in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter->ccnuacm-datamocker==0.0.1) (5.5.1)\n", + "Requirement already satisfied: ipykernel in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter->ccnuacm-datamocker==0.0.1) (6.29.4)\n", + "Requirement already satisfied: notebook in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter->ccnuacm-datamocker==0.0.1) (7.1.2)\n", + "Requirement already satisfied: jupyter-console in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter->ccnuacm-datamocker==0.0.1) (6.6.3)\n", + "Requirement already satisfied: ipywidgets in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter->ccnuacm-datamocker==0.0.1) (8.1.2)\n", + "Requirement already satisfied: nbconvert in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter->ccnuacm-datamocker==0.0.1) (7.16.3)\n", + "Requirement already satisfied: packaging in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (24.0)\n", + "Requirement already satisfied: traitlets>=5.4.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (5.14.2)\n", + "Requirement already satisfied: ipython>=7.23.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (8.23.0)\n", + "Requirement already satisfied: debugpy>=1.6.5 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (1.8.1)\n", + "Requirement already satisfied: psutil in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (5.9.8)\n", + "Requirement already satisfied: jupyter-client>=6.1.12 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (8.6.1)\n", + "Requirement already satisfied: jupyter-core!=5.0.*,>=4.12 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (5.7.2)\n", + "Requirement already satisfied: comm>=0.1.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (0.2.2)\n", + "Requirement already satisfied: nest-asyncio in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (1.6.0)\n", + "Requirement already satisfied: matplotlib-inline>=0.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (0.1.6)\n", + "Requirement already satisfied: tornado>=6.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (6.4)\n", + "Requirement already satisfied: pyzmq>=24 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (25.1.2)\n", + "Requirement already satisfied: jupyterlab-widgets~=3.0.10 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipywidgets->jupyter->ccnuacm-datamocker==0.0.1) (3.0.10)\n", + "Requirement already satisfied: widgetsnbextension~=4.0.10 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipywidgets->jupyter->ccnuacm-datamocker==0.0.1) (4.0.10)\n", + "Requirement already satisfied: prompt-toolkit>=3.0.30 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-console->jupyter->ccnuacm-datamocker==0.0.1) (3.0.43)\n", + "Requirement already satisfied: pygments in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-console->jupyter->ccnuacm-datamocker==0.0.1) (2.17.2)\n", + "Requirement already satisfied: tinycss2 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (1.2.1)\n", + "Requirement already satisfied: markupsafe>=2.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (2.1.5)\n", + "Requirement already satisfied: jupyterlab-pygments in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (0.3.0)\n", + "Requirement already satisfied: jinja2>=3.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (3.1.3)\n", + "Requirement already satisfied: pandocfilters>=1.4.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (1.5.1)\n", + "Requirement already satisfied: defusedxml in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (0.7.1)\n", + "Requirement already satisfied: nbclient>=0.5.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (0.10.0)\n", + "Requirement already satisfied: mistune<4,>=2.0.3 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (3.0.2)\n", + "Requirement already satisfied: nbformat>=5.7 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (5.10.4)\n", + "Requirement already satisfied: beautifulsoup4 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (4.12.3)\n", + "Requirement already satisfied: bleach!=5.0.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (6.1.0)\n", + "Requirement already satisfied: notebook-shim<0.3,>=0.2 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from notebook->jupyter->ccnuacm-datamocker==0.0.1) (0.2.4)\n", + "Requirement already satisfied: jupyterlab<4.2,>=4.1.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from notebook->jupyter->ccnuacm-datamocker==0.0.1) (4.1.6)\n", + "Requirement already satisfied: jupyter-server<3,>=2.4.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.14.0)\n", + "Requirement already satisfied: jupyterlab-server<3,>=2.22.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.26.0)\n", + "Requirement already satisfied: qtpy>=2.4.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from qtconsole->jupyter->ccnuacm-datamocker==0.0.1) (2.4.1)\n", + "Requirement already satisfied: webencodings in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from bleach!=5.0.0->nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (0.5.1)\n", + "Requirement already satisfied: six>=1.9.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from bleach!=5.0.0->nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (1.16.0)\n", + "Requirement already satisfied: typing-extensions in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipython>=7.23.1->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (4.11.0)\n", + "Requirement already satisfied: exceptiongroup in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipython>=7.23.1->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (1.2.0)\n", + "Requirement already satisfied: colorama in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipython>=7.23.1->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (0.4.6)\n", + "Requirement already satisfied: decorator in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipython>=7.23.1->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (5.1.1)\n", + "Requirement already satisfied: stack-data in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipython>=7.23.1->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (0.6.3)\n", + "Requirement already satisfied: jedi>=0.16 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from ipython>=7.23.1->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (0.19.1)\n", + "Requirement already satisfied: python-dateutil>=2.8.2 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-client>=6.1.12->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (2.9.0.post0)\n", + "Requirement already satisfied: pywin32>=300 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-core!=5.0.*,>=4.12->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (306)\n", + "Requirement already satisfied: platformdirs>=2.5 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-core!=5.0.*,>=4.12->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (4.2.0)\n", + "Requirement already satisfied: overrides>=5.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (7.7.0)\n", + "Requirement already satisfied: send2trash>=1.8.2 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (1.8.3)\n", + "Requirement already satisfied: jupyter-events>=0.9.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (0.10.0)\n", + "Requirement already satisfied: jupyter-server-terminals>=0.4.4 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (0.5.3)\n", + "Requirement already satisfied: anyio>=3.1.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (4.3.0)\n", + "Requirement already satisfied: prometheus-client>=0.9 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (0.20.0)\n", + "Requirement already satisfied: pywinpty>=2.0.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.0.13)\n", + "Requirement already satisfied: websocket-client>=1.7 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (1.7.0)\n", + "Requirement already satisfied: argon2-cffi>=21.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (23.1.0)\n", + "Requirement already satisfied: terminado>=0.8.3 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (0.18.1)\n", + "Requirement already satisfied: httpx>=0.25.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyterlab<4.2,>=4.1.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (0.27.0)\n", + "Requirement already satisfied: async-lru>=1.0.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyterlab<4.2,>=4.1.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.0.4)\n", + "Requirement already satisfied: jupyter-lsp>=2.0.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyterlab<4.2,>=4.1.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.2.5)\n", + "Requirement already satisfied: tomli>=1.2.2 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyterlab<4.2,>=4.1.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.0.1)\n", + "Requirement already satisfied: requests>=2.31 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.31.0)\n", + "Requirement already satisfied: json5>=0.9.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (0.9.25)\n", + "Requirement already satisfied: jsonschema>=4.18.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (4.21.1)\n", + "Requirement already satisfied: babel>=2.10 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.14.0)\n", + "Requirement already satisfied: fastjsonschema>=2.15 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from nbformat>=5.7->nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (2.19.1)\n", + "Requirement already satisfied: wcwidth in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from prompt-toolkit>=3.0.30->jupyter-console->jupyter->ccnuacm-datamocker==0.0.1) (0.2.13)\n", + "Requirement already satisfied: soupsieve>1.2 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from beautifulsoup4->nbconvert->jupyter->ccnuacm-datamocker==0.0.1) (2.5)\n", + "Requirement already satisfied: sniffio>=1.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from anyio>=3.1.0->jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (1.3.1)\n", + "Requirement already satisfied: idna>=2.8 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from anyio>=3.1.0->jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (3.7)\n", + "Requirement already satisfied: argon2-cffi-bindings in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from argon2-cffi>=21.1->jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (21.2.0)\n", + "Requirement already satisfied: httpcore==1.* in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from httpx>=0.25.0->jupyterlab<4.2,>=4.1.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (1.0.5)\n", + "Requirement already satisfied: certifi in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from httpx>=0.25.0->jupyterlab<4.2,>=4.1.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2024.2.2)\n", + "Requirement already satisfied: h11<0.15,>=0.13 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from httpcore==1.*->httpx>=0.25.0->jupyterlab<4.2,>=4.1.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (0.14.0)\n", + "Requirement already satisfied: parso<0.9.0,>=0.8.3 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jedi>=0.16->ipython>=7.23.1->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (0.8.4)\n", + "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jsonschema>=4.18.0->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2023.12.1)\n", + "Requirement already satisfied: referencing>=0.28.4 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jsonschema>=4.18.0->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (0.34.0)\n", + "Requirement already satisfied: rpds-py>=0.7.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jsonschema>=4.18.0->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (0.18.0)\n", + "Requirement already satisfied: attrs>=22.2.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jsonschema>=4.18.0->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (23.2.0)\n", + "Requirement already satisfied: rfc3986-validator>=0.1.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-events>=0.9.0->jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (0.1.1)\n", + "Requirement already satisfied: python-json-logger>=2.0.4 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-events>=0.9.0->jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.0.7)\n", + "Requirement already satisfied: pyyaml>=5.3 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-events>=0.9.0->jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (6.0.1)\n", + "Requirement already satisfied: rfc3339-validator in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jupyter-events>=0.9.0->jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (0.1.4)\n", + "Requirement already satisfied: charset-normalizer<4,>=2 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from requests>=2.31->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (3.3.2)\n", + "Requirement already satisfied: urllib3<3,>=1.21.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from requests>=2.31->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.2.1)\n", + "Requirement already satisfied: executing>=1.2.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from stack-data->ipython>=7.23.1->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (2.0.1)\n", + "Requirement already satisfied: asttokens>=2.1.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from stack-data->ipython>=7.23.1->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (2.4.1)\n", + "Requirement already satisfied: pure-eval in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from stack-data->ipython>=7.23.1->ipykernel->jupyter->ccnuacm-datamocker==0.0.1) (0.2.2)\n", + "Requirement already satisfied: isoduration in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jsonschema>=4.18.0->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (20.11.0)\n", + "Requirement already satisfied: uri-template in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jsonschema>=4.18.0->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (1.3.0)\n", + "Requirement already satisfied: fqdn in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jsonschema>=4.18.0->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (1.5.1)\n", + "Requirement already satisfied: webcolors>=1.11 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jsonschema>=4.18.0->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (1.13)\n", + "Requirement already satisfied: jsonpointer>1.13 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from jsonschema>=4.18.0->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.4)\n", + "Requirement already satisfied: cffi>=1.0.1 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from argon2-cffi-bindings->argon2-cffi>=21.1->jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (1.16.0)\n", + "Requirement already satisfied: pycparser in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi>=21.1->jupyter-server<3,>=2.4.0->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.22)\n", + "Requirement already satisfied: arrow>=0.15.0 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from isoduration->jsonschema>=4.18.0->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (1.3.0)\n", + "Requirement already satisfied: types-python-dateutil>=2.8.10 in d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages (from arrow>=0.15.0->isoduration->jsonschema>=4.18.0->jupyterlab-server<3,>=2.22.1->notebook->jupyter->ccnuacm-datamocker==0.0.1) (2.9.0.20240316)\n", + "Installing collected packages: ccnuacm-datamocker\n", + " Attempting uninstall: ccnuacm-datamocker\n", + " Found existing installation: ccnuacm-datamocker 0.0.1\n", + " Uninstalling ccnuacm-datamocker-0.0.1:\n", + " Successfully uninstalled ccnuacm-datamocker-0.0.1\n", + " Running setup.py develop for ccnuacm-datamocker\n", + "Successfully installed ccnuacm-datamocker-0.0.1\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + " WARNING: Cannot remove entries from nonexistent file d:\\workspace\\ccnuacm_datamocker\\venv\\lib\\site-packages\\easy-install.pth\n", + "\n", + "[notice] A new release of pip available: 22.3.1 -> 24.0\n", + "[notice] To update, run: python.exe -m pip install --upgrade pip\n" + ] + } + ], + "source": [ + "!pip3 install -e../ -U\n", + "# !pip3 install ccnuacm_datamocker -U" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "ExecuteTime": { + "start_time": "2024-04-13T13:49:39.688721Z", + "end_time": "2024-04-13T13:49:39.760110Z" + } + }, + "outputs": [], + "source": [ + "from ccnuacm_datamocker.data_model import *\n", + "import ccnuacm_datamocker as dm" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "ExecuteTime": { + "start_time": "2024-04-13T13:49:39.883982Z", + "end_time": "2024-04-13T13:49:39.898768Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[INFO] [2024-04-13 13:54:46] - __init__.py:8 - Setting random seed to `751`\n", + "[INFO] [2024-04-13 13:54:46] - context.py:74 - Setting work directory to `D:\\workspace\\CCNUACM_DataMocker\\examples`.\n", + "[INFO] [2024-04-13 13:54:46] - context.py:99 - Setting CXX to `D:/mingw/bin/g++.exe`.\n", + "[INFO] [2024-04-13 13:54:46] - context.py:105 - compiler version: 11.2.0\n", + "[INFO] [2024-04-13 13:54:46] - __init__.py:19 - Setting compiler path to `D:/mingw/bin/g++.exe`\n" + ] + } + ], + "source": [ + "dm.set_seed(751)\n", + "dm.set_work_dir(\".\")\n", + "dm.set_compiler(\"D:/mingw/bin/g++.exe\")" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "jupyter": { + "outputs_hidden": false + }, + "ExecuteTime": { + "start_time": "2024-04-13T13:54:46.385692Z", + "end_time": "2024-04-13T13:54:46.760710Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[INFO] [2024-04-13 13:54:46] - dataset.py:69 - Compiling `D:\\workspace\\CCNUACM_DataMocker\\examples\\std\\P751.cpp` with command: `D:/mingw/bin/g++.exe -o D:\\workspace\\CCNUACM_DataMocker\\examples\\exec\\P751.exe -O2 -std=c++17 D:\\workspace\\CCNUACM_DataMocker\\examples\\std\\P751.cpp`.\n", + "[INFO] [2024-04-13 13:54:46] - dataset.py:77 - Compiling `D:\\workspace\\CCNUACM_DataMocker\\examples\\std\\P751.cpp` succeed.\n", + "[INFO] [2024-04-13 13:54:46] - context.py:113 - Clearing directory `D:\\workspace\\CCNUACM_DataMocker\\examples\\tmp\\P751`.\n", + "[INFO] [2024-04-13 13:54:46] - dataset.py:85 - Generating case: 1...\n", + "[INFO] [2024-04-13 13:54:46] - dataset.py:88 - Generating infile `D:\\workspace\\CCNUACM_DataMocker\\examples\\tmp\\P751\\1.in` succeed.\n", + "[INFO] [2024-04-13 13:54:46] - dataset.py:89 - Generating outfile using command: `D:\\workspace\\CCNUACM_DataMocker\\examples\\exec\\P751.exe < D:\\workspace\\CCNUACM_DataMocker\\examples\\tmp\\P751\\1.in > D:\\workspace\\CCNUACM_DataMocker\\examples\\tmp\\P751\\1.out`.\n", + "[INFO] [2024-04-13 13:54:46] - dataset.py:92 - Generating outfile `D:\\workspace\\CCNUACM_DataMocker\\examples\\tmp\\P751\\1.out` succeed.\n", + "[INFO] [2024-04-13 13:54:46] - dataset.py:85 - Generating case: 2...\n", + "[INFO] [2024-04-13 13:54:46] - dataset.py:88 - Generating infile `D:\\workspace\\CCNUACM_DataMocker\\examples\\tmp\\P751\\2.in` succeed.\n", + "[INFO] [2024-04-13 13:54:46] - dataset.py:89 - Generating outfile using command: `D:\\workspace\\CCNUACM_DataMocker\\examples\\exec\\P751.exe < D:\\workspace\\CCNUACM_DataMocker\\examples\\tmp\\P751\\2.in > D:\\workspace\\CCNUACM_DataMocker\\examples\\tmp\\P751\\2.out`.\n", + "[INFO] [2024-04-13 13:54:46] - dataset.py:92 - Generating outfile `D:\\workspace\\CCNUACM_DataMocker\\examples\\tmp\\P751\\2.out` succeed.\n", + "[INFO] [2024-04-13 13:54:46] - dataset.py:93 - All cases generated. Start zipping `P751.zip`...\n", + "[INFO] [2024-04-13 13:54:46] - dataset.py:105 - All cases zipped, result: `D:\\workspace\\CCNUACM_DataMocker\\examples\\zip\\P751.zip`. 2 cases, 4 files in total.\n" + ] + } + ], + "source": [ + "ds = DataSet(name=\"P751\", std_path=\"./std/P751.cpp\")\n", + "\n", + "ds.add(Sequence(LowercaseCharSet() + DigitCharSet(), length=10, sep=''))\n", + "ds.add(Sequence(BinaryCharSet(), length=10, sep=' '))\n", + "\n", + "ds.run()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/examples/test.ipynb b/examples/test.ipynb deleted file mode 100644 index dd98fd3..0000000 --- a/examples/test.ipynb +++ /dev/null @@ -1,147 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "pycharm": { - "is_executing": true - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Defaulting to user installation because normal site-packages is not writeable\n", - "Obtaining file:///home/xjx/workspace/CCNUACM_DataMocker\n", - " Preparing metadata (setup.py) ... \u001b[?25ldone\n", - "\u001b[?25hRequirement already satisfied: numpy in /home/xjx/.local/lib/python3.10/site-packages (from ccnuacm-datamocker==0.0.1) (1.26.4)\n", - "Installing collected packages: ccnuacm-datamocker\n", - " Attempting uninstall: ccnuacm-datamocker\n", - " Found existing installation: ccnuacm-datamocker 0.0.1\n", - " Uninstalling ccnuacm-datamocker-0.0.1:\n", - " Successfully uninstalled ccnuacm-datamocker-0.0.1\n", - " Running setup.py develop for ccnuacm-datamocker\n", - "Successfully installed ccnuacm-datamocker-0.0.1\n" - ] - } - ], - "source": [ - "!pip3 install -e../ -U\n", - "# !pip3 install ccnuacm_datamocker -U" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "pycharm": { - "is_executing": true - } - }, - "outputs": [], - "source": [ - "from ccnuacm_datamocker.data_model import *\n", - "import ccnuacm_datamocker as dm" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "collapsed": false, - "jupyter": { - "outputs_hidden": false - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[INFO] [2024-04-10 08:43:53] - __init__.py:8 - Setting random seed to `751`\n", - "[INFO] [2024-04-10 08:43:53] - context.py:73 - Setting work directory to `/home/xjx/workspace/CCNUACM_DataMocker/examples`.\n" - ] - } - ], - "source": [ - "dm.set_seed(751)\n", - "dm.set_work_dir(\".\")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "collapsed": false, - "jupyter": { - "outputs_hidden": false - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[INFO] [2024-04-10 08:43:53] - dataset.py:67 - Compiling `/home/xjx/workspace/CCNUACM_DataMocker/examples/std/P751.cpp` with command: `g++ -o /home/xjx/workspace/CCNUACM_DataMocker/examples/exec/P751 -O2 -std=c++17 /home/xjx/workspace/CCNUACM_DataMocker/examples/std/P751.cpp`.\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[INFO] [2024-04-10 08:43:53] - dataset.py:71 - Compiling `/home/xjx/workspace/CCNUACM_DataMocker/examples/std/P751.cpp` succeed.\n", - "[INFO] [2024-04-10 08:43:53] - context.py:97 - Clearing directory `/home/xjx/workspace/CCNUACM_DataMocker/examples/tmp/P751`.\n", - "[INFO] [2024-04-10 08:43:53] - dataset.py:79 - Generating case: 1...\n", - "[INFO] [2024-04-10 08:43:53] - dataset.py:82 - Generating infile `/home/xjx/workspace/CCNUACM_DataMocker/examples/tmp/P751/1.in` succeed.\n", - "[INFO] [2024-04-10 08:43:53] - dataset.py:83 - Generating outfile using command: `/home/xjx/workspace/CCNUACM_DataMocker/examples/exec/P751 < /home/xjx/workspace/CCNUACM_DataMocker/examples/tmp/P751/1.in > /home/xjx/workspace/CCNUACM_DataMocker/examples/tmp/P751/1.out`.\n", - "[INFO] [2024-04-10 08:43:53] - dataset.py:86 - Generating outfile `/home/xjx/workspace/CCNUACM_DataMocker/examples/tmp/P751/1.out` succeed.\n", - "[INFO] [2024-04-10 08:43:53] - dataset.py:79 - Generating case: 2...\n", - "[INFO] [2024-04-10 08:43:53] - dataset.py:82 - Generating infile `/home/xjx/workspace/CCNUACM_DataMocker/examples/tmp/P751/2.in` succeed.\n", - "[INFO] [2024-04-10 08:43:53] - dataset.py:83 - Generating outfile using command: `/home/xjx/workspace/CCNUACM_DataMocker/examples/exec/P751 < /home/xjx/workspace/CCNUACM_DataMocker/examples/tmp/P751/2.in > /home/xjx/workspace/CCNUACM_DataMocker/examples/tmp/P751/2.out`.\n", - "[INFO] [2024-04-10 08:43:53] - dataset.py:86 - Generating outfile `/home/xjx/workspace/CCNUACM_DataMocker/examples/tmp/P751/2.out` succeed.\n", - "[INFO] [2024-04-10 08:43:53] - dataset.py:87 - All cases generated. Start zipping `P751.zip`...\n", - "[INFO] [2024-04-10 08:43:53] - dataset.py:99 - All cases zipped, result: `/home/xjx/workspace/CCNUACM_DataMocker/examples/zip/P751.zip`. 2 cases, 4 files in total.\n" - ] - } - ], - "source": [ - "ds = DataSet(name=\"P751\", std_path=\"./std/P751.cpp\")\n", - "\n", - "ds.add(Sequence(LowercaseCharSet() + DigitCharSet(), length=10, sep=''))\n", - "ds.add(Sequence(BinaryCharSet(), length=10, sep=' '))\n", - "\n", - "ds.run()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3 (ipykernel)", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.12" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} diff --git a/requirements.txt b/requirements.txt index 24ce15a..5b5025c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ numpy +jupyter