Skip to content

Commit f1ad648

Browse files
author
Steve Canny
committed
style: add StylesPart.styles
Remove legacy _Styles class and tests
1 parent adf878e commit f1ad648

File tree

4 files changed

+19
-46
lines changed

4 files changed

+19
-46
lines changed

docx/parts/styles.py

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
)
1010

1111
from ..opc.part import XmlPart
12-
from ..shared import lazyproperty
12+
from ..styles.styles import Styles
1313

1414

1515
class StylesPart(XmlPart):
@@ -33,23 +33,10 @@ def new(cls):
3333
"""
3434
raise NotImplementedError
3535

36-
@lazyproperty
36+
@property
3737
def styles(self):
3838
"""
3939
The |_Styles| instance containing the styles (<w:style> element
4040
proxies) for this styles part.
4141
"""
42-
return _Styles(self._element)
43-
44-
45-
class _Styles(object):
46-
"""
47-
Collection of |_Style| instances corresponding to the ``<w:style>``
48-
elements in a styles part.
49-
"""
50-
def __init__(self, styles_elm):
51-
super(_Styles, self).__init__()
52-
self._styles_elm = styles_elm
53-
54-
def __len__(self):
55-
return len(self._styles_elm.style_lst)
42+
return Styles(self.element)

docx/styles/styles.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,14 @@
88
absolute_import, division, print_function, unicode_literals
99
)
1010

11+
from ..shared import ElementProxy
1112

12-
class Styles(object):
13+
14+
class Styles(ElementProxy):
1315
"""
1416
A collection of |Style| objects defined in a document. Supports
1517
``len()``, iteration, and dictionary-style access by style id and style
1618
UI name.
1719
"""
20+
21+
__slots__ = ()

features/sty-get-styles-part.feature

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Feature: Get the document styles part
33
As a programmer using the advanced python-docx API
44
I need access to the styles part of the document
55

6+
@wip
67
Scenario: Get an existing styles part from document
78
Given a document having a styles part
89
When I get the styles part from the document

tests/parts/test_styles.py

Lines changed: 10 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -9,58 +9,39 @@
99
import pytest
1010

1111
from docx.oxml.parts.styles import CT_Styles
12-
from docx.parts.styles import StylesPart, _Styles
12+
from docx.parts.styles import StylesPart
13+
from docx.styles.styles import Styles
1314

14-
from ..oxml.unitdata.styles import a_style, a_styles
1515
from ..unitutil.mock import class_mock, instance_mock
1616

1717

1818
class DescribeStylesPart(object):
1919

20-
def it_provides_access_to_the_styles(self, styles_fixture):
21-
styles_part, _Styles_, styles_elm_, styles_ = styles_fixture
20+
def it_provides_access_to_its_styles(self, styles_fixture):
21+
styles_part, Styles_, styles_ = styles_fixture
2222
styles = styles_part.styles
23-
_Styles_.assert_called_once_with(styles_elm_)
23+
Styles_.assert_called_once_with(styles_part.element)
2424
assert styles is styles_
2525

2626
# fixtures -------------------------------------------------------
2727

2828
@pytest.fixture
29-
def styles_fixture(self, _Styles_, styles_elm_, styles_):
29+
def styles_fixture(self, Styles_, styles_elm_, styles_):
3030
styles_part = StylesPart(None, None, styles_elm_, None)
31-
return styles_part, _Styles_, styles_elm_, styles_
31+
return styles_part, Styles_, styles_
3232

3333
# fixture components ---------------------------------------------
3434

3535
@pytest.fixture
36-
def _Styles_(self, request, styles_):
36+
def Styles_(self, request, styles_):
3737
return class_mock(
38-
request, 'docx.parts.styles._Styles', return_value=styles_
38+
request, 'docx.parts.styles.Styles', return_value=styles_
3939
)
4040

4141
@pytest.fixture
4242
def styles_(self, request):
43-
return instance_mock(request, _Styles)
43+
return instance_mock(request, Styles)
4444

4545
@pytest.fixture
4646
def styles_elm_(self, request):
4747
return instance_mock(request, CT_Styles)
48-
49-
50-
class Describe_Styles(object):
51-
52-
def it_knows_how_many_styles_it_contains(self, len_fixture):
53-
styles, style_count = len_fixture
54-
assert len(styles) == style_count
55-
56-
# fixtures -------------------------------------------------------
57-
58-
@pytest.fixture(params=[0, 1, 2, 3])
59-
def len_fixture(self, request):
60-
style_count = request.param
61-
styles_bldr = a_styles().with_nsdecls()
62-
for idx in range(style_count):
63-
styles_bldr.with_child(a_style())
64-
styles_elm = styles_bldr.element
65-
styles = _Styles(styles_elm)
66-
return styles, style_count

0 commit comments

Comments
 (0)