Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
b497d80
docs: document Bookmarks analysis
Nov 15, 2017
60d8e57
acpt: Add scenario for document.bookmarks
Aug 25, 2018
8dc7a3e
rfctr: blacken docs/conf.py
scanny Jul 13, 2019
afd1cc3
doc: add Document.bookmarks
Aug 25, 2018
e17e50d
acpt: add scenario for Bookmarks
Aug 31, 2018
3e09234
bmk: add Bookmarks.__len__()
scanny Sep 9, 2018
f4b2291
bmk: add Bookmarks._finder
scanny Sep 9, 2018
959b554
bmk: add _DocumentBookmarkFinder.bookmark_pairs
scanny Sep 9, 2018
3bb9b96
bmk: Add DocumentPart.iter_story_parts()
Dec 24, 2018
9930c27
opc: add Part.iter_parts_related_by()
Dec 24, 2018
b9c2ff3
pep8: fixes for latest version of flake8
Dec 26, 2018
c80383e
rfctr: upgrade mock helpers to autospec by default
Dec 26, 2018
9533c02
bmk: add _PartBookmarkFinder.iter_start_end_pairs()
Dec 27, 2018
a45bf20
bmk: Add _PartBookmarkFinder._iter_start_end_pairs()
Dec 27, 2018
e67fe26
bmk: add _PartBookmarkFinder._iter_starts()
Dec 27, 2018
13cb94c
bmk: add _PartBookmarkFinder._all_starts_and_ends
Dec 27, 2018
a5ad201
bmk: add _PartBookmarkFinder._name_already_used()
Dec 27, 2018
4838fb0
bmk: add _PartBookmarkFinder._names_so_far
Dec 27, 2018
d862e57
parts: add EndnotesPart
Dec 27, 2018
80a7ff4
parts: add FootnotesPart
Dec 27, 2018
425245c
bmk: add Bookmarks.__getitem__() and .__iter__()
Dec 28, 2018
ad44458
test: update tox and fix py3 failures
scanny Dec 28, 2018
794af7d
acpt: Add scenario for named bookmark access
Dec 29, 2018
745f5c8
bmk: Add Bookmarks.get()
Jan 6, 2019
06c6e8b
bmk: Add _Bookmark.name
Jul 14, 2019
13c3dac
bmk: Add _Bookmark.id
Jan 6, 2019
4c93f5d
acpt: add Document.start_bookmark() scenario
scanny Jul 14, 2019
4acb2e5
bmk: add Document.start_bookmark()
scanny Jul 14, 2019
aaf7987
blkcntnr: add BlockItemContainer.start_bookmark()
scanny Sep 2, 2019
e37e45b
blkcntnr: add BlockItemContainer._bookmarks
scanny Sep 2, 2019
f1d7396
bmk: add Bookmarks.__contains__()
scanny Sep 2, 2019
4b46473
bmk: add Bookmarks.next_id
scanny Sep 3, 2019
c46483b
rfctr: modernize selected feature files
scanny Sep 3, 2019
bc62189
acpt: add remaining start_bookmark() scenarios
scanny Sep 3, 2019
e140108
parts: add BaseStoryPart.bookmarks
scanny Sep 3, 2019
ff53136
acpt: add end_bookmark() scenarios
Sep 3, 2019
254804e
acpt: add end_bookmark() scenarios
Jan 16, 2020
96aede1
bmk: add Document.end_bookmark()
Sep 3, 2019
d900350
blkcntnr: add BlockItemContainer.end_bookmark()
Sep 3, 2019
ae8a224
acpt: add Paragraph.start_bookmark() and Paragraph.end_bookmark() sce…
Sep 5, 2019
ffd87ad
par: add Paragraph.start_bookmark()
Sep 5, 2019
89ef8b7
par: add Paragraph._bookmarks
Sep 7, 2019
e8b9aec
par: add Paragraph.end_bookmark()
Sep 5, 2019
57b6ffe
docs: Updated feature proposal
Sep 4, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
parts: add EndnotesPart
  • Loading branch information
Benjamin Toornstra authored and scanny committed Jul 13, 2019
commit d862e57d60eace1868ce4b8f9cfe7c182ce4c581
2 changes: 2 additions & 0 deletions docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,8 @@

.. |Emu| replace:: :class:`.Emu`

.. |EndnotesPart| replace:: :class:`.EndnotesPart`

.. |False| replace:: :class:`False`

.. |float| replace:: :class:`.float`
Expand Down
3 changes: 3 additions & 0 deletions docx/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from docx.opc.parts.coreprops import CorePropertiesPart

from docx.parts.document import DocumentPart
from docx.parts.endnotes import EndnotesPart
from docx.parts.hdrftr import FooterPart, HeaderPart
from docx.parts.image import ImagePart
from docx.parts.numbering import NumberingPart
Expand All @@ -28,6 +29,7 @@ def part_class_selector(content_type, reltype):
PartFactory.part_class_selector = part_class_selector
PartFactory.part_type_for[CT.OPC_CORE_PROPERTIES] = CorePropertiesPart
PartFactory.part_type_for[CT.WML_DOCUMENT_MAIN] = DocumentPart
PartFactory.part_type_for[CT.WML_ENDNOTES] = EndnotesPart
PartFactory.part_type_for[CT.WML_FOOTER] = FooterPart
PartFactory.part_type_for[CT.WML_HEADER] = HeaderPart
PartFactory.part_type_for[CT.WML_NUMBERING] = NumberingPart
Expand All @@ -38,6 +40,7 @@ def part_class_selector(content_type, reltype):
CT,
CorePropertiesPart,
DocumentPart,
EndnotesPart,
FooterPart,
HeaderPart,
NumberingPart,
Expand Down
3 changes: 3 additions & 0 deletions docx/oxml/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ def OxmlElement(nsptag_str, attrs=None, nsdecls=None):
register_element_cls("w:body", CT_Body)
register_element_cls("w:document", CT_Document)

from docx.oxml.endnotes import CT_Endnotes # noqa
register_element_cls('w:endnotes', CT_Endnotes)

from docx.oxml.numbering import CT_Num, CT_Numbering, CT_NumLvl, CT_NumPr # noqa

register_element_cls("w:abstractNumId", CT_DecimalNumber)
Expand Down
11 changes: 11 additions & 0 deletions docx/oxml/endnotes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# encoding: utf-8

"""Custom element classes related to end-notes"""

from __future__ import absolute_import, division, print_function, unicode_literals

from docx.oxml.xmlchemy import BaseOxmlElement


class CT_Endnotes(BaseOxmlElement):
"""`w:endnotes` element"""
11 changes: 11 additions & 0 deletions docx/parts/endnotes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# encoding: utf-8

"""|EndnotesPart| and closely related objects"""

from __future__ import absolute_import, division, print_function, unicode_literals

from docx.opc.part import XmlPart


class EndnotesPart(XmlPart):
"""Package part containing end-notes"""
46 changes: 46 additions & 0 deletions tests/parts/test_endnotes.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# encoding: utf-8

"""Unit test suite for the docx.parts.endnotes module"""

from __future__ import absolute_import, division, print_function, unicode_literals

import pytest

from docx.opc.constants import CONTENT_TYPE as CT, RELATIONSHIP_TYPE as RT
from docx.opc.part import PartFactory
from docx.package import Package
from docx.parts.endnotes import EndnotesPart

from ..unitutil.mock import instance_mock, method_mock


class DescribeEndnotesPart(object):
def it_is_used_by_loader_to_construct_endnotes_part(
self, package_, EndnotesPart_load_, endnotes_part_
):
partname = "endnotes.xml"
content_type = CT.WML_ENDNOTES
reltype = RT.ENDNOTES
blob = "<w:endnotes/>"
EndnotesPart_load_.return_value = endnotes_part_

part = PartFactory(partname, content_type, reltype, blob, package_)

EndnotesPart_load_.assert_called_once_with(
partname, content_type, blob, package_
)
assert part is endnotes_part_

# fixture components ---------------------------------------------

@pytest.fixture
def EndnotesPart_load_(self, request):
return method_mock(request, EndnotesPart, "load", autospec=False)

@pytest.fixture
def endnotes_part_(self, request):
return instance_mock(request, EndnotesPart)

@pytest.fixture
def package_(self, request):
return instance_mock(request, Package)