Code Duplication    Length = 12-13 lines in 2 locations

ocrd_network/ocrd_network/runtime_data.py 2 locations

@@ 111-123 (lines=13) @@
108
        self.pid = None
109
110
111
class DataRabbitMQ:
112
    def __init__(self, config: Dict) -> None:
113
        self.address = config['address']
114
        self.port = int(config['port'])
115
        self.ssh_username = config['ssh']['username']
116
        self.ssh_keypath = config['ssh'].get('path_to_privkey', None)
117
        self.ssh_password = config['ssh'].get('password', None)
118
        self.vhost = '/'
119
        self.username = config['credentials']['username']
120
        self.password = config['credentials']['password']
121
        self.url = f'amqp://{self.username}:{self.password}@{self.address}:{self.port}{self.vhost}'
122
        # Assigned when deployed
123
        self.pid = None
124
@@ 97-108 (lines=12) @@
94
        self.pid = None
95
96
97
class DataMongoDB:
98
    def __init__(self, config: Dict) -> None:
99
        self.address = config['address']
100
        self.port = int(config['port'])
101
        self.ssh_username = config['ssh']['username']
102
        self.ssh_keypath = config['ssh'].get('path_to_privkey', None)
103
        self.ssh_password = config['ssh'].get('password', None)
104
        self.username = config['credentials']['username']
105
        self.password = config['credentials']['password']
106
        self.url = f'mongodb://{self.address}:{self.port}'
107
        # Assigned when deployed
108
        self.pid = None
109
110
111
class DataRabbitMQ: