diff --git a/.idea/dictionaries/ericf.xml b/.idea/dictionaries/ericf.xml
index 79fa7d9d..f280d478 100644
--- a/.idea/dictionaries/ericf.xml
+++ b/.idea/dictionaries/ericf.xml
@@ -30,6 +30,7 @@
achs
acinstance
ack
+ ack'ed
acked
acks
acnt
@@ -149,6 +150,7 @@
badguy
bafoundation
ballistica
+ ballistica's
ballisticacore
ballisticacorecb
bamaster
@@ -204,6 +206,7 @@
bools
bootlocale
borhani
+ bot's
botdist
botlist
botpos
@@ -607,6 +610,7 @@
etsel
etxt
etype
+ eval'ed
evalpydata
evel
eventid
@@ -631,6 +635,10 @@
extrahash
extrascale
exts
+ f'baseval
+ f'chmod
+ f'final
+ f'fixme
factoryclass
fakemodule
fallbacks
@@ -772,6 +780,7 @@
gameinstance
gamemap
gamepad
+ gamepad's
gamepadadvanced
gamepads
gamepadselect
@@ -1141,6 +1150,7 @@
lssl
lstart
lstr
+ lstr's
lstrs
lsval
ltex
@@ -1337,6 +1347,7 @@
nvcompress
nvidia
nyko
+ obj's
objname
objs
objt
@@ -1578,6 +1589,7 @@
pybee
pybuild
pycache
+ pycharm's
pycharmbin
pycharmfull
pycharmroot
@@ -1760,6 +1772,7 @@
sessionplayer
sessionplayers
sessionteam
+ sessionteam's
sessionteams
sessiontype
setactivity
@@ -1906,6 +1919,7 @@
subpath
subplatform
subplatforms
+ subprocess's
subprocesses
subrepos
subsel
@@ -2016,6 +2030,7 @@
thelaststand
themself
thingie
+ this'll
threadtype
throwiness
timedisplay
@@ -2084,6 +2099,7 @@
typeargs
typecheck
typechecker
+ typechecker's
typedval
typeshed
typestr
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5a59c5d8..0be8533b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,6 +3,7 @@
- Windows debug builds now use Python debug libraries. This should hopefully catch more errors that would otherwise go undetected and potentially cause crashes.
- Switched windows builds to use 'fast' mode math instead of 'strict'. This should make the game run more efficiently (similar modes are already in use on other platforms) but holler if any odd breakage happens such as things falling through floors (more often than the occasional random fluke-y case that happens now).
- Added _ba.can_display_full_unicode() for any code that wants to avoid printing things that won't show up locally.
+- Now pulling some classes such as Literal and Protocol from typing instead of typing_extensions (they were officially added to Python in 3.8)
### 1.5.23 (20146)
- Fixed the shebang line in `bombsquad_server` file by using `-S` flag for `/usr/bin/env`.
diff --git a/assets/src/ba_data/python/_ba.py b/assets/src/ba_data/python/_ba.py
index 597b13fa..9a1493cc 100644
--- a/assets/src/ba_data/python/_ba.py
+++ b/assets/src/ba_data/python/_ba.py
@@ -54,8 +54,7 @@ from ba._enums import TimeFormat, TimeType
if TYPE_CHECKING:
from typing import (Any, Dict, Callable, Tuple, List, Optional, Union,
- List, Type)
- from typing_extensions import Literal
+ List, Type, Literal)
from ba._app import App
import ba
diff --git a/assets/src/ba_data/python/ba/_actor.py b/assets/src/ba_data/python/ba/_actor.py
index 6fa9ea57..f70dd780 100644
--- a/assets/src/ba_data/python/ba/_actor.py
+++ b/assets/src/ba_data/python/ba/_actor.py
@@ -30,9 +30,7 @@ from ba._error import print_exception, ActivityNotFoundError
import _ba
if TYPE_CHECKING:
- from typing import Any, Optional
- from typing_extensions import Literal
-
+ from typing import Any, Optional, Literal
import ba
T = TypeVar('T', bound='Actor')
diff --git a/assets/src/ba_data/python/ba/_general.py b/assets/src/ba_data/python/ba/_general.py
index 82cc917b..276deb0d 100644
--- a/assets/src/ba_data/python/ba/_general.py
+++ b/assets/src/ba_data/python/ba/_general.py
@@ -26,8 +26,7 @@ import types
import weakref
import random
import inspect
-from typing import TYPE_CHECKING, TypeVar
-from typing_extensions import Protocol
+from typing import TYPE_CHECKING, TypeVar, Protocol
from efro.terminal import Clr
from ba._error import print_error, print_exception
diff --git a/assets/src/ba_data/python/bastd/actor/onscreentimer.py b/assets/src/ba_data/python/bastd/actor/onscreentimer.py
index 3facd7e3..560b13be 100644
--- a/assets/src/ba_data/python/bastd/actor/onscreentimer.py
+++ b/assets/src/ba_data/python/bastd/actor/onscreentimer.py
@@ -26,8 +26,7 @@ from typing import TYPE_CHECKING, overload
import ba
if TYPE_CHECKING:
- from typing import Optional, Union, Any
- from typing_extensions import Literal
+ from typing import Optional, Union, Any, Literal
class OnScreenTimer(ba.Actor):
diff --git a/assets/src/ba_data/python/bastd/actor/playerspaz.py b/assets/src/ba_data/python/bastd/actor/playerspaz.py
index 48acc0aa..fde1f1a4 100644
--- a/assets/src/ba_data/python/bastd/actor/playerspaz.py
+++ b/assets/src/ba_data/python/bastd/actor/playerspaz.py
@@ -28,8 +28,7 @@ import ba
from bastd.actor.spaz import Spaz
if TYPE_CHECKING:
- from typing import Any, Sequence, Tuple, Optional, Type
- from typing_extensions import Literal
+ from typing import Any, Sequence, Tuple, Optional, Type, Literal
PlayerType = TypeVar('PlayerType', bound=ba.Player)
TeamType = TypeVar('TeamType', bound=ba.Team)
diff --git a/config/toolconfigsrc/pylintrc b/config/toolconfigsrc/pylintrc
index 154eac9f..cbe6f4f0 100644
--- a/config/toolconfigsrc/pylintrc
+++ b/config/toolconfigsrc/pylintrc
@@ -62,7 +62,7 @@ disable=broad-except,
enable=useless-suppression
[BASIC]
-# Allowing a handfull of short names commonly understood to be iterators,
+# Allowing a handful of short names commonly understood to be iterators,
# math concepts, or temporary variables.
good-names=i,
diff --git a/docs/ba_module.md b/docs/ba_module.md
index e2ea8d1f..6cfe17e3 100644
--- a/docs/ba_module.md
+++ b/docs/ba_module.md
@@ -1,5 +1,5 @@
-
last updated on 2020-08-02 for Ballistica version 1.5.24 build 20160
+last updated on 2020-08-02 for Ballistica version 1.5.24 build 20162
This page documents the Python classes and functions in the 'ba' module,
which are the ones most relevant to modding in Ballistica. If you come across something you feel should be included here or could be better explained, please let me know. Happy modding!
diff --git a/tools/batools/build.py b/tools/batools/build.py
index 41f7c100..01fea940 100644
--- a/tools/batools/build.py
+++ b/tools/batools/build.py
@@ -47,9 +47,9 @@ class PipRequirement:
PIP_REQUIREMENTS = [
PipRequirement(modulename='pylint', minversion=[2, 5, 3]),
- PipRequirement(modulename='mypy', minversion=[0, 781]),
+ PipRequirement(modulename='mypy', minversion=[0, 782]),
PipRequirement(modulename='yapf', minversion=[0, 30, 0]),
- PipRequirement(modulename='cpplint', minversion=[1, 5, 1]),
+ PipRequirement(modulename='cpplint', minversion=[1, 5, 3]),
PipRequirement(modulename='typing_extensions'),
PipRequirement(modulename='pytz'),
PipRequirement(modulename='yaml', pipname='PyYAML'),
diff --git a/tools/efro/entity/util.py b/tools/efro/entity/util.py
index 54d18857..8f804b4b 100644
--- a/tools/efro/entity/util.py
+++ b/tools/efro/entity/util.py
@@ -101,10 +101,11 @@ def have_matching_fields(val1: CompoundValue, val2: CompoundValue) -> bool:
Note this just refers to the field configuration; not data.
"""
- # quick-out: matching types will always have identical fields
+ # Quick-out: matching types will always have identical fields.
if type(val1) is type(val2):
return True
- # otherwise do a full comparision
+
+ # Otherwise do a full comparison.
return val1.get_fields() == val2.get_fields()
diff --git a/tools/efrotools/__init__.py b/tools/efrotools/__init__.py
index 9423b213..86b68a57 100644
--- a/tools/efrotools/__init__.py
+++ b/tools/efrotools/__init__.py
@@ -37,8 +37,7 @@ from pathlib import Path
from typing import TYPE_CHECKING
if TYPE_CHECKING:
- from typing import Dict, Union, Sequence, Optional, Any
- from typing_extensions import Literal
+ from typing import Dict, Union, Sequence, Optional, Any, Literal
# Python major version we're using for all this stuff.
PYVER = '3.8'
diff --git a/tools/efrotools/pcommand.py b/tools/efrotools/pcommand.py
index 6af449ec..8f7bc855 100644
--- a/tools/efrotools/pcommand.py
+++ b/tools/efrotools/pcommand.py
@@ -162,10 +162,14 @@ def spelling_all() -> None:
capture_output=True).stdout.decode().splitlines()
if 'Typo: In word' in line
]
- words = [
- line.split('Typo: In word')[1].strip().replace("'", '')
- for line in lines
- ]
+ words = [line.split('Typo: In word')[1].strip() for line in lines]
+
+ # Strip enclosing quotes but not internal ones.
+ for i, word in enumerate(words):
+ assert word[0] == "'"
+ assert word[-1] == "'"
+ words[i] = word[1:-1]
+
_spelling(words)