PYTHON

De Wiki Clusterlab.com.br
Revisão de 00h16min de 21 de agosto de 2023 por Damato (discussão | contribs) (→‎Model Class)
Ir para navegação Ir para pesquisar

Python

DATA

PIP

venv/pip.conf

[global]
index-url=https://username:password|PAT@pkgs.somewhere.com/something/xxxxxxxxxx/

Reference

CODE

Model Class

import json
from dataclasses import dataclass
from types import SimpleNamespace

@dataclass(init=True)
class User:
    name: str = None
    address: str = None

    def __add__(self, other):
        data= {}
        for attr in self.getAttriburtes():
            if other.__getattribute__(attr) == None:
                data.update({attr : self.__getattribute__(attr)})
            else:
                data.update({attr: other.__getattribute__(attr)})
        return User(**data)
    
    def __repr__(self):
        data = {}
        for attr in self.getAttriburtes():
            data.update({attr: self.__getattribute__(attr)})
        return data

    def __str__(self):
        return json.dumps(self.__repr__())

    def __len__(self):
        count = 0
        for attr in self.getAttriburtes():
            if self.__getattribute__(attr) != None:
                count = count + 1
        return count

    def toDict(self):
        return self.__repr__()

    def getAttriburtes(self):
        return [attr for attr in dir(self) if not callable(getattr(self, attr)) and not attr.startswith("__")]

    def getMethods(self):
        return [attr for attr in dir(self) if callable(getattr(self, attr)) and not attr.startswith("__")]

    def toSimpleNamespace(self):
        return json.loads(self.__str__(), object_hook=lambda d: SimpleNamespace(**d))
    def gen_gettersetters(self):
        for attr in self.getAttriburtes():
            print(f"""
    def set{attr.capitalize()}(self,{attr}: str):
        self.{attr} = {attr}
    def get{attr.capitalize()}(self) -> str:
        return self.{attr}""")


if __name__ == "__main__":
    ale1 = User(name="Ale")
    ale2 = User(address="street somewhere")
    print(ale1)
    print(ale2)
    ale = ale1 + ale2
    print(ale)
    print(len(ale1))
    print(len(ale2))
    print(len(ale))
    print(ale.getAttriburtes())
    print(ale.getMethods())
    print(ale.toSimpleNamespace().name)
    print(ale.toSimpleNamespace().address)

SimpleNamespaces

sn = json.loads(json_data, object_hook=lambda d: SimpleNamespace(**d))
sn = SimpleNamespace(hetero_list=['aa', SimpleNamespace(y='ll')])
json.loads(json.dumps(sn, default=lambda s: vars(s)))

Frameworks

Mirroring a repository

Making a mirror of the docker-py package and using it on another machine without internet access.

virtualenv -p $(which python3) pypi-mirror
source pypi-mirror/bin/activate
mkdir data
pip install python-pypi-mirror
pypi-mirror download -d data docker-py
pypi-mirror create -d data/ -m simple

WEB server

  • python2.7 -m SimpleHTTPServer 8383
  • python3 -m http.server 8383

Codificação de terminal

export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"

Ansible em WSL

apt install python-txwinrm python3-winrm -y
pip install "pywinrm>=0.2.2"

Articles

Tools