Youtube video download slow

Checklist

[ ] I'm reporting a broken site support issue
[ ] I've verified that I'm running youtube-dl version 2021.12.17
[ ] I've checked that all provided URLs are alive and playable in a browser
[ ] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[ ] I've searched the bugtracker for similar bug reports including closed ones
[ ] I've read bugs section in FAQ

Verbose log

T:\Téléchargements\VIDEO_DOWNLOAD>"C:\SCRIPT\YoutubeDL\youtube-dlg\youtube-dl.exe" --verbose --no-playlist -f "best" https://www.youtube.com/watch?v=OylGu7Q2sA0
[debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['--verbose', '--no-playlist', '-f', 'best', 'https://www.youtube.com/watch?v=OylGu7Q2sA0']
[debug] Encodings: locale cp1252, fs mbcs, out cp850, pref cp1252
[debug] youtube-dl version 2021.12.17
[debug] Python version 3.4.4 (CPython) - Windows-10-10.0.19041
[debug] exe versions: ffmpeg N-105349-g0a83ecbf48-20220124, ffprobe N-105349-g0a83ecbf48-20220124
[debug] Proxy map: {}
[youtube] OylGu7Q2sA0: Downloading webpage
[youtube] Downloading just video OylGu7Q2sA0 because of --no-playlist
[debug] Invoking downloader on 'https://rr5---sn-25glenez.googlevideo.com/videoplayback?expire=1643756761&ei=eWj5YdyLDJb7xN8P5qSXiA4&ip=<IP_ADDRESS>&id=o-ADonWinaIy1ch9uQOkTf0sWb4tx8VgPtn1XKyxexN9Ug&itag=22&source=youtube&requiressl=yes&mh=E2&mm=31%2C29&mn=sn-25glenez%2Csn-25ge7nsk&ms=au%2Crdu&mv=m&mvi=5&pl=17&initcwndbps=1228750&spc=4ocVC2oXTGupjIcIpOuGHDDKbpE_&vprv=1&mime=video%2Fmp4&ns=65YlCMrZ_X4ENWXe4lCtL8UG&cnr=14&ratebypass=yes&dur=336.387&lmt=1643435122563504&mt=1643734872&fvip=5&fexp=24001373%2C24007246&c=WEB&txp=5532434&n=RZidR5G2J4lUeu3OpY&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cspc%2Cvprv%2Cmime%2Cns%2Ccnr%2Cratebypass%2Cdur%2Clmt&sig=AOq0QJ8wRAIgD6Py9YRU8qyhdo1D1TRjwGv6wNjUMzZZj-Lt9TIMsGACIBp4cOeaevQXtUZyHOknna0EmFrsL6lwy3EvTyi-7hX0&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRgIhAMlkpNab4w3FSwBV1KGq1RLwTjY8EcOMkbnZLhD0xVjqAiEAxo50AWU5lhM1rsL99UNiZlFi0R25lCMSW7SJUqKbbxQ%3D'
[download] Resuming download at byte 1167647
[download] Destination: Tech We're Excited For! - 2022 Edition-OylGu7Q2sA0.mp4
[download]  12.3% of 18.56MiB at 24.60KiB/s ETA 11:17

Description

I can't understand why my youtube download is so slow, can someone explain me what i'am missing here because my internet is like 45 Mbps

YT made the client solve a puzzle in order to get full download speed. We can do that now (again, after YT broke it last night) and an imminent release will fix it. Or you can install from the git HEAD using pip, but as you're using the Windows .exe probably you should wait for the release.

This issue also happened to me.
using the last update, the download stuck at 74.93KiB/s

Yeah I was also getting this issue.. Previously it was running fine, now something wrong may be happened with youtube.
Then I updated it to the latest version, but no improvement.

Using the "fixed" version of the youtube.py, works now, but there is a problem.
Too much processing power is needed.
Trying to load a playlist of tracks (not a single playlist link) takes a lot of time (50 tracks ~ 2.5 minutes on a i7)!
I know that it must compute the puzzle, but isn't it possible to cash the first computation result somewhere?
@dirkf Should i open a different issue with this?

The results are supposed to be cached. In my original version, I had a local per-item memo so the descramble was only done once. This version is meant to use the player cache as in yt-dlp.
You can see that it does so with -v because the entry like this [debug] [youtube] Decrypted nsig jCeO6nveAEs8dCNvd => Syl79sOxyyy2rQ logs when the actual computation is done, and any other URLs with the n value 'jCeO6nveAEs8dCNvd' are just being looked up.
I've only tested it on a scrap laptop (OK, I upgraded the CPU to T7700 2.4GHz) and I didn't see anything unusual. Equally I didn't timeit this implementation against the VLC regex version.
Would you be able to try your playlist against yt-dlp as well, or reveal the URL anyway?

The code uses the IV _player_cache which is a dict. I would be happy to consider some patch for a potentially thread-safe global cache. But this SO implies that dict operations are atomic. As the cache usage is either to read a value by key or to insert a value for a key that is always the same, it appears that a module-level cache could work effectively without any locking.
S/t like this:
...
_PLAYER_CACHE = {}
...
class YoutubeIE(YoutubeBaseInfoExtractor):
...
    def __init__(self, *args, **kwargs):
        super(YoutubeIE, self).__init__(*args, **kwargs)
        self._code_cache = {}
        self._player_cache = _PLAYER_CACHE
...

That was a nice idea, but unfortunately it produces an error:
ERROR: Signature extraction failed: Traceback (most recent call last):
  File "...\PYTHON\Python27\lib\site-packages\youtube_dl\extractor\youtube.py", line 1445, in _decrypt_signature
    return func(s)
  File "...\PYTHON\Python27\lib\site-packages\youtube_dl\extractor\youtube.py", line 1427, in <lambda>
    return lambda s: initial_function([s])
  File "...\PYTHON\Python27\lib\site-packages\youtube_dl\jsinterp.py", line 554, in resf
    ret, should_abort = self.interpret_statement(stmt, var_stack)
  File "...\PYTHON\Python27\lib\site-packages\youtube_dl\jsinterp.py", line 157, in interpret_statement
    v = self.interpret_expression(expr, local_vars, allow_recursion)
  File "...\PYTHON\Python27\lib\site-packages\youtube_dl\jsinterp.py", line 470, in interpret_expression
    return eval_method()
  File "...\PYTHON\Python27\lib\site-packages\youtube_dl\jsinterp.py", line 463, in eval_method
    return obj[member](argvals)
  File "...\PYTHON\Python27\lib\site-packages\youtube_dl\jsinterp.py", line 554, in resf
    ret, should_abort = self.interpret_statement(stmt, var_stack)
  File "...\PYTHON\Python27\lib\site-packages\youtube_dl\jsinterp.py", line 157, in interpret_statement
    v = self.interpret_expression(expr, local_vars, allow_recursion)
  File "...\PYTHON\Python27\lib\site-packages\youtube_dl\jsinterp.py", line 470, in interpret_expression
    return eval_method()
  File "...\PYTHON\Python27\lib\site-packages\youtube_dl\jsinterp.py", line 418, in eval_method
    assertion(isinstance(obj, list), 'must be applied on a list')
  File "...\PYTHON\Python27\lib\site-packages\youtube_dl\jsinterp.py", line 370, in assertion
    raise ExtractorError('{0} {1}: {2}'.format(nl.member, msg, expr))

This says fixed but I am getting 526 B/s downloads - slower than if I watched the video!  Realplayer download works at 10 MiS but not what I want.  I tried with both youtube-dl and yt-dlp both running that slow.

I have an alternate tool that works:
PS C:\> youtube OylGu7Q2sA0
POST https://www.youtube.com/youtubei/v1/player
GET https://rr5---sn-q4fl6nlz.googlevideo.com/videoplayback?expire=1644199183&ei=rygAYrfFB_LQlu8P8rGjkA8&ip=<IP_ADDRESS>&id=o-AAKlD5vm0ZxT54DIPLhw5XL0kfbQsvgWVQtfL4J2otxs&itag=247&source=youtube&requiressl=yes&mh=E2&mm=31%2C29&mn=sn-q4fl6nlz%2Csn-q4flrnek&ms=au%2Crdu&mv=m&mvi=5&pl=15&initcwndbps=2432500&vprv=1&mime=video%2Fwebm&gir=yes&clen=24669891&dur=336.336&lmt=1643435273454319&mt=1644177410&fvip=5&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5537434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRQIgXgDkGnIHnNjKA_dG-C4OkFqzk71_01sAXu74WteIeZwCIQCcekrjWaHfkTHF8cf8HPYs7VKfkQtouniG-GaYWf8OLg%3D%3D&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgEvN5wz--ayX8AhzoNkufo0EKH22GN0jpF8LzMGluJesCIQCBaJMF93VeRf9ZnSnu7dfnPTtaBKy1jwsjpzg4hXq50A%3D%3D
40.5%   10.000 MB       7.494 MB/s
81.1%   20.000 MB       7.646 MB/s
GET https://rr5---sn-q4fl6nlz.googlevideo.com/videoplayback?expire=1644199183&ei=rygAYrfFB_LQlu8P8rGjkA8&ip=<IP_ADDRESS>&id=o-AAKlD5vm0ZxT54DIPLhw5XL0kfbQsvgWVQtfL4J2otxs&itag=251&source=youtube&requiressl=yes&mh=E2&mm=31%2C29&mn=sn-q4fl6nlz%2Csn-q4flrnek&ms=au%2Crdu&mv=m&mvi=5&pl=15&initcwndbps=2432500&vprv=1&mime=audio%2Fwebm&gir=yes&clen=5611517&dur=336.361&lmt=1643432684725366&mt=1644177410&fvip=5&keepalive=yes&fexp=24001373%2C24007246&c=ANDROID&txp=5532434&sparams=expire%2Cei%2Cip%2Cid%2Citag%2Csource%2Crequiressl%2Cvprv%2Cmime%2Cgir%2Cclen%2Cdur%2Clmt&sig=AOq0QJ8wRAIgL4IAfZDhT399M61hYKXVzqh12o5rV_mP05Lu3wqnxFsCIHgM3cwS9wdKkNYunEqre9ce7e1pOP31BgqTi8JkrykV&lsparams=mh%2Cmm%2Cmn%2Cms%2Cmv%2Cmvi%2Cpl%2Cinitcwndbps&lsig=AG3C_xAwRQIgEvN5wz--ayX8AhzoNkufo0EKH22GN0jpF8LzMGluJesCIQCBaJMF93VeRf9ZnSnu7dfnPTtaBKy1jwsjpzg4hXq50A%3D%3D

https://github.com/89z/mech

I tried with both youtube-dl and yt-dlp both running that slow.

The master version in the yt-dl  repo is fixed. The fix is not in a released version yet.
yt-dlp release 2022.02.04 should run unthrottled.

That was a nice idea, but unfortunately it produces an error:

If you can make a small program that reproduces the problem, we might be able to make progress.

If you can make a small program that reproduces the problem, we might be able to make progress.

Unfortunately, I use QThreads in a complicated manner in my app, but I will try to make something minimal with the native Treads, for a simple scripts.
Any already existing, simple threading example, will be greatly appreciated..

Sorry for the delay, but I was busy yesterday..
Here is some example code:
# coding=utf-8
from __future__ import absolute_import, division, print_function, unicode_literals
from queue import Queue
from threading import Thread, Event
import youtube_dl
# import yt_dlp as youtube_dl

ydl_opts = {'quiet': True, 'no_warnings': True}
infos = []
link_ids = ["4jduuQh-Uho", "9GNpv7QDvMY", "MbEOR2Flc-4", "ZKUzNF21n9w", "y-JqH1M4Ya8",
            "c5pi-SOlXQc", "pUqfaiUb3l4", "bL5eqSOXMtE", "HyMm4rJemtI", "BU4kGkrrJEw",
            "pFS4zYWxzNA", "aF6hDcAbSoE", "G1ckKDRc69w", "o9_jzBtdMZ4", "AGoQZx8Mn0g",
            "6W-pHCD6Tow", "kszLwBaC4Sw", "mwTd_PzGY-c", "iqLTYD_nhsU", "X335gdcPE7A",
            "z_54vDk8lWw", "8a82arE0JSQ", "tJmzQHWl9kc", "8jPQjjsBbIc", "ENJUB5thpB4",
            "dEhUMvjFuQY", "D6XyJh1tsGI", "tFCfb-Qqdz0", "UkafA6r1caQ", "OO8HtAXnRqQ",
            "--da0m2K4I4", "EOlI0UtLDk4", "r7tQbxTImKw", "s_YLPcW4Tu8", "9wIbhES2UkA",
            "YkX9X4td7j8", "14cHz4ebonY", "saVUUZE50Co", "N1K4NYHqMx4", "iCBL33NKvPA",
            "QPTNS3llm2E", "pFS4zYWxzNA", "wA1v207xlOw"]

class Base(object):
    def __init__(self, **kwargs):
        super(Base, self).__init__(**kwargs)

        self.feed_q = Queue()
        self.threads = []
        for i in range(8):
            thread = Feeder(self.feed_q)
            thread.daemon = True
            self.threads.append(thread)
            thread.start()

class Worker(object):
    pass

class Feeder(Thread):
    def __init__(self, feed_q):
        super(Feeder, self).__init__()
        self.worker = None
        self.feed_q = feed_q
        self.stop = False

    def run(self):
        while not self.stop:
            self.worker = self.feed_q.get()
            url = "https://www.youtube.com/watch?v=" + self.worker.id
            with youtube_dl.YoutubeDL(ydl_opts) as ydl:
                try:
                    ydl_info = ydl.extract_info(url, download=False)
                except Exception as e:
                    error_text = "A {0} occurred for {2}. Arguments:\n{1!r}"
                    print(error_text.format(type(e).__name__, e.args, url))
                    self.feed_q.task_done()
                    continue
                infos.append(ydl_info)
                print("Got info from {}".format(url))
                self.worker.updated.set()
            while True:
                if self.worker.updated.wait(timeout=2):
                    break
            self.feed_q.task_done()

if __name__ == "__main__":
    base = Base()
    print("Getting info for {} YouTube videos".format(len(link_ids)))
    for tube_id in link_ids:
        worker = Worker()
        worker.id = tube_id
        worker.updated = Event()
        base.feed_q.put(worker)

    from timeit import default_timer as timer
    start = timer()
    base.feed_q.join()
    print("Finished in {} seconds".format(round(timer() - start)))

youtube_dl takes 96 sec while yt-dlp takes only 20 sec.
Before the last breakage, youtube_dl was faster than yt-dlp.
The links are random, you can use whatever links you like..

FYI: Followed advice regarding pulling from 'master'.....

ran 'make'
pushed newly built youtube-dl to my local server
super FAST..
Thanks to the team!

For those wishing to build, here's what I did ( for better or worse & whether correct or not...  ):
NOTE: I previously build, so met dependencies referenced in the readme.md
MAKE SESSION
/git/youtube-dl$ make
mkdir -p zip
for d in youtube_dl youtube_dl/downloader youtube_dl/extractor youtube_dl/postprocessor ; do
mkdir -p zip/$d ;
cp -pPR $d/.py zip/$d/ ;
done
touch -t<PHONE_NUMBER>01 zip/youtube_dl/.py zip/youtube_dl//.py
mv zip/youtube_dl/main.py zip/
cd zip ; zip -q ../youtube-dl youtube_dl/.py youtube_dl//*.py main.py
rm -rf zip
echo '#!/usr/bin/env python' > youtube-dl
cat youtube-dl.zip >> youtube-dl
rm youtube-dl.zip
chmod a+x youtube-dl
COLUMNS=80 /usr/bin/env python youtube_dl/main.py --help | /usr/bin/env python devscripts/make_readme.py
/usr/bin/env python devscripts/make_contributing.py README.md CONTRIBUTING.md
pandoc -f markdown -t plain README.md -o README.txt
/usr/bin/env python devscripts/prepare_manpage.py youtube-dl.1.temp.md
pandoc -s -f markdown -t man youtube-dl.1.temp.md -o youtube-dl.1
rm -f youtube-dl.1.temp.md
/usr/bin/env python devscripts/bash-completion.py
/usr/bin/env python devscripts/zsh-completion.py
/usr/bin/env python devscripts/fish-completion.py
/usr/bin/env python devscripts/make_supportedsites.py docs/supportedsites.md
LS YOUTUBE-DL
-rwxrwxr-x  1 god god 1849986 Feb  9 01:00 youtube-dl
FAST DL SPEED
[download] 100% of 51.86MiB in 00:04

Yeah very fast download speed !!

I am using latest version of yt-dl but download speed is too slow for me..
idk what's going wrong in my case.

If anyone has a Python installation with a recent pip (pip3), you can install the latest master branch (or any other commit level) directly from GitHub or a downloaded tar.gz.

Tested the current latest master with the example above, and the time got improved from 96 to 76 secs.
But unfortunately still way over the 20 sec of yt-dlp or the even faster previous yt-dl.. :disappointed:

@dirkf Should I open a different issue with the code for the multi-threading problem?

CONFIRMING FIX ON MASTER: had throttling issue on 2022.12.17... pulled master > make = resolved
[download]  43.0% of 274.52MiB at 15.43MiB/s ETA 00:10

i"m on windows, i don't understant your "fix". can you explain please :)

What I did was to replace my local youtube_dl/extractor/youtube.py with this one...

The fix committed to the repo requires more than one file to be updated.
@TagAcheron, https://github.com/ytdl-org/youtube-dl/issues/30583#issuecomment-1027312830, or install Python and https://github.com/ytdl-org/youtube-dl/issues/30583#issuecomment-1033668493.

@dirkf Yes, I already had that update.
I was referring to the last change ~11-12 days ago..

You didn't actually read the thread before posting, did you?

FYI brew with macOS uses version 2021.12.17 as stable. So if anyone runs into this issue just install youtube-dl directly.

Neither did you.

Archive the repo you imbeciles.


Document mouse button mapping

Hi,
I've tried doing something like this in the xorg.conf file and it doesn't appear to be working:
    Option "MapA" "Pointer_Button1"
    Option "MapB" "Pointer_Button2"
    Option "MapHome" "Pointer_Button3"
    Option "MapPlus" "XF86ScrollUp"
    Option "MapMinus" "XF86ScrollDown"

Not too familiar with xfb bindings myself, so I was wondering if you could clarify if this is supported and provide some documentation examples if so. My goal is to be able to use the Wiimote as an air mouse...

Found this post before finding the answer in the man page man xorg-xwiimote
   Option "MapA" "left-button"     Option "MapB" "right-button"     Option "MapHome" "middle-button"
Even though it's an old issue, it's still open so I'm replying here for anyone else finding this


python-build console script is broken

$ python-build
...
TypeError: main() missing 1 required positional argument: 'cli_args'

Thanks for the fix! And no reason to be sorry about anything :)


Minimize to tray

https://rotadev.com/console-output-in-a-qt-gui-app-dev

Windows does not really support dual mode applications.

https://www.faqcode4u.com/faq/263030/hide-console-of-windows-application
A C# example shows use platform specified API to switch current console:
[DllImport("Kernel32.dll")]
  private static extern IntPtr GetConsoleWindow();
  [DllImport("User32.dll")]
  private static extern bool ShowWindow(IntPtr hWnd, int cmdShow);
   static void Main(string[] args)
  { Console.WriteLine("Press any key to hide me.");
Console.ReadKey();
IntPtr hWnd = GetConsoleWindow();
if (hWnd != IntPtr.Zero) {
ShowWindow(hWnd, 0);//hide
Thread.Sleep(5000);//5s
ShowWindow(hWnd, 1);//show } Console.ReadKey();

Therefore, the solution would be:

[ ] Move to window application

[ ] Remove console from qmake file
[ ] Create and show MainWindow

[ ] Handle close function in MainWindow
[ ] Delete tray icon during exit event

[ ] Choose a widget to redirect stdout
[ ] Choose a widget to type command
[ ] Choose a widget to send command to stdin

[ ] DPI scale support

[ ] Create config value "Interface\SizeMultiplier"
[ ] Change every interface item depending on SizeMultipler value

[ ] Round multiply result

[ ] Minimize to tray

[ ] Create config value "Interface\MinimizeToTray"
[ ] Handle minimize function in MainWindow

[ ] If MinimizeToTry, hide MainWindow in minimize event

[ ] Handle double click function in TrayIcon

[ ] If not showing MainWindow, show MainWindow when double click on TrayIcon

Therefore, the solution would be:

[ ] Move to window application

[x] Create and show MainWindow e00be436795ccf782680e213ab827acddb3e0e5d

[x] Handle close function in MainWindow b0c67faab9e2539934f8a68c5f8808f07c4841df

[x] Fix tray icon still appears after exit

[x] Delete tray icon during exit event<PHONE_NUMBER>09940d46111c57b4eb6ef59669f2b0

[x] Choose a widget for stdout cf8dfad7145ace0a3b3370997c9a94dd0285646a

[x] Redirect stdout c7a00c73e3c81da734062a9f511b6ddc1247454a

[ ] Choose a widget to type command
[ ] Choose a widget to send command to stdin
[ ] Remove console from qmake file

[ ] DPI scale support

[ ] Create config value "Interface\SizeMultiplier"
[ ] Change every interface item depending on SizeMultipler value

[ ] Round multiply result

[ ] Minimize to tray

[ ] Create config value "Interface\MinimizeToTray"
[ ] Handle minimize function in MainWindow

[ ] If MinimizeToTry, hide MainWindow in minimize event

[ ] Handle double click function in TrayIcon

[ ] If not showing MainWindow, show MainWindow when double click on TrayIcon


EndOfFile-token is called 'null' by parser

If a token is missing at the end of a parsed zserio-file, 'null' is reported to be found.
Could we rename this token of EndOfFile, that would make it easier to undersstand what is missing.
Parsing test.ds
[ERROR] test.ds:2:1: expecting SEMICOLON, found 'null'

Fixed by 9cd21d3.


Comprehensive validation 🔎, 30+ fixes integrated/added 🔨🐛, optimized performance 🚀

This package is amazing and hugely popular, and has been the best package for automatic date parsing in go for years! ⭐
Thanks @araddon for crafting this package with love over the years!!
I've been using this while developing a new cloud-based log aggregation/search/visualization product, and I've found that there are three major opportunities for improvement for my particular use case:

The package does not strictly validate its input, leading to many false positives. This is OK if you know for sure the input matches one of the known formats, but cannot be trusted if the input could be anything and you only want a returned date/time if it definitely matches a known format.
While still being far more efficient than the "shotgun" parsing approach, the package currently allocates a relatively large amount of memory (several times the average input size), which can add up when parsing megabytes of date strings per second in a high-throughput microservice. It can also be relatively slow when parsing a string that doesn't match a known format and can allocate even more memory in this case, due to custom error messages that include contextual details.
There are a lot of unmerged one-off contributions that haven't been merged and need to be made coherent with each other.

This PR addresses all 3 opportunities:

Validation: it now comprehensively validates the input in the following ways: at each point in the state machine, it makes sure there are cases for all possibilities, and any invalid possibility will fail; additionally, it makes sure that the entire format string was specifically set (excluding any trailing punctuation, which can be safely ignored). False positives should be extremely rare now (hard to prove they don't exist).
Memory Efficiency: bytes allocated have been reduced by 90%, and parsing some formats are zero allocation. The SimpleErrorMessages option was added (off by default) that greatly speeds up the case where a string does not match a known format -- with the option on, this case is now 4x faster and produces almost no allocations.
Merge & Integrate Community Fixes: Fixes for nearly all of the pending issues from the community (including open pull requests) have been incorporated and adapted.

In the process of going through the state machine comprehensively for validation, redundant code/states were merged, and support was added for certain edge cases (for example, some date formats did not support being followed by times).
The example and README.md were updated to incorporate all of the newly supported formats and edge cases. More details on how to properly interpret returned location information with respect to abbreviated timezones was added.
BREAKING -- the package now requires go >= 1.20 to support memory optimizations converting from []byte to string in key places.
A huge thanks to all who posted issues and contributed PRs -- while the PRs were unable to be merged directly because the validation changes were so major, the ideas of all these contributions and the associated test cases were incorporated. Here's credit for all of the issues fixes and contributions in this PR as well as a summary of additional fixes added:

This PR started directly building from https://github.com/araddon/dateparse/pull/151 by @arran4 that fixes https://github.com/araddon/dateparse/issues/78 (support for GMT+offset, support additional whitespace in certain places, and other changes)
Fix https://github.com/araddon/dateparse/issues/145 - words falsely detected as a valid format - fixed by comprehensive validation
Fix https://github.com/araddon/dateparse/issues/108 - "1.jpg" incorrectly parsed as valid - fixed by comprehensive validation
Fix https://github.com/araddon/dateparse/issues/98 - names and addresses incorrectly parsed as valid - fixed by comprehensive validation
Fix https://github.com/araddon/dateparse/issues/150 - fix parsing "am" as "pm"
Fix https://github.com/araddon/dateparse/issues/157 - fix parsing of Thu Jan 28 2021 15:28:21 GMT+0000 format
Fix https://github.com/araddon/dateparse/issues/137 - variant of ':' as separator for fraction seconds - adapted https://github.com/araddon/dateparse/pull/138 by @dferstay
Fix https://github.com/araddon/dateparse/issues/139 - add support for dd-mm-yyyy (digit month) - adapt https://github.com/araddon/dateparse/pull/140 by @dferstay (also fixes https://github.com/araddon/dateparse/issues/155)
Fix https://github.com/araddon/dateparse/issues/141 - add support for yyyy mon dd format - adapt https://github.com/araddon/dateparse/pull/142 by @dferstay
Fix https://github.com/araddon/dateparse/issues/143 - add support for yyyymmddhhmmss.SSS format - adapt https://github.com/araddon/dateparse/pull/144 by @dferstay
Fix https://github.com/araddon/dateparse/issues/130 - fix timezone parsing after fractional seconds - adapted https://github.com/araddon/dateparse/pull/131 by @zifengyu
Fix https://github.com/araddon/dateparse/issues/123 - fix parsing of fractional seconds for certain formats (e.g., 2017-04-03 22:32:14.322 CET)
Fix https://github.com/araddon/dateparse/issues/109 - fix parsing of Sun, 07 Jun 2020 00:00:00 +0100 format
Fix bug in comment https://github.com/araddon/dateparse/issues/100#issuecomment-1118868154 - fix parsing of 1 April 2022 23:59 format (time after certain date formats)
Fix https://github.com/araddon/dateparse/issues/129 - fix ambiguous and PreferMonthFirst parsing for format mm.dd.yyyy (time) - adapted https://github.com/araddon/dateparse/pull/133 by @mehanizm (also fixes https://github.com/araddon/dateparse/issues/91 and https://github.com/araddon/dateparse/issues/28)
Fix https://github.com/araddon/dateparse/issues/149 - support PMDT and AMT time zones and validate that AM/PM indicators only appear at most once
Fix https://github.com/araddon/dateparse/issues/127 - add support for dd[th,nd,st,rd] Month yyyy format - adapt https://github.com/araddon/dateparse/pull/128 by @krhubert
Fix https://github.com/araddon/dateparse/issues/158 - fix parsing for format (time) UTC[+-]NNNN
Add support for mm/dd/yyyy, hh:mm:ss format - adapt https://github.com/araddon/dateparse/pull/156 by @BrianLeishman
Add support for yyyy.mm.dd (time) format - adapt https://github.com/araddon/dateparse/pull/134 by @jmdacruz, and add cases expected to fail to TestParseErrors unit test
Add support for git log format (e.g., Thu Apr 7 15:13:13 2005 -0700) - adapt commit https://github.com/araddon/dateparse/pull/92/commits/99d9682a1cbe7a14975b5b71704af8847c2684f9 from https://github.com/araddon/dateparse/pull/92 by @jiangxin (merge timeWsYearOffset case and add validation)
Add support for RabbitMQ log format (e.g., dd-mon-yyyy::hh:mm:ss) - adapt https://github.com/araddon/dateparse/pull/122 by @bizy01
Expand support for Chinese date formats, and allow times to follow - adapt https://github.com/araddon/dateparse/pull/132 by @xwjdsh
Add support for mon/dd/yyyy format, e.g., Oct/31/1970
Add support for dd-month-year format
Extend format yyyy-mon-dd to allow times to follow it. Also allow full month name instead of just abbreviated.
Fix the case for ambiguous date/time in the mm:dd:yyyy format
Allow full day name before month (e.g., Monday January 4th, 2017)
Additional fixes for mm.dd.yyyy (time) format
Fix ambiguous parsing for mm/dd formats that start with a weekday

Also adds tests to verify that the following stay fixed:

https://github.com/araddon/dateparse/issues/94 - mysql log format such as 190910 11:51:49
https://github.com/araddon/dateparse/issues/117 - fractional seconds after ':'

Great work @klondikedragon

this is great work @klondikedragon! Now, this repo hasn't seen much movement in years, do you think we should start using a fork? should we use yours?

I would vote that we use his, we should see if it qualifies for https://github.com/avelino/awesome-go

In some further testing, I found that weekday prefixes only worked for some date formats, but not for others. So that is fixed now. As a side effect (benefit?), leading whitespace is now allowed/ignored.
Let's see if @araddon has feedback and/or is interested in merging this PR (it's a pretty big change and changes the philosophy a bit to have validation, and also makes the code a little more complex in favor of performance). The changes are large enough now it could break backwards compatibility, so in the very least it should deserve a new major version IMO.
Although I don't want to fork something lightly, since we haven't heard any feedback from @araddon for a few years, it could definitely make sense to go ahead. If there is no comment after the holidays, I think it would make sense to go ahead and fork. This package is a key part of freeform date parsing in the "automatic structured field extraction" logic being built for IT Lightning (this new cloud-based log management platform I'm building). Given that's the case, the IT Lightning org would be willing to maintain the forked repo and work with community issues/contributions, since we're motivated to have best-in-class date recognition & parsing in the log ingestion pipeline. The license would remain the same of course.
The community contributions would help us improve our date parsing, we'd be motivated to put energy into it to keep our date parsing bug-free and comprehensive, and community use of the package might help us get a little exposure to devs/SREs who might become interested in our log management solution. So it should benefit everyone.
All feedback is welcome. What do ya'll think of this proposed plan?

great work @klondikedragon . How can i start using this?

I'll go ahead and fork this package. I'm renaming the main branch as part of that.

The fork is complete and published as v0.1.0 -- again, a huge thanks to @araddon for authoring and maintaining this package for so many years!
The fork is available using go get github.com/itlightning/dateparse -- issues and PRs are welcome.
@elliot40404 @arran4 @jmdacruz -- see what you think and how this updated package works! If this looks good and after incorporating feedback, I think I'll publish a v1.0.0 at some point soon. I'm also curious to get feedback on my log management project too, check out the site/discord if you're interested. Thanks!


No libgcc

This package does not link to libgomp so we don't need libgcc as a run requirements.

Hi! This is the friendly conda-forge-admin automated user.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


bcc doesnt work.

I've follow the code sample below from your docs
const Recipient = require("mailersend").Recipient;
const EmailParams = require("mailersend").EmailParams;
const MailerSend = require("mailersend");

const mailersend = new MailerSend({
    api_key: "key",
});

const recipients = [
  new<EMAIL_ADDRESS>"Your Client")
];
const cc = [
  new<EMAIL_ADDRESS>"Your CC Client")
];
const bcc = [
  new<EMAIL_ADDRESS>"Your BCC Client")
];

const emailParams = new EmailParams()
<EMAIL_ADDRESS>      .setFromName("Your Name")
      .setRecipients(recipients)
      .setCc(cc)
      .setBcc(bcc)
      .setSubject("Subject")
      .setHtml("This is the HTML content")
      .setText("This is the text content");

mailersend.send(emailParams);

The error
[0]   [Symbol(Response internals)]: {
[0]     url: 'https://api.mailersend.com/v1/email',

[0]     status: 422,
[0]     statusText: 'Unprocessable Content',
[0]     headers: Headers { [Symbol(map)]: [Object: null prototype] },
[0]     counter: 0
[0]   }

This issue isn't reproducable. Please ensure to check that you are not passing an existing recipient's email in either your CC or BCC


Some tests segfault

For some reason the following tests segfault
https://github.com/erooke/ocp.nix/blob/375d82d8c7b0306f658e9fd12da5af3231031e47/pkgs/python/cadquery/default.nix#L55-L62
I do not know why yet.

It appears that build123d also has a segfaulting test. I suspect I'm doing something wrong when I build ocp.
https://github.com/erooke/ocp.nix/blob/da0b6a3fcf1ab519e2df437be8b686512d531f66/pkgs/python/build123d/default.nix#L66-L67

Both the build123d and cq-warehouse tests trigger the segfault by trying to extrude with "both". Interestingly not every call to extrude with "both" seems to trigger this segfault. build123d in particular has other tests with this function call which do not segfault.

This looks like a known issue: https://github.com/CadQuery/OCP/issues/149

Things which have not helped:

switching from gcc to clang15
this diff for pywrap
the patches in occt-feedstock


Revise Wiki pages that list instructions to make expansion more ovbious.

It seems to be non-obvious that the instructions need expanding.
See #23
Particularly this comment:

OMG!

Robert,
thanks so much - spent several days upgrading 20 laptops and devices for kids, and the hudl was nightmare.
But with the opening of the ">" its so simple - thanks.
sorry i not familiar with the layout used.
hudl not running great work. i owe you more than a coffee.
brian henderson

From: Robert May<EMAIL_ADDRESS>Sent: 27 January 2021 13:48
To: remay/tmf-hudl<EMAIL_ADDRESS>Cc: awooga<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: [remay/tmf-hudl] OMG! (#29)
OMG!

From: Robert May notifications<EMAIL_ADDRESS>Sent: 27 January 2021 13:29
To: remay/tmf-hudl tmf-hudl<EMAIL_ADDRESS>Cc: awooga brian_asktv<EMAIL_ADDRESS>Comment comment<EMAIL_ADDRESS>Subject: Re: [remay/tmf-hudl] Welcome to tmf-hudl Discussions! (#23https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fdiscussions%2F23&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224437910|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=h%2B5VMqT30xwHAnwemUKXizPCf69IkO6JprcL8qHJ6VE%3D&reserved=0)
Click on the little black triangles on the left to expand each step of the instructions and see if you still have questions.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fdiscussions%2F23%23discussioncomment-314532&data=04%7C01%7C%7C5bb2475ae48d48c1581008d8c2c79541%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637473509741774533%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=AQSLhmJOOGnEah2NfSt2x2KMbx%2FN5aRU6OWRXvTUnA4%3D&reserved=0https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fdiscussions%2F23%23discussioncomment-314532&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224437910|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=nfByiBk9fAgzaQgFrXA0NEeNSDPuhtDv%2FDYSGv2QJDM%3D&reserved=0, or unsubscribehttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABWLPZW4K3SIXQ35OSGCMY3S4AILVANCNFSM4UU66QPQ&data=04%7C01%7C%7C5bb2475ae48d48c1581008d8c2c79541%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637473509741784527%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=ijjhwbjFd21rVHdFhe6jPEVrPBeTBBxOKTr920fhg1w%3D&reserved=0https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABWLPZW4K3SIXQ35OSGCMY3S4AILVANCNFSM4UU66QPQ&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224447904|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=otGNIODAbiX5ywQ4HcVKvKHww6aX31ubAqePwklIQt4%3D&reserved=0.
Originally posted by @awoogahttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fawooga&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224447904|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=EBiSPoxwj5J1138cXuo4ql00jadJTRA0j1Ia9v0YSfo%3D&reserved=0 in #23 (comment)https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fdiscussions%2F23%23discussioncomment-314565&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224457901|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=908Pk6DTJzQYJTDrlJOot0x70q79%2F0Wz1N8%2F1lEEw%2BU%3D&reserved=0
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fissues%2F29&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224467895|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=VjV0lShrXmzPM9fP7CWdMLkrSKunhk74DU0F42VCCdg%3D&reserved=0, or unsubscribehttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABWLPZWPIN2KN3TTNPGCQQTS4AKTTANCNFSM4WVJKG5Q&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224467895|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=CU1YNmtv8iCK2XdZnGYVZM7W1gyd%2BWIGT5S3veZmooc%3D&reserved=0.

Robert,
thanks so much - spent several days upgrading 20 laptops and devices for kids, and the hudl was nightmare.
But with the opening of the ">" its so simple - thanks.
sorry i not familiar with the layout used.
hudl not running great work. i owe you more than a coffee.
brian henderson

From: Robert May<EMAIL_ADDRESS>Sent: 27 January 2021 13:48
To: remay/tmf-hudl<EMAIL_ADDRESS>Cc: awooga<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: [remay/tmf-hudl] OMG! (#29)
OMG!

From: Robert May notifications<EMAIL_ADDRESS>Sent: 27 January 2021 13:29
To: remay/tmf-hudl tmf-hudl<EMAIL_ADDRESS>Cc: awooga brian_asktv<EMAIL_ADDRESS>Comment comment<EMAIL_ADDRESS>Subject: Re: [remay/tmf-hudl] Welcome to tmf-hudl Discussions! (#23https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fdiscussions%2F23&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224437910|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=h%2B5VMqT30xwHAnwemUKXizPCf69IkO6JprcL8qHJ6VE%3D&reserved=0)
Click on the little black triangles on the left to expand each step of the instructions and see if you still have questions.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHubhttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fdiscussions%2F23%23discussioncomment-314532&data=04%7C01%7C%7C5bb2475ae48d48c1581008d8c2c79541%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637473509741774533%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=AQSLhmJOOGnEah2NfSt2x2KMbx%2FN5aRU6OWRXvTUnA4%3D&reserved=0https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fdiscussions%2F23%23discussioncomment-314532&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224437910|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=nfByiBk9fAgzaQgFrXA0NEeNSDPuhtDv%2FDYSGv2QJDM%3D&reserved=0, or unsubscribehttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABWLPZW4K3SIXQ35OSGCMY3S4AILVANCNFSM4UU66QPQ&data=04%7C01%7C%7C5bb2475ae48d48c1581008d8c2c79541%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637473509741784527%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=ijjhwbjFd21rVHdFhe6jPEVrPBeTBBxOKTr920fhg1w%3D&reserved=0https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABWLPZW4K3SIXQ35OSGCMY3S4AILVANCNFSM4UU66QPQ&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224447904|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=otGNIODAbiX5ywQ4HcVKvKHww6aX31ubAqePwklIQt4%3D&reserved=0.
Originally posted by @awoogahttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fawooga&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224447904|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=EBiSPoxwj5J1138cXuo4ql00jadJTRA0j1Ia9v0YSfo%3D&reserved=0 in #23 (comment)https://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fdiscussions%2F23%23discussioncomment-314565&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224457901|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=908Pk6DTJzQYJTDrlJOot0x70q79%2F0Wz1N8%2F1lEEw%2BU%3D&reserved=0
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fissues%2F29&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224467895|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=VjV0lShrXmzPM9fP7CWdMLkrSKunhk74DU0F42VCCdg%3D&reserved=0, or unsubscribehttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABWLPZWPIN2KN3TTNPGCQQTS4AKTTANCNFSM4WVJKG5Q&data=04|01||ca1b01d2f4f148a2266c08d8c2ca4207|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473521224467895|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=CU1YNmtv8iCK2XdZnGYVZM7W1gyd%2BWIGT5S3veZmooc%3D&reserved=0.

Good stuff.  I'm glad that once you could see them the instructions were easy to follow, and I'm especially happy to be helping out kids with their education - you're not the first person I've talked to who finds themselves re-conditioning Hudls for lock-down learning.    Please buy yourself a coffee, you deserve it.

Good stuff.  I'm glad that once you could see them the instructions were easy to follow, and I'm especially happy to be helping out kids with their education - you're not the first person I've talked to who finds themselves re-conditioning Hudls for lock-down learning.    Please buy yourself a coffee, you deserve it.

wubands.com is my covid solution - 20pence!
see covid risks and support needs - maybe 60,000 per day wont catch it.
brian henderson
would you believe i invented facebook - functionality in 1998 on a government IT webserver ( public facing too).
But no one believed people would put life on web, no mobiles, no laptops and no wife and no students.
6 years later a usa student Zukerberg folllowed suit and rest history.... doh!

From: Robert May<EMAIL_ADDRESS>Sent: 27 January 2021 14:18
To: remay/tmf-hudl<EMAIL_ADDRESS>Cc: awooga<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [remay/tmf-hudl] Revise Wiki pages that list instructions to make expansion more ovbious. (#29)
Good stuff. I'm glad that once you could see them the instructions were easy to follow, and I'm especially happy to be helping out kids with their education - you're not the first person I've talked to who finds themselves re-conditioning Hudls for lock-down learning. Please buy yourself a coffee, you deserve it.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fissues%2F29%23issuecomment-768315420&data=04|01||5643ca3a5c0b4d11bc4908d8c2ce5efb|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473538896977943|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=aJONULK%2FF0aOhYDk4XarwxTQ6dHoKQpNkJOIXBfozpI%3D&reserved=0, or unsubscribehttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABWLPZUONNHHRT5NR7SWVRTS4AOB7ANCNFSM4WVJKG5Q&data=04|01||5643ca3a5c0b4d11bc4908d8c2ce5efb|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473538896977943|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=ZS94t3PtZylJfdII%2B4OUUDTZIVbcS6375LNtWXk3nXU%3D&reserved=0.

wubands.com is my covid solution - 20pence!
see covid risks and support needs - maybe 60,000 per day wont catch it.
brian henderson
would you believe i invented facebook - functionality in 1998 on a government IT webserver ( public facing too).
But no one believed people would put life on web, no mobiles, no laptops and no wife and no students.
6 years later a usa student Zukerberg folllowed suit and rest history.... doh!

From: Robert May<EMAIL_ADDRESS>Sent: 27 January 2021 14:18
To: remay/tmf-hudl<EMAIL_ADDRESS>Cc: awooga<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [remay/tmf-hudl] Revise Wiki pages that list instructions to make expansion more ovbious. (#29)
Good stuff. I'm glad that once you could see them the instructions were easy to follow, and I'm especially happy to be helping out kids with their education - you're not the first person I've talked to who finds themselves re-conditioning Hudls for lock-down learning. Please buy yourself a coffee, you deserve it.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fissues%2F29%23issuecomment-768315420&data=04|01||5643ca3a5c0b4d11bc4908d8c2ce5efb|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473538896977943|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=aJONULK%2FF0aOhYDk4XarwxTQ6dHoKQpNkJOIXBfozpI%3D&reserved=0, or unsubscribehttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABWLPZUONNHHRT5NR7SWVRTS4AOB7ANCNFSM4WVJKG5Q&data=04|01||5643ca3a5c0b4d11bc4908d8c2ce5efb|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473538896977943|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=ZS94t3PtZylJfdII%2B4OUUDTZIVbcS6375LNtWXk3nXU%3D&reserved=0.

Hi Robert,
I have refurbished 50 laptops for school kids and shielding folk in fife. On second hudl. One quick question will zoom app run on this? Play store says not compatible... is that due to android 2.2 or tmf?
Thanks
Great stuff
Brian
Get Outlook for iOShttps://aka.ms/o0ukef

From: Brian Henderson<EMAIL_ADDRESS>Sent: Wednesday, January 27, 2021 2:43:30 PM
To: remay/tmf-hudl<EMAIL_ADDRESS>Subject: Re: [remay/tmf-hudl] Revise Wiki pages that list instructions to make expansion more ovbious. (#29)
wubands.com is my covid solution - 20pence!
see covid risks and support needs - maybe 60,000 per day wont catch it.
brian henderson
would you believe i invented facebook - functionality in 1998 on a government IT webserver ( public facing too).
But no one believed people would put life on web, no mobiles, no laptops and no wife and no students.
6 years later a usa student Zukerberg folllowed suit and rest history.... doh!

From: Robert May<EMAIL_ADDRESS>Sent: 27 January 2021 14:18
To: remay/tmf-hudl<EMAIL_ADDRESS>Cc: awooga<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [remay/tmf-hudl] Revise Wiki pages that list instructions to make expansion more ovbious. (#29)
Good stuff. I'm glad that once you could see them the instructions were easy to follow, and I'm especially happy to be helping out kids with their education - you're not the first person I've talked to who finds themselves re-conditioning Hudls for lock-down learning. Please buy yourself a coffee, you deserve it.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fissues%2F29%23issuecomment-768315420&data=04|01||5643ca3a5c0b4d11bc4908d8c2ce5efb|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473538896977943|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=aJONULK%2FF0aOhYDk4XarwxTQ6dHoKQpNkJOIXBfozpI%3D&reserved=0, or unsubscribehttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABWLPZUONNHHRT5NR7SWVRTS4AOB7ANCNFSM4WVJKG5Q&data=04|01||5643ca3a5c0b4d11bc4908d8c2ce5efb|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637473538896977943|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=ZS94t3PtZylJfdII%2B4OUUDTZIVbcS6375LNtWXk3nXU%3D&reserved=0.

One quick question will zoom app run on this? Play store says not compatible... is that due to android 2.2 or tmf?

According to the Play Store information the latest version of Zoom required Andriod 5.0 and above.
I doubt there was ever a version that ran on 4.2.2 and even if we found one it's ;likely that the Zoom back-end wouldn't support it any more.
Sorry for the bad news.
Rob.

Hi rob,
Thanks for quick reply. Web zoom then.
Thanks for great support on TMF hudl.
Brian
Get Outlook for iOShttps://aka.ms/o0ukef

From: Robert May<EMAIL_ADDRESS>Sent: Sunday, February 7, 2021 11:02:10 AM
To: remay/tmf-hudl<EMAIL_ADDRESS>Cc: awooga<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [remay/tmf-hudl] Revise Wiki pages that list instructions to make expansion more ovbious. (#29)
One quick question will zoom app run on this? Play store says not compatible... is that due to android 2.2 or tmf?
According to the Play Store information the latest version of Zoom required Andriod 5.0 and above.
I doubt there was ever a version that ran on 4.2.2 and even if we found one it's ;likely that the Zoom back-end wouldn't support it any more.
Sorry for the bad news.
Rob.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fremay%2Ftmf-hudl%2Fissues%2F29%23issuecomment-774654390&data=04|01||9095f8b4109f4fda258408d8cb57d1e8|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637482925322350467|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=jIBONe7NYCsGcPxVygXPwrKn0qqhElwSWfNR8thpAMI%3D&reserved=0, or unsubscribehttps://emea01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fnotifications%2Funsubscribe-auth%2FABWLPZUDHALASZ7IEMR2DJTS5ZXLFANCNFSM4WVJKG5Q&data=04|01||9095f8b4109f4fda258408d8cb57d1e8|84df9e7fe9f640afb435aaaaaaaaaaaa|1|0|637482925322350467|Unknown|TWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D|1000&sdata=RvfMepvECy13wvPdWIQm2U2eMXwE%2Fn7kC71kWP9oat8%3D&reserved=0.


Meet dimensions mismatch when running example "Getting parameter statistics of a sparsified model"

When running the example "Getting parameter statistics of a sparsified model" in the Readme, I meet the following problem. Can you help take a look at it?
Command: $ python3 compress_classifier.py --resume=../ssl/checkpoints/checkpoint_trained_channel_regularized_resnet20_finetuned.pth.tar -a=resnet20_cifar ../../../data.cifar10 --summary=compute
Error:
RuntimeError: Error(s) in loading state_dict for ResNetCifar:
While copying the parameter named "layer1.0.conv1.weight", whose dimensions in the model are torch.Size([16, 16, 3, 3]) and whose dimensions in the checkpoint are torch.Size([11, 16, 3, 3]).
While copying the parameter named "layer1.0.bn1.running_mean", whose dimensions in the model are torch.Size([16]) and whose dimensions in the checkpoint are torch.Size([11]).
While copying the parameter named "layer1.0.bn1.running_var", whose dimensions in the model are torch.Size([16]) and whose dimensions in the checkpoint are torch.Size([11]).
While copying the parameter named "layer1.0.bn1.weight", whose dimensions in the model are torch.Size([16]) and whose dimensions in the checkpoint are torch.Size([11]).
While copying the parameter named "layer1.0.bn1.bias", whose dimensions in the model are torch.Size([16]) and whose dimensions in the checkpoint are torch.Size([11]).
While copying the parameter named "layer1.0.conv2.weight", whose dimensions in the model are torch.Size([16, 16, 3, 3]) and whose dimensions in the checkpoint are torch.Size([16, 11, 3, 3]).
While copying the parameter named "layer1.1.conv1.weight", whose dimensions in the model are torch.Size([16, 16, 3, 3]) and whose dimensions in the checkpoint are torch.Size([8, 16, 3, 3]).
While copying the parameter named "layer1.1.bn1.running_mean", whose dimensions in the model are torch.Size([16]) and whose dimensions in the checkpoint are torch.Size([8]).
While copying the parameter named "layer1.1.bn1.running_var", whose dimensions in the model are torch.Size([16]) and whose dimensions in the checkpoint are torch.Size([8]).
While copying the parameter named "layer1.1.bn1.weight", whose dimensions in the model are torch.Size([16]) and whose dimensions in the checkpoint are torch.Size([8]).
While copying the parameter named "layer1.1.bn1.bias", whose dimensions in the model are torch.Size([16]) and whose dimensions in the checkpoint are torch.Size([8]).
While copying the parameter named "layer1.1.conv2.weight", whose dimensions in the model are torch.Size([16, 16, 3, 3]) and whose dimensions in the checkpoint are torch.Size([16, 8, 3, 3]).
While copying the parameter named "layer1.2.conv1.weight", whose dimensions in the model are torch.Size([16, 16, 3, 3]) and whose dimensions in the checkpoint are torch.Size([9, 16, 3, 3]).
While copying the parameter named "layer1.2.bn1.running_mean", whose dimensions in the model are torch.Size([16]) and whose dimensions in the checkpoint are torch.Size([9]).
While copying the parameter named "layer1.2.bn1.running_var", whose dimensions in the model are torch.Size([16]) and whose dimensions in the checkpoint are torch.Size([9]).
While copying the parameter named "layer1.2.bn1.weight", whose dimensions in the model are torch.Size([16]) and whose dimensions in the checkpoint are torch.Size([9]).
While copying the parameter named "layer1.2.bn1.bias", whose dimensions in the model are torch.Size([16]) and whose dimensions in the checkpoint are torch.Size([9]).
While copying the parameter named "layer1.2.conv2.weight", whose dimensions in the model are torch.Size([16, 16, 3, 3]) and whose dimensions in the checkpoint are torch.Size([16, 9, 3, 3]).
While copying the parameter named "layer2.0.conv1.weight", whose dimensions in the model are torch.Size([32, 16, 3, 3]) and whose dimensions in the checkpoint are torch.Size([22, 16, 3, 3]).
While copying the parameter named "layer2.0.bn1.running_mean", whose dimensions in the model are torch.Size([32]) and whose dimensions in the checkpoint are torch.Size([22]).
While copying the parameter named "layer2.0.bn1.running_var", whose dimensions in the model are torch.Size([32]) and whose dimensions in the checkpoint are torch.Size([22]).
While copying the parameter named "layer2.0.bn1.weight", whose dimensions in the model are torch.Size([32]) and whose dimensions in the checkpoint are torch.Size([22]).
While copying the parameter named "layer2.0.bn1.bias", whose dimensions in the model are torch.Size([32]) and whose dimensions in the checkpoint are torch.Size([22]).
While copying the parameter named "layer2.0.conv2.weight", whose dimensions in the model are torch.Size([32, 32, 3, 3]) and whose dimensions in the checkpoint are torch.Size([32, 22, 3, 3]).
While copying the parameter named "layer2.1.conv1.weight", whose dimensions in the model are torch.Size([32, 32, 3, 3]) and whose dimensions in the checkpoint are torch.Size([20, 32, 3, 3]).
While copying the parameter named "layer2.1.bn1.running_mean", whose dimensions in the model are torch.Size([32]) and whose dimensions in the checkpoint are torch.Size([20]).
While copying the parameter named "layer2.1.bn1.running_var", whose dimensions in the model are torch.Size([32]) and whose dimensions in the checkpoint are torch.Size([20]).
While copying the parameter named "layer2.1.bn1.weight", whose dimensions in the model are torch.Size([32]) and whose dimensions in the checkpoint are torch.Size([20]).
While copying the parameter named "layer2.1.bn1.bias", whose dimensions in the model are torch.Size([32]) and whose dimensions in the checkpoint are torch.Size([20]).
While copying the parameter named "layer2.1.conv2.weight", whose dimensions in the model are torch.Size([32, 32, 3, 3]) and whose dimensions in the checkpoint are torch.Size([32, 20, 3, 3]).
While copying the parameter named "layer3.0.conv1.weight", whose dimensions in the model are torch.Size([64, 32, 3, 3]) and whose dimensions in the checkpoint are torch.Size([52, 32, 3, 3]).
While copying the parameter named "layer3.0.bn1.running_mean", whose dimensions in the model are torch.Size([64]) and whose dimensions in the checkpoint are torch.Size([52]).
While copying the parameter named "layer3.0.bn1.running_var", whose dimensions in the model are torch.Size([64]) and whose dimensions in the checkpoint are torch.Size([52]).
While copying the parameter named "layer3.0.bn1.weight", whose dimensions in the model are torch.Size([64]) and whose dimensions in the checkpoint are torch.Size([52]).
While copying the parameter named "layer3.0.bn1.bias", whose dimensions in the model are torch.Size([64]) and whose dimensions in the checkpoint are torch.Size([52]).
While copying the parameter named "layer3.0.conv2.weight", whose dimensions in the model are torch.Size([64, 64, 3, 3]) and whose dimensions in the checkpoint are torch.Size([64, 52, 3, 3]).
While copying the parameter named "layer3.1.conv1.weight", whose dimensions in the model are torch.Size([64, 64, 3, 3]) and whose dimensions in the checkpoint are torch.Size([56, 64, 3, 3]).
While copying the parameter named "layer3.1.bn1.running_mean", whose dimensions in the model are torch.Size([64]) and whose dimensions in the checkpoint are torch.Size([56]).
While copying the parameter named "layer3.1.bn1.running_var", whose dimensions in the model are torch.Size([64]) and whose dimensions in the checkpoint are torch.Size([56]).
While copying the parameter named "layer3.1.bn1.weight", whose dimensions in the model are torch.Size([64]) and whose dimensions in the checkpoint are torch.Size([56]).
While copying the parameter named "layer3.1.bn1.bias", whose dimensions in the model are torch.Size([64]) and whose dimensions in the checkpoint are torch.Size([56]).
While copying the parameter named "layer3.1.conv2.weight", whose dimensions in the model are torch.Size([64, 64, 3, 3]) and whose dimensions in the checkpoint are torch.Size([64, 56, 3, 3]).

Thanks @ChongyuIntel!  I must have accidentally committed in the past a checkpoint file without the "thinning recipe" (see commit message).

Thanks for quick fix. Verified on my side, it works with the problem:
Traceback (most recent call last):
File "compress_classifier.py", line 503, in
main()
File "compress_classifier.py", line 229, in main
model, chkpt_file=args.resume)
File "/home/chongyu/Chong_dxxz_Projects/Github/distiller/apputils/checkpoint.py", line 110, in load_checkpoint
model.thinning_recipes)
File "/home/chongyu/Chong_dxxz_Projects/Github/distiller/distiller/thinning.py", line 419, in execute_thinning_recipes_list
execute_thinning_recipe(model, zeros_mask_dict, recipe, optimizer=None, loaded_from_file=True)
File "/home/chongyu/Chong_dxxz_Projects/Github/distiller/distiller/thinning.py", line 476, in execute_thinning_recipe
setattr(layers[layer_name], attr, val)
KeyError: 'module.layer3.0.conv2'
I think the root cause of this problem is "probably you saved the model using nn.DataParallel, which stores the model in module, and now you are trying to load it without DataParallel."
My fix is in the compress_classifer.py:
Change the logic:
is_parallel = not png_summary and args.summary != 'compute'  # For PNG summary, parallel graphs are illegible
into:
is_parallel = not (png_summary and args.summary != 'compute')  # For PNG summary, parallel graphs are illegible #Chong change the logic
Then everything works fine.
But I am not sure the changed logic is what your original meaning.
Can you help double check it?
Actually, before you push the commit of fix binary change, you will get the following error info, so it is more clear to find the root cause:
...
Loaded compression schedule from checkpoint (epoch 277)
=> loaded checkpoint '../ssl/checkpoints/checkpoint_trained_channel_regularized_resnet20_finetuned.pth.tar' (epoch 277)
Traceback (most recent call last):
File "compress_classifier.py", line 499, in
main()
File "compress_classifier.py", line 225, in main
model, chkpt_file=args.resume)
File "/home/chongyu/Chong_dxxz_Projects/Github/distiller/apputils/checkpoint.py", line 120, in load_checkpoint
model.load_state_dict(checkpoint['state_dict'])
File "/home/chongyu/Chong_dxxz_Projects/Github/distiller/env/lib/python3.5/site-packages/torch/nn/modules/module.py", line 721, in load_state_dict
self.class.name, "\n\t".join(error_msgs)))
RuntimeError: Error(s) in loading state_dict for ResNetCifar:
Missing key(s) in state_dict: "conv1.weight", "bn1.weight", "bn1.running_mean", "bn1.running_var", "bn1.bias", "layer1.0.conv1.weight", "layer1.0.bn1.weight", "layer1.0.bn1.running_mean", "layer1.0.bn1.running_var", "layer1.0.bn1.bias", "layer1.0.conv2.weight", "layer1.0.bn2.weight", "layer1.0.bn2.running_mean", "layer1.0.bn2.running_var", "layer1.0.bn2.bias", "layer1.1.conv1.weight", "layer1.1.bn1.weight", "layer1.1.bn1.running_mean", "layer1.1.bn1.running_var", "layer1.1.bn1.bias", "layer1.1.conv2.weight", "layer1.1.bn2.weight", "layer1.1.bn2.running_mean", "layer1.1.bn2.running_var", "layer1.1.bn2.bias", "layer1.2.conv1.weight", "layer1.2.bn1.weight", "layer1.2.bn1.running_mean", "layer1.2.bn1.running_var", "layer1.2.bn1.bias", "layer1.2.conv2.weight", "layer1.2.bn2.weight", "layer1.2.bn2.running_mean", "layer1.2.bn2.running_var", "layer1.2.bn2.bias", "layer2.0.conv1.weight", "layer2.0.bn1.weight", "layer2.0.bn1.running_mean", "layer2.0.bn1.running_var", "layer2.0.bn1.bias", "layer2.0.conv2.weight", "layer2.0.bn2.weight", "layer2.0.bn2.running_mean", "layer2.0.bn2.running_var", "layer2.0.bn2.bias", "layer2.0.downsample.0.weight", "layer2.0.downsample.1.weight", "layer2.0.downsample.1.running_mean", "layer2.0.downsample.1.running_var", "layer2.0.downsample.1.bias", "layer2.1.conv1.weight", "layer2.1.bn1.weight", "layer2.1.bn1.running_mean", "layer2.1.bn1.running_var", "layer2.1.bn1.bias", "layer2.1.conv2.weight", "layer2.1.bn2.weight", "layer2.1.bn2.running_mean", "layer2.1.bn2.running_var", "layer2.1.bn2.bias", "layer2.2.conv1.weight", "layer2.2.bn1.weight", "layer2.2.bn1.running_mean", "layer2.2.bn1.running_var", "layer2.2.bn1.bias", "layer2.2.conv2.weight", "layer2.2.bn2.weight", "layer2.2.bn2.running_mean", "layer2.2.bn2.running_var", "layer2.2.bn2.bias", "layer3.0.conv1.weight", "layer3.0.bn1.weight", "layer3.0.bn1.running_mean", "layer3.0.bn1.running_var", "layer3.0.bn1.bias", "layer3.0.conv2.weight", "layer3.0.bn2.weight", "layer3.0.bn2.running_mean", "layer3.0.bn2.running_var", "layer3.0.bn2.bias", "layer3.0.downsample.0.weight", "layer3.0.downsample.1.weight", "layer3.0.downsample.1.running_mean", "layer3.0.downsample.1.running_var", "layer3.0.downsample.1.bias", "layer3.1.conv1.weight", "layer3.1.bn1.weight", "layer3.1.bn1.running_mean", "layer3.1.bn1.running_var", "layer3.1.bn1.bias", "layer3.1.conv2.weight", "layer3.1.bn2.weight", "layer3.1.bn2.running_mean", "layer3.1.bn2.running_var", "layer3.1.bn2.bias", "layer3.2.conv1.weight", "layer3.2.bn1.weight", "layer3.2.bn1.running_mean", "layer3.2.bn1.running_var", "layer3.2.bn1.bias", "layer3.2.conv2.weight", "layer3.2.bn2.weight", "layer3.2.bn2.running_mean", "layer3.2.bn2.running_var", "layer3.2.bn2.bias", "fc.weight", "fc.bias".

Log file for this run: /home/chongyu/Chong_dxxz_Projects/Github/distiller/examples/classifier_compression/logs/2018.07.04-130333/2018.07.04-130333.log
Traceback (most recent call last):
File "compress_classifier.py", line 503, in
raise e
File "compress_classifier.py", line 499, in
main()
File "compress_classifier.py", line 225, in main
model, chkpt_file=args.resume)
File "/home/chongyu/Chong_dxxz_Projects/Github/distiller/apputils/checkpoint.py", line 120, in load_checkpoint
model.load_state_dict(checkpoint['state_dict'])
File "/home/chongyu/Chong_dxxz_Projects/Github/distiller/env/lib/python3.5/site-packages/torch/nn/modules/module.py", line 721, in load_state_dict
self.class.name, "\n\t".join(error_msgs)))
RuntimeError: Error(s) in loading state_dict for ResNetCifar:
Missing key(s) in state_dict: "conv1.weight", "bn1.weight", "bn1.running_mean", "bn1.running_var", "bn1.bias", "layer1.0.conv1.weight", "layer1.0.bn1.weight", "layer1.0.bn1.running_mean", "layer1.0.bn1.running_var", "layer1.0.bn1.bias", "layer1.0.conv2.weight", "layer1.0.bn2.weight", "layer1.0.bn2.running_mean", "layer1.0.bn2.running_var", "layer1.0.bn2.bias", "layer1.1.conv1.weight", "layer1.1.bn1.weight", "layer1.1.bn1.running_mean", "layer1.1.bn1.running_var", "layer1.1.bn1.bias", "layer1.1.conv2.weight", "layer1.1.bn2.weight", "layer1.1.bn2.running_mean", "layer1.1.bn2.running_var", "layer1.1.bn2.bias", "layer1.2.conv1.weight", "layer1.2.bn1.weight", "layer1.2.bn1.running_mean", "layer1.2.bn1.running_var", "layer1.2.bn1.bias", "layer1.2.conv2.weight", "layer1.2.bn2.weight", "layer1.2.bn2.running_mean", "layer1.2.bn2.running_var", "layer1.2.bn2.bias", "layer2.0.conv1.weight", "layer2.0.bn1.weight", "layer2.0.bn1.running_mean", "layer2.0.bn1.running_var", "layer2.0.bn1.bias", "layer2.0.conv2.weight", "layer2.0.bn2.weight", "layer2.0.bn2.running_mean", "layer2.0.bn2.running_var", "layer2.0.bn2.bias", "layer2.0.downsample.0.weight", "layer2.0.downsample.1.weight", "layer2.0.downsample.1.running_mean", "layer2.0.downsample.1.running_var", "layer2.0.downsample.1.bias", "layer2.1.conv1.weight", "layer2.1.bn1.weight", "layer2.1.bn1.running_mean", "layer2.1.bn1.running_var", "layer2.1.bn1.bias", "layer2.1.conv2.weight", "layer2.1.bn2.weight", "layer2.1.bn2.running_mean", "layer2.1.bn2.running_var", "layer2.1.bn2.bias", "layer2.2.conv1.weight", "layer2.2.bn1.weight", "layer2.2.bn1.running_mean", "layer2.2.bn1.running_var", "layer2.2.bn1.bias", "layer2.2.conv2.weight", "layer2.2.bn2.weight", "layer2.2.bn2.running_mean", "layer2.2.bn2.running_var", "layer2.2.bn2.bias", "layer3.0.conv1.weight", "layer3.0.bn1.weight", "layer3.0.bn1.running_mean", "layer3.0.bn1.running_var", "layer3.0.bn1.bias", "layer3.0.conv2.weight", "layer3.0.bn2.weight", "layer3.0.bn2.running_mean", "layer3.0.bn2.running_var", "layer3.0.bn2.bias", "layer3.0.downsample.0.weight", "layer3.0.downsample.1.weight", "layer3.0.downsample.1.running_mean", "layer3.0.downsample.1.running_var", "layer3.0.downsample.1.bias", "layer3.1.conv1.weight", "layer3.1.bn1.weight", "layer3.1.bn1.running_mean", "layer3.1.bn1.running_var", "layer3.1.bn1.bias", "layer3.1.conv2.weight", "layer3.1.bn2.weight", "layer3.1.bn2.running_mean", "layer3.1.bn2.running_var", "layer3.1.bn2.bias", "layer3.2.conv1.weight", "layer3.2.bn1.weight", "layer3.2.bn1.running_mean", "layer3.2.bn1.running_var", "layer3.2.bn1.bias", "layer3.2.conv2.weight", "layer3.2.bn2.weight", "layer3.2.bn2.running_mean", "layer3.2.bn2.running_var", "layer3.2.bn2.bias", "fc.weight", "fc.bias".

Hi Chong,
I'm seeing a different problem and I'm wondering why I can't recreate your issue.
Can you please attach the log file of an execution, after you make your change?
is_parallel = not (png_summary and args.summary != 'compute')

In fact, you can change it to a simpler expression (I will explain the details of this logical expression, after I get to the bottom of this issue):
is_parallel = not png_summary

Thanks!

Hi @ChongyuIntel,
Please try branch https://github.com/NervanaSystems/distiller/tree/fix_26.
It should fix the issue you see.

Hi~~ @nzmora
Have verified you new branch fix_26, now it works fine for "Getting parameter statistics of a sparsified model" example now. Do you have the plan to merge into the master branch ?

@ChongyuIntel - yeah, I'll probably merge it today or tomorrow.

Closing as a fix has been merged to 'master' a couple of days ago.

Closing as a fix has been merged to 'master' a couple of days ago.


Code duplication

The code for constructing the SQL statement could be extracted into a separate function to avoid duplication. This can make our code more modular and easier to maintain

Good idea! 🚀


The problem with the model, whose name is "Goods"

When the model name ends in "S", sometimes there may be problems:
In the file ViewServiceProvider.php created a line
use App\Models\Good;
Without "S"!
And in the same file the model call looks like:
$goodItems = Good::pluck('name','goods_id')->toArray();
Good without "S".

@noxeone can you let me know what command you are running and what model name and fields you are giving?

Thanks for the answer!
Model Goods was created from schema file, with command:

php artisan infyom:api_scaffold Goods --fieldsFile=JSON/Goods.json

These lines appear in the file ViewServiceProvider.php after creation relation with another database table
from schema file SaleGoods.json:

{
"name": "goods_id",
"dbType": "integer:unsigned:foreign,goods,goods_id",
"htmlType": "selectTable:goods:name,goods_id",
"relation": "mt1,goods,goods_id,goods_id",
"validations": "",
"searchable": false,
"fillable": true,
"primary": false,
"inForm": true,
"inIndex": true,
"inView": true
},

In a neighboring Issue, I answered in more detail:
https://github.com/InfyOmLabs/laravel-generator/issues/851

@noxeone you can pass model name in htmlType.
"htmlType": "selectTable:goods,Goods:name,goods_id",


reactiveui-xamforms for universal project PCL (Profile259)

Any update on this? my PCL is targeted to the following frameworks.let me know if anything needs to be changed on this.
.NET Framework 4.5
Windows 8
Windows Phone Silverlight 8
ASP.NET Core 5.0
Windows Phone 8.1
Xamarin.Android
Xamarin.iOS
Xamarin.iOS (Classic)
Is reactiveui-xamforms available for windows universal project PCL(Profile259)? I am getting the following error when I tried to install the nuget package.
Could not install package 'reactiveui-xamforms 6.5.0'. You are trying to install this package into a project that targets '.NETPortable,Version=v4.5,Profile=Profile259', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.
Thanks,
RJ

Can't fix this currently due to #993

Is there any update on this?

@YogirajA if you can update to RxUI v7 beta, it should work with Profile259.
nuget v3 = https://www.myget.org/F/reactiveui/api/v3/index.json
nuget v2 = https://www.myget.org/F/reactiveui/api/v2

@moswald still having the same issue

Could not install package 'reactiveui-xamforms <IP_ADDRESS>4236131'. You are trying to install this package into a project that targets '.NETPortable,Version=v4.5,Profile=Profile259', but the package does not contain any assembly references or
content files that are compatible with that framework. For more information, contact the package author.

It's also not working for Profile111.

For 259, the folder name that this is dropped in should be:
portable-net45+netcore45+win8+wpa81+wp8+MonoAndroid403+MonoTouch10+Xamarin.iOS10

note that you dn't need mono/Xamarin for 259, those are inferred.
portable-net45+win8+wpa81+wp8 should be all that's required.

For reference, the current folder created in the package is:
portable-net45+netcore45+wp8+UAP10+MonoAndroid403+MonoTouch10+Xamarin.iOS10

Which AFAIK doesn't refer to any profile.
And yep, confirmed that @onovotny 's suggestion works just fine.

@onovotny is this accurate as far as the profile names? We have 111 and 259 apps, though shouldn't really need 259 for us these days. I mean, WP silverlight? yeesh.

Is what accurate, missing some context?

As far as using "netcore45" instead of "win" in portable-net45+netcore45+wpa81+wp8.

oh, those are effectively the same for win8/pcl259. Everything seems to be using win8
The bigger thing to consider is the use of netstandard and what the best profiles for that would be.


Export as both ESM and CommonJS module

https://www.sensedeep.com/blog/posts/2021/how-to-create-single-source-npm-module.html

The example article provided in the description might not work if relative imports are used.
Therefore I will provide this project as an alternative if necessary.


So how to make this work?

I downloded entire harmony lib using unity nuget manager asset, then Unify, yet I get this error on each recompile:
[Error] System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NotImplementedException: The method or operation is not implemented.
  at HarmonyLib.PatchFunctions.UpdateWrapper (System.Reflection.MethodBase original, HarmonyLib.PatchInfo patchInfo) [0x00094] in <6ddb2f07a97745adaa7bad4e17020462>:0
  at HarmonyLib.PatchProcessor.Patch () [0x000fc] in <6ddb2f07a97745adaa7bad4e17020462>:0
  at HarmonyLib.Harmony.Patch (System.Reflection.MethodBase original, HarmonyLib.HarmonyMethod prefix, HarmonyLib.HarmonyMethod postfix, HarmonyLib.HarmonyMethod transpiler, HarmonyLib.HarmonyMethod finalizer) [0x0002a] in <6ddb2f07a97745adaa7bad4e17020462>:0
  at Unify.GenericMenuPatch.OnLoad () [0x0013c] in ./Library/PackageCache/com.av.unify/EngineBridge/GenericMenuPatch/GenericMenuPatch.cs:43
  at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
  at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0006a] in <a6d715f5ce8c4754a140b50ff638878a>:0
   --- End of inner exception stack trace ---
  at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00083] in <a6d715f5ce8c4754a140b50ff638878a>:0
  at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in <a6d715f5ce8c4754a140b50ff638878a>:0
  at UnityEditor.EditorAssemblies.ProcessInitializeOnLoadMethodAttributes () [0x00056] in /Users/bokken/build/output/unity/unity/Editor/Mono/EditorAssemblies.cs:142
EditorAssemblies.ProcessInitializeOnLoadMethodAttributes() at /Users/bokken/build/output/unity/unity/Editor/Mono/EditorAssemblies.cs:146

Harmony is already included, so you don't need to download it from nuget.
Checked on latest Unity 6 version, seems to be working, but the styling is broken now

Hi, can you add a tutorial or some basic instructions on how to add it to Unity?
I tried importing it into my Unity 6 project by copying and via package manager manual import and both
didn't seem to work.
My project just refuses to load after and gets stuck doing this...

I'm using Unity 6000.0.22f1
Thanks

just letting anyone know that it works fine until 17f.. 18f or higher broke the styling


Fixed broken guide link

It looks like there is a typo in the csv read documentation causing the existing link on the README.md page to result in a 404. Rather than change the README.md link from csv_read to csv_reader this PR changes the filename from csv_reader to csv_read and updates the only other existing reference to the file. This path was taken to make the filename align with the wider pattern within the guide while also addressing the broken link.

Thank you @kjschiroo ! 🙇


Refactor multicore.py and add tests

Codecov Report

Merging #367 into master will increase coverage by 0.3%.
The diff coverage is 97.87%.

@@            Coverage Diff            @@
##           master     #367     +/-   ##
=========================================
+ Coverage   95.09%   95.39%   +0.3%
=========================================
  Files          32       32
  Lines        9707     9715      +8
=========================================
+ Hits         9230     9267     +37
+ Misses        477      448     -29


Cannot analyze system for text-classification with custom dataset

Steps to reproduce the error

Check out the commit until #297, run npm run start to start the web locally
Upload a new system for text-classification task and with custom dataset
Click 'Analysis' and the web shows the following error message

The console error message:

[0]   File "/Users/jiangqi/Desktop/Capstone/explainaboard_web/backend/src/gen/explainaboard_web/controllers/default_controller.py", line 148, in systems_analyses_post
[0]     return default_controllers_impl.systems_analyses_post(body)
[0]   File "/Users/jiangqi/Desktop/Capstone/explainaboard_web/backend/src/gen/explainaboard_web/impl/default_controllers_impl.py", line 425, in systems_analyses_post
[0]     system_output_info = SysOutputInfo.from_dict(system_info_dict)
[0]   File "/Users/jiangqi/anaconda3/envs/env39/lib/python3.9/site-packages/explainaboard/info.py", line 223, in from_dict
[0]     **{k: cls.dict_conv(k, v) for k, v in data_dict.items() if k in field_names}
[0]   File "/Users/jiangqi/anaconda3/envs/env39/lib/python3.9/site-packages/explainaboard/info.py", line 223, in <dictcomp>
[0]     **{k: cls.dict_conv(k, v) for k, v in data_dict.items() if k in field_names}
[0]   File "/Users/jiangqi/anaconda3/envs/env39/lib/python3.9/site-packages/explainaboard/info.py", line 213, in dict_conv
[0]     return [AnalysisLevel.from_dict(v1) for v1 in v]
[0]   File "/Users/jiangqi/anaconda3/envs/env39/lib/python3.9/site-packages/explainaboard/info.py", line 213, in <listcomp>
[0]     return [AnalysisLevel.from_dict(v1) for v1 in v]
[0]   File "/Users/jiangqi/anaconda3/envs/env39/lib/python3.9/site-packages/explainaboard/analysis/analyses.py", line 328, in from_dict
[0]     features = {k: FeatureType.from_dict(v) for k, v in dikt['features'].items()}
[0]   File "/Users/jiangqi/anaconda3/envs/env39/lib/python3.9/site-packages/explainaboard/analysis/analyses.py", line 328, in <dictcomp>
[0]     features = {k: FeatureType.from_dict(v) for k, v in dikt['features'].items()}
[0]   File "/Users/jiangqi/anaconda3/envs/env39/lib/python3.9/site-packages/explainaboard/analysis/feature.py", line 66, in from_dict
[0]     return _fromdict_inner(obj)
[0]   File "/Users/jiangqi/anaconda3/envs/env39/lib/python3.9/site-packages/explainaboard/analysis/feature.py", line 31, in _fromdict_inner
[0]     return FEATURETYPE_REGISTRY[obj["cls_name"]](**result)
[0] TypeError: __init__() got an unexpected keyword argument 'is_custom'

The same error occurs when using custom-dataset for machine translation.

This should be fixed by https://github.com/neulab/explainaboard_web/pull/314


ExoPlayer migration script does not work with variable and shows malformed message

Media3 Version
ExoPlayer 2.18.7
Devices that reproduce the issue
PC, Windows v11, Windows Linux Subsystem v2 running Ubuntu 20.04.4 LTS
Devices that do not reproduce the issue
No response
Reproducible in the demo app?
Not tested
Reproduction steps

Create an Android library. In its module-level build.gradle define a variable def exoPlayerVersion = "2.18.7" and add dependency from ExoPlayer:def exoPlayerVersion = "2.18.7"

dependencies {
    api "com.google.android.exoplayer:exoplayer-core:${exoPlayerVersion}"
    api "com.google.android.exoplayer:exoplayer-ui:${exoPlayerVersion}"
}

Download migration script for v2.18.7 and follow instructions in Migration Guide
As guide instructs, run the script with -l option:./media3-migration.sh -l .   # script is run from library module folder

Expected result
The outcome of -l command: the set of files that are selected for migration.
Actual result
[...omitted...]$ ./media3-migration.sh -l .
=============================================
Validation errors (use -f to force execution)
---------------------------------------------
' found in version does not match '2.18.7'. Update to '2.18.7' or use the migration script matching your current version. Current version '${exoPlayerVersion}
    ./my-module-name/build.gradle

What we can see here is that:

use of variable in dependency does not seem to be supported. If that's the case, can we file a PR to documentation mentioning that?

the error message seems malformed. It starts with a single quote, probably there is some part before missing. Also the ending seems corrupted (Current version '${exoPlayerVersion}). But a quick check on current script did not help to understand what's going on.

Media
No media needed
Bug Report

[ ] You will email the zip file produced by adb bugreport to<EMAIL_ADDRESS>after filing this issue.

I wonder if instead of directly trying to pattern match the .gradle files we could grep through the output of ./gradlew :dependencies instead. I think to do that we would need to know the name of the 'app' Gradle target.
In a toy project that depends on ExoPlayer via maven:
$ ./gradlew app:dependencies | grep com.google.android.exoplayer:
\--- com.google.android.exoplayer:exoplayer:2.18.7
# Lots more repeats, there's probably ways to reduce the
# amount of output, or just take the first match and run with it.

2. the error message seems malformed. It starts with a single quote, probably there is some part before missing. Also the ending seems corrupted (Current version '${exoPlayerVersion}). But a quick check on current script did not help to understand what's going on.

I think the error message has somehow become re-ordered (in a very strange way), and is missing the first part ("The version"). It should be:
The version does not match '2.18.7'. Update to '2.18.7' or use the migration script matching your current version. Current version '${exoPlayerVersion}' found in
    ./my-module-name/build.gradle

Thanks for reporting! We need to see that the error messages are correct indeed.

use of variable in dependency does not seem to be supported. If that's the case, can we file a PR to documentation mentioning that?

In the docs we say with a red warning box: Warning: The script may put gradle build files in an unusable state if your dependency declarations use variables or advanced techniques.
https://developer.android.com/guide/topics/media/media3/getting-started/migration-guide#usingscript
Where would you expect this to be documented? Or what would your PR include? Would that be a change in the help text of the script?

AIUI there's two related, but different reasons the script tries to parse build.gradle files:

To detect the current version, and ensure it matches the version of this script (without this check there's a risk of very hard to debug corrupt outputs).
To magically replace the exoplayer2 gradle dependency with a media3 one.

(1) is what is blocking @BrainCrumbz here. (2) is what the current docs warn against.
I wonder if we could soften the current error to something like this which waits for the user to manually confirm their version?
Couldn't detect the current exoplayer2 version from $filename.gradle,
is your exoplayer2 dependency configured with variables or other
indirection? Please note in this case the script is likely to corrupt your
gradle build files. Please manually confirm you're currently using
ExoPlayer 2.18.7 in order to continue with the migration (if you're
using a different version, please either update to 2.18.7 before running
this script, or use the version of the migration script for your current
version).

This project uses ExoPlayer 2.18.7 (y/n):


Thick black lines around application

So, I'm running Ubuntu Xenial on an Asus c301SA, and its working fine, but one day, I open xterm, and there are thick black lines where the grey bars should be in unity. So I close xterm and open it again, black bars are still there. I open unetbootin, and it has black bars around it too. But in unetbootin, when I open the choose distribution drop-down menu, its a black box. Mind you, I can still select an OS from the list, but I have to guess where it is because there are no names showing up. Can someone please help me with this. Please let me know if I can clarify something. Thank you, even if you can't help me:)

To help troubleshoot this issue we'll need a few more details.
Please show us the output of: sudo edit-chroot -all

sudo edit-chroot -all
name: gnome-writer
encrypted: no
Entering /mnt/stateful_partition/crouton/chroots/gnome-writer...
crouton: version 1-20180718130616~master:5d4c3014
release: xenial
architecture: amd64
xmethod: xorg
targets: gnome
host: version 10895.10.0 (Official Build) dev-channel terra
kernel: Linux localhost 3.18.0-18116-g109087054ee6 #1 SMP PREEMPT Mon Jul 30 23:40:12 PDT 2018 x86_64 x86_64 x86_64 GNU/Linux
freon: yes
Unmounting /mnt/stateful_partition/crouton/chroots/gnome-writer...
name: secure
encrypted: no
Entering /mnt/stateful_partition/crouton/chroots/secure...
crouton: version 1-20180718130616~master:5d4c3014
release: kali-rolling
architecture: amd64
xmethod: xorg
targets: xfce
host: version 10895.10.0 (Official Build) dev-channel terra
kernel: Linux localhost 3.18.0-18116-g109087054ee6 #1 SMP PREEMPT Mon Jul 30 23:40:12 PDT 2018 x86_64 GNU/Linux
freon: yes
Unmounting /mnt/stateful_partition/crouton/chroots/secure...
name: xenial
encrypted: no
Entering /mnt/stateful_partition/crouton/chroots/xenial...
crouton: version 1-20180718130616~master:5d4c3014
release: xenial
architecture: amd64
xmethod: xorg
targets: unity
host: version 10895.10.0 (Official Build) dev-channel terra
kernel: Linux localhost 3.18.0-18116-g109087054ee6 #1 SMP PREEMPT Mon Jul 30 23:40:12 PDT 2018 x86_64 x86_64 x86_64 GNU/Linux
freon: yes
Unmounting /mnt/stateful_partition/crouton/chroots/xenial...

The bold part is the partition I have a problem with, all the other partitions are fine.

@Swcbn,
Do xterm, unetbootin, and other apps work & display correctly in your 'gnome-writer' chroot?
It looks to be using the same 'xenial' release and 'xorg' xmethod, the difference being the 'gnome' desktop target instead of the 'unity' desktop target.
If so, then this may be a glitch with Unity, possibly even an upstream bug.
Hope this helps,
-DennisLfromGA

Thank you!

I found the bug:
https://bugs.launchpad.net/ubuntu/+source/unity/+bug/1292830


Keep choices after apply formula

#385
https://user-images.githubusercontent.com/11460746/227997215-058ea613-1011-4bef-9dc4-d676f11b34e6.mov
As you can see on the recording, during the temporary phase, the choices are absent. Do you know where I should look to fix this ? Or is it an intended behavior ?

#385
As you can see on the recording, during the temporary phase, the choices are absent. Do you know where I should look to fix this ? Or is it an intended behavior ?

This is expected but not desirable behavior :)
Try to pass the widgetOptions in addTransformColumn.
https://github.com/gristlabs/grist-core/blob/1780e1139f33dca46f8f0dc0ee548893a66d2da6/app/client/components/ColumnTransform.ts#L166
This line prepares a new temporary column that is used during transformation.

I don't understand why but the CI seems to fail for something which is not in this PR but also, not in the code.
When I check here (https://github.com/gristlabs/grist-core/pull/474/files) I don't see any theme variable at line 1320 on GristDoc.
I'm confused.

When I check here (https://github.com/gristlabs/grist-core/pull/474/files) I don't see any theme variable at line 1320 on GristDoc.

I think I just fixed this in https://github.com/gristlabs/grist-core/pull/480/commits/6027b1c7d37fb9569f529687eff9d637f4f1449f, so a rebase may suffice. Sorry that main is a bit unstable.


Convenient if Utils.getMostRecentReport would accept an array of form names

This is related to #16 .
This will help to avoid having to call this function twice in some situations. An example below illustrates this:
I need to get the latest edd that can either exist in a pregnancy report or an anc report:
This implies that one may write this piece of code:
const latestPregnancyReport = Utils.getMostRecentReport('pregnancy')
const latestANCReport = Utils.getMostRecentReport('anc_visit')
if (Utils.isFirstReportNewer(latestANCReport, latestPregnancyReport)) {
  return Utils.getField(latestANCReport, 'edd')
}
return Utils.getField(latestPregnancyReport, 'edd')

rather than this:
const latestReport = Utils.getMostRecentReport(['pregnancy', 'anc_visit'])
Utils.getField(latestReport, 'edd')

This will be included in the next CHT release, with this dependency being handled along with other dep upgrades. The current ticket for that is https://github.com/medic/cht-core/issues/7349

How far out is the next CHT release? Would it make sense to work on the 3 remaining open issues so that they make it for the release?

How far out is the next CHT release? Would it make sense to work on the 3 remaining open issues so that they make it for the release?

I'd say "not far". If you mean to suggest that you and/or @pkitutu want to submit a couple more PRs, then yes, sooner than later is best. @jkuester is going through dependency updates to bring in the latest from this repo.... in fact he's already done that for this repo, but it won't hurt to bump the version again if needed. Ideally we just do it before someone goes and does manual release testing, but there's still time before then.


chore: update prettier to v3

Codecov Report

Merging #1087 (dab51bb) into main (b3eef25) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main    #1087   +/-   ##
=======================================
  Coverage   95.88%   95.88%
=======================================
  Files          30       30
  Lines         389      389
  Branches       64       64
=======================================
  Hits          373      373
  Misses         16       16

Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update b3eef25...dab51bb. Read the comment docs.


ADD: WiFi | HotSpot | Cellular Prompts

Context
Voltix does not work on most hotel/airport wifi - poor UX, user should be given options.
Desired
Prompt user to use different connection options. This is just UX buttons, it does not do anything to the protocol.

WiFi
Keep all devices on same WiFi with Voltix App open. (May not work on hotel/airport wifi).

Hotspot
Connect all devices to the same Personal Hotspot with Voltix App open.

Cellular
Connect all devices to the internet with the Voltix App open.

The term here Wifi hotspot Cellular is confusing ,
We should just show a toggle voltix router ,  when it is on , the app will route the traffic through voltix router server ,  when it is off , it will communicate with each other locally.
When the hotel wifi which block mDNS  , user can use voltix router

@Rockindash when user check Cellular , please set VoltixRouter.IsRouterEnabled to true , the barcode should be updated as well , in this way , the traffic will go through voltix router

@Rockindash  we need the same options at keysign as well


Support building in Docker

build_in_docker.sh creates a Docker VM, mounts the current directory in it, and builds PocketHub.

Why would we need/want this?

The main advantage is that it completely isolates the build environment. E.g. installing android dev tools, etc. At the very least it is an executable documentation on how to set up the build environment.

Would rather just use the sdkmanager plugin. Sorry but not going to merge this, it's not something we want to maintain support for considering it's no something most developers would use.

I don't kouw！
发自 网易邮箱大师
在2015年12月29日 01:05，Zac Sweers 写道:
Why would we need/want this?
—
Reply to this email directly or view it on GitHub.


[SwiftUI] Modifying state during view update, this will cause undefined behavior.

Looks like this error occurs when the log in button is tapped and the value of showProgressView changes within the network request. Since this value is changing while updating the view state, mainly, setting
.disabled(loginViewModel.showProgress)
then the error is thrown.
A solution would be just replace the button with the progress view based on the status and remove this disabled line altogether.

Thanks @kschins , I was beginning to lose it.
In addition to the error you mentioned, I was getting a lot of
"=== AttributeGraph: cycle detected through attribute 11640 ===" in the console.
Removing the line you mentioned seems to do the trick.


virtualprocess: handle import Package as Alias syntax

fix #521

Codecov Report
Patch coverage: 70.96% and project coverage change: -1.41 :warning:

Comparison is base (15d42eb) 89.71% compared to head (c507155) 88.30%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #553      +/-   ##
==========================================
- Coverage   89.71%   88.30%   -1.41%
==========================================
  Files          10       10
  Lines        3064     3011      -53
==========================================
- Hits         2749     2659      -90
- Misses        315      352      +37

Impacted Files
Coverage Δ

src/toplevel/virtualprocess.jl
94.72% <70.96%> (+0.42%)
:arrow_up:

... and 6 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


NTR dilution assay

term name: dilution assay
def: A sensitivity/resistance assay used to determine the activity of a solution by exposing an indicator culture or organism to a series of dilutions and determining the lowest concentration that elicits a biological response. For chemicals, bacteriocins, or phage, the indicator culture is typically present in a soft-agar layer on top of nutrient agar and a small quantity of each dilution is spotted onto the soft agar overlay.
synonyms: spot assay; critical dilution assay
Reference:
Parente, E., Brienza, C., Moles, M. and Ricciardi, A. (1995) A comparison of methods for the measurement of bacteriocin activity J. Microbiol. Methods 22(1):95-108.
doi:10.1016/0167-7012(94)00068-I

Hi Debby,
The term has been added in eco-edit.owl file.
ECO_0005800 (dilution assay evidence)
SubClassOf (obo:ECO_0000002 - direct assay evidence)
Thanks,
Suvvi


Question: Seats on Piper Arrow

Maybe I'm missing something here, but here we go. A planning shows me the following:

This uses D-ERIN, which is a Piper 28 Arrow.

This mentions that the Piper is a 4-seater.
Why does ist try to cram 12 passengers in one flight? What am I missing here?

It should not happen. You are not the first one to have this bug, but I have not been able to reproduce it yet :(
Did you change any of the default params? What job zone was loaded? Which planes?

Yes, I think I changed all of the default parameters :) The planes were the ones of GGS Alliance but I don't know the others. Will try again and report

OK, Planes from GGS Alliance and Country Germany, everything else should be default

Thanks, I'll have a look to see if it helps.
I have just released a new version of FSE Planner, with a tool that should help me reproduce the issue next time. Could you please, if you see again the bug, follow these steps :

Click on FSE Planner version number, on the top left of the screen
Click on "Debug": it should offer you a file called debug.json to download
Download the file and share it with me

Hopefully it will have all the necessary info I need to reproduce your bug

Ok, no need to get me the file, I finally found the same buggy route, thanks to your inputs. Will investigate to see what is going on

I have finally found what is happening, and have been able to fix the bug. The bug fix will be integrated to the next FSE Planner release, which should be available soon.
Thanks for reporting the issue.
(FYI, this was happening because a larger aircraft was also available for rent at the same airport, the Route Finder should have recommended this one instead of the smaller one).


DownloadBuildArtifacts: improve error message for loc.messages.BuildArtifactNotFound

The following error message could be improved:
"loc.messages.BuildArtifactNotFound": "Artifact %s not found for build %s"
Found in file: vsts-tasks/Tasks/DownloadBuildArtifacts/Strings/resources.resjson/en-US/resources.resjson
Background:
Often the error message appears in a multi-phase build or release definition, where the dependencies between the phases have not been defined correctly (which the user must do explicitly).
Suggestion:
Maybe add a hint to the error message to double-check the dependencies between the phases (e.g. "are the dependencies between phases set correctly?").
Thanks,
--Neno

@NenoLoje - good suggestion. We will take up this improvement shortly.

Since this is a Build scenario, @madhurig - could you take a look at this suggestion?

That suggestion should probably be created @ developer community.  The issues in this repo are for the tasks (/Tasks) in this repo.

I thought you were suggesting us analyzing the graph service side and warning (and why Sriram suggested build look at it).
Re-opening and moving back to Sriram since it's the same task used in build and release.

I think the feedback here is about using the task in Build. This is new guidance for downloading artifacts produced by a different phase of the build. Users have to set that up on their own in Build since we don't inject the tasks and could be making mistakes. I will follow up on this.


Issue in reference state calculations for model data

While applying the class QGFieldNHN22 to a model dataset, I encountered an unrealistic reference state and negative FAWA values in the tropics which is not right (FAWA should always be positive). This issue seems to be coming from the part of the code that computes the reference state.
The code works perfectly fine when applied to ERAI and ERA5 datasets but they don't work on NorESM model output, for example. The reason being that the current version of falwa assumes dlat = dlon which is true for the case of ERA datasets but may not work for other model data where the latitude and longitude grid spacings may be different.
Good news is that this looks like an easy fix. The issue seems to be resolved when appropriate changes are made in the fortran codes, particularly in compute_qref_and_fawa_first.f90.

@Pragallva FYI I created a pull request to master for @chpolste to review which includes your commits: #105


websocket connection not working

It seems like websocket clients can't be used at the moment.
Creating the go-web3 client returns a "connection closed".

Using a direct geth websocket worked. This might only be relevant for some third party websocket providers.
Closing unless more report this problem


merge create and take actions?

this issue will be closed since we have feature-2. this is no longer needed.