Holen Sie sich den Git-Zweignamen und den Tag-Namen mit Python

Einführung

Wenn Sie das Modell, die Datei der Zwischengenerierung, die Genauigkeit und andere Ergebnisse gleichzeitig in einem maschinellen Lernsystem verwalten möchten, möchten Sie nicht nur den Code verwalten, indem Sie den Zweig auf Github abschneiden, sondern auch Speicher wie S3 verwenden.

Bestehende Werkzeuge

Wenn Sie das gleiche Problem mit vorhandenen Tools lösen möchten, ist es besser, mlflow zu verwenden.

Unabhängig davon, ob Sie die Version mit mlflow verwalten oder Ihre eigene Verwaltungsanwendung mit flask usw. entwickeln, diejenigen, die den Zweignamen von git und den Objektnamen von S3 vereinheitlicht haben Ich hatte das Gefühl, dass es gut war.

Es besteht auch der Wunsch, das in der Vergangenheit geschnittene Release-Tag zu überprüfen und den geschätzten Wert zu diesem Zeitpunkt zu reproduzieren.

Also habe ich den Python-Code geschrieben, um alle aktuellen Zweig- und Remote-Release-Tags zu erhalten.

import subprocess
import pandas as pd


def get_current_branch(repository_dir='./') -> str:
    '''Rufen Sie den aktuellen Filialnamen ab
    Args:
        repository_dir(str):Verzeichnis mit Repository
    Return:
        str
    '''
    cmd = "cd %s && git rev-parse --abbrev-ref HEAD" % repository_dir
    proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    proc.wait()
    stdout_data = proc.stdout.read()
    # stderr_data = proc.stderr.read()
    current_branch = stdout_data.decode('utf-8').replace('\n','')
    return current_branch


def get_remote_tags(repository='./') -> pd.core.frame.DataFrame:
    '''Holen Sie sich Remote-Tags
    Args:
        repository(str):Verzeichnis mit Repository oder URL des Repositorys(Beispiel: https://github.com/mlflow/mlflow )
    Returns:
        pd.core.frame.DataFrame
    Note:
Wenn Sie einen Zweig anstelle eines Tags erhalten möchten,Von cmd'--tags'Zu'-h'Sie können es in ändern.
    '''
    if repository.startswith('https://github.com/'):
        cmd = "git ls-remote --tags %s" % repository
    else:
        cmd = "cd %s && git ls-remote --tags" % repository
    proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    proc.wait()
    stdout_data = proc.stdout.read()
    # stderr_data = proc.stderr.read()
    if stdout_data:
        tag_df = pd.DataFrame([r.split('\t') for r in stdout_data.decode('utf-8').split('\n')], columns=['hash', 'tag_name'])
        return tag_df.dropna(how='any')
    else:
        print('cannot find tags.')
        return pd.DataFrame(columns=['hash', 'tag_name'])

Recommended Posts

Holen Sie sich den Git-Zweignamen und den Tag-Namen mit Python
[Python] Ruft den Variablennamen mit str ab
Holen Sie sich ein Date mit Python
Holen Sie sich den Betreff und den Text von Google Mail mit der Python- und Google Mail-API
Mit Python + Tweepy können Sie Bilder und Videos der Medienzeitleiste abrufen
Erhalten Sie Kommentare auf Youtube Live mit [Python] und [Pytchat]!
Erhalten Sie E-Mails von Google Mail und beschriften Sie sie mit Python3
[Python] Mit der API von Qiita erhalten Sie Benutzer- und Artikelinformationen
Holen Sie sich den Ländercode mit Python
Programmieren mit Python und Tkinter
Ver- und Entschlüsselung mit Python
Python und Hardware-Verwenden von RS232C mit Python-
Holen Sie sich Twitter-Timeline mit Python
Ruby- und Python-Syntax ~ branch ~
Holen Sie sich die Thread-ID mit Python
Beginnen Sie mit Python! ~ ② Grammatik ~
Python mit Pyenv und Venv
[Python] Quotient und Überschuss erhalten
Holen Sie sich Lager mit Python
Holen Sie sich das Home-Verzeichnis mit Python
Holen Sie sich Tastaturereignis mit Python
Holen Sie sich Alembic-Informationen mit Python
Funktioniert mit Python und R.
Vergleichen Sie HTTP GET / POST mit cURL (Befehl) und Python (Programmierung).
Befreien Sie sich mit Python und regulären Ausdrücken von schmutzigen Daten
Beispiel für das Parsen von HTTP GET und JSON mit Pfefferpython
Bibliothek zur Angabe eines Nameservers in Python und Dig
[Python x Zapier] Erhalten Sie Warninformationen und benachrichtigen Sie mit Slack
Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)
Kommunizieren Sie mit FX-5204PS mit Python und PyUSB
Roboter läuft mit Arduino und Python
Installieren Sie Python 2.7.9 und Python 3.4.x mit pip.
Neuronales Netzwerk mit OpenCV 3 und Python 3
AM-Modulation und Demodulation mit Python
Link, um mit Python zu beginnen
Scraping mit Node, Ruby und Python
Scraping mit Python, Selen und Chromedriver
Holen Sie sich das Wetter mit Python-Anfragen
Holen Sie sich das Wetter mit Python-Anfragen 2
[Python] Mit DataReader Wirtschaftsdaten abrufen
JSON-Codierung und -Decodierung mit Python
Erste Schritte mit Python
Hadoop-Einführung und MapReduce mit Python
[GUI in Python] PyQt5-Drag & Drop-
[Kleine Geschichte] Holen Sie sich mit Python einen Zeitstempel
Lesen und Schreiben von NetCDF mit Python
Ich habe mit PyQt5 und Python3 gespielt
Holen Sie sich Qiita-Trends mit Python-Scraping
Lesen und Schreiben von CSV mit Python
Mehrfachintegration mit Python und Sympy
Holen Sie sich den Hostnamen in Python
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Beginnen Sie mit Python mit Blender
Holen Sie sich Wetterinformationen mit Python & Scraping
Sugoroku-Spiel und Zusatzspiel mit Python
FM-Modulation und Demodulation mit Python
Holen Sie sich Daten von VPS MySQL mit Python 3 und SQL Alchemy
Lösen Sie das Python-Rucksackproblem mit der Branch-and-Bound-Methode
Formatieren Sie das Git-Protokoll und erhalten Sie den festgeschriebenen Dateinamen im CSV-Format