Skip to content

Commit

Permalink
Update classifications to operate using enums for age, bowstyle, and …
Browse files Browse the repository at this point in the history
…gender instead of strings.
  • Loading branch information
jatkinson1000 committed Jan 11, 2025
1 parent 599cb5c commit 7ae3a32
Show file tree
Hide file tree
Showing 16 changed files with 1,548 additions and 918 deletions.
109 changes: 58 additions & 51 deletions archeryutils/classifications/AGB_ages.json
Original file line number Diff line number Diff line change
@@ -1,59 +1,66 @@
[
{"desc" : "name of age_group, and maximum distances [metres, yards] for Males and Females",
"age_group" : "50+",
"male" : [70, 80],
"female" : [60, 60],
"red" : [60, 60],
"blue" : [50, 50],
"step" : 1
{
"P50" : {
"age_group" : "50+",
"male" : [70, 80],
"female" : [60, 60],
"sighted" : [60, 60],
"unsighted" : [50, 50],
"step" : 1
},
{"age_group" : "Adult",
"male" : [90, 100],
"female" : [70, 80],
"red" : [60, 60],
"blue" : [50, 50],
"step" : 0
"ADULT" : {
"age_group" : "Adult",
"male" : [90, 100],
"female" : [70, 80],
"sighted" : [60, 60],
"unsighted" : [50, 50],
"step" : 0
},
{"age_group" : "Under 21",
"male" : [90, 100],
"female" : [70, 80],
"red" : [60, 60],
"blue" : [50, 50],
"step" : 1
"U21" : {
"age_group" : "Under 21",
"male" : [90, 100],
"female" : [70, 80],
"sighted" : [60, 60],
"unsighted" : [50, 50],
"step" : 1
},
{"age_group" : "Under 18",
"male" : [70, 80],
"female" : [60, 60],
"red" : [60, 60],
"blue" : [50, 50],
"step" : 2
"U18" : {
"age_group" : "Under 18",
"male" : [70, 80],
"female" : [60, 60],
"sighted" : [60, 60],
"unsighted" : [50, 50],
"step" : 2
},
{"age_group" : "Under 16",
"male" : [60, 60],
"female" : [50, 50],
"red" : [50, 60],
"blue" : [40, 50],
"step" : 3
"U16" : {
"age_group" : "Under 16",
"male" : [60, 60],
"female" : [50, 50],
"sighted" : [50, 60],
"unsighted" : [40, 50],
"step" : 3
},
{"age_group" : "Under 15",
"male" : [50, 50],
"female" : [50, 50],
"red" : [40, 60],
"blue" : [30, 50],
"step" : 4
"U15" : {
"age_group" : "Under 15",
"male" : [50, 50],
"female" : [50, 50],
"sighted" : [40, 60],
"unsighted" : [30, 50],
"step" : 4
},
{"age_group" : "Under 14",
"male" : [40, 40],
"female" : [40, 40],
"red" : [30, 60],
"blue" : [30, 50],
"step" : 5
"U14" : {
"age_group" : "Under 14",
"male" : [40, 40],
"female" : [40, 40],
"sighted" : [30, 60],
"unsighted" : [30, 50],
"step" : 5
},
{"age_group" : "Under 12",
"male" : [30, 30],
"female" : [30, 30],
"red" : [30, 60],
"blue" : [30, 50],
"step" : 6
"U12" : {
"age_group" : "Under 12",
"male" : [30, 30],
"female" : [30, 30],
"sighted" : [30, 60],
"unsighted" : [30, 50],
"step" : 6
}
]
}
224 changes: 116 additions & 108 deletions archeryutils/classifications/AGB_bowstyles.json
Original file line number Diff line number Diff line change
@@ -1,114 +1,122 @@
[
{"bowstyle" : "Compound",
"datum_out" : 15,
"classStep_out" : 6,
"genderStep_out" : 4,
"ageStep_out" : 6,
"datum_in" : 11,
"classStep_in" : 8,
"genderStep_in" : 4,
"ageStep_in" : 6,
"datum_field" : 18,
"classStep_field" : 7.5,
"genderStep_field" : 4,
"ageStep_field" : 6
{
"COMPOUND" : {
"bowstyle" : "Compound",
"datum_out" : 15,
"classStep_out" : 6,
"genderStep_out" : 4,
"ageStep_out" : 6,
"datum_in" : 11,
"classStep_in" : 8,
"genderStep_in" : 4,
"ageStep_in" : 6,
"datum_field" : 18,
"classStep_field" : 7.5,
"genderStep_field" : 4,
"ageStep_field" : 6
},
{"bowstyle" : "Recurve",
"datum_out" : 30,
"classStep_out" : 7,
"genderStep_out" : 5,
"ageStep_out" : 6.5,
"datum_in" : 28,
"classStep_in" : 7.5,
"genderStep_in" : 5,
"ageStep_in" : 6.5,
"datum_field" : 34,
"classStep_field" : 8,
"genderStep_field" : 5,
"ageStep_field" : 5.5
"RECURVE" : {
"bowstyle" : "Recurve",
"datum_out" : 30,
"classStep_out" : 7,
"genderStep_out" : 5,
"ageStep_out" : 6.5,
"datum_in" : 28,
"classStep_in" : 7.5,
"genderStep_in" : 5,
"ageStep_in" : 6.5,
"datum_field" : 34,
"classStep_field" : 8,
"genderStep_field" : 5,
"ageStep_field" : 5.5
},
{"bowstyle" : "Barebow",
"datum_out" : 47,
"classStep_out" : 5.5,
"genderStep_out" : 5.5,
"ageStep_out" : 5.5,
"datum_in" : 42,
"classStep_in" : 6.0,
"genderStep_in" : 5.5,
"ageStep_in" : 5.5,
"datum_field" : 49,
"classStep_field" : 6.5,
"genderStep_field" : 5.5,
"ageStep_field" : 4
"BAREBOW" : {
"bowstyle" : "Barebow",
"datum_out" : 47,
"classStep_out" : 5.5,
"genderStep_out" : 5.5,
"ageStep_out" : 5.5,
"datum_in" : 42,
"classStep_in" : 6.0,
"genderStep_in" : 5.5,
"ageStep_in" : 5.5,
"datum_field" : 49,
"classStep_field" : 6.5,
"genderStep_field" : 5.5,
"ageStep_field" : 4
},
{"bowstyle" : "Longbow",
"datum_out" : 65,
"classStep_out" : 6,
"genderStep_out" : 7,
"ageStep_out" : 6,
"datum_in" : 61,
"classStep_in" : 6.5,
"genderStep_in" : 7,
"ageStep_in" : 6,
"datum_field" : 68,
"classStep_field" : 5.5,
"genderStep_field" : 10,
"ageStep_field" : 5.5
"LONGBOW" : {
"bowstyle" : "Longbow",
"datum_out" : 65,
"classStep_out" : 6,
"genderStep_out" : 7,
"ageStep_out" : 6,
"datum_in" : 61,
"classStep_in" : 6.5,
"genderStep_in" : 7,
"ageStep_in" : 6,
"datum_field" : 68,
"classStep_field" : 5.5,
"genderStep_field" : 10,
"ageStep_field" : 5.5
},
{"bowstyle" : "Traditional",
"datum_out" : 47,
"classStep_out" : 5.5,
"genderStep_out" : 5.5,
"ageStep_out" : 5.5,
"datum_in" : 42,
"classStep_in" : 6.0,
"genderStep_in" : 5.5,
"ageStep_in" : 5.5,
"datum_field" : 55,
"classStep_field" : 6,
"genderStep_field" : 7,
"ageStep_field" : 6
"TRADITIONAL" : {
"bowstyle" : "Traditional",
"datum_out" : 47,
"classStep_out" : 5.5,
"genderStep_out" : 5.5,
"ageStep_out" : 5.5,
"datum_in" : 42,
"classStep_in" : 6.0,
"genderStep_in" : 5.5,
"ageStep_in" : 5.5,
"datum_field" : 55,
"classStep_field" : 6,
"genderStep_field" : 7,
"ageStep_field" : 6
},
{"bowstyle" : "Flatbow",
"datum_out" : 47,
"classStep_out" : 5.5,
"genderStep_out" : 5.5,
"ageStep_out" : 5.5,
"datum_in" : 42,
"classStep_in" : 6.0,
"genderStep_in" : 5.5,
"ageStep_in" : 5.5,
"datum_field" : 62,
"classStep_field" : 5.5,
"genderStep_field" : 8,
"ageStep_field" : 5.5
"FLATBOW": {
"bowstyle" : "Flatbow",
"datum_out" : 47,
"classStep_out" : 5.5,
"genderStep_out" : 5.5,
"ageStep_out" : 5.5,
"datum_in" : 42,
"classStep_in" : 6.0,
"genderStep_in" : 5.5,
"ageStep_in" : 5.5,
"datum_field" : 62,
"classStep_field" : 5.5,
"genderStep_field" : 8,
"ageStep_field" : 5.5
},
{"bowstyle" : "Compound Limited",
"datum_out" : 15,
"classStep_out" : 6,
"genderStep_out" : 4,
"ageStep_out" : 6,
"datum_in" : 11,
"classStep_in" : 8,
"genderStep_in" : 4,
"ageStep_in" : 6,
"datum_field" : 32,
"classStep_field" : 7,
"genderStep_field" : 5,
"ageStep_field" : 5.5
},
{"bowstyle" : "Compound Barebow",
"datum_out" : 15,
"classStep_out" : 6,
"genderStep_out" : 4,
"ageStep_out" : 6,
"datum_in" : 11,
"classStep_in" : 8,
"genderStep_in" : 4,
"ageStep_in" : 6,
"datum_field" : 46,
"classStep_field" : 6,
"genderStep_field" : 5.5,
"ageStep_field" : 4
}
]
"COMPOUNDLIMITED" : {
"bowstyle" : "Compound Limited",
"datum_out" : 15,
"classStep_out" : 6,
"genderStep_out" : 4,
"ageStep_out" : 6,
"datum_in" : 11,
"classStep_in" : 8,
"genderStep_in" : 4,
"ageStep_in" : 6,
"datum_field" : 32,
"classStep_field" : 7,
"genderStep_field" : 5,
"ageStep_field" : 5.5
},
"COMPOUNDBAREBOW" : {
"bowstyle" : "Compound Barebow",
"datum_out" : 15,
"classStep_out" : 6,
"genderStep_out" : 4,
"ageStep_out" : 6,
"datum_in" : 11,
"classStep_in" : 8,
"genderStep_in" : 4,
"ageStep_in" : 6,
"datum_field" : 46,
"classStep_field" : 6,
"genderStep_field" : 5.5,
"ageStep_field" : 4
}
}
43 changes: 43 additions & 0 deletions archeryutils/classifications/AGB_data.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
"""Set of useful enums for input to Archery GB classification routines."""

from enum import Enum, Flag, auto


class AGB_genders(Enum):
"""An enum for holding information about AGB genders."""

MALE = auto()
FEMALE = auto()


class AGB_ages(Flag):
"""An enum for holding information about AGB ages."""

P50 = auto()
ADULT = auto()
U21 = auto()
U18 = auto()
U16 = auto()
U15 = auto()
U14 = auto()
U12 = auto()


class AGB_bowstyles(Flag):
"""
An enum for holding information about AGB bowstyles.
Note that under AGB rules Longbow and English Longbow are identical, but English
Longbow is used in field to avoid confusion with World Archery rules in which
"Longbow" is equivalent to the Archery GB Flatbow.
"""

COMPOUND = auto()
RECURVE = auto()
BAREBOW = auto()
LONGBOW = auto()
ENGLISHLONGBOW = LONGBOW
TRADITIONAL = auto()
FLATBOW = auto()
COMPOUNDLIMITED = auto()
COMPOUNDBAREBOW = auto()
Loading

0 comments on commit 7ae3a32

Please sign in to comment.