Skip to content

Commit 339eabe

Browse files
committed
Merge branch 'master' of github.com:udapi/udapi-python
2 parents c6465a5 + 293c729 commit 339eabe

File tree

6 files changed

+28
-11
lines changed

6 files changed

+28
-11
lines changed

udapi/block/read/sentences.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,8 @@ def read_tree(self, document=None):
5656
if self.newdoc_if_empty_line and preceded_by_empty_line:
5757
root.newdoc = True
5858
return root
59+
60+
# The first line in a file also marks a start of new document
61+
def after_process_document(self, document):
62+
if self.newdoc_if_empty_line:
63+
document.bundles[0].trees[0].newdoc = True

udapi/block/util/wc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def process_tree(self, tree):
2323
self.mwts += mwtoks
2424
self.tokens += len(tree.token_descendants) if mwtoks else len(tree.descendants)
2525
self.empty += len(tree.empty_nodes)
26-
if tree.newdoc:
26+
if tree.newdoc or tree == tree.document[0].trees[0]:
2727
self.docs += 1
2828
if tree.newpar:
2929
self.paragraphs += 1

udapi/core/basereader.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,6 @@ def read_documents(self):
314314
docs = []
315315
while not self.finished:
316316
doc = Document()
317-
self.process_document(doc)
317+
self.apply_on_document(doc)
318318
docs.append(doc)
319319
return docs

udapi/core/basewriter.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import sys
33
import logging
44
import os
5+
from pathlib import Path
56

67
import udapi.core.coref
78
from udapi.core.block import Block
@@ -62,7 +63,7 @@ def before_process_document(self, document):
6263
docname = document.meta.get('docname', None)
6364
if docname is not None:
6465
logging.info('Writing to file %s.', docname)
65-
sys.stdout = open(docname, 'wt', encoding=self.encoding, newline=self.newline)
66+
sys.stdout = self._open(docname)
6667
else:
6768
logging.warning('docname_as_file=1 but the document contains no docname')
6869
elif self.overwrite or self.path:
@@ -81,7 +82,7 @@ def before_process_document(self, document):
8182
new_ext = old_ext
8283
docname = os.path.join(new_dir, new_file + new_ext)
8384
logging.info('Writing to file %s.', docname)
84-
sys.stdout = open(docname, 'wt', encoding=self.encoding, newline=self.newline)
85+
sys.stdout = self._open(docname)
8586
else:
8687
logging.warning('using overwrite or path but document.meta["loaded_from"] is None')
8788
else:
@@ -96,10 +97,13 @@ def before_process_document(self, document):
9697
sys.stdout = self.orig_stdout
9798
else:
9899
logging.info('Writing to file %s.', filename)
99-
sys.stdout = open(filename, 'wt', encoding=self.encoding, newline=self.newline)
100+
sys.stdout = self._open(filename)
100101
if old_filehandle not in (sys.stdout, self.orig_stdout):
101102
old_filehandle.close()
102103

104+
def _open(self, filename):
105+
Path(filename).parent.mkdir(parents=True, exist_ok=True)
106+
return open(filename, 'wt', encoding=self.encoding, newline=self.newline)
103107

104108
def after_process_document(self, document):
105109
sys.stdout.flush()

udapi/core/root.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,10 @@ def create_multiword_token(self, words=None, form=None, misc=None):
178178
"""
179179
mwt = MWT(words, form, misc, root=self)
180180
self._mwts.append(mwt)
181+
if words[-1].misc["SpaceAfter"] == "No":
182+
mwt.misc["SpaceAfter"] = "No"
183+
for word in words:
184+
word.misc["SpaceAfter"] = ""
181185
return mwt
182186

183187
@property

udapi/core/run.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,13 @@ def _blocks_in_a_package(package_name):
8080
pname = pname[12:]
8181
blocks = []
8282
for sname in submodule_names:
83-
module = __import__(f"{package_name}.{sname}", fromlist="dummy")
84-
bname = [c for c in dir(module) if c.lower() == sname][0]
85-
blocks.append(f"{pname}.{bname}")
83+
try: # ignore modules with compilation errors
84+
module = __import__(f"{package_name}.{sname}", fromlist="dummy")
85+
bnames = [c for c in dir(module) if c.lower() == sname]
86+
if bnames:
87+
blocks.append(f"{pname}.{bnames[0]}")
88+
except:
89+
pass
8690
return blocks
8791
except:
8892
return []
@@ -114,13 +118,13 @@ def _import_blocks(block_names, block_args):
114118
exec(command) # pylint: disable=exec-used
115119
except ModuleNotFoundError as err:
116120
package_name = ".".join(module.split(".")[:-1])
117-
blocks = _blocks_in_a_package(package_name)
118-
if not blocks:
121+
package_blocks = _blocks_in_a_package(package_name)
122+
if not package_blocks:
119123
raise
120124
raise ModuleNotFoundError(
121125
f"Cannot find block {block_name} (i.e. class {module}.{class_name})\n"
122126
f"Available block in {package_name} are:\n"
123-
+ "\n".join(_blocks_in_a_package(package_name))) from err
127+
+ "\n".join(package_blocks)) from err
124128
except Exception as ex:
125129
logging.warning(f"Cannot import block {block_name} (i.e. class {module}.{class_name})")
126130
raise

0 commit comments

Comments
 (0)