p2d


Namep2d JSON
Version 0.1.1 PyPI version JSON
download
home_pagehttps://github.com/cn-xcpc-tools/Polygon2DOMjudge
SummarySimple python script converting polygon package to domjudge(kattis) package
upload_time2024-01-27 12:31:13
maintainercubercsl
docs_urlNone
authorcubercsl
requires_python>=3.8,<4.0
licenseMIT
keywords polygon domjudge kattis codeforces
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Polygon2DOMjudge

[![Test][gh-test-badge]][gh-test]
[![GitHub release][gh-release-badge]][gh-release]

[中文](README.cn.md)

## What is this

It is a simple python script converting polygon package to DOMjudge (kattis) package.

## Install

```bash
pip install p2d
```

## CLI Example

```bash
# Unzip your polygon-package to /path/to/polygon-package first
$ p2d --code A --color FF0000 -o /path/to/domjudge-package /path/to/polygon-package
```

Run this command to make a package from `/path/to/polygon-package` to `/path/to/domjudge-package.zip` and set `code` and `color`.

All available parameters are:

- `--code`: problem short name in DOMjudge.
- `--color`: problem color in DOMjudge.
- `--default`: force use the default output validator.
- `--validator-flags`: add some flags to the output validator, only works when `--default` is set.
- `--auto`: use the default output validator if the checker is defined in config and can be replaced by the default one.
- `--memory-limit`: override the memory limit for DOMjudge package (in MB), default is using the memory limit defined in polygon package.
- `--output-limit`: override the output limit for DOMjudge package (in MB), default is using the default output limit in DOMjudge setting.
- `--replace-sample`: replace the sample input and output with the one shipped with problem statement (e.g. prevent the sample output is different from the main and correct solution).

## Config

In [config.json](config.json), you can change some special checker's validator's flag or add some checker configs manually.

## Environment Variable

Don't change them unless you know what you are doing.

- `CONFIG_PATH`
- `TESTLIB_PATH`
- `EXTENSION_FOR_DESC`

## API Example

```python
import tempfile

from p2d import Polygon2DOMjudge

package_dir = '/path/to/polygon-package'
output_file = '/path/to/domjudge-package' # without '.zip' suffix

with tempfile.TemporaryDirectory() as temp_dir:
    try:
        Polygon2DOMjudge(package_dir, temp_dir, output_file).process()
    except Exception as e:
        # do something
        pass
```

## Development

```bash
# install
poetry install

# build
poetry build

# run unittest
poetry run pytest

# release
./release.sh ${your version}
```

[gh-test-badge]: https://github.com/cn-xcpc-tools/Polygon2DOMjudge/actions/workflows/test.yml/badge.svg
[gh-test]: https://github.com/cn-xcpc-tools/Polygon2DOMjudge/actions/workflows/test.yml
[gh-release-badge]: https://img.shields.io/github/release/cn-xcpc-tools/Polygon2DOMjudge.svg
[gh-release]: https://GitHub.com/cn-xcpc-tools/Polygon2DOMjudge/releases/

# Polygon2DOMjudge

[![Test][gh-test-badge]][gh-test]
[![GitHub release][gh-release-badge]][gh-release]

## 这是什么

这是一个简单的将 polygon 题目包转换成 DOMjudge (kattis) 题目包的 python 脚本。

## 安装

```bash
pip install p2d -i https://pypi.tuna.tsinghua.edu.cn/simple/
```

## 命令行使用示例

```bash
# 首先把你的 polygon-package 解压到 /path/to/polygon-package 位置
$ ./bin/p2d --code A --color FF0000 -o /path/to/domjudge-package /path/to/polygon-package
```

运行此命令可以从 `/path/to/polygon-package` 处的转换题目包为 `/path/to/domjudge-package.zip`,并设置  `code` 和 `color` 属性。

所有可用的命令行参数如下:

- `--code`: 题目在 DOMjudge 中的 short name。
- `--color`: 题目在 DOMjudge 中的颜色。
- `--default`: 强制使用 DOMjudge 默认的输出校验器。
- `--validator-flags`: 为输出校验器添加一些命令行参数,仅在 `--default` 被设置时生效。
- `--auto`: 自动使用 DOMjudge 默认的输出校验器,即如果 checker 在配置文件中被定义,则使用默认的输出校验器与合适的命令行参数替代。
- `--memory-limit`: 覆盖 DOMjudge 题目包的内存限制,如果不设置,则使用 Polygon 题目包中的内存限制。
- `--output-limit`: 覆盖 DOMjudge 题目包的输出限制,如果不设置,则使用 DOMjudge 设置中默认的输出限制。
- `--replace-sample`: 替换样例输入输出,如果样例输入输出与题面中的样例输入输出不同,则使用题面中的样例输入输出替换(例如防止样例输出与正确解答的输出不同)。

## 配置

在 [config.json](config.json) 文件中,你可以设置一些特殊的 checker 的输出校验器参数,并手动添加一些。


## 环境变量

某些时候可能会有用。但如果你不知道你在干啥,请不要随便修改。

- `CONFIG_PATH`
- `TESTLIB_PATH`
- `EXTENSION_FOR_DESC`

## API 使用示例

```python
import tempfile

from p2d import Polygon2DOMjudge

package_dir = '/path/to/polygon-package'
output_file = '/path/to/domjudge-package' # without '.zip' suffix

with tempfile.TemporaryDirectory() as temp_dir:
    try:
        Polygon2DOMjudge(package_dir, temp_dir, output_file).process()
    except Exception as e:
        # do something
        pass
```

## 开发

```bash
# install
poetry install

# build
poetry build

# run unittest
poetry run pytest

# release
./release.sh ${your version}
```

[gh-test-badge]: https://github.com/cn-xcpc-tools/Polygon2DOMjudge/actions/workflows/test.yml/badge.svg
[gh-test]: https://github.com/cn-xcpc-tools/Polygon2DOMjudge/actions/workflows/test.yml
[gh-release-badge]: https://img.shields.io/github/release/cn-xcpc-tools/Polygon2DOMjudge.svg
[gh-release]: https://GitHub.com/cn-xcpc-tools/Polygon2DOMjudge/releases/


            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/cn-xcpc-tools/Polygon2DOMjudge",
    "name": "p2d",
    "maintainer": "cubercsl",
    "docs_url": null,
    "requires_python": ">=3.8,<4.0",
    "maintainer_email": "hi@cubercsl.site",
    "keywords": "Polygon,DOMjudge,Kattis,Codeforces",
    "author": "cubercsl",
    "author_email": "hi@cubercsl.site",
    "download_url": "https://files.pythonhosted.org/packages/7e/7d/565a639883f8a2d59d64095455a2f88d2fbbb6c84805a312efd4b42eaa97/p2d-0.1.1.tar.gz",
    "platform": null,
    "description": "# Polygon2DOMjudge\n\n[![Test][gh-test-badge]][gh-test]\n[![GitHub release][gh-release-badge]][gh-release]\n\n[\u4e2d\u6587](README.cn.md)\n\n## What is this\n\nIt is a simple python script converting polygon package to DOMjudge (kattis) package.\n\n## Install\n\n```bash\npip install p2d\n```\n\n## CLI Example\n\n```bash\n# Unzip your polygon-package to /path/to/polygon-package first\n$ p2d --code A --color FF0000 -o /path/to/domjudge-package /path/to/polygon-package\n```\n\nRun this command to make a package from `/path/to/polygon-package` to `/path/to/domjudge-package.zip` and set `code` and `color`.\n\nAll available parameters are:\n\n- `--code`: problem short name in DOMjudge.\n- `--color`: problem color in DOMjudge.\n- `--default`: force use the default output validator.\n- `--validator-flags`: add some flags to the output validator, only works when `--default` is set.\n- `--auto`: use the default output validator if the checker is defined in config and can be replaced by the default one.\n- `--memory-limit`: override the memory limit for DOMjudge package (in MB), default is using the memory limit defined in polygon package.\n- `--output-limit`: override the output limit for DOMjudge package (in MB), default is using the default output limit in DOMjudge setting.\n- `--replace-sample`: replace the sample input and output with the one shipped with problem statement (e.g. prevent the sample output is different from the main and correct solution).\n\n## Config\n\nIn [config.json](config.json), you can change some special checker's validator's flag or add some checker configs manually.\n\n## Environment Variable\n\nDon't change them unless you know what you are doing.\n\n- `CONFIG_PATH`\n- `TESTLIB_PATH`\n- `EXTENSION_FOR_DESC`\n\n## API Example\n\n```python\nimport tempfile\n\nfrom p2d import Polygon2DOMjudge\n\npackage_dir = '/path/to/polygon-package'\noutput_file = '/path/to/domjudge-package' # without '.zip' suffix\n\nwith tempfile.TemporaryDirectory() as temp_dir:\n    try:\n        Polygon2DOMjudge(package_dir, temp_dir, output_file).process()\n    except Exception as e:\n        # do something\n        pass\n```\n\n## Development\n\n```bash\n# install\npoetry install\n\n# build\npoetry build\n\n# run unittest\npoetry run pytest\n\n# release\n./release.sh ${your version}\n```\n\n[gh-test-badge]: https://github.com/cn-xcpc-tools/Polygon2DOMjudge/actions/workflows/test.yml/badge.svg\n[gh-test]: https://github.com/cn-xcpc-tools/Polygon2DOMjudge/actions/workflows/test.yml\n[gh-release-badge]: https://img.shields.io/github/release/cn-xcpc-tools/Polygon2DOMjudge.svg\n[gh-release]: https://GitHub.com/cn-xcpc-tools/Polygon2DOMjudge/releases/\n\n# Polygon2DOMjudge\n\n[![Test][gh-test-badge]][gh-test]\n[![GitHub release][gh-release-badge]][gh-release]\n\n## \u8fd9\u662f\u4ec0\u4e48\n\n\u8fd9\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u5c06 polygon \u9898\u76ee\u5305\u8f6c\u6362\u6210 DOMjudge (kattis) \u9898\u76ee\u5305\u7684 python \u811a\u672c\u3002\n\n## \u5b89\u88c5\n\n```bash\npip install p2d -i https://pypi.tuna.tsinghua.edu.cn/simple/\n```\n\n## \u547d\u4ee4\u884c\u4f7f\u7528\u793a\u4f8b\n\n```bash\n# \u9996\u5148\u628a\u4f60\u7684 polygon-package \u89e3\u538b\u5230 /path/to/polygon-package \u4f4d\u7f6e\n$ ./bin/p2d --code A --color FF0000 -o /path/to/domjudge-package /path/to/polygon-package\n```\n\n\u8fd0\u884c\u6b64\u547d\u4ee4\u53ef\u4ee5\u4ece `/path/to/polygon-package` \u5904\u7684\u8f6c\u6362\u9898\u76ee\u5305\u4e3a `/path/to/domjudge-package.zip`\uff0c\u5e76\u8bbe\u7f6e  `code` \u548c `color` \u5c5e\u6027\u3002\n\n\u6240\u6709\u53ef\u7528\u7684\u547d\u4ee4\u884c\u53c2\u6570\u5982\u4e0b\uff1a\n\n- `--code`: \u9898\u76ee\u5728 DOMjudge \u4e2d\u7684 short name\u3002\n- `--color`: \u9898\u76ee\u5728 DOMjudge \u4e2d\u7684\u989c\u8272\u3002\n- `--default`: \u5f3a\u5236\u4f7f\u7528 DOMjudge \u9ed8\u8ba4\u7684\u8f93\u51fa\u6821\u9a8c\u5668\u3002\n- `--validator-flags`: \u4e3a\u8f93\u51fa\u6821\u9a8c\u5668\u6dfb\u52a0\u4e00\u4e9b\u547d\u4ee4\u884c\u53c2\u6570\uff0c\u4ec5\u5728 `--default` \u88ab\u8bbe\u7f6e\u65f6\u751f\u6548\u3002\n- `--auto`: \u81ea\u52a8\u4f7f\u7528 DOMjudge \u9ed8\u8ba4\u7684\u8f93\u51fa\u6821\u9a8c\u5668\uff0c\u5373\u5982\u679c checker \u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u88ab\u5b9a\u4e49\uff0c\u5219\u4f7f\u7528\u9ed8\u8ba4\u7684\u8f93\u51fa\u6821\u9a8c\u5668\u4e0e\u5408\u9002\u7684\u547d\u4ee4\u884c\u53c2\u6570\u66ff\u4ee3\u3002\n- `--memory-limit`: \u8986\u76d6 DOMjudge \u9898\u76ee\u5305\u7684\u5185\u5b58\u9650\u5236\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6e\uff0c\u5219\u4f7f\u7528 Polygon \u9898\u76ee\u5305\u4e2d\u7684\u5185\u5b58\u9650\u5236\u3002\n- `--output-limit`: \u8986\u76d6 DOMjudge \u9898\u76ee\u5305\u7684\u8f93\u51fa\u9650\u5236\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6e\uff0c\u5219\u4f7f\u7528 DOMjudge \u8bbe\u7f6e\u4e2d\u9ed8\u8ba4\u7684\u8f93\u51fa\u9650\u5236\u3002\n- `--replace-sample`: \u66ff\u6362\u6837\u4f8b\u8f93\u5165\u8f93\u51fa\uff0c\u5982\u679c\u6837\u4f8b\u8f93\u5165\u8f93\u51fa\u4e0e\u9898\u9762\u4e2d\u7684\u6837\u4f8b\u8f93\u5165\u8f93\u51fa\u4e0d\u540c\uff0c\u5219\u4f7f\u7528\u9898\u9762\u4e2d\u7684\u6837\u4f8b\u8f93\u5165\u8f93\u51fa\u66ff\u6362\uff08\u4f8b\u5982\u9632\u6b62\u6837\u4f8b\u8f93\u51fa\u4e0e\u6b63\u786e\u89e3\u7b54\u7684\u8f93\u51fa\u4e0d\u540c\uff09\u3002\n\n## \u914d\u7f6e\n\n\u5728 [config.json](config.json) \u6587\u4ef6\u4e2d\uff0c\u4f60\u53ef\u4ee5\u8bbe\u7f6e\u4e00\u4e9b\u7279\u6b8a\u7684 checker \u7684\u8f93\u51fa\u6821\u9a8c\u5668\u53c2\u6570\uff0c\u5e76\u624b\u52a8\u6dfb\u52a0\u4e00\u4e9b\u3002\n\n\n## \u73af\u5883\u53d8\u91cf\n\n\u67d0\u4e9b\u65f6\u5019\u53ef\u80fd\u4f1a\u6709\u7528\u3002\u4f46\u5982\u679c\u4f60\u4e0d\u77e5\u9053\u4f60\u5728\u5e72\u5565\uff0c\u8bf7\u4e0d\u8981\u968f\u4fbf\u4fee\u6539\u3002\n\n- `CONFIG_PATH`\n- `TESTLIB_PATH`\n- `EXTENSION_FOR_DESC`\n\n## API \u4f7f\u7528\u793a\u4f8b\n\n```python\nimport tempfile\n\nfrom p2d import Polygon2DOMjudge\n\npackage_dir = '/path/to/polygon-package'\noutput_file = '/path/to/domjudge-package' # without '.zip' suffix\n\nwith tempfile.TemporaryDirectory() as temp_dir:\n    try:\n        Polygon2DOMjudge(package_dir, temp_dir, output_file).process()\n    except Exception as e:\n        # do something\n        pass\n```\n\n## \u5f00\u53d1\n\n```bash\n# install\npoetry install\n\n# build\npoetry build\n\n# run unittest\npoetry run pytest\n\n# release\n./release.sh ${your version}\n```\n\n[gh-test-badge]: https://github.com/cn-xcpc-tools/Polygon2DOMjudge/actions/workflows/test.yml/badge.svg\n[gh-test]: https://github.com/cn-xcpc-tools/Polygon2DOMjudge/actions/workflows/test.yml\n[gh-release-badge]: https://img.shields.io/github/release/cn-xcpc-tools/Polygon2DOMjudge.svg\n[gh-release]: https://GitHub.com/cn-xcpc-tools/Polygon2DOMjudge/releases/\n\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Simple python script converting polygon package to domjudge(kattis) package",
    "version": "0.1.1",
    "project_urls": {
        "Documentation": "https://github.com/cn-xcpc-tools/Polygon2DOMjudge",
        "Homepage": "https://github.com/cn-xcpc-tools/Polygon2DOMjudge",
        "Repository": "https://github.com/cn-xcpc-tools/Polygon2DOMjudge"
    },
    "split_keywords": [
        "polygon",
        "domjudge",
        "kattis",
        "codeforces"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0956ed530c493e68731ce579fb2bcb66505b0d31e6e425542e73c96750226063",
                "md5": "874fcd7df30b5e724c84f016bcb57b3b",
                "sha256": "7216963a72eabd094643f4eef915e54a5f6d17af7e2b1fae4bd804f354459e43"
            },
            "downloads": -1,
            "filename": "p2d-0.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "874fcd7df30b5e724c84f016bcb57b3b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8,<4.0",
            "size": 53181,
            "upload_time": "2024-01-27T12:31:11",
            "upload_time_iso_8601": "2024-01-27T12:31:11.955596Z",
            "url": "https://files.pythonhosted.org/packages/09/56/ed530c493e68731ce579fb2bcb66505b0d31e6e425542e73c96750226063/p2d-0.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7e7d565a639883f8a2d59d64095455a2f88d2fbbb6c84805a312efd4b42eaa97",
                "md5": "ee7ad93a18a0da3d4e9545e99845e4fc",
                "sha256": "64f48b0702089a50cda23bcb129c231529ac124237ef723116b7b32a4927c41a"
            },
            "downloads": -1,
            "filename": "p2d-0.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "ee7ad93a18a0da3d4e9545e99845e4fc",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8,<4.0",
            "size": 52173,
            "upload_time": "2024-01-27T12:31:13",
            "upload_time_iso_8601": "2024-01-27T12:31:13.641754Z",
            "url": "https://files.pythonhosted.org/packages/7e/7d/565a639883f8a2d59d64095455a2f88d2fbbb6c84805a312efd4b42eaa97/p2d-0.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-01-27 12:31:13",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "cn-xcpc-tools",
    "github_project": "Polygon2DOMjudge",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "p2d"
}
        
Elapsed time: 0.20094s