mirror of
https://github.com/open-thought/reasoning-gym.git
synced 2025-10-09 13:40:09 +03:00
support python 3.10 (#450)
* support python 3.10 * add 3.10 to tests * new StrEnum
This commit is contained in:
2
.github/workflows/tests.yml
vendored
2
.github/workflows/tests.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
||||
pull-requests: write
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: ["3.11", "3.12"]
|
||||
python-version: ["3.10", "3.11", "3.12"]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
@@ -10,7 +10,7 @@ authors = [
|
||||
]
|
||||
description = "A library of procedural dataset generators for training reasoning models"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.11"
|
||||
requires-python = ">=3.10"
|
||||
dependencies = [
|
||||
"bfi==1.0.4",
|
||||
"cellpylib==2.4.0",
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
import re
|
||||
from dataclasses import dataclass
|
||||
from enum import StrEnum
|
||||
from random import Random
|
||||
from typing import Any, Optional
|
||||
|
||||
from ..coaching import BaseCurriculum, RangeAttributeDefinition
|
||||
from ..data import read_data_file
|
||||
from ..factory import ProceduralDataset, register_dataset
|
||||
from ..utils import StrEnum
|
||||
|
||||
|
||||
class TextTransformation(StrEnum):
|
||||
|
||||
@@ -3,11 +3,12 @@ import math
|
||||
import random
|
||||
from dataclasses import dataclass
|
||||
from datetime import date, timedelta
|
||||
from enum import Enum, StrEnum, auto
|
||||
from enum import Enum, auto
|
||||
from typing import Any, Optional
|
||||
|
||||
from ..coaching import BaseCurriculum, ScalarAttributeDefinition
|
||||
from ..factory import ProceduralDataset, register_dataset
|
||||
from ..utils import StrEnum
|
||||
|
||||
DATASET_NAME = "calendar_arithmetic"
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import abc
|
||||
from collections.abc import Iterable
|
||||
from enum import StrEnum
|
||||
from typing import Any, Optional, TypeVar
|
||||
|
||||
from ..utils import StrEnum
|
||||
from .attributes import AttributeDefinition, RangeAttributeDefinition, ScalarAttributeDefinition
|
||||
|
||||
ConfigT = TypeVar("ConfigT")
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import random
|
||||
from dataclasses import dataclass
|
||||
from enum import StrEnum
|
||||
from typing import Any, Optional
|
||||
|
||||
from ..coaching import BaseCurriculum, RangeAttributeDefinition
|
||||
from ..factory import ProceduralDataset, register_dataset
|
||||
from ..utils import StrEnum
|
||||
|
||||
|
||||
class Color(StrEnum):
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
from dataclasses import dataclass
|
||||
from enum import StrEnum
|
||||
from random import Random
|
||||
from typing import Optional
|
||||
|
||||
from ..coaching import BaseCurriculum, RangeAttributeDefinition, ScalarAttributeDefinition
|
||||
from ..factory import ProceduralDataset, register_dataset
|
||||
from ..utils import StrEnum
|
||||
|
||||
DATASET_NAME = "number_sequence"
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import random
|
||||
from dataclasses import dataclass, field
|
||||
from enum import StrEnum
|
||||
from itertools import count
|
||||
from typing import Any, Optional
|
||||
|
||||
from ..coaching import BaseCurriculum, RangeAttributeDefinition
|
||||
from ..factory import ProceduralDataset, register_dataset
|
||||
from ..utils import StrEnum
|
||||
|
||||
DATASET_NAME = "family_relationships"
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
from dataclasses import dataclass, field
|
||||
from enum import StrEnum
|
||||
from random import Random
|
||||
from string import Template
|
||||
from typing import Optional
|
||||
|
||||
from ..coaching import BaseCurriculum, RangeAttributeDefinition, ScalarAttributeDefinition
|
||||
from ..coaching import BaseCurriculum, ScalarAttributeDefinition
|
||||
from ..factory import ProceduralDataset, register_dataset
|
||||
from ..utils import StrEnum
|
||||
|
||||
DATASET_NAME = "aiw"
|
||||
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
|
||||
import re
|
||||
from dataclasses import dataclass
|
||||
from enum import StrEnum
|
||||
from random import Random
|
||||
from typing import Any, Optional
|
||||
|
||||
from ..coaching import BaseCurriculum, RangeAttributeDefinition
|
||||
from ..factory import ProceduralDataset, register_dataset
|
||||
from ..utils import StrEnum
|
||||
|
||||
DATASET_NAME = "propositional_logic"
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
"""Syllogism reasoning task generator"""
|
||||
|
||||
from dataclasses import dataclass
|
||||
from enum import StrEnum
|
||||
from random import Random
|
||||
from typing import Optional
|
||||
|
||||
from ..coaching import BaseCurriculum, ScalarAttributeDefinition
|
||||
from ..factory import ProceduralDataset, register_dataset
|
||||
from ..utils import StrEnum
|
||||
|
||||
DATASET_NAME = "syllogism"
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import math
|
||||
import re
|
||||
from decimal import Decimal, InvalidOperation
|
||||
from enum import Enum
|
||||
from fractions import Fraction
|
||||
from typing import Any, Optional, Union
|
||||
|
||||
@@ -117,3 +118,38 @@ def compute_decimal_reward(answer: Optional[str], oracle_answer: str, strip_comm
|
||||
reward = len(oracle_answer) / len(answer)
|
||||
|
||||
return reward
|
||||
|
||||
|
||||
class StrEnum(str, Enum):
|
||||
"""
|
||||
Taken from Python 3.11 StrEnum implementation, moved here to support Python 3.10.
|
||||
Enum where members are also (and must be) strings
|
||||
"""
|
||||
|
||||
def __new__(cls, *values):
|
||||
"values must already be of type `str`"
|
||||
if len(values) > 3:
|
||||
raise TypeError("too many arguments for str(): %r" % (values,))
|
||||
if len(values) == 1:
|
||||
# it must be a string
|
||||
if not isinstance(values[0], str):
|
||||
raise TypeError("%r is not a string" % (values[0],))
|
||||
if len(values) >= 2:
|
||||
# check that encoding argument is a string
|
||||
if not isinstance(values[1], str):
|
||||
raise TypeError("encoding must be a string, not %r" % (values[1],))
|
||||
if len(values) == 3:
|
||||
# check that errors argument is a string
|
||||
if not isinstance(values[2], str):
|
||||
raise TypeError("errors must be a string, not %r" % (values[2]))
|
||||
value = str(*values)
|
||||
member = str.__new__(cls, value)
|
||||
member._value_ = value
|
||||
return member
|
||||
|
||||
@staticmethod
|
||||
def _generate_next_value_(name, start, count, last_values):
|
||||
"""
|
||||
Return the lower-cased version of the member name.
|
||||
"""
|
||||
return name.lower()
|
||||
|
||||
Reference in New Issue
Block a user