Changelog
Dev branch
Version 2.3.5
- Expand on documentation, build into explicit docs files.
- Fix
srctools.logging.LoggerAdapter.log()
being invalid in Python 3.7. - Make
srctools.fgd
work when reloaded. - Remove blank
srctools.choreo
module. - Disable iterating on
srctools.math.Matrix
, this is not useful. - Add iterable parameter to
srctools.dmx.Attribute.array()
, for constructing arrays with values. - Fix DMX
bool
tofloat
conversions mistakenly returningint
instead. - Remove useless
header_len
attribute fromsrctools.vpk.VPK
. - Rename
srctools.property_parser.Property
tosrctools.keyvalues.Keyvalues
. as well asNoKeyError
andKeyValError
. - Allow parsing
srctools.fgd.IODef
types which normally are not allowed for I/O. This will be substituted when exporting. - Use
__class__.__name__
in reprs, to better support subclasses. - Issue #14: Disable some size checks on LZMA decompression, so more TF2 maps can be parsed.
Version 2.3.4
- Add public submodules to
__all__
. - Disable escapes when parsing gameinfo files.
- Add unprefixed
vtx
files tosrctools.mdl.MDL_EXTS
. - Skip empty folder/extension dicts when writing VPK files.
- Clean up VPK fileinfo dicts when deleting files.
- Default
srctools.fgd.IODef
tosrctools.fgd.ValueTypes.VOID
. - Sort tags when exporting FGDs, to make it determinstic.
Version 2.3.3
- Writing out soundscript/particle cache can be non-atomic.
- Vendor code from deprecated
chunk.Chunk
standard library class. - Fix bad use of builtin generics.
Version 2.3.2
- Make particle systems use a cache file for the manifest too.
- Make
srctools.fgd.FGD.engine_db()
actually cache and copy the database. - Automatically add the
update
folder to searchpath precedence, fixing TeamSpen210/HammerAddons#164. - Make DMX scalar type deduction more strict (removing iterable -> vec support), making it typesafe.
- Add
srctools.filesys.CACHE_KEY_INVALID
. - Add
srctools.math.Matrix.from_angstr()
.
Version 2.3.1
- Fix
srctools.vmf.Output.combine()
not handlingtimes
correctly. srctools.math.quickhull()
is now public.- Add
srctools.bsp.BSP.is_cordoned_heuristic()
. - Restrict
srctools.bsp.Overlay.min_cpu
,max_cpu
,min_gpu
andmax_gpu
to valid values. - Test against Python 3.11.
- Read/write the
LEAFMINDISTTOWATER
lump data intosrctools.bsp.VisLeaf.min_water_dist
. - Read/write the
LEAFWATERDATA
lump. - Copy flags when copying
srctools.bsp.TexInfo
from an existing source. srctools.tokenizer.Tokenizer
now handles universal newlines conversion.- Disallow newlines in keyvalues keys when parsing by default. This catches syntax errors earlier.
- More
srctools.game.Game
gameinfo.txt
fields are now optional.
Version 2.3.0
- __Postcompiler code has been moved to HammerAddons.__
- Fix raw sound filenames not stripping special characters from the start when packing.
- Allow
srctools.dmx.Color
to omit alpha when parsed from strings, and roound/clamp values. - Handle INFRA’s altered
srctools.bsp.Primitive
lump. - Read soundscripts and breakable chunk files with code page 1252.
- Handle TF2’s LZMA compressed lumps.
- Detect various alternate versions of
srctools.bsp.StaticProp
lumps, and parse them. srctools.vmf.Entity
now directly implementscollections.abc.MutableMapping
. Direct access to theEntity.keys
dict
is deprecated.- Correctly handle proxy blocks in
VMT
patch shaders. - DMX stub and null elements use an immutable subclass, instead of having elements be None-able.
- Disallow entities to have a blank classname.
- Elide long arrays in element reprs.
- Add some additional logs when finding propcombine models fails.
- Clean up
srctools.Property.build()
API. - Make error messages more clear when
srctools.tokenizer.Tokenizer.error()
is used directly with aToken
. - Include potential variables in
KeyError
fromsrctools.vmf.EntityFixup.substitute()
. - Remove support for deprecated
imghdr
module. - Upgrade plugin finding logic to ensure each source is mounted under a persistent ID.
- Add missing
srctools.bsp.Primitive.dynamic_shadows
. - Deprecate
srctools.AtomicWriter
, use theatomicwrites
module. srctools._class_resources
is now only imported when required.- Use Cython when building, instead of including sources.
srctools.vmf.Entity.fixup
will instantiate theEntityFixup
object only when actually required.
Version 2.2.5
- Restore
srctools.dmx.Attribute.iter_str()
etc method’s ability to iterate scalars. - Suppress warnings in
srctools.Property.copy()
.
Version 2.2.4
- Fix behaviour of
srctools.Property.__getitem__()
and__setitem__()
. - Improve performance of
VPK
parsing. - Add support for Portal Revolution’s
FGD
helper tweaks. - Add option to collapse and remove IO proxies entirely.
- Fix
ModelCompiler
creating directories with relative paths. - Pass through unknown model flag bits unchanged.
- Fix VPK ascii check.
- Handle VMF groups correctly.
- Add
srctools.math.Vec.bbox_intersect()
. - Allow indexing
PrismFace
objects by a normal to get aSide
. - Add
srctools.dmx.Attribute.iter_str()
etc methods for iterating converted values. Directly iterating theAttribute
is deprecated. - Add
srctools.dmx.Attribute.append()
,extend()
andclear_array()
methods. - Fix corruption from mistaken deduplication of
srctools.bsp.VisLeaf
andPrimitive
lumps.
Version 2.2.3
- Fix use of builtin generics.
Version 2.2.2
- Document some known particle manifest paths.
- Handle double-spacing in animation particle options.
- Improve type hints in
srctools.smd
.
Version 2.2.1
Version 2.2.0
- Make
srctools.compiler.mdl_compiler
generic, to allow typechecking results. - Add
srctools.particles
. - DMX attributes may now be copied using the
copy
module, and also tested for equality. srctools.sndscript.Sound
now lazily creates operator stack keyvalue objects.srctools.packlist.Packlist
now can pack particle systems, and generate particle manifests.- Animation events which spawn particles are also detected.
Version 2.1.0
- Fix
%
-formatted logs breaking whensrctools.logger
is used. - Add
Property.extend()
, instead of using+
orProperty.append()
with a block. That usage is deprecated. - Deprecate creating root properties with
name=None
. srctools.filesys.FileSystemChain
is no longer generic, this is not useful.- Add functions which embed a Keyvalues1 tree in a DMX tree.