This is a Cross-Platform Plot Manager for Chia Plotting that is simple, easy-to-use, and reliable.

Overview

Swar's Chia Plot Manager

A plot manager for Chia plotting: https://www.chia.net/

The view of the manager

Development Version: v0.0.1

This is a cross-platform Chia Plot Manager that will work on the major operating systems. This is not a plotter. The purpose of this library is to manage your plotting and kick off new plots with the settings that you configure. Everyone's system is unique so customization is an important feature that was engraved into this library.

This library is simple, easy-to-use, and reliable to keep the plots generating.

This library has been tested for Windows and Linux.

Features

  • Stagger your plots so that your computer resources can avoid high peaks.
  • Allow for a list of destination directories.
  • Utilize temporary space to its maximum potential by starting a new plot early.
  • Run a maximum number of plots concurrently to avoid bottlenecks or limit resource hogging.
  • More in-depth active plot screen.

Sponsor / Support this Library

This library took a lot of time and effort in order to get it before you today. Consider sponsoring or supporting the library. This is not necessary but more a kind gestures.

Installation

The installation of this library is straightforward. I have attached detailed instructions below that should help you get started.

  1. Download and Install Python 3.7 or higher: https://www.python.org/
  2. git clone this repo or download it.
  3. Open CommandPrompt / PowerShell / Terminal and cd into the main library folder.
    • Example: cd C:\Users\Swar\Documents\Swar-Chia-Plot-Manager
  4. OPTIONAL: Create a virtual environment for Python. This is recommended if you use Python for other things.
    1. Create a new python environment: python -m venv venv
      • The second venv can be renamed to whatever you want. I prefer venv because it's a standard.
    2. Activate the virtual environment. This must be done every single time you open a new window.
      • Example Windows: venv\Scripts\activate
      • Example Linux: . ./venv/bin/activate or source ./venv/bin/activate
    3. Confirm that it has activated by seeing the (venv) prefix. The prefix will change depending on what you named it.
  5. Install the required modules: pip install -r requirements.txt
  6. Copy config.yaml.default and name it as config.yaml in the same directory.
  7. Edit and set up the config.yaml to your own personal settings. There is more help on this below.
    • You will need to add the chia_location as well! This should point to your chia executable.
  8. Run the Manager: python manager.py start
    • This will start a process in the background that will manage plots based on your inputted settings.
  9. Run the View: python manager.py view
  • This will loop through a view screen with details about active plots.

Configuration

The configuration of this library is unique to every end-user. The config.yaml file is where the configuration will live.

This plot manager works based on the idea of jobs. Each job will have its own settings that you can configure and customize. No two drives are unique so this will provide flexibility for your own constraints and requirements.

chia_location

This is a single variable that should contain the location of your chia executable file. This is the blockchain executable.

  • Windows Example: C:\Users\<USERNAME>\AppData\Local\chia-blockchain\app-1.1.2\resources\app.asar.unpacked\daemon\chia.exe
  • Linux Example: /usr/lib/chia-blockchain/resources/app.asar.unpacked/daemon/chia
  • Another Linux Example: /home/swar/chia-blockchain/venv/bin/chia

manager

These are the config settings that will only be used by the plot manager.

  • check_interval - The number of seconds to wait before checking to see if a new job should start.
  • log_level - Keep this on ERROR to only record when there are errors. Change this to INFO in order to see more detailed logging. Warning: INFO will write a lot of information.

log

  • folder_path - This is the folder where your log files for plots will be saved.

view

These are the settings that will be used by the view.

  • check_interval - The number of seconds to wait before updating the view.
  • datetime_format - The datetime format that you want displayed in the view. See here for formatting: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
  • include_seconds_for_phase - This dictates whether seconds are included in the phase times.
  • include_drive_info - This dictates whether the drive information will be showed.
  • include_cpu - This dictates whether the CPU information will be showed.
  • include_ram - This dictates whether the RAM information will be showed.
  • include_plot_stats - This dictates whether the plot stats will be showed.

notifications

These are different settings in order to send notifications when the plot manager starts and when a plot has been completed.

progress

  • phase_line_end - These are the settings that will be used to dictate when a phase ends in the progress bar. It is supposed to reflect the line at which the phase will end so the progress calculations can use that information with the existing log file to calculate a progress percent.
  • phase_weight - These are the weight to assign to each phase in the progress calculations. Typically, Phase 1 and 3 are the longest phases so they will hold more weight than the others.

global

  • max_concurrent - The maximum number of plots that your system can run. The manager will not kick off more than this number of plots total over time.

job

These are the settings that will be used by each job. Please note you can have multiple jobs and each job should be in YAML format in order for it to be interpreted correctly. Almost all the values here will be passed into the Chia executable file.

Check for more tails on the Chia CLI here: https://github.com/Chia-Network/chia-blockchain/wiki/CLI-Commands-Reference

  • name - This is the name that you want to give to the job.
  • max_plots - This is the maximum number of jobs to make in one run of the manager. Any restarts to manager will reset this variable. It is only here to help with short term plotting.
  • [OPTIONAL]farmer_public_key - Your farmer public key. If none is provided, it will not pass in this variable to the chia executable which results in your default keys being used. This is only needed if you have chia set up on a machine that does not have your credentials.
  • [OPTIONAL]pool_public_key - Your pool public key. Same information as the above.
  • temporary_directory - Only a single directory should be passed into here. This is where the plotting will take place.
  • [OPTIONAL]temporary2_directory - Can be a single value or a list of values. This is an optional parameter to use in case you want to use the temporary2 directory functionality of Chia plotting.
  • destination_directory - Can be a single value or a list of values. This is the final directory where the plot will be transferred once it is completed. If you provide a list, it will cycle through each drive one by one.
  • size - This refers to the k size of the plot. You would type in something like 32, 33, 34, 35... in here.
  • bitfield - This refers to whether you want to use bitfield or not in your plotting. Typically, you want to keep this as true.
  • threads - This is the number of threads that will be assigned to the plotter. Only phase 1 uses more than 1 thread.
  • buckets - The number of buckets to use. The default provided by Chia is 128.
  • memory_buffer - The amount of memory you want to allocate to the process.
  • max_concurrent - The maximum number of plots to have for this job at any given time.
  • max_concurrent_with_start_early - The maximum number of plots to have for this job at any given time including phases that started early.
  • stagger_minutes - The amount of minutes to wait before the next job can get kicked off. You can even set this to zero if you want your plots to get kicked off immediately when the concurrent limits allow for it.
  • max_for_phase_1 - The maximum number of plots on phase 1 for this job.
  • concurrency_start_early_phase - The phase in which you want to start a plot early. It is recommended to use 4 for this field.
  • concurrency_start_early_phase_delay - The maximum number of seconds to wait before a new plot gets kicked off when the start early phase has been detected.
  • temporary2_destination_sync - This field will always submit the destination directory as the temporary2 directory. These two directories will be in sync so that they will always be submitted as the same value.
Comments
  • Feature: Madmax

    Feature: Madmax

    This PR adds madmax support to the plot manager. It creates a new key in the config called backend. There you can define which plotter backend you want to use (it defaults to chia).

    If the madmax backend is provided, it parses all required logs, binaries and others according to madmax structure.

    How to use it

    After cloning my branch, install the plot manager as you're used to, and change the config file by adding the following:

    chia_location: <path-to-your-madmax-compiled-binary>
    backend: madmax
    
    progress:
      phase1_line_end: 20
      phase2_line_end: 34
      phase3_line_end: 48
      phase4_line_end: 53
    

    I've also added the progress config in the config.yaml.default file.

    IMPORTANT

    While using madmax backend, your tmp, tmp2 and final dir configs must end with a trailing slash (/ for Linux and \ for Windows)

    After that, just launch the manager as you're used to.

    Also , Swar's plot manager fetches the running plots by the process name. Because of that, your executable file must be named chia_plot (chia_plot.exe in Windows)

    opened by delucca 120
  • What did I wrong?

    What did I wrong?

    When I start view in powershell I get this error:

    PS C:\Swar-Chia-Plot-Manager> python manager.py view python : Traceback (most recent call last): In Zeile:1 Zeichen:1

    • python manager.py view
    •   + CategoryInfo          : NotSpecified: (Traceback (most recent call last)::String) [], RemoteException
        + FullyQualifiedErrorId : NativeCommandError
      
      File "C:\Swar-Chia-Plot-Manager\manager.py", line 36, in <module>
        view()
      File "C:\Swar-Chia-Plot-Manager\plotmanager\library\utilities\commands.py", line 80, in view
        drive = job.temporary_directory.split('\\')[0]
      

    AttributeError: 'NoneType' object has no attribute 'split'

    Here is my "config.yaml" >> config.txt

    OS: Windows 10 Pro CPU: AMD Ryzen x5950 RAM: Patriot Viper 32GB 3600 MHz Motherboard: ASUS Prime x570 Pro OS SSD: Seagate FireCuda 520, NVMe PCIe X4, 500 GB SSD: 3,84TB 2,5 Micron 5300 PRO Enterprise Plot final directory is on my WD Book external HDD

    I really don't know what I should do. I lost my plots with the chia GUI because of wrong settings twice now. I really need help please.

    opened by gntz555 42
  • viewer crashing

    viewer crashing

    I installed everything on an ubuntu server 20.04, but when I start the manager viewer (python manager.py view) after 2 refreshes it crashes with this error. If I put the refresh time for 60sec, i will refresh once, but the second time it stops. Same for any refresh value.

    Restarting view due to psutil going stale... Traceback (most recent call last): File "manager.py", line 36, in view() File "/chia/chia-manager/Swar-Chia-Plot-Manager/plotmanager/library/utilities/commands.py", line 123, in view os.execv(sys.executable, system_args) FileNotFoundError: [Errno 2] No such file or directory

    opened by cryptors 19
  • Skip_full_destinations: True - erros when they are network drives

    Skip_full_destinations: True - erros when they are network drives

    I downloaded the latest version (v0.1.0b) tonight and had a few errors, some of my own making. But Skip_full_destinations: True fails (stops the manager starting) when specified in the UNC format such as \\server\Completed plots 1

    I believe it fails because it can't get the size/free space on the drive. Perhaps it will work if I map the drive to a drive letter, but I thought I read someone had issues with mapped drives???

    From the CMD window:

    (venv) C:\Users\ChiaMining\Swar-Chia-Plot-Manager-main>python manager.py start Traceback (most recent call last): File "C:\Users\ChiaMining\Swar-Chia-Plot-Manager-main\manager.py", line 30, in start_manager() File "C:\Users\ChiaMining\Swar-Chia-Plot-Manager-main\plotmanager\library\utilities\commands.py", line 55, in start_manager raise ManagerError('Failed to start Manager. Please look at debug.log for more details on the error. It is in the same folder as manager.py.') plotmanager.library.utilities.exceptions.ManagerError: Failed to start Manager. Please look at debug.log for more details on the error. It is in the same folder as manager.py.

    Setting Skip_full_destinations: False solved the problem, but it would have been a nice feature to have.

    debug.log

    opened by Ron-ski 15
  • Not seeing plot complete notifications  [notify_discord]

    Not seeing plot complete notifications [notify_discord]

    notify_discord will successfully send an initial 'Plot Manager has started on....' message when the plot manager is started. However, no further notifications will occur. Plots are completing but I'm not getting any further subsequent messages for plot completion.

    opened by modsoft 15
  • Failed to start the manager - Failed to get disk_usage of drive None

    Failed to start the manager - Failed to get disk_usage of drive None

    Hi,

    I have a problem with starting the manager v0.1.0 (debug.log below). Worked fine in previous version.

    2021-05-20 13:59:44 [ERROR]: Failed to get disk_usage of drive None. Traceback (most recent call last): File "C:\Chia\scripts\Swar-Chia-Plot-Manager-main\plotmanager\library\utilities\jobs.py", line 173, in monitor_jobs_to_start free_space = psutil.disk_usage(drive).free File "C:\Users\Użytkownik\AppData\Local\Programs\Python\Python39\lib\site-packages\psutil_init_.py", line 1995, in disk_usage return _psplatform.disk_usage(path) File "C:\Users\Użytkownik\AppData\Local\Programs\Python\Python39\lib\site-packages\psutil_pswindows.py", line 265, in disk_usage total, free = cext.disk_usage(path) TypeError: argument 1 must be str, not None Traceback (most recent call last): File "C:\Chia\scripts\Swar-Chia-Plot-Manager-main\stateless-manager.py", line 94, in jobs, running_work, next_job_work, next_log_check = monitor_jobs_to_start( File "C:\Chia\scripts\Swar-Chia-Plot-Manager-main\plotmanager\library\utilities\jobs.py", line 258, in monitor_jobs_to_start job, work = start_work( File "C:\Chia\scripts\Swar-Chia-Plot-Manager-main\plotmanager\library\utilities\jobs.py", line 284, in start_work get_target_directories(job, drives_free_space=drives_free_space) File "C:\Chia\scripts\Swar-Chia-Plot-Manager-main\plotmanager\library\utilities\jobs.py", line 26, in get_target_directories job = check_valid_destinations(job, drives_free_space) File "C:\Chia\scripts\Swar-Chia-Plot-Manager-main\plotmanager\library\utilities\jobs.py", line 53, in check_valid_destinations drive = identify_drive(file_path=directory, drives=drives) File "C:\Chia\scripts\Swar-Chia-Plot-Manager-main\plotmanager\library\utilities\processes.py", line 136, in identify_drive if drive not in file_path: TypeError: 'in ' requires string as left operand, not NoneType

    opened by kaktus79 14
  • Start error

    Start error

    PS D:\Swar-Chia-Plot-Manager-main> python .\manager.py start Traceback (most recent call last): File "D:\Swar-Chia-Plot-Manager-main\manager.py", line 29, in start_manager() File "D:\Swar-Chia-Plot-Manager-main\plotmanager\library\utilities\commands.py", line 32, in start_manager notification_settings, debug_level, view_settings = get_config_info() File "D:\Swar-Chia-Plot-Manager-main\plotmanager\library\parse\configuration.py", line 102, in get_config_info config = _get_config() File "D:\Swar-Chia-Plot-Manager-main\plotmanager\library\parse\configuration.py", line 16, in get_config config = yaml.load(stream=f, Loader=yaml.Loader) File "C:\Users\ShopComputer\AppData\Local\Programs\Python\Python39\lib\site-packages\yaml_init.py", line 114, in load return loader.get_single_data() File "C:\Users\ShopComputer\AppData\Local\Programs\Python\Python39\lib\site-packages\yaml\constructor.py", line 49, in get_single_data node = self.get_single_node() File "C:\Users\ShopComputer\AppData\Local\Programs\Python\Python39\lib\site-packages\yaml\composer.py", line 36, in get_single_node document = self.compose_document() File "C:\Users\ShopComputer\AppData\Local\Programs\Python\Python39\lib\site-packages\yaml\composer.py", line 58, in compose_document self.get_event() File "C:\Users\ShopComputer\AppData\Local\Programs\Python\Python39\lib\site-packages\yaml\parser.py", line 118, in get_event self.current_event = self.state() File "C:\Users\ShopComputer\AppData\Local\Programs\Python\Python39\lib\site-packages\yaml\parser.py", line 193, in parse_document_end token = self.peek_token() File "C:\Users\ShopComputer\AppData\Local\Programs\Python\Python39\lib\site-packages\yaml\scanner.py", line 129, in peek_token self.fetch_more_tokens() File "C:\Users\ShopComputer\AppData\Local\Programs\Python\Python39\lib\site-packages\yaml\scanner.py", line 223, in fetch_more_tokens return self.fetch_value() File "C:\Users\ShopComputer\AppData\Local\Programs\Python\Python39\lib\site-packages\yaml\scanner.py", line 577, in fetch_value raise ScannerError(None, None, yaml.scanner.ScannerError: mapping values are not allowed here in "D:\Swar-Chia-Plot-Manager-main\config.yaml", line 9, column 8

    Thanks

    opened by lakymoon 14
  • Cant seem to get jobs to start

    Cant seem to get jobs to start

    not sure what Im doing wrong, Ive got the manager running and it shows jobs I start through the GUI but the manager doesnt seem to be starting new jobs.

    • name: M2-1 max_plots: 999 farmer_public_key: ..... pool_public_key: temporary_directory: A:
      temporary2_directory: destination_directory: D:\Plots size: 32 bitfield: true threads: 30 buckets: 128 memory_buffer: 5000 max_concurrent: 3 max_concurrent_with_start_early: 6 stagger_minutes: 5 max_for_phase_1: 3 concurrency_start_early_phase: 4 concurrency_start_early_phase_delay: 0 temporary2_destination_sync: false

    Tried letting it run twice so far with no results.

    opened by WernerVoss 14
  • destination_directory:  over network?

    destination_directory: over network?

    Greetings,

    Could anyone confirm that copying over the network to a shared folder is possible?

    Edit: Using windows 10

    destination_directory: \myComputer\chiaSharedFolder

    So far the file is not being copied but I'm not sure if there is some other factor involved.

    Thank you,

    opened by Neosettler 13
  • New official pool support / nftpool support

    New official pool support / nftpool support

    The new pool_url variable allows the use of Pool Contract Address Refer to https://github.com/Chia-Network/chia-blockchain/wiki/Pooling-FAQ#how-do-i-assign-portable-plots-to-a-pool

    Tested and working on linux and windows

    opened by jack60612 12
  • Fix losing the venv context on Linux

    Fix losing the venv context on Linux

    Possibly fixes #42

    It looks like calling the executable as a quoted string is doing something when executed to lose the venv context, which is causing all of the module not found errors.

    opened by karlshea 12
  • when i view after creating 1 plot error, Why?

    when i view after creating 1 plot error, Why?

    File "manager.py", line 41, in view(loop=False) File "/home/Swar-Chia-Plot-Manager/plotmanager/library/utilities/commands.py", line 160, in view analysis = analyze_log_dates(log_directory=log_directory, analysis=analysis) File "/home/Swar-Chia-Plot-Manager/plotmanager/library/utilities/log.py", line 88, in analyze_log_dates data = _analyze_log_end_date(contents, file_path) File "/home/Swar-Chia-Plot-Manager/plotmanager/library/utilities/log.py", line 36, in _analyze_log_end_date file_date = dateparser.parse(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(parsed_date))) File "/usr/local/lib/python3.8/dist-packages/dateparser/conf.py", line 89, in wrapper return f(*args, **kwargs) File "/usr/local/lib/python3.8/dist-packages/dateparser/init.py", line 54, in parse data = parser.get_date_data(date_string, date_formats) File "/usr/local/lib/python3.8/dist-packages/dateparser/date.py", line 421, in get_date_data parsed_date = _DateLocaleParser.parse( File "/usr/local/lib/python3.8/dist-packages/dateparser/date.py", line 178, in parse return instance._parse() File "/usr/local/lib/python3.8/dist-packages/dateparser/date.py", line 182, in _parse date_data = self._parsersparser_name File "/usr/local/lib/python3.8/dist-packages/dateparser/date.py", line 196, in _try_freshness_parser return freshness_date_parser.get_date_data(self._get_translated_date(), self._settings) File "/usr/local/lib/python3.8/dist-packages/dateparser/date.py", line 234, in _get_translated_date self._translated_date = self.locale.translate( File "/usr/local/lib/python3.8/dist-packages/dateparser/languages/locale.py", line 131, in translate relative_translations = self._get_relative_translations(settings=settings) File "/usr/local/lib/python3.8/dist-packages/dateparser/languages/locale.py", line 158, in _get_relative_translations self._generate_relative_translations(normalize=True)) File "/usr/local/lib/python3.8/dist-packages/dateparser/languages/locale.py", line 172, in _generate_relative_translations pattern = DIGIT_GROUP_PATTERN.sub(r'?P\d+', pattern) File "/usr/local/lib/python3.8/dist-packages/regex/regex.py", line 710, in _compile_replacement_helper is_group, items = _compile_replacement(source, pattern, is_unicode) File "/usr/local/lib/python3.8/dist-packages/regex/_regex_core.py", line 1737, in _compile_replacement raise error("bad escape \%s" % ch, source.string, source.pos) regex._regex_core.error: bad escape \d at position 7

    opened by Ariq627 1
  • When running K34, viewer still shows K32

    When running K34, viewer still shows K32

    Newest version of MadMax now includes support for K33 & K34. When running K34, viewer still shows K32. Seems to be just a display error. Progress and phase detection does not seem to be correct either.

    opened by CryptoBlockchainTechnologies 0
  • Plots not distributing evenly to destination drives

    Plots not distributing evenly to destination drives

    Hello, I am running Swar with MadMax with 60 destination hard drives while plotting 60 concurrent plots. I want one plot to go to one destination drive, so that multiple plots don't queue up on a single destination.

    Sometimes the plots assign themselves to different drives, but most of the time all the plots are assigned to only 1 hard drive. How do I make it so Swar divides up the plots evenly amongst the destinations?

    Thanks.

    opened by mkirshner 0
  • Manager gets stuck on last couple files for full drives

    Manager gets stuck on last couple files for full drives

    I am running on Windows, using 14TB drives. When I get within 1TB of a drive being full, I add a new drive, add to config.yaml, and restart the manager. The manager correctly sees the new drive and starts assigning plots to it. The problem is that the last two plots that were assigned to the almost full drive can't fit on it by the time they are ton, and the manager doesn't know what to do with them. Instead of retargeting them to the new drive and copying there, they just get hung indefinitely. I have to manually kill the last two plots on every drive every time when it fills up. Then I have to manually copy the tmp files to the new drive and rename them.

    It seems like there needs to be better logic to calculate how full drives are going to be based on all of the active jobs, and/or there needs to be a process to retarget plots to a drive with free space if they can't fit on the intended drive. I can provide logs if needed, this is a fully repeatable issue, it occurs every single time.

    opened by cloudrobx 0
  • There seems to be a bug in detecting the zombie process

    There seems to be a bug in detecting the zombie process

    It doesn't happen every time, but it happens every day, causing the main program to exit

    Code file: stateless-manager.py

    Occurrence code line: if psutil.Process(pid).status() != 'zombie':

    Code snippet:

        logging.info(f'Clearing zombies')
    
        for job in jobs:
            non_zombie_work = []
            for pid in job.running_work:
                if psutil.Process(pid).status() != 'zombie':
                    non_zombie_work.append(pid)
                else:
                    del running_work[pid]
                    job.total_running = job.total_running - 1
    
            job.running_work = non_zombie_work
    

    Debug file:

     Traceback (most recent call last):
      File "C:\Program Files\Python37\lib\site-packages\psutil\_pswindows.py", line 679, in wrapper
        return fun(self, *args, **kwargs)
      File "C:\Program Files\Python37\lib\site-packages\psutil\_pswindows.py", line 1054, in status
        suspended = cext.proc_is_suspended(self.pid)
    ProcessLookupError: [Errno 3] assume no such process (originated from NtQuerySystemInformation (no PID found))
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "C:\auto-chia\Swar-Chia-Plot-Manager-main\stateless-manager.py", line 99, in <module>
        if psutil.Process(pid).status() != 'zombie':
      File "C:\Program Files\Python37\lib\site-packages\psutil\__init__.py", line 682, in status
        return self._proc.status()
      File "C:\Program Files\Python37\lib\site-packages\psutil\_pswindows.py", line 681, in wrapper
        raise convert_oserror(err, pid=self.pid, name=self._name)
    psutil.NoSuchProcess: psutil.NoSuchProcess process no longer exists (pid=12184)
    
    opened by fanisky 1
Releases(v.0.1.0)
  • v.0.1.0(May 20, 2021)

    v.0.1.0

    The first feature packed improvement of the plot manager.

    New Features

    • Adding exclude_final_directory as an option in the config.yaml. (#35)
    • Skipping manager.log as a file and renaming to debug.log. (#38)
    • Added destination directory skipping when a drive is full using skip_full_destinations at the job level. It will calculate size of total running plots and the predicted size of the new plot prior to making that judgement. (#36, #193)
    • Added global setting for max_for_phase_1.
    • Added global setting for minimum_minutes_between_jobs. (#380, #468)
    • Added list support for temporary directories. This will cycle through all temporary directories in the order that they are listed for a job. (#150, #153, #182)
    • Added CPU affinity support on the job level. This allows you to select and dedicate specific threads to your jobs. (#134, #281)
    • Added process priority levels on the job level. This allows you to set the priority levels to whatever you choose. Some people want low priority, while others want higher priorities. (#282)
    • Added an option to delay a job by a set number of minutes. If you started manager and there is a stagger for the job, it will use the initial delay only if it is longer than the stagger. (#283)
    • Added an option in manager.py to spit out a single instance of the view using the status argument as well as json format of the jobs. (#300, #374)
    • Added support for Telegram notifications. (#316, #364)
    • Added support for IFTTT webhooks. (#425, #471)
    • Added support for instrumentation using Prometheus (#87, #196)

    Changes

    • Switching notification imports to a separate requirements file and turning them into lazy imports. (#159, 196)
    • Reworked the Drives Table in the view to include associated jobs. This includes minor tweaks to the display to remove ambiguity such as renaming plots to "#". (#191, #368, #406)
    • Adding basic checks that will break and have more detailed error messaging to assist in end-user interaction. Also, I was tired of getting the same repeat questions over and over again.
    • Adding more psutil error handling.
    • Jobs are now unique based on temporary directories.

    Bug Fixes

    • Fixed a bug where max_plots was not working properly. It was counting running plots when you restarted manager. Now it will only count new plots kicked off.
    • Fixed a bug in elapsed_time column where elapsed days greater than 24 hours were resulting in calculations being off by a day. (#190)
    • Skipping processes that result in an AccessDenied error when finding manager processes. (#147)
    • Fixed a bug where psutil going stale on Linux users was not allowing the script to restart on its own. (#197)
    • Fixed a bug where NFS drives weren't being identified. (#284)
    • Removed the hardcoded next log check date in the view.
    • Fixed a bug where NoSuchProcess error pops up when viewing opened files.
    Source code(tar.gz)
    Source code(zip)
  • v.0.0.1(May 13, 2021)

  • v0.0.0b(Apr 29, 2021)

Owner
Swar Patel
/in/swar
Swar Patel
A pandas extension that solves all problems of Jalai/Iraninan/Shamsi dates

Jalali Pandas Extentsion A pandas extension that solves all problems of Jalai/Iraninan/Shamsi dates Features Series Extenstion Convert string to Jalal

51 Jan 02, 2023
Design your own matplotlib stylefile interactively

Tired of playing with font sizes and other matplotlib parameters every time you start a new project or write a new plotting function? Want all you plots have the same style? Use matplotlib configurat

yobi byte 207 Dec 08, 2022
Simulation du problème de Monty Hall avec Python et matplotlib

Le problème de Monty Hall C'est un jeu télévisé où il y a trois portes sur le plateau de jeu. Seule une de ces portes cache un trésor. Il n'y a rien d

ETCHART YANG 1 Jan 06, 2022
Tidy data structures, summaries, and visualisations for missing data

naniar naniar provides principled, tidy ways to summarise, visualise, and manipulate missing data with minimal deviations from the workflows in ggplot

Nicholas Tierney 611 Dec 22, 2022
This is my favourite function - the Rastrigin function.

This is my favourite function - the Rastrigin function. What sparked my curiosity and interest in the function was its complexity in terms of many local optimum points, which makes it particularly in

1 Dec 27, 2021
Numerical methods for ordinary differential equations: Euler, Improved Euler, Runge-Kutta.

Numerical methods Numerical methods for ordinary differential equations are methods used to find numerical approximations to the solutions of ordinary

Aleksey Korshuk 5 Apr 29, 2022
Create artistic visualisations with your exercise data (Python version)

strava_py Create artistic visualisations with your exercise data (Python version). This is a port of the R strava package to Python. Examples Facets A

Marcus Volz 53 Dec 28, 2022
Tools for calculating and visualizing Elo-like ratings of MLB teams using Retosheet data

Overview This project uses historical baseball games data to calculate an Elo-like rating for MLB teams based on regular season match ups. The Elo rat

Lukas Owens 0 Aug 25, 2021
CompleX Group Interactions (XGI) provides an ecosystem for the analysis and representation of complex systems with group interactions.

XGI CompleX Group Interactions (XGI) is a Python package for the representation, manipulation, and study of the structure, dynamics, and functions of

Complex Group Interactions 67 Dec 28, 2022
A high performance implementation of HDBSCAN clustering. http://hdbscan.readthedocs.io/en/latest/

HDBSCAN Now a part of scikit-learn-contrib HDBSCAN - Hierarchical Density-Based Spatial Clustering of Applications with Noise. Performs DBSCAN over va

Leland McInnes 91 Dec 29, 2022
Param: Make your Python code clearer and more reliable by declaring Parameters

Param Param is a library providing Parameters: Python attributes extended to have features such as type and range checking, dynamically generated valu

HoloViz 304 Jan 07, 2023
A tool for creating SVG timelines from simple JSON input.

A tool for creating SVG timelines from simple JSON input.

Jason Reisman 432 Dec 30, 2022
Rockstar - Makes you a Rockstar C++ Programmer in 2 minutes

Rockstar Rockstar is one amazing library, which will make you a Rockstar Programmer in just 2 minutes. In last decade, people learned C++ in 21 days.

4k Jan 05, 2023
Log visualizer for whirl-framework

Lumberjack Log visualizer for whirl-framework Установка pip install -r requirements.txt Как пользоваться python3 lumberjack.py -l путь до лога -o

Vladimir Malinovskii 2 Dec 19, 2022
GUI for visualization and interactive editing of SMPL-family body models ie. SMPL, SMPL-X, MANO, FLAME.

Body Model Visualizer Introduction This is a simple Open3D-based GUI for SMPL-family body models. This GUI lets you play with the shape, expression, a

Muhammed Kocabas 207 Jan 01, 2023
Streaming pivot visualization via WebAssembly

Perspective is an interactive visualization component for large, real-time datasets. Originally developed for J.P. Morgan's trading business, Perspect

The Fintech Open Source Foundation (www.finos.org) 5.1k Dec 27, 2022
Simple Python interface for Graphviz

Simple Python interface for Graphviz

Sebastian Bank 1.3k Dec 26, 2022
Visual Python is a GUI-based Python code generator, developed on the Jupyter Notebook environment as an extension.

Visual Python is a GUI-based Python code generator, developed on the Jupyter Notebook environment as an extension.

Visual Python 564 Jan 03, 2023
:art: Diagram as Code for prototyping cloud system architectures

Diagrams Diagram as Code. Diagrams lets you draw the cloud system architecture in Python code. It was born for prototyping a new system architecture d

MinJae Kwon 27.5k Dec 30, 2022