-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merger gzip #47
Merger gzip #47
Conversation
ce sont des commandes shell, pas du code Python ou Bash
ships est maintenant une liste que l'on peut trier en place
je ne comprends pas du tout l'intérêt du module à première vue les deux classes dans |
Effectivement le module factory n'est pas vraiment indispensable. J'y ai beaucoup réfléchi et j'ai trouvé que c'était plus élégant d'avoir une fabrique qui crée les bonnes instances de FileManager. On pourrait se contenter d'avoir une instance du FileManager qui convient dès le début, et se passer de la Fabrique qui l'instancie. Mais j'ai trouvé cela moins élégant. |
je reste sur la position qu'il nous faut enlever la couche factory qui n'apporte amha pas grand chose et rend les choses inutilement compliquées |
Ok, c'est fait ! |
Bon je vais retravailler tout ça parce que j'ai trois commits au lieu d'un seul, et en plus je trouve que le message de validation n'est pas vraiment le bon, donc je vais corriger tout cela d'un coup. |
f5c9692
to
8a07cb0
Compare
J'ai mieux à te proposer : mettre les constantes READ et WRITE sous forme d'énumération tout en gardant une utilisation simple, comme ceci : import abc
import enum
import gzip
class AbstractFileManager(abc.ABC):
@classmethod
def open(cls, filename, mode):
return cls._open(filename,
**{"encoding": "UTF-8", "mode": mode, "newline": '\n'})
@staticmethod
@abc.abstractmethod
def _open(filename, **kwargs):
pass
@property
def READ(self):
return self.Mode.READ.value
@property
def WRITE(self):
return self.Mode.WRITE.value
class GzipFileManager(AbstractFileManager):
@enum.unique
class Mode(enum.Enum):
READ = "rt"
WRITE = "wt"
@staticmethod
def _open(filename, **kwargs):
return gzip.open(filename=filename, **kwargs)
class TextFileManager(AbstractFileManager):
@enum.unique
class Mode(enum.Enum):
READ = "r"
WRITE = "w"
@staticmethod
def _open(filename, **kwargs):
return open(file=filename, **kwargs) Ainsi, dans les modules |
En plus, je dois de toute façon modifier le texte dans le fichier .md parce que les classes |
ce n'est pas du code Python
Bonjour Thierry et bonne année ! 🎉 🎊 |
Pas mal de modifications dans cette pull request dont la plus importante a pour but de resolve #45.