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
|
pull-requests: write
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
python-version: ["3.11", "3.12"]
|
python-version: ["3.10", "3.11", "3.12"]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ authors = [
|
|||||||
]
|
]
|
||||||
description = "A library of procedural dataset generators for training reasoning models"
|
description = "A library of procedural dataset generators for training reasoning models"
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.10"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bfi==1.0.4",
|
"bfi==1.0.4",
|
||||||
"cellpylib==2.4.0",
|
"cellpylib==2.4.0",
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from enum import StrEnum
|
|
||||||
from random import Random
|
from random import Random
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
from ..coaching import BaseCurriculum, RangeAttributeDefinition
|
from ..coaching import BaseCurriculum, RangeAttributeDefinition
|
||||||
from ..data import read_data_file
|
from ..data import read_data_file
|
||||||
from ..factory import ProceduralDataset, register_dataset
|
from ..factory import ProceduralDataset, register_dataset
|
||||||
|
from ..utils import StrEnum
|
||||||
|
|
||||||
|
|
||||||
class TextTransformation(StrEnum):
|
class TextTransformation(StrEnum):
|
||||||
|
|||||||
@@ -3,11 +3,12 @@ import math
|
|||||||
import random
|
import random
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from datetime import date, timedelta
|
from datetime import date, timedelta
|
||||||
from enum import Enum, StrEnum, auto
|
from enum import Enum, auto
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
from ..coaching import BaseCurriculum, ScalarAttributeDefinition
|
from ..coaching import BaseCurriculum, ScalarAttributeDefinition
|
||||||
from ..factory import ProceduralDataset, register_dataset
|
from ..factory import ProceduralDataset, register_dataset
|
||||||
|
from ..utils import StrEnum
|
||||||
|
|
||||||
DATASET_NAME = "calendar_arithmetic"
|
DATASET_NAME = "calendar_arithmetic"
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import abc
|
import abc
|
||||||
from collections.abc import Iterable
|
from collections.abc import Iterable
|
||||||
from enum import StrEnum
|
|
||||||
from typing import Any, Optional, TypeVar
|
from typing import Any, Optional, TypeVar
|
||||||
|
|
||||||
|
from ..utils import StrEnum
|
||||||
from .attributes import AttributeDefinition, RangeAttributeDefinition, ScalarAttributeDefinition
|
from .attributes import AttributeDefinition, RangeAttributeDefinition, ScalarAttributeDefinition
|
||||||
|
|
||||||
ConfigT = TypeVar("ConfigT")
|
ConfigT = TypeVar("ConfigT")
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import random
|
import random
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from enum import StrEnum
|
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
from ..coaching import BaseCurriculum, RangeAttributeDefinition
|
from ..coaching import BaseCurriculum, RangeAttributeDefinition
|
||||||
from ..factory import ProceduralDataset, register_dataset
|
from ..factory import ProceduralDataset, register_dataset
|
||||||
|
from ..utils import StrEnum
|
||||||
|
|
||||||
|
|
||||||
class Color(StrEnum):
|
class Color(StrEnum):
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from enum import StrEnum
|
|
||||||
from random import Random
|
from random import Random
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from ..coaching import BaseCurriculum, RangeAttributeDefinition, ScalarAttributeDefinition
|
from ..coaching import BaseCurriculum, RangeAttributeDefinition, ScalarAttributeDefinition
|
||||||
from ..factory import ProceduralDataset, register_dataset
|
from ..factory import ProceduralDataset, register_dataset
|
||||||
|
from ..utils import StrEnum
|
||||||
|
|
||||||
DATASET_NAME = "number_sequence"
|
DATASET_NAME = "number_sequence"
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import random
|
import random
|
||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from enum import StrEnum
|
|
||||||
from itertools import count
|
from itertools import count
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
from ..coaching import BaseCurriculum, RangeAttributeDefinition
|
from ..coaching import BaseCurriculum, RangeAttributeDefinition
|
||||||
from ..factory import ProceduralDataset, register_dataset
|
from ..factory import ProceduralDataset, register_dataset
|
||||||
|
from ..utils import StrEnum
|
||||||
|
|
||||||
DATASET_NAME = "family_relationships"
|
DATASET_NAME = "family_relationships"
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
from dataclasses import dataclass, field
|
from dataclasses import dataclass, field
|
||||||
from enum import StrEnum
|
|
||||||
from random import Random
|
from random import Random
|
||||||
from string import Template
|
from string import Template
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from ..coaching import BaseCurriculum, RangeAttributeDefinition, ScalarAttributeDefinition
|
from ..coaching import BaseCurriculum, ScalarAttributeDefinition
|
||||||
from ..factory import ProceduralDataset, register_dataset
|
from ..factory import ProceduralDataset, register_dataset
|
||||||
|
from ..utils import StrEnum
|
||||||
|
|
||||||
DATASET_NAME = "aiw"
|
DATASET_NAME = "aiw"
|
||||||
|
|
||||||
|
|||||||
@@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from enum import StrEnum
|
|
||||||
from random import Random
|
from random import Random
|
||||||
from typing import Any, Optional
|
from typing import Any, Optional
|
||||||
|
|
||||||
from ..coaching import BaseCurriculum, RangeAttributeDefinition
|
from ..coaching import BaseCurriculum, RangeAttributeDefinition
|
||||||
from ..factory import ProceduralDataset, register_dataset
|
from ..factory import ProceduralDataset, register_dataset
|
||||||
|
from ..utils import StrEnum
|
||||||
|
|
||||||
DATASET_NAME = "propositional_logic"
|
DATASET_NAME = "propositional_logic"
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
"""Syllogism reasoning task generator"""
|
"""Syllogism reasoning task generator"""
|
||||||
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from enum import StrEnum
|
|
||||||
from random import Random
|
from random import Random
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
from ..coaching import BaseCurriculum, ScalarAttributeDefinition
|
from ..coaching import BaseCurriculum, ScalarAttributeDefinition
|
||||||
from ..factory import ProceduralDataset, register_dataset
|
from ..factory import ProceduralDataset, register_dataset
|
||||||
|
from ..utils import StrEnum
|
||||||
|
|
||||||
DATASET_NAME = "syllogism"
|
DATASET_NAME = "syllogism"
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import math
|
import math
|
||||||
import re
|
import re
|
||||||
from decimal import Decimal, InvalidOperation
|
from decimal import Decimal, InvalidOperation
|
||||||
|
from enum import Enum
|
||||||
from fractions import Fraction
|
from fractions import Fraction
|
||||||
from typing import Any, Optional, Union
|
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)
|
reward = len(oracle_answer) / len(answer)
|
||||||
|
|
||||||
return reward
|
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