Merge pull request #64 from geckon/50

Fix imports, make make_sheets.py runnable directly
This commit is contained in:
Mark Wolf
2020-05-06 15:22:05 -05:00
committed by GitHub
68 changed files with 3118 additions and 3107 deletions
+4
View File
@@ -3,3 +3,7 @@ install:
@echo "\n\n================="
@echo "For optimal performance we highly recommend installing PDFTK: https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/"
@echo "If installing on OSX >= 10.11, see here: https://stackoverflow.com/questions/32505951/pdftk-server-on-os-x-10-11/33248310#33248310"
test:
python -m unittest discover tests/
+2 -2
View File
@@ -1,8 +1,8 @@
__all__ = ('__version__', 'Character', 'weapons', 'features',
'character', 'race', 'background', 'spells')
from . import weapons, features, race, background, spells
from .character import Character
from dungeonsheets import background, features, race, spells, weapons
from dungeonsheets.character import Character
import os
+1 -1
View File
@@ -1,4 +1,4 @@
from . import features as feats
from dungeonsheets import features as feats
class Background():
+13 -13
View File
@@ -1,20 +1,21 @@
"""Tools for describing a player character."""
__all__ = ('Character',)
import re
import os
import warnings
from . import exceptions
import importlib.util
import jinja2
import os
import re
import subprocess
import warnings
from .stats import Ability, Skill, findattr, ArmorClass, Speed, Initiative
from .dice import read_dice_str
from . import (weapons, race, background, spells, armor, monsters,
exceptions, classes, features, magic_items)
from .weapons import Weapon
from .armor import Armor, NoArmor, Shield, NoShield
import jinja2
from dungeonsheets import (armor, background, classes, exceptions, features,
magic_items, monsters, race, spells, weapons)
from dungeonsheets.armor import Armor, NoArmor, NoShield, Shield
from dungeonsheets.dice import read_dice_str
from dungeonsheets.stats import (Ability, ArmorClass, Initiative, Skill, Speed,
findattr)
from dungeonsheets.weapons import Weapon
def read(fname):
@@ -737,7 +738,7 @@ class Character():
f.write(text)
def to_pdf(self, filename, **kwargs):
from .make_sheets import make_sheet
from dungeonsheets.make_sheets import make_sheet
if filename.endswith('.pdf'):
filename = filename.replace('pdf', 'py')
make_sheet(filename, character=self,
@@ -869,4 +870,3 @@ class Wizard(Character):
attrs['classes'] = ['Wizard']
attrs['levels'] = [level]
super().__init__(**attrs)
+13 -13
View File
@@ -2,19 +2,19 @@ __all__ = ('CharClass', 'Barbarian', 'Bard', 'Cleric', 'Druid', 'Fighter',
'Monk', 'Paladin', 'Ranger', 'Rogue', 'Sorceror', 'Warlock',
'Wizard', 'RevisedRanger', 'available_classes')
from .classes import CharClass
from .barbarian import Barbarian
from .bard import Bard
from .cleric import Cleric
from .druid import Druid
from .fighter import Fighter
from .monk import Monk
from .paladin import Paladin
from .ranger import (Ranger, RevisedRanger)
from .rogue import Rogue
from .sorceror import Sorceror
from .warlock import Warlock
from .wizard import Wizard
from dungeonsheets.classes.barbarian import Barbarian
from dungeonsheets.classes.bard import Bard
from dungeonsheets.classes.classes import CharClass
from dungeonsheets.classes.cleric import Cleric
from dungeonsheets.classes.druid import Druid
from dungeonsheets.classes.fighter import Fighter
from dungeonsheets.classes.monk import Monk
from dungeonsheets.classes.paladin import Paladin
from dungeonsheets.classes.ranger import Ranger, RevisedRanger
from dungeonsheets.classes.rogue import Rogue
from dungeonsheets.classes.sorceror import Sorceror
from dungeonsheets.classes.warlock import Warlock
from dungeonsheets.classes.wizard import Wizard
available_classes = [Barbarian, Bard, Cleric, Druid, Fighter, Monk, Paladin,
Ranger, Rogue, Sorceror, Warlock, Wizard, RevisedRanger]
+3 -2
View File
@@ -1,7 +1,8 @@
from .. import (features, weapons)
from .classes import (CharClass, SubClass)
from collections import defaultdict
from dungeonsheets import features, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
# PHB
class BerserkerPath(SubClass):
+3 -2
View File
@@ -1,7 +1,8 @@
from .. import (weapons, features)
from .classes import CharClass, SubClass
from collections import defaultdict
from dungeonsheets import features, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
# PHB
class CollegeOfLore(SubClass):
+2 -1
View File
@@ -1,5 +1,6 @@
from collections import defaultdict
from ..features import Feature, FeatureSelector
from dungeonsheets.features import Feature, FeatureSelector
class CharClass():
+3 -3
View File
@@ -1,7 +1,8 @@
from .. import (weapons, features, spells)
from .classes import CharClass, SubClass
from collections import defaultdict
from dungeonsheets import features, spells, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
class ClericDomain(SubClass):
name = "Generic Cleric Domain"
@@ -382,4 +383,3 @@ class Cleric(CharClass):
19: (5, 4, 3, 3, 3, 3, 2, 1, 1, 1),
20: (5, 4, 3, 3, 3, 3, 2, 2, 1, 1),
}
+1 -1
View File
@@ -1,5 +1,5 @@
from .. import (weapons, features, spells)
from collections import defaultdict
from dungeonsheets import features, spells, weapons
# Custom Classes
+6 -6
View File
@@ -1,9 +1,10 @@
from ..stats import findattr
from .. import (weapons, monsters, exceptions, features)
from .classes import CharClass, SubClass
from collections import defaultdict
import warnings
import math
import warnings
from collections import defaultdict
from dungeonsheets import exceptions, features, monsters, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
from dungeonsheets.stats import findattr
# PHB
@@ -296,4 +297,3 @@ class Druid(CharClass):
warnings.warn("Druids cannot learn spells, "
"use ``spells_prepared`` instead.",
RuntimeWarning)
+3 -2
View File
@@ -1,7 +1,8 @@
from .. import (weapons, features)
from .classes import CharClass, SubClass
from collections import defaultdict
from dungeonsheets import features, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
# PHB
class Champion(SubClass):
+3 -2
View File
@@ -1,9 +1,10 @@
__all__ = ('Monk')
from .. import (features, weapons)
from .classes import CharClass, SubClass
from collections import defaultdict
from dungeonsheets import features, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
# PHB
class OpenHandWay(SubClass):
+3 -2
View File
@@ -1,7 +1,8 @@
from .. import (weapons, features, spells)
from .classes import CharClass, SubClass
from collections import defaultdict
from dungeonsheets import features, spells, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
class PaladinOath(SubClass):
name = "Generic Paladin Oath"
+3 -3
View File
@@ -1,9 +1,10 @@
__all__ = ('Ranger', 'RevisedRanger')
from .. import (weapons, features, spells)
from .classes import CharClass, SubClass
from collections import defaultdict
from dungeonsheets import features, spells, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
# PHB
class Hunter(SubClass):
@@ -292,4 +293,3 @@ class RevisedRanger(Ranger):
features_by_level[18] = [features.FeralSenses]
features_by_level[20] = [features.FoeSlayer]
subclasses_available = (BeastConclave, HunterConclave, DeepStalkerConclave)
+3 -2
View File
@@ -1,7 +1,8 @@
from .. import (weapons, features)
from .classes import CharClass, SubClass
from collections import defaultdict
from dungeonsheets import features, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
# PHB
class Thief(SubClass):
+3 -2
View File
@@ -1,7 +1,8 @@
from .. import (weapons, features)
from .classes import CharClass, SubClass
from collections import defaultdict
from dungeonsheets import features, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
# PHB
class DraconicBloodline(SubClass):
+3 -2
View File
@@ -1,7 +1,8 @@
from .. import (weapons, features, spells)
from .classes import CharClass, SubClass
from collections import defaultdict
from dungeonsheets import features, spells, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
# PHB
class Archfey(SubClass):
+3 -3
View File
@@ -1,7 +1,8 @@
from .. import (weapons, features)
from .classes import CharClass, SubClass
from collections import defaultdict
from dungeonsheets import features, weapons
from dungeonsheets.classes.classes import CharClass, SubClass
# PHB
class Abjuration(SubClass):
@@ -247,4 +248,3 @@ class Wizard(CharClass):
20: (5, 4, 3, 3, 3, 3, 2, 2, 1, 1),
}
+1 -1
View File
@@ -1,7 +1,7 @@
import re
from collections import namedtuple
from .exceptions import DiceError
from dungeonsheets.exceptions import DiceError
dice_re = re.compile('(\d+)d(\d+)', flags=re.I)
Dice = namedtuple('Dice', ('num', 'faces'))
+16 -17
View File
@@ -1,17 +1,16 @@
from .features import Feature, create_feature
from .barbarian import *
from .bard import *
from .cleric import *
from .druid import *
from .fighter import *
from .monk import *
from .paladin import *
from .ranger import *
from .rogue import *
from .sorceror import *
from .warlock import *
from .wizard import *
from .races import *
from .backgrounds import *
from .feats import *
from dungeonsheets.features.backgrounds import *
from dungeonsheets.features.barbarian import *
from dungeonsheets.features.bard import *
from dungeonsheets.features.cleric import *
from dungeonsheets.features.druid import *
from dungeonsheets.features.feats import *
from dungeonsheets.features.features import Feature, create_feature
from dungeonsheets.features.fighter import *
from dungeonsheets.features.monk import *
from dungeonsheets.features.paladin import *
from dungeonsheets.features.races import *
from dungeonsheets.features.ranger import *
from dungeonsheets.features.rogue import *
from dungeonsheets.features.sorceror import *
from dungeonsheets.features.warlock import *
from dungeonsheets.features.wizard import *
+1 -1
View File
@@ -1,4 +1,4 @@
from .features import Feature
from dungeonsheets.features.features import Feature
class ShelterOfTheFaithful(Feature):
+2 -3
View File
@@ -1,5 +1,5 @@
from .features import Feature, FeatureSelector
from .. import (weapons, armor)
from dungeonsheets import armor, weapons
from dungeonsheets.features.features import Feature, FeatureSelector
# PHB
@@ -864,4 +864,3 @@ class RageBeyondDeath(Feature):
"""
name = "Rage Beyond Death"
source = "Barbarian (Zealot)"
+3 -2
View File
@@ -1,5 +1,6 @@
from .features import Feature, FeatureSelector
from .ranger import Dueling, TwoWeaponFighting
from dungeonsheets.features.features import Feature, FeatureSelector
from dungeonsheets.features.ranger import Dueling, TwoWeaponFighting
# PHB
class BardicInspiration(Feature):
+2 -2
View File
@@ -1,5 +1,5 @@
from .features import Feature
from .. import spells
from dungeonsheets import spells
from dungeonsheets.features.features import Feature
# Cleric Features
+2 -3
View File
@@ -1,5 +1,5 @@
from .features import Feature, FeatureSelector
from .. import spells
from dungeonsheets import spells
from dungeonsheets.features.features import Feature, FeatureSelector
# PHB
@@ -695,4 +695,3 @@ class FungalBody(Feature):
name = "Fungal Body"
source = "Druid (Circle of Spores)"
+1 -1
View File
@@ -1,4 +1,4 @@
from .features import Feature
from dungeonsheets.features.features import Feature
# PHB
+1 -1
View File
@@ -1,4 +1,4 @@
from .. import weapons
from dungeonsheets import weapons
def create_feature(**params):
+4 -3
View File
@@ -1,6 +1,7 @@
from .ranger import Archery, Defense, Dueling, TwoWeaponFighting
from .features import Feature, FeatureSelector
from .. import (weapons, armor)
from dungeonsheets import armor, weapons
from dungeonsheets.features.features import Feature, FeatureSelector
from dungeonsheets.features.ranger import (Archery, Defense, Dueling,
TwoWeaponFighting)
# Features added for all PHB classes
# SCAG and XGTE needed
+2 -3
View File
@@ -1,5 +1,5 @@
from .features import Feature
from .. import (weapons, armor, spells)
from dungeonsheets import armor, spells, weapons
from dungeonsheets.features.features import Feature
class UnarmoredDefenseMonk(Feature):
@@ -883,4 +883,3 @@ class UnerringAccuracy(Feature):
"""
name = "Unerring Accuracy"
source = "Monk (Way of the Kensei)"
+4 -4
View File
@@ -1,7 +1,7 @@
from .features import Feature, FeatureSelector
from .ranger import Defense, Dueling
from .fighter import GreatWeaponFighting, Protection
from .. import (weapons, armor)
from dungeonsheets import armor, weapons
from dungeonsheets.features.features import Feature, FeatureSelector
from dungeonsheets.features.fighter import GreatWeaponFighting, Protection
from dungeonsheets.features.ranger import Defense, Dueling
# PHB
+2 -2
View File
@@ -1,5 +1,5 @@
from .features import Feature
from .. import armor, spells
from dungeonsheets import armor, spells
from dungeonsheets.features.features import Feature
# Many Classes
+3 -4
View File
@@ -1,6 +1,6 @@
from .features import Feature, FeatureSelector
from .. import (weapons, armor)
from .rogue import UncannyDodge, Evasion
from dungeonsheets import armor, weapons
from dungeonsheets.features.features import Feature, FeatureSelector
from dungeonsheets.features.rogue import Evasion, UncannyDodge
# PHB
@@ -880,4 +880,3 @@ class StalkersDodge(Feature):
"""
name = "Stalker's Dodge"
source = "Revised Ranger (Deep Stalker Conclave)"
+2 -2
View File
@@ -1,6 +1,7 @@
from .features import Feature
from math import ceil
from dungeonsheets.features.features import Feature
# PHB
class RogueExpertise(Feature):
@@ -567,4 +568,3 @@ class MasterDuelist(Feature):
name = "Master Duelist"
source = "Rogue (Swashbuckler)"
+2 -2
View File
@@ -1,5 +1,5 @@
from .features import Feature
from .. import spells
from dungeonsheets import spells
from dungeonsheets.features.features import Feature
# PHB
+2 -3
View File
@@ -1,5 +1,5 @@
from .features import (Feature, FeatureSelector)
from .. import spells, weapons
from dungeonsheets import spells, weapons
from dungeonsheets.features.features import Feature, FeatureSelector
# Features
@@ -1029,4 +1029,3 @@ class TrickstersEscape(Invocation):
"""
name = "Tricksters Escape"
+2 -2
View File
@@ -1,5 +1,5 @@
from .features import (Feature, FeatureSelector)
from .. import spells, weapons
from dungeonsheets import spells, weapons
from dungeonsheets.features.features import Feature, FeatureSelector
# PHB
Regular → Executable
+3 -3
View File
@@ -14,9 +14,9 @@ from fdfgen import forge_fdf
import pdfrw
from jinja2 import Environment, PackageLoader
from . import character as _char
from . import exceptions, classes
from .stats import mod_str
from dungeonsheets import character as _char
from dungeonsheets import exceptions, classes
from dungeonsheets.stats import mod_str
"""Program to take character definitions and build a PDF of the
+1 -1
View File
@@ -2,7 +2,7 @@
shape forms."""
from .stats import Ability
from dungeonsheets.stats import Ability
class Monster():
+3 -2
View File
@@ -1,7 +1,8 @@
from . import (weapons, spells)
from . import features as feats
from collections import defaultdict
from dungeonsheets import features as feats
from dungeonsheets import spells, weapons
class Race():
name = "Unknown"
+27 -27
View File
@@ -1,27 +1,27 @@
from .spells import Spell, create_spell
from .spells_a import *
from .spells_b import *
from .spells_c import *
from .spells_d import *
from .spells_e import *
from .spells_f import *
from .spells_g import *
from .spells_h import *
from .spells_i import *
from .spells_j import *
from .spells_k import *
from .spells_l import *
from .spells_m import *
from .spells_n import *
from .spells_o import *
from .spells_p import *
from .spells_q import *
from .spells_r import *
from .spells_s import *
from .spells_t import *
from .spells_u import *
from .spells_v import *
from .spells_w import *
from .spells_x import *
from .spells_y import *
from .spells_z import *
from dungeonsheets.spells.spells import Spell, create_spell
from dungeonsheets.spells.spells_a import *
from dungeonsheets.spells.spells_b import *
from dungeonsheets.spells.spells_c import *
from dungeonsheets.spells.spells_d import *
from dungeonsheets.spells.spells_e import *
from dungeonsheets.spells.spells_f import *
from dungeonsheets.spells.spells_g import *
from dungeonsheets.spells.spells_h import *
from dungeonsheets.spells.spells_i import *
from dungeonsheets.spells.spells_j import *
from dungeonsheets.spells.spells_k import *
from dungeonsheets.spells.spells_l import *
from dungeonsheets.spells.spells_m import *
from dungeonsheets.spells.spells_n import *
from dungeonsheets.spells.spells_o import *
from dungeonsheets.spells.spells_p import *
from dungeonsheets.spells.spells_q import *
from dungeonsheets.spells.spells_r import *
from dungeonsheets.spells.spells_s import *
from dungeonsheets.spells.spells_t import *
from dungeonsheets.spells.spells_u import *
from dungeonsheets.spells.spells_v import *
from dungeonsheets.spells.spells_w import *
from dungeonsheets.spells.spells_x import *
from dungeonsheets.spells.spells_y import *
from dungeonsheets.spells.spells_z import *
+1 -2
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class AbiDalzimsHorridWilting(Spell):
@@ -846,4 +846,3 @@ class Awaken(Spell):
magic_school = "Transmutation"
classes = ('Bard', 'Druid')
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class Bane(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class CallLightning(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class DancingLights(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class EarthTremor(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class Fabricate(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class GaseousForm(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class HailOfThorns(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class IceKnife(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class Jump(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class Knock(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class LegendLore(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class MaddeningDarkness(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class NegativeEnergyFlood(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class OtilukesFreezingSphere(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class PassWithoutTrace(Spell):
+1 -1
View File
@@ -1 +1 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class RaiseDead(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class SacredFlame(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class TashasHideousLaughter(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class UnseenServant(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class VampiricTouch(Spell):
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class WallOfFire(Spell):
+1 -1
View File
@@ -1 +1 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
+1 -1
View File
@@ -1 +1 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
+1 -1
View File
@@ -1,4 +1,4 @@
from .spells import Spell
from dungeonsheets.spells.spells import Spell
class ZephyrStrike(Spell):
+12 -10
View File
@@ -1,16 +1,19 @@
import math
from collections import namedtuple
from .armor import NoArmor, NoShield, HeavyArmor, Shield, Armor
from .weapons import Weapon
from .features import (UnarmoredDefenseMonk, UnarmoredDefenseBarbarian,
DraconicResilience, Defense, FastMovement,
UnarmoredMovement, GiftOfTheDepths, RemarkableAthelete,
SeaSoul, JackOfAllTrades, SoulOfTheForge, QuickDraw,
NaturalExplorerRevised, FeralInstinct, DreadAmbusher,
SuperiorMobility, AmbushMaster, RakishAudacity,
NaturalArmor)
from math import ceil
from dungeonsheets.armor import Armor, HeavyArmor, NoArmor, NoShield, Shield
from dungeonsheets.features import (AmbushMaster, Defense, DraconicResilience,
DreadAmbusher, FastMovement, FeralInstinct,
GiftOfTheDepths, JackOfAllTrades,
NaturalArmor, NaturalExplorerRevised,
QuickDraw, RakishAudacity,
RemarkableAthelete, SeaSoul,
SoulOfTheForge, SuperiorMobility,
UnarmoredDefenseBarbarian,
UnarmoredDefenseMonk, UnarmoredMovement)
from dungeonsheets.weapons import Weapon
def findattr(obj, name):
"""Similar to builtin getattr(obj, name) but more forgiving to
@@ -211,4 +214,3 @@ class Initiative():
if has_advantage:
ini += '(A)'
return ini