| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 9896340 commit d69ba04
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -179,6 +179,20 @@ resources. For example: | |||
| 179 | 179 | project = gl.projects.get(1) | |
| 180 | 180 | project.star() | |
| 181 | 181 | ||
| 182 | + You can print a Gitlab Object. For example: | ||
| 183 | + | ||
| 184 | + .. code-block:: python | ||
| 185 | + | ||
| 186 | + project = gl.projects.get(1) | ||
| 187 | + print(project) | ||
| 188 | + | ||
| 189 | + # Or in a prettier format. | ||
| 190 | + project.pprint() | ||
| 191 | + | ||
| 192 | + # Or explicitly via `pformat()`. This is equivalent to the above. | ||
| 193 | + print(project.pformat()) | ||
| 194 | + | ||
| 195 | + | ||
| 182 | 196 | Base types | |
| 183 | 197 | ========== | |
| 184 | 198 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -16,6 +16,7 @@ | |||
| 16 | 16 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| 17 | 17 | ||
| 18 | 18 | import importlib | |
| 19 | + import pprint | ||
| 19 | 20 | import textwrap | |
| 20 | 21 | from types import ModuleType | |
| 21 | 22 | from typing import Any, Dict, Iterable, NamedTuple, Optional, Tuple, Type | |
@@ -147,6 +148,14 @@ def __str__(self) -> str: | |||
| 147 | 148 | data.update(self._updated_attrs) | |
| 148 | 149 | return f"{type(self)} => {data}" | |
| 149 | 150 | ||
| 151 | + def pformat(self) -> str: | ||
| 152 | + data = self._attrs.copy() | ||
| 153 | + data.update(self._updated_attrs) | ||
| 154 | + return f"{type(self)} => \n{pprint.pformat(data)}" | ||
| 155 | + | ||
| 156 | + def pprint(self) -> None: | ||
| 157 | + print(self.pformat()) | ||
| 158 | + | ||
| 150 | 159 | def __repr__(self) -> str: | |
| 151 | 160 | if self._id_attr: | |
| 152 | 161 | return f"<{self.__class__.__name__} {self._id_attr}:{self.get_id()}>" | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -201,3 +201,33 @@ def test_inequality_no_id(self, fake_manager): | |||
| 201 | 201 | obj1 = FakeObject(fake_manager, {"attr1": "foo"}) | |
| 202 | 202 | obj2 = FakeObject(fake_manager, {"attr1": "bar"}) | |
| 203 | 203 | assert obj1 != obj2 | |
| 204 | + | ||
| 205 | + def test_dunder_str(self, fake_manager): | ||
| 206 | + fake_object = FakeObject(fake_manager, {"attr1": "foo"}) | ||
| 207 | + assert str(fake_object) == ( | ||
| 208 | + "<class 'tests.unit.test_base.FakeObject'> => {'attr1': 'foo'}" | ||
| 209 | + ) | ||
| 210 | + | ||
| 211 | + def test_pformat(self, fake_manager): | ||
| 212 | + fake_object = FakeObject( | ||
| 213 | + fake_manager, {"attr1": "foo" * 10, "ham": "eggs" * 15} | ||
| 214 | + ) | ||
| 215 | + assert fake_object.pformat() == ( | ||
| 216 | + "<class 'tests.unit.test_base.FakeObject'> => " | ||
| 217 | + "\n{'attr1': 'foofoofoofoofoofoofoofoofoofoo',\n" | ||
| 218 | + " 'ham': 'eggseggseggseggseggseggseggseggseggseggseggseggseggseggseggs'}" | ||
| 219 | + ) | ||
| 220 | + | ||
| 221 | + def test_pprint(self, capfd, fake_manager): | ||
| 222 | + fake_object = FakeObject( | ||
| 223 | + fake_manager, {"attr1": "foo" * 10, "ham": "eggs" * 15} | ||
| 224 | + ) | ||
| 225 | + result = fake_object.pprint() | ||
| 226 | + assert result is None | ||
| 227 | + stdout, stderr = capfd.readouterr() | ||
| 228 | + assert stdout == ( | ||
| 229 | + "<class 'tests.unit.test_base.FakeObject'> => " | ||
| 230 | + "\n{'attr1': 'foofoofoofoofoofoofoofoofoofoo',\n" | ||
| 231 | + " 'ham': 'eggseggseggseggseggseggseggseggseggseggseggseggseggseggseggs'}\n" | ||
| 232 | + ) | ||
| 233 | + assert stderr == "" | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments