Skip to content
Snippets Groups Projects
Verified Commit 4ad8ca88 authored by Frede H's avatar Frede H :speech_balloon:
Browse files

refactor filter functions

parent 9af33e13
No related branches found
No related tags found
No related merge requests found
......@@ -22,8 +22,9 @@
from operator import itemgetter
from random import shuffle
import pacman_mirrors.functions.filter_mirror_status_functions
from pacman_mirrors.constants import txt
from pacman_mirrors.functions import filterFn
from pacman_mirrors.functions import filter_mirror_pool_functions
from pacman_mirrors.functions import outputFn
from pacman_mirrors.functions import sortMirrorFn
from pacman_mirrors.functions import testMirrorFn
......@@ -38,12 +39,12 @@ def build_mirror_list(self) -> None:
Remove known bad mirrors from the list
mirrors where status.json has -1 for last_sync
"""
mirror_selection = filterFn.filter_bad_mirrors(
mirror_selection = pacman_mirrors.functions.filter_mirror_status_functions.filter_bad_mirrors(
mirror_pool=self.mirrors.mirror_pool)
"""
Create a list based on the content of selected_countries
"""
mirror_selection = filterFn.filter_mirror_country(
mirror_selection = filter_mirror_pool_functions.filter_mirror_country(
mirror_pool=mirror_selection, country_pool=self.selected_countries)
"""
Check the length of selected_countries against the full countrylist
......@@ -61,7 +62,7 @@ def build_mirror_list(self) -> None:
"""
try:
_ = self.config["protocols"][0]
mirror_selection = filterFn.filter_mirror_protocols(
mirror_selection = filter_mirror_pool_functions.filter_mirror_protocols(
mirror_pool=mirror_selection, protocols=self.config["protocols"])
except IndexError:
pass
......@@ -73,7 +74,7 @@ def build_mirror_list(self) -> None:
if self.no_status:
pass
else:
mirror_selection = filterFn.filter_user_branch(
mirror_selection = filter_mirror_pool_functions.filter_user_branch(
mirror_pool=mirror_selection, config=self.config)
if self.config["method"] == "rank":
......@@ -84,7 +85,7 @@ def build_mirror_list(self) -> None:
else:
shuffle(mirror_selection)
mirror_selection = filterFn.filter_error_mirrors(
mirror_selection = pacman_mirrors.functions.filter_mirror_status_functions.filter_error_mirrors(
mirror_pool=mirror_selection)
"""
......
......@@ -21,9 +21,9 @@
from random import shuffle
import pacman_mirrors.functions.filter_mirror_status_functions
from pacman_mirrors.constants import txt
from pacman_mirrors.functions import filterFn
from pacman_mirrors.functions import filter_mirror_pool_functions
from pacman_mirrors.functions import outputFn
from pacman_mirrors.functions import testMirrorFn
from pacman_mirrors.functions import util
......@@ -42,20 +42,20 @@ def build_mirror_list(self, limit: int) -> None:
"""
remove known bad mirrors (status.json last_sync = -1)
"""
worklist = filterFn.filter_bad_mirrors(
worklist = pacman_mirrors.functions.filter_mirror_status_functions.filter_bad_mirrors(
mirror_pool=self.mirrors.mirror_pool)
"""
filter protocols if user has a selection
"""
if self.config["protocols"]:
worklist = filterFn.filter_mirror_protocols(
worklist = filter_mirror_pool_functions.filter_mirror_protocols(
mirror_pool=worklist, protocols=self.config["protocols"])
"""
Only pick mirrors which are up-to-date for the system branch
by removing not up-to-date mirrors from the list
"""
up_to_date_mirrors = filterFn.filter_user_branch(
up_to_date_mirrors = filter_mirror_pool_functions.filter_user_branch(
mirror_pool=worklist, config=self.config)
"""
Shuffle the list
......
......@@ -22,9 +22,10 @@
from operator import itemgetter
from random import shuffle
import pacman_mirrors.functions.filter_mirror_status_functions
from pacman_mirrors.constants import txt
from pacman_mirrors.functions import convertFn
from pacman_mirrors.functions import filterFn
from pacman_mirrors.functions import filter_mirror_pool_functions
from pacman_mirrors.functions import outputFn
from pacman_mirrors.functions import sortMirrorFn
from pacman_mirrors.functions import testMirrorFn
......@@ -35,14 +36,13 @@ def build_mirror_list(self) -> None:
"""
Prompt the user to select the mirrors with a gui.
Outputs a "custom" mirror file
Modify the configuration file to use the "custom" file.
Outputs a pacman mirrorlist,
"""
"""
Remove known bad mirrors from the list
mirrors where status.json has -1 for last_sync or branches is -1,-1,-1
"""
worklist = filterFn.filter_bad_mirrors(mirror_pool=self.mirrors.mirror_pool)
worklist = pacman_mirrors.functions.filter_mirror_status_functions.filter_bad_mirrors(mirror_pool=self.mirrors.mirror_pool)
"""
It would seem reasonable to implement a filter
based on the users branch and the mirrors update status
......@@ -53,7 +53,7 @@ def build_mirror_list(self) -> None:
The final mirrorfile will include all mirrors selected by the user
The final mirrorlist will exclude (if possible) mirrors not up-to-date
"""
worklist = filterFn.filter_mirror_country(
worklist = filter_mirror_pool_functions.filter_mirror_country(
mirror_pool=worklist, country_pool=self.selected_countries)
"""
If config.protols has content, that is a user decision and as such
......@@ -62,7 +62,7 @@ def build_mirror_list(self) -> None:
"""
try:
_ = self.config["protocols"][0]
worklist = filterFn.filter_mirror_protocols(
worklist = filter_mirror_pool_functions.filter_mirror_protocols(
mirror_pool=worklist, protocols=self.config["protocols"])
except IndexError:
pass
......@@ -147,7 +147,7 @@ def build_mirror_list(self) -> None:
if self.no_status:
pass
else:
mirror_list = filterFn.filter_user_branch(
mirror_list = filter_mirror_pool_functions.filter_user_branch(
mirror_pool=mirror_list, config=self.config)
"""
Writing mirrorlist
......
......@@ -19,38 +19,9 @@
"""Pacman-Mirrors Filter Functions"""
from pacman_mirrors.constants import txt
from pacman_mirrors.config import configuration as conf
def filter_bad_mirrors(mirror_pool: list) -> list:
"""
Remove known bad mirrors
branch is == -1
:param mirror_pool: the global mirror pool
:return: list with bad mirrors removed
"""
result = []
for mirror in mirror_pool:
if mirror["last_sync"] != txt.SERVER_BAD:
result.append(mirror)
return result
def filter_error_mirrors(mirror_pool: list) -> list:
"""
Remove mirrors with resp_time of 99.99
branch is == -1
:param mirror_pool: the global mirror pool
:return: list with bad mirrors removed
"""
result = []
for mirror in mirror_pool:
if mirror["resp_time"] != txt.SERVER_RES:
result.append(mirror)
return result
def filter_mirror_country(mirror_pool: list, country_pool: list) -> list:
"""
Return new mirror pool with selected countries
......@@ -86,23 +57,6 @@ def filter_mirror_protocols(mirror_pool: list, protocols: list = None) -> list:
return result
def filter_poor_mirrors(mirror_pool: list, interval: int = 720) -> list:
"""
Remove poorly updated mirrors last_sync is more than interval hours
:param mirror_pool: object
:param interval: hours since last sync - defaults to 30 days
:return: list with mirrors removed which has not synced since interval
"""
result = []
for mirror in mirror_pool:
last_sync = str(mirror["last_sync"]).split(":")
print(f"last_sync={last_sync}")
exit()
if int(last_sync[0]) < interval:
result.append(mirror)
return result
def filter_user_branch(mirror_pool: list, config: object) -> list:
"""
Filter mirrorlist on users branch and branch sync state
......
#!/usr/bin/env python
#
# This file is part of pacman-mirrors.
#
# pacman-mirrors is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# pacman-mirrors is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with pacman-mirrors. If not, see <http://www.gnu.org/licenses/>.
#
# Authors: Frede Hundewadt <echo ZmhAbWFuamFyby5vcmcK | base64 -d>
"""Pacman-Mirrors Filter Functions"""
from pacman_mirrors.constants import txt
# from constats.txt.py
# MIRROR RELATED
# LASTSYNC_OK = "24:00" # last syncronize in the past 24 hours
# LASTSYNC_NA = "9800:00" # last syncronization not available
# SERVER_BAD = "9999:99" # default last syncronization status
# SERVER_RES = 99.99 # default response status
def filter_bad_mirrors(mirror_pool: list) -> list:
"""
Remove known bad mirrors with last_sync = "9999:99"
:param mirror_pool: the global mirror pool
:return: list with bad mirrors removed
"""
result = []
for mirror in mirror_pool:
if mirror["last_sync"] != txt.SERVER_BAD:
result.append(mirror)
return result
def filter_error_mirrors(mirror_pool: list) -> list:
"""
Remove mirrors with resp_time = 99.99
:param mirror_pool: the global mirror pool
:return: list with bad mirrors removed
"""
result = []
for mirror in mirror_pool:
if mirror["resp_time"] != txt.SERVER_RES:
result.append(mirror)
return result
def filter_poor_mirrors(mirror_pool: list, interval: int = 720) -> list:
"""
Remove poorly updated mirrors last_sync is more than interval hours
:param mirror_pool: object
:param interval: hours since last sync - defaults to 30 days
:return: list with mirrors removed which has not synced since interval
"""
result = []
for mirror in mirror_pool:
last_sync = str(mirror["last_sync"]).split(":")
print(f"last_sync={last_sync}")
exit()
if int(last_sync[0]) < interval:
result.append(mirror)
return result
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment