|
23 | 23 | import time
|
24 | 24 | import re
|
25 | 25 | import types
|
| 26 | +from typing import Protocol |
26 | 27 | import zipfile
|
27 | 28 | import zipimport
|
28 | 29 | import warnings
|
@@ -546,54 +547,54 @@ def get_entry_info(dist, group, name):
|
546 | 547 | return get_distribution(dist).get_entry_info(group, name)
|
547 | 548 |
|
548 | 549 |
|
549 |
| -class IMetadataProvider: |
550 |
| - def has_metadata(name): |
| 550 | +class IMetadataProvider(Protocol): |
| 551 | + def has_metadata(self, name): |
551 | 552 | """Does the package's distribution contain the named metadata?"""
|
552 | 553 |
|
553 |
| - def get_metadata(name): |
| 554 | + def get_metadata(self, name): |
554 | 555 | """The named metadata resource as a string"""
|
555 | 556 |
|
556 |
| - def get_metadata_lines(name): |
| 557 | + def get_metadata_lines(self, name): |
557 | 558 | """Yield named metadata resource as list of non-blank non-comment lines
|
558 | 559 |
|
559 | 560 | Leading and trailing whitespace is stripped from each line, and lines
|
560 | 561 | with ``#`` as the first non-blank character are omitted."""
|
561 | 562 |
|
562 |
| - def metadata_isdir(name): |
| 563 | + def metadata_isdir(self, name): |
563 | 564 | """Is the named metadata a directory? (like ``os.path.isdir()``)"""
|
564 | 565 |
|
565 |
| - def metadata_listdir(name): |
| 566 | + def metadata_listdir(self, name): |
566 | 567 | """List of metadata names in the directory (like ``os.listdir()``)"""
|
567 | 568 |
|
568 |
| - def run_script(script_name, namespace): |
| 569 | + def run_script(self, script_name, namespace): |
569 | 570 | """Execute the named script in the supplied namespace dictionary"""
|
570 | 571 |
|
571 | 572 |
|
572 |
| -class IResourceProvider(IMetadataProvider): |
| 573 | +class IResourceProvider(IMetadataProvider, Protocol): |
573 | 574 | """An object that provides access to package resources"""
|
574 | 575 |
|
575 |
| - def get_resource_filename(manager, resource_name): |
| 576 | + def get_resource_filename(self, manager, resource_name): |
576 | 577 | """Return a true filesystem path for `resource_name`
|
577 | 578 |
|
578 | 579 | `manager` must be an ``IResourceManager``"""
|
579 | 580 |
|
580 |
| - def get_resource_stream(manager, resource_name): |
| 581 | + def get_resource_stream(self, manager, resource_name): |
581 | 582 | """Return a readable file-like object for `resource_name`
|
582 | 583 |
|
583 | 584 | `manager` must be an ``IResourceManager``"""
|
584 | 585 |
|
585 |
| - def get_resource_string(manager, resource_name): |
| 586 | + def get_resource_string(self, manager, resource_name): |
586 | 587 | """Return a string containing the contents of `resource_name`
|
587 | 588 |
|
588 | 589 | `manager` must be an ``IResourceManager``"""
|
589 | 590 |
|
590 |
| - def has_resource(resource_name): |
| 591 | + def has_resource(self, resource_name): |
591 | 592 | """Does the package contain the named resource?"""
|
592 | 593 |
|
593 |
| - def resource_isdir(resource_name): |
| 594 | + def resource_isdir(self, resource_name): |
594 | 595 | """Is the named resource a directory? (like ``os.path.isdir()``)"""
|
595 | 596 |
|
596 |
| - def resource_listdir(resource_name): |
| 597 | + def resource_listdir(self, resource_name): |
597 | 598 | """List of resource names in the directory (like ``os.listdir()``)"""
|
598 | 599 |
|
599 | 600 |
|
|
0 commit comments