Argument of type 'NoneType' is not iterable

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm reporting a bug unrelated to a specific site
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue

Provide a description that is worded well enough to be understood
Extracting channel metadata like this:
channel_url = f'https://www.youtube.com/channel/{channel_id}'
with YoutubeDL() as ydl:
result = ydl.extract_info(channel_url, download=False)
logging.info("Youtube post extraction data %s", result)
======
In local this code is working fine able to get the results. As soon as I started running through docker/airflow. I started getting this error.
It is not even going on logging.info and throwing this error:
[2023-12-20, 20:26:54 UTC] {logging_mixin.py:137} INFO - offset_val**: 2023-12-08T22:51:16.332110Z
[2023-12-20, 20:26:54 UTC] {youtube.py:285} INFO - youtube_creator_offset_key: youtube_data_ingestion_28020_offset, offset_val in cache: 2023-12-08T22:51:16.332110Z, published_after: 2023-12-08T22:51:16.332110Z
[2023-12-20, 20:26:54 UTC] {youtube.py:815} ERROR - argument of type 'NoneType' is not iterable
Traceback (most recent call last):
File "/usr/local/airflow/dags/tasks/brandsafety/openreport/youtube.py", line 766, in process_channel_videos
with YoutubeDL(ydl_opts) as ydl:
File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 681, in init
self.print_debug_header()
File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 3922, in print_debug_header
write_string(f'[Invalid date] {encoding_str}\n', encoding=None)
File "/usr/local/lib/python3.9/site-packages/yt_dlp/utils/_utils.py", line 1429, in write_string
if 'b' in getattr(out, 'mode', ''):
TypeError: argument of type 'NoneType' is not iterable
[2023-12-20, 20:26:55 UTC] {youtube.py:298} ERROR - ('Error while scraping youtube posts: %s', 'UCAcr6uli4eZhYKyMrKPB87A')
Traceback (most recent call last):
File "/usr/local/airflow/dags/tasks/brandsafety/openreport/youtube.py", line 766, in process_channel_videos
with YoutubeDL(ydl_opts) as ydl:
File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 681, in init
self.print_debug_header()
File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 3922, in print_debug_header
write_string(f'[Invalid date] {encoding_str}\n', encoding=None)
File "/usr/local/lib/python3.9/site-packages/yt_dlp/utils/_utils.py", line 1429, in write_string
if 'b' in getattr(out, 'mode', ''):
TypeError: argument of type 'NoneType' is not iterable
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
*** Reading local file: /usr/local/airflow/logs/dag_id=youtube_data_ingestion_dag/run_id=manual__2023-12-20T20:21:40.071276+00:00/task_id=fetch_and_process_social_content/map_index=0/attempt=2.log
[2023-12-20, 20:26:54 UTC] {taskinstance.py:1165} INFO - Dependencies all met for <TaskInstance: youtube_data_ingestion_dag.fetch_and_process_social_content manual__2023-12-20T20:21:40.071276+00:00 map_index=0 [queued]>
[2023-12-20, 20:26:54 UTC] {taskinstance.py:1165} INFO - Dependencies all met for <TaskInstance: youtube_data_ingestion_dag.fetch_and_process_social_content manual__2023-12-20T20:21:40.071276+00:00 map_index=0 [queued]>
[2023-12-20, 20:26:54 UTC] {taskinstance.py:1362} INFO -
--------------------------------------------------------------------------------
[2023-12-20, 20:26:54 UTC] {taskinstance.py:1363} INFO - Starting attempt 2 of 2
[2023-12-20, 20:26:54 UTC] {taskinstance.py:1364} INFO -
--------------------------------------------------------------------------------
[2023-12-20, 20:26:54 UTC] {taskinstance.py:1383} INFO - Executing <Mapped(_PythonDecoratedOperator): fetch_and_process_social_content> on 2023-12-20 20:21:40.071276+00:00
[2023-12-20, 20:26:54 UTC] {standard_task_runner.py:55} INFO - Started process 1860 to run task
[2023-12-20, 20:26:54 UTC] {standard_task_runner.py:82} INFO - Running: ['airflow', 'tasks', 'run', 'youtube_data_ingestion_dag', 'fetch_and_process_social_content', 'manual__2023-12-20T20:21:40.071276+00:00', '--job-id', '140', '--raw', '--subdir', 'DAGS_FOLDER/data_ingestion_dag.py', '--cfg-path', '/tmp/tmpbt7fbvi3', '--map-index', '0']
[2023-12-20, 20:26:54 UTC] {standard_task_runner.py:83} INFO - Job 140: Subtask fetch_and_process_social_content
[2023-12-20, 20:26:54 UTC] {task_command.py:376} INFO - Running <TaskInstance: youtube_data_ingestion_dag.fetch_and_process_social_content manual__2023-12-20T20:21:40.071276+00:00 map_index=0 [running]> on host 7d8ef6825cf3
[2023-12-20, 20:26:54 UTC] {taskinstance.py:1590} INFO - Exporting the following env vars:
AIRFLOW_CTX_DAG_OWNER=airflow
AIRFLOW_CTX_DAG_ID=youtube_data_ingestion_dag
AIRFLOW_CTX_TASK_ID=fetch_and_process_social_content
AIRFLOW_CTX_EXECUTION_DATE=2023-12-20T20:21:40.071276+00:00
AIRFLOW_CTX_TRY_NUMBER=2
AIRFLOW_CTX_DAG_RUN_ID=manual__2023-12-20T20:21:40.071276+00:00
[2023-12-20, 20:26:54 UTC] {youtube.py:272} INFO - dag_id: youtube_data_ingestion_dag, Starting YouTube posts ingestion for the viral_nation_id: 28020
[2023-12-20, 20:26:54 UTC] {logging_mixin.py:137} INFO - offset_val**: 2023-12-08T22:51:16.332110Z
[2023-12-20, 20:26:54 UTC] {youtube.py:285} INFO - youtube_creator_offset_key: youtube_data_ingestion_28020_offset, offset_val in cache: 2023-12-08T22:51:16.332110Z, published_after: 2023-12-08T22:51:16.332110Z
[2023-12-20, 20:26:54 UTC] {youtube.py:815} ERROR - argument of type 'NoneType' is not iterable
Traceback (most recent call last):
  File "/usr/local/airflow/dags/tasks/brandsafety/openreport/youtube.py", line 766, in process_channel_videos
    with YoutubeDL(ydl_opts) as ydl:
  File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 681, in __init__
    self.print_debug_header()
  File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 3922, in print_debug_header
    write_string(f'[Invalid date] {encoding_str}\n', encoding=None)
  File "/usr/local/lib/python3.9/site-packages/yt_dlp/utils/_utils.py", line 1429, in write_string
    if 'b' in getattr(out, 'mode', ''):
TypeError: argument of type 'NoneType' is not iterable
[2023-12-20, 20:26:55 UTC] {youtube.py:298} ERROR - ('Error while scraping youtube posts: %s', 'UCAcr6uli4eZhYKyMrKPB87A')
Traceback (most recent call last):
  File "/usr/local/airflow/dags/tasks/brandsafety/openreport/youtube.py", line 766, in process_channel_videos
    with YoutubeDL(ydl_opts) as ydl:
  File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 681, in __init__
    self.print_debug_header()
  File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 3922, in print_debug_header
    write_string(f'[Invalid date] {encoding_str}\n', encoding=None)
  File "/usr/local/lib/python3.9/site-packages/yt_dlp/utils/_utils.py", line 1429, in write_string
    if 'b' in getattr(out, 'mode', ''):
TypeError: argument of type 'NoneType' is not iterable

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/airflow/dags/tasks/brandsafety/openreport/youtube.py", line 292, in youtube_fetch_social_content_using_scraping
    process_channel_videos(viral_nation_id, 'UCAcr6uli4eZhYKyMrKPB87A', published_after, user_to_process)
  File "/usr/local/airflow/dags/tasks/brandsafety/openreport/youtube.py", line 818, in process_channel_videos
    raise Exception(
Exception: ('Error while scraping youtube posts: %s', 'UCAcr6uli4eZhYKyMrKPB87A')
[2023-12-20, 20:26:55 UTC] {taskinstance.py:1851} ERROR - Task failed with exception
Traceback (most recent call last):
  File "/usr/local/airflow/dags/tasks/brandsafety/openreport/youtube.py", line 766, in process_channel_videos
    with YoutubeDL(ydl_opts) as ydl:
  File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 681, in __init__
    self.print_debug_header()
  File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 3922, in print_debug_header
    write_string(f'[Invalid date] {encoding_str}\n', encoding=None)
  File "/usr/local/lib/python3.9/site-packages/yt_dlp/utils/_utils.py", line 1429, in write_string
    if 'b' in getattr(out, 'mode', ''):
TypeError: argument of type 'NoneType' is not iterable

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/airflow/dags/tasks/brandsafety/openreport/youtube.py", line 292, in youtube_fetch_social_content_using_scraping
    process_channel_videos(viral_nation_id, 'UCAcr6uli4eZhYKyMrKPB87A', published_after, user_to_process)
  File "/usr/local/airflow/dags/tasks/brandsafety/openreport/youtube.py", line 818, in process_channel_videos
    raise Exception(
Exception: ('Error while scraping youtube posts: %s', 'UCAcr6uli4eZhYKyMrKPB87A')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/airflow/decorators/base.py", line 188, in execute
    return_value = super().execute(context)
  File "/usr/local/lib/python3.9/site-packages/airflow/operators/python.py", line 175, in execute
    return_value = self.execute_callable()
  File "/usr/local/lib/python3.9/site-packages/airflow/operators/python.py", line 193, in execute_callable
    return self.python_callable(*self.op_args, **self.op_kwargs)
  File "/usr/local/airflow/dags/data_ingestion_dag.py", line 75, in fetch_and_process_social_content
    fetch_and_process_social_content_data(dag, dag_id, configs,
  File "/usr/local/airflow/dags/tasks/brandsafety/openreport/processor/fetch_social_content_processor.py", line 50, in fetch_and_process_social_content_data
    youtube_fetch_social_content_using_scraping(dag, dag_id, configs, job_type_cfg, influencer)
  File "/usr/local/airflow/dags/tasks/brandsafety/openreport/youtube.py", line 299, in youtube_fetch_social_content_using_scraping
    raise Exception(
Exception: Error while fetching video posts jsons
[2023-12-20, 20:26:55 UTC] {taskinstance.py:1401} INFO - Marking task as FAILED. dag_id=youtube_data_ingestion_dag, task_id=fetch_and_process_social_content, map_index=0, execution_date=20231220T202140, start_date=20231220T202654, end_date=20231220T202655
[2023-12-20, 20:26:55 UTC] {standard_task_runner.py:100} ERROR - Failed to execute job 140 for task fetch_and_process_social_content (Error while fetching video posts jsons; 1860)
[2023-12-20, 20:26:55 UTC] {local_task_job.py:159} INFO - Task exited with return code 1
[2023-12-20, 20:26:55 UTC] {taskinstance.py:2623} INFO - 0 downstream tasks scheduled from follow-on schedule check

I went through this also: https://github.com/ytdl-org/youtube-dl/issues/20737
checked that my channel/video is not blocked.

Can you get the yt-dlp output? Instead of the output from your script
Are you running this on a data center IP?

This is the yt-dlp output:
2023-12-21, 01:38:22 UTC] {youtube.py:307} ERROR - argument of type 'NoneType' is not iterable
Traceback (most recent call last):
File "/usr/local/airflow/dags/tasks/brandsafety/openreport/youtube.py", line 301, in youtube_fetch_social_content_using_scraping
scrap_channel(viral_nation_id, 'UCAcr6uli4eZhYKyMrKPB87A', published_after, user_to_process)
File "/usr/local/airflow/dags/tasks/brandsafety/openreport/youtube.py", line 847, in scrap_channel
info = ydl.extract_info(channel_url, download=False)
File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 1556, in extract_info
return self.__extract_info(url, self.get_info_extractor(key), download, extra_info, process)
File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 1567, in wrapper
return func(self, *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 1702, in __extract_info
ie_result = ie.extract(url)
File "/usr/local/lib/python3.9/site-packages/yt_dlp/extractor/common.py", line 713, in extract
self.to_screen('Extracting URL: %s' % (
File "/usr/local/lib/python3.9/site-packages/yt_dlp/extractor/common.py", line 1136, in to_screen
self._downloader.to_screen(f'[Invalid date] {msg}', *args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 898, in to_screen
self._write_string(
File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 879, in _write_string
write_string(message, out=out, encoding=self.params.get('encoding'))
File "/usr/local/lib/python3.9/site-packages/yt_dlp/utils/_utils.py", line 1429, in write_string
if 'b' in getattr(out, 'mode', ''):
TypeError: argument of type 'NoneType' is not iterable
I am running is on :Airflow Webserver: http://localhost:8080

This still seems like either a problem with your environment or the runner. What are you passing as YoutubeDL options?
Currently, we assume if out.mode exists, it has to be a str (as defined by the FileIO interface.
Perhaps we should check for isinstance(out, (RawIOBase, BufferedIOBase)) instead? That defeats duck typing however.
Another simple fix would be this:
diff --git a/yt_dlp/utils/_utils.py b/yt_dlp/utils/_utils.py
index f1d7cead6..b3f4fc1a7 100644
--- a/yt_dlp/utils/_utils.py
+++ b/yt_dlp/utils/_utils.py
@@ -1424,7 +1424,7 @@ def write_string(s, out=None, encoding=None):
         s = re.sub(r'([\r\n]+)', r' \1', s)

     enc, buffer = None, out
-    if 'b' in getattr(out, 'mode', ''):
+    if 'b' in (getattr(out, 'mode') or ''):
         enc = encoding or preferredencoding()
     elif hasattr(out, 'buffer'):
         buffer = out.buffer

This could give other problems though as the interface is already not followed correctly. Maybe its better to try except?

File "/usr/local/lib/python3.9/site-packages/yt_dlp/extractor/common.py", line 1136, in to_screen
    self._[downloader.to](http://downloader.to)_screen(f'[Invalid date] {msg}', *args, **kwargs)

This is not code that exists in yt-dlp. Are you using a modified version?

What are you passing as YoutubeDL options?

Nothing according to OP
channel_url = f'https://www.youtube.com/channel/{channel_id}'
with YoutubeDL() as ydl:
    result = ydl.extract_info(channel_url, download=False)
    logging.info("Youtube post extraction data %s", result)

@Grub4K's patch is reasonable to merge, but there's something weird going on here. What does ydl._out_files give you?

  File "/usr/local/lib/python3.9/site-packages/yt_dlp/YoutubeDL.py", line 3922, in print_debug_header
    write_string(f'[Invalid date] {encoding_str}\n', encoding=None)

This is not code that exists in yt-dlp. Are you using a modified version?

This seems to be what the traceback is trying to refer to: https://github.com/yt-dlp/yt-dlp/blob/298230e550886b746c266724dd701d842ca2696e/yt_dlp/YoutubeDL.py#L3939

...mode is only defined for FileIO instances. The sys.std... streams are specified to be "file-like" which might not be the same thing.

This can be proven wrong as per the Python 3 glossary which states:

There are actually three categories of file[-like] objects: raw binary files, buffered binary files and text files. Their interfaces are defined in the io module

So, per definition, having an object there that is not None but does not duck type as any of these should be incorrect. The question is why though, where does that object come from? If it doesn't follow specifications here, it could give strange values for others as well, like TextIOBase.buffer later on in the code. Finding the root cause is more pressing, so we can gauge if it's our problem or the consumer's problem.

This is supposing, in the last line, that it really is correct to override the encoding of the stream with the encoding passed into write_string().

There are two reasons to manually encode it here:

We want to write to the stream without raising errors. This can be done by manually using the same encoding and using encode(..., 'ignore')
While wanting to obey the encoding (hence trying to get encoding and falling back to a sensible preferredencoding()), there are cases where we want to write to the stream uncompromised. This case is relevant when forcing encoding (--encoding).

Perhaps write_string could have some additional documentation with reasoning behind the things it does, since they are not immediately obvious.

@Grub4K @dirkf - I am not sure if I am able to follow the conversation. Is there any thing incorrect with my usage? Is there anything I can do to unblock myself?
This code is working on my local machine, the moment I put this on airflow dag (running on my local docker container), it gives me this error.

It seems as if airflow replaces sys.stdout and sys.stderr with file-like objects that don't adhere to the convention that FileIO.mode should always be of type str. The main cases are these:

Having FileIO.mode be None is common practice (yt-dlp should apply any of the workarounds mentioned above)
This is the default for airflows sys.stderr or their replacement (an issue should be raised on their tracker)
Your code is somehow creating the workflow incorrectly causing sys.stderr to have a mode of None (then your code has to be adapted)

If you just need an immediate workaround, you can try this in your code:
# Work around sys.stdout wrapper having a mode of `None`
if getattr(sys.stdout, "mode", ...) is None:
    sys.stdout.mode = "b"
if getattr(sys.stderr, "mode", ...) is None:
    sys.stderr.mode = "b"

If the above causes a TypeError you can try "" instead of "b", or perhaps "bw+", "w+", "bw" or "w".

So these lines of  code:
https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/utils/_utils.py#L1426-L1432
Should I replsce it like this:

Does it look correct to you?
Also If I make changes in my local yt_dlp/utils/_utils.py, will it work?

no you should place these lines in your own code, before the with YoutubeDL() as ydl: part. alternatively apply this if you know what you are doing and want to modify the installed python library

Regarding case 1 above, the write_string() code is looking for any Object.mode, not just FileIO.mode, so the expected semantics might not apply. Eg, a custom subclass of TextIOBase might be given a nullable mode attribute; a duck-equivalent class similarly (it doesn't quack like a FileIO because it's a TextIOBase duck).
Although this is hardly "common practice", so case 2 applies, the airflow authors could be forgiven for not realising the problem. Eg if their open() makes mode have a None default, they might have copied the value through to the stream object instead of omitting it or changing it to 'w'. In case others have the same confusion, some small defences could applied even against case 2.
Unrelated, the current code uses buffer to identify an out that has an encoding. According to the doc, that is not reliable ("... not part of the TextIOBase API and may not exist in some implementations") and it would be better to test for encoding itself as in my diff above.

The codes ideas are not very obvious, which is primarily why I requested clarifying comments. That way the intent behind some of the decisions could be more easily translated into generically robust code.

write_string() code is looking for any Object.mode, not just FileIO.mode

Hmm, since we are expecting a file object as input it should follow one of the interfaces, even if duck typed. Nothing however forces for example a duck typed RawIOBase impl to not have an additional mode so you are correct. If we take it to that point then most of write_string is incorrectly assuming interfaces behave the way we expect them to. You have pointed that out in your last paragraph as well.

Although this is hardly "common practice", so case 2 applies, the airflow authors could be forgiven for not realising the problem.

The Python APIs seem to disagree with this sentiment:
>>> open(0, None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: open() argument 'mode' must be str, not None
>>> import io
>>> io.FileIO(0, None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: FileIO() argument 'mode' must be str, not None

However I agree that this function has to be secured better against some of these cases.
The output rework did as much, additionally probing the stream only once and wrapping it its own helper class. I should really revive that PR and the related Logger rework to start providing more robust functionality regarding these

ce these lines in your own code, b

I tried as you suggested, throwing another error:
[2023-12-22, 06:04:27 UTC] {youtube.py:718} ERROR - can't set attribute
Traceback (most recent call last):
File "/usr/local/airflow/dags/tasks/brandsafety/common_code/youtube.py", line 666, in process_channel_videos
sys.stdout.mode = "b"
AttributeError: can't set attribute
[2023-12-22, 06:04:27 UTC] {youtube.py:539} ERROR - ('Error while scraping youtube posts: %s', 'UCAcr6uli4eZhYKyMrKPB87A')
Traceback (most recent call last):
File "/usr/local/airflow/dags/tasks/brandsafety/common_code/youtube.py", line 666, in process_channel_videos
sys.stdout.mode = "b"
AttributeError: can't set attribute

Since you can't set an attribute on the system's sys.stderr, you could try wrapping it in an object of a custom class (which has an empty mode attribute instead of None) and setting sys.stderr to that object.
This SO question gives examples.

👋 Hi guys!  I have a similar problem, but when calling the code:
  proxy = {"socks": "socks5://cTM00:zjBgtv@538.279.120.28:1163"}
    options = {
        'proxy' : proxy

    }
    link = 'https://www.youtube.com/shorts/wjxflqVyKh4'
    with ytd.YoutubeDL(options) as ytdl:
        result = ytdl.extract_info(link, download=False)
        # with open('you2.txt', 'w', encoding='utf-8') as file:
        #     file.write(str(result))
        if 'formats' in result:
            for format_info in result['formats']:
                format_id = format_info.get('format_id')
                filesize = format_info.get('filesize')
       print(format_id , filesize )

I get all file sizes except 18 and 22. I have them marked as None. And the most interesting thing is that this started happening on one server after a certain number of requests, on the other everything is fine. Using a proxy did not help. Maybe someone knows why this is happening and how to solve the problem of getting the sizes of formats 18 and 22? I will be very grateful!!🙏

What does ydl._out_files give you?

@tannu14

@botsmaster Your comment is not related to this in any way. Open a new issue with appropriate verbose log

Hello @Grub4K ,
Is there any provision to push a fix on this?
Will I be able to use yt_dlp library for my usecase?

If you follow pukkandans request and show us what ydl._out_files is we can start debugging

Hello @pukkandan @Grub4K
As per my understanding, To specifically catch errors related to ydl._out_files, modified my except block to capture ExtractorError, which is a specific exception class that youtube_dl raises. Here’s how you I did it:

but it is not capturing any ExtractorError exception.
Please let me knwo if I am missing naything overe here. Or is there any other way to capture ydl._out_files logs.

I tried to capture these exceptions like this:

[2023-12-28, 16:47:27 UTC] {youtube.py:687} ERROR - TypeError: argument of type 'NoneType' is not iterable
[2023-12-28, 16:47:27 UTC] {python.py:177} INFO - Done. Returned value was: None

we just need to see what your ydl._out_files are
all you need to do is something like this:
with YoutubeDL(ydl_opts) as ydl:
    logging.error(ydl._out_files)

[2023-12-28, 18:25:19 UTC] {youtube.py:678} ERROR - ydl._out_files: Namespace(out=<airflow.utils.log.logging_mixin.StreamLogWriter object at 0x7fae8ae115b0>, error=<airflow.utils.log.logging_mixin.StreamLogWriter object at 0x7fae8ae116a0>, screen=<airflow.utils.log.logging_mixin.StreamLogWriter object at 0x7fae8ae116a0>, console=None)

airflow.utils.log.logging_mixin.StreamLogWriter subclasses typing.IO[str], which seems to be a viable way to create the text and binary writers the simple way.
import typing

print(typing.IO[str]().mode)
print(typing.IO[bytes]().mode)

Given this short snippet prints None for both, I think fixing write_string against that value only would make the most sense.
However, since we cannot potentially know if the object will be binary or not, this could still cause errors down the line. I think this could only be handeled in a sane by output rework, given that it can check write calls and save it in the class instance. While this is possible for write_string to do as well, it will not be as pretty. I can provide an implementation for the more robust write_string rewrite if @pukkandan thinks it would make sense

A more robust write_string() would be good and could work around this and similar issues; but, based on the earlier discussion, isn't this actually a bug that should be reported against the typing Python library module ("ABCs for working with IO")?

Given this short snippet prints None for both, I think fixing write_string against that value only would make the most sense.

Imo, we should do https://github.com/yt-dlp/yt-dlp/issues/8816#issuecomment-1866187363 for now and do proper handling in output rework. Just make sure to note it down in your PR so we don't forget

I stand corrected by the CPython source code:
class IO(Generic[AnyStr]):
    @property
    @abstractmethod
    def mode(self) -> str:
        pass

Theoretically it should be required to override the mode property to return a str since it is abstract. However, that doesn't seem to be the case in practice, so this is indeed an external issue. The ordering of the subclasses in airflow matters: Subclassing IOBase, typing.IO[str] does not throw a type error (abstract) using mypy, while subclassing typing.IO[str], IOBase does.
This makes me think that our code behaves as expected and the issue should be raised on the airflow repo. I will still commit the workaroud patch soon:tm:

Thank you so much team for taking efforts on this issue. @Grub4K @pukkandan @dirkf please let me know once you push the changes. I will retest it from my end.

Any update on this @Grub4K ?

I have opened https://github.com/apache/airflow/issues/36992 and the patch will make it into the cleanup PR (reminder for myself)


Pinwheel merge resolve

Ticket
Merges Pinwheel change into main

Cool. Probably good to squash this so it's easy to revert.


docs(fix): prevent ellipsis overflow on small screens

❓ Type of change

[x] 📖 Documentation (updates to the documentation or readme)
[ ] 🐞 Bug fix (a non-breaking change that fixes an issue)
[ ] 👌 Enhancement (improving an existing functionality like performance)
[ ] ✨ New feature (a non-breaking change that adds functionality)
[ ] ⚠ Breaking change (fix or feature that would cause existing functionality to change)

📚 Description
Ellipsis component can cause unwanted horizontal scroll by overflowing device screen width if there are not enough space. (You can see on "after" screenshot there are no scrollbar at the bottom)

Before:

After:

📝 Checklist

[ ] I have linked an issue or discussion.
[ ] I have updated the documentation accordingly.

Thanks!


Styling issues after migrating to Create-React-App

Features like Dark/ Light mode work ( So GeistProvider, CssBaseline and PrefersContext are provided correctly ) but the styling does not transfer correctly. Is there an additional step needed to migrate the application to Create-React-App?

Hey @Accretence! It's a little hard to answer without seeing the code.
Maybe it's something related to the styled-jsx? You can find your favorite React.js styling method and match the code to it.

Hey @ofekashery! Yes, this is my first time working with this kind of styling method and after some fiddling around I found out that some of my selectors in the <style jsx> element are not working correctly. For example :
.submenu__inner :global(.tab) {           ...         }
is not influencing the submenu tabs but:
.tab {    ... }
does. Is there anyway to make these selector work correctly with CRA?

@Accretence Yes, the :global()'s are used by styled-jsx only.
If you don't use styled-jsx, you should remove them like this:
.submenu__inner :global(.tab) { ... } → .submenu__inner .tab { ... }

Worked like a charm. Thank you for your help and thank you for this amazing resource.❤


create a bibliographic link as a story item type

A natural way to add a new site to the federation is by citing content on that site in the form of bibliographic references. It is my intention to add a new story item type and corresponding plugin to the set of basic types. I imagine this will include reference specific fields for things like title, favicon, and text annotations. One server could keep track of other servers by recording remote page size, date of last update, observed update frequency, and so on. I can assume that travelers through the federation will find pages worth forking by reading bibliographies assembled by others.

Wikipedia notes: Webography or webliography are bibliographies of websites. The first use of the word "webliography" recorded in the Oxford English Dictionary dates from June 1995.

I have refactored the factory drag-and-drop code to make it easier to add new drop subjects. The html5 api is notorious for its complexity but dropping links from a browser's location bar of reading links from desktop weblocs both seem doable.

https://developer.mozilla.org/En/DragDrop/Recommended_Drag_Types#Dragging_Links

I'm assuming it is possible to recognize when a server is serving federation compatible content. I suggest simply following a dropped link and look for JSON content that meets federation format. I would check for a title that is a string, a story that is an array, and an optional journal that its also an array. Further, I could check that the story items have types and ids and that the journal actions have types drawn from a familiar set (add, remove, move, edit).
It might be reasonable to expect all sites to offer a bibliography of valued sites much like bloggers enumerating their blogroll.

/me looks for the microformat spec, and finds nothing :/

I look forward to replacing the List of Pioneers with a federated bibliography constructed from these items. I'm close. Um, maybe I should just edit some json and write the plugin instead of dwelling on the drag-and-drop.
{ "type": "webloc",
  "url": "http://uwiki.me",
  "title": "New Simplest Federated Wiki Install",
  "text": "Static apache file server site - no server side script at all, and so properly read-only. Maintained by [[Sven Dowideit]]"
}

I like the idea of articles containing executable data. We could agree, for example, on a couple of articles that have json content that all wikis are expected to have:

About: a listing of metadata about this server. It could be used to identify the server name, author, favicon, and that the server is open to federation.

Peers: a listing of other federated servers this wiki knows of, similar to the bibliography at the end of a book. Forking a page from a server automatically adds it to your list of peers.

Collaborators: a similar listing, representing servers that this server's author particularly pays attention to. The client could use this information to present a GitHub like interface. When you bring up a page, it lets you know if a trusted collaborator has made updates to their version of the same page, so that you can easily pull them back.

312b9e862b0264d8680ca2371a59a93eee6f9349 adds bibliographic references plugin and add [[List of Pioneers]] page.

2fea0250e4729d93624974d71161cc9786f2ea9c completes one narrow path through drag-and-drop construction of federated webographies. Some conditions:

works for chrome and safari
adds link to right-most viewed wiki page
prefetches page json to construct good citation
requires CORS enabled target server (see http://enable-cors.org/)


Added live typing and docs to test slurk locally

I've already created a new PR for the livetyping mode https://github.com/clp-research/slurk/pull/103


Suggestion For Docs

Hi @rubensworks,
Nice lib!
Two suggestions:

Is this a closing backtick? https://github.com/comunica/validate-iri.js/blob/master/README.md#L31
You write that validateIri "Will throw an error if the IRI is invalid.". But actually it returns an error. This confused me a bit.

But now it works as expected. Thx.!

Is this a closing backtick? https://github.com/comunica/validate-iri.js/blob/master/README.md#L31

Ah yes, that's a typo.

You write that validateIri "Will throw an error if the IRI is invalid.". But actually it returns an error. This confused me a bit.

The README was written before the implementation, that's probably why.
A PR with README fixes is definitely welcome! :-)

Here you go: https://github.com/comunica/validate-iri.js/pull/16
:-)


Can I use colab to train the model and play the model on local Ubuntu?

I installed a virtual-machine on my mac OS system, and because of the lack of computing resources, I can only train the model on colab, I wonder if I can train the model on colab and then download and apply the model to play the game in order to watch the play visually? If it is supported, please give me a guide, thanks!

Hey @LeonIdeal  - yes, this is possible.
Once you train the model, you can 'save the weights' - and then on load them on your local machine and run the inference.
For example, if you use tensorflow:
On colab, after training, you could call something like this:
tf.saved_model.save(model, "my_saved_model")
Then download the files to your local machine, and there you can load the model with:
model = tf.saved_model.load(PATH_TO_MODEL)
And run it against the environment.

Hey @LeonIdeal - yes, this is possible.
Once you train the model, you can 'save the weights' - and then on load them on your local machine and run the inference.
For example, if you use tensorflow:
On colab, after training, you could call something like this:
tf.saved_model.save(model, "my_saved_model")
Then download the files to your local machine, and there you can load the model with:
model = tf.saved_model.load(PATH_TO_MODEL)
And run it against the environment.
Thanks! I added a save_model() method in my DQN class, but on colab it turned out
`/tensorflow-1.15.2/python3.6/tensorflow_core/python/saved_model/save.py in save(obj, export_dir, signatures)
830   if not isinstance(obj, base.Trackable):
831     raise ValueError(
--> 832         "Expected a Trackable object for export, got {}.".format(obj))
833
834   checkpoint_graph_view = _AugmentedGraphView(obj)

ValueError: Expected a Trackable object for export, got <tensorflow.python.client.session.Session object at 0x7f8659e2c400>.`
I wonder if this format can be debugged and how, thanks.

hey @LeonIdeal would it be possible to get the colab notebook? Would love to take a look at it.


neovim: The default destination target type when bringing multiple targets to the terminal seems wrong

When bringing multiple tokens to the commandline the default output target type doesn't seem to be line-based. So far example:
❯ echo foo\\nbar
foo
bar

If you say the command bring last paint row X and row Y you get:
foo
bar

This behavior contrast with the default behavior in vscode, which if you say the same thing, you would get foo bar on a single line.

Just noting that bring last paint row X and row Y does work fine in neovim text editor. It seems to just be broken in terminal.


[Grid2] Inconsistent grid layout with 2 columns (auto size and grow size)

Steps to reproduce
Link to live example: sandbox
Steps:

Check the provided live example
Notice the first layout with auto  and grow sizes
Check the expected layout that to be achieved with the Grid 2 component.

Current behavior
Currently with this Grid2 implementation all the elements are put in the first one row.
<Grid container spacing={3} columns={2}>
        <Grid size="auto">
          <Item>size=auto</Item>
        </Grid>
        <Grid size="grow">
          <Item>size=grow</Item>
        </Grid>

        <Grid size="auto">
          <Item>size=auto 2</Item>
        </Grid>
        <Grid size="grow">
          <Item>size=grow 2</Item>
        </Grid>
      </Grid>

I believe in doing so, the items with with auto size will fit its content and second item with grow size will allow the available space, in which will result in having one pair of items per row. but its not the case.
Expected behavior
Each grid item pair should be wraped in one row regardless screen size.
Such layout can be achieved with Grid CSS api.
 <Box
        sx={{
          display: "grid",
          gridTemplateColumns: "max-content auto",
          gap: 2,
        }}
      >
        <Item>auto 1</Item>
        <Item>grow 1</Item>
        <Item>auto 2</Item>
        <Item>grow 2</Item>
      </Box>`

Context
I would like to achieve a two columns grid, the first columns with auto size that fits it contents and second column grows to occupy the available space of the row.
I'm able to achieve such layout with Grid CSS but i would like to use Grid2.
Thanks,
Your environment
System:
OS: Windows 11 10.0.22631
Binaries:
Node: 20.14.0
npm: 10.9.0
pnpm: Not Found
Browsers:
Chrome: Not Found
Edge: Chromium (127.0.2651.74)
Search keywords: grid, grid2, size='grow', size='auto'

vcvcvcvcvcvcvcvcvcvcvc

I think it is because Grid2 does not automatically place children. It is mentioned in the documentation:

It does not automatically place children. It will try to fit the children one by one, and if there is not enough space, the rest of the children will start on the next line, and so on. If you need auto-placement, we recommend using CSS Grid instead.

However you achieve the expected behaviour using nested grid with each pair into it's own container:
<Grid container spacing={3}>
  <Grid container size={12}>
    <Grid size="auto">
      <Item>auto 1</Item>
    </Grid>
    <Grid size="grow">
      <Item>grow 1</Item>
    </Grid>
  </Grid>

  <Grid container size={12}>
    <Grid size="auto">
      <Item>auto 2</Item>
    </Grid>
    <Grid size="grow">
      <Item>grow 2</Item>
    </Grid>
  </Grid>
</Grid>

CodeSandbox: https://codesandbox.io/p/sandbox/silly-galois-zpzpwt

@ZeeshanTamboli Thank you for your suggestion. I've already utilized CSS Grid to simplify the component DOM and avoid the need to embed many elements for alignment.


Added 'format' to magic actions for images - this will allow conversion and caching of webp images

A very simple change that would make it possible to set the output format of an image from Twig / Markdown.
This would be particularly useful for being able to serve automatically generated webp images, created from jpegs.
Related to issue #1168

Very nice idea! How would the twig code look like then? I was searching for such an option some time ago.

Very nice idea! How would the twig code look like then? I was searching for such an option some time ago.

@NicoHood It works like this:
{{ page.media['sample-image.jpg'].format('webp').url|e }}

@NicoHood It works like this:
{{ page.media['sample-image.jpg'].format('webp').url|e }}

This does not work with derivatives. It only changes the main image to webp, but not the others in srcset.

This does not work with derivatives. It only changes the main image to webp, but not the others in srcset.

Any idea when this feature will hit a stable release?


CFFL

CFFL

Linter check found the following problems:
Traceback (most recent call last):
  File "/opt/conda/envs/linter/bin/conda-lint", line 11, in
    sys.exit(main())
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/run.py", line 107, in main
    result = linter.lint(
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/lint/__init__.py", line 620, in lint
    msgs = self.lint_file(
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/lint/__init__.py", line 692, in lint_file
    messages = self.lint_recipe(
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/lint/__init__.py", line 749, in lint_recipe
    res = self.check_instances[check].run(recipe, fix)
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/lint/__init__.py", line 258, in run
    self.check_deps(recipe.get_deps_dict())
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/lint/check_build_help.py", line 396, in check_deps
    if "compiler_c" not in self.recipe.get(section):
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/recipe.py", line 583, in get
    raise KeyError(f"No '{path}' in Recipe {self}") from None
KeyError: "No 'requirements/build' in Recipe /tmp/abs_50pc6w2yd3/clone/recipe/"
ERROR conda.cli.main_run:execute(47): conda run conda-lint /tmp/abs_50pc6w2yd3/clone failed. (See above for error)

Linter check found the following problems:
Traceback (most recent call last):
  File "/opt/conda/envs/linter/bin/conda-lint", line 11, in
    sys.exit(main())
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/run.py", line 107, in main
    result = linter.lint(
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/lint/__init__.py", line 620, in lint
    msgs = self.lint_file(
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/lint/__init__.py", line 692, in lint_file
    messages = self.lint_recipe(
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/lint/__init__.py", line 749, in lint_recipe
    res = self.check_instances[check].run(recipe, fix)
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/lint/__init__.py", line 258, in run
    self.check_deps(recipe.get_deps_dict())
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/lint/check_build_help.py", line 396, in check_deps
    if "compiler_c" not in self.recipe.get(section):
  File "/opt/conda/envs/linter/lib/python3.10/site-packages/anaconda_linter/recipe.py", line 583, in get
    raise KeyError(f"No '{path}' in Recipe {self}") from None
KeyError: "No 'requirements/build' in Recipe /tmp/abs_04iktik9m7/clone/recipe/"
ERROR conda.cli.main_run:execute(47): conda run conda-lint /tmp/abs_04iktik9m7/clone failed. (See above for error)


Contact info in privacy policy should be clickable

Summary | Résumé
Phone numbers & emails in privacy info page should be clickable so they can be called from the app.

I can help with that. I also noticed that the Links to other websites header is too close to the ##, so I can fix that as well.


Curl from left to right

I have my app set up nicely now and I can flip pages forward (i.e. I can turn pages from right to left). But how can I flip backwards?  When I call XBCurlView->curlView and I set the starting point of the cylinder to the left X-coordinate of the screen, the curling takes place from left to right but the visual effect is the same as curling from right to left.
Is there an easy way to curl into another direction?

You have to set the initial cylinder properties before adding the XBCurlView in your view hierarchy. Then, you just have to animate them. To do a flip to the previous page, you can set the cylinder position to (0,0), angle π/2 and radius 0. Then animate it to the other side of the screen, for instance set the cylinder position to (width,0) and angle π/4. For the radius, you could increase it till half the animation duration and then decrease it, like set it to 80 in the middle of the animation and then set it to 20 to the end (use a completion block). Hope this helps.

Hmm, no that is not what I meant to say. You are correct, with your example values the curling takes place from left to right - but it actually simply "uncurls" the curling of the other direction.
What I need to to is, that the edge of the curled view starts to "lift" in the bottom left corner of the page. With Your values the whole page "uncurls" until the edge of the curled view settles in the bottom right corner. Basically I need to mirror the normal curling effect.
I hope I could explain it properly.

Ah, right, now I understand. It's very easy to do that actually. You just
have to rotate the cylinder in the other direction, for instance, set it to
M_PI/2, and move the cylinder from left to right. What happens is that the
view curls after the cylinder, then if you rotate it more the 90 degrees
clockwisely it should start to curl in the other direction.
Hope this helps.
On Oct 26, 2011 8:08 PM, "Marcus Grndler" <
<EMAIL_ADDRESS>wrote:

Hmm, no that is not what I meant to say. You are correct, with your example
values the curling takes place from left to right - but it actually simply
"uncurls" the curling of the other direction.
What I need to to is, that the edge of the curled view starts to "lift" in
the bottom left corner of the page. With Your values the whole page
"uncurls" until the edge of the curled view settles in the bottom right
corner. Basically I need to mirror the normal curling effect.
I hope I could explain it properly.
--
Reply to this email directly or view it on GitHub:
https://github.com/xissburg/XBPageCurl/issues/12#issuecomment-2537226

Smile :-)! Okay now I figured it out. After watching my app making some very interesting dancing pirouettes while searching for good start and target angles, I am using these values now which seem to look fine:
self.cylinderAngle = 5M_PI/3;
CGFloat targetCylinderAngle = 3M_PI/2;
Many thanks for your hints!


Java: Missing binary version of ZRANK key member WITHSCORE

Describe the feature
I propose adding a new method zrankWithScore to the Java Valkey client. The method signature would be as follows:
CompletableFuture<Object[]> zrankWithScore(GlideString key, GlideString member);
This feature will extend the existing zrankWithScore functionality to accept arguments of type GlideString.
Use Case
The zrankWithScore method does not currently support arguments of type GlideString. Adding support for GlideString will make it easier to work with binary data in sorted sets, providing better compatibility for applications handling non-textual or encoded data.
Proposed Solution
Introduce a new method in the Java Valkey client with the following signature:
CompletableFuture<Object[]> zrankWithScore(GlideString key, GlideString member);
Implement the method to perform the same functionality as zrankWithScore, but with GlideString arguments.
Other Information
No response
Acknowledgements

[ ] I may be able to implement this feature request
[ ] This feature might incur a breaking change

Client version used
Java 1.2.0
Environment details (OS name and version, etc.)
N/A

Hi,
Thank you for creating the issue, and good catch! We will add the missing Java method soon


Move snap to micrk8s or canonical instead of kjackl

Just asked the store people: https://forum.snapcraft.io/t/change-microk8s-publisher-to-canonical/5587

Done!


Fixed possible crash in cProbabDistrib

It could divide through 0 which causes a crash.
I especialy noticed this in the nether

Might it be worth replacing cProbabDistrib with std::discrete_distribution?

Would that be able to produce the same result each time we regenerate a chunk?

It would depend on what the generator passed is. std::discrete_distribution is just a functor from a generator to a number. It can use anything that fulfills these requirements: http://en.cppreference.com/w/cpp/concept/UniformRandomNumberGenerator


New Deepseek API

Hi, deepseek have released their own api for deepseek-coder and deepseek-chat with 10M free tokens.
https://platform.deepseek.com/docs
They offer an openai compatible api, but for some reason, it works in curl but not in LLM, where it says "Error: Invalid response object from API: '{"detail":"Authentication Fails"}' (HTTP response code was 401)"
I tried adding it to extra-openai-models.yaml like so:

model_id: deepseek-chat
model_name: deepseek-chat
api_base: "https://api.deepseek.com/v1"
api_key: pasted_the_api_key_here

Maybe this will help
https://github.com/deepseek-ai/awesome-deepseek-integration/blob/main/docs/continue/README.md

@bukit-kronik  Thank you for the suggestion. Unfortunately no help so far.
I tried changing the api_base to https://api.deepseek.com/ and https://api.deepseek.com/v1/chat/completions but they both result in: Error: Invalid response object from API: '{"detail":"Not Found"}' (HTTP response code was 404)
whereas hitting https://api.deepseek.com/v1/ results in Error: Invalid response object from API: '{"detail":"Authentication Fails"}' (HTTP response code was 401).
On a related note, adding the new gpt4-turbo-0125 was easy:

model_id: gpt-4-0125-preview
model_name: gpt-4-0125-preview
aliases: ["4t-0125"]

Maybe this will help https://github.com/deepseek-ai/awesome-deepseek-integration/blob/main/docs/continue/README.md

Works perfectly, thanks.

What did you do to get it working?

I found a workaround for this. On my system (arch linux) no extra api works if the api key is set in the extra-openai-models.yaml
To solve this I add the api key to keys.json, then in the yaml I replace api_key with, e.g. api_key_name: "deepseek"


add default configurations to help local set-up

To be filled later

Pull Request Test Coverage Report for Build 3854

0 of 0   changed or added relevant lines in 0 files are covered.
11 unchanged lines in 3 files lost coverage.
Overall coverage decreased (-0.04%) to 35.847%

Files with Coverage Reduction
New Missed Lines
%

azkaban-exec-server/src/main/java/azkaban/execapp/jmx/JmxJobMBeanManager.java
1
72.73%

azkaban-common/src/main/java/azkaban/jobExecutor/AbstractProcessJob.java
2
60.71%

azkaban-exec-server/src/main/java/azkaban/execapp/JobRunner.java
8
76.24%

Totals

Change from base Build 3853:
-0.04%

Covered Lines:
10211

Relevant Lines:
28485

💛  - Coveralls


extend graph script with optional memory regions visualization

Adds more flexibility to have additional memory regions (like GC, Class, Native Memory Tracking etc) visualised from NMT output.
Usage: python build-graph.py [log-file-name] [pid] [optional comma separated region names]

Looks cool!  Let me play with this a bit and see how it works.  Thanks!

Found one bug. If you specify - build-graph.py app.log pid GC "Java Heap" - Java Heap is skipped for some reason. Actually, "Java Heap" is always skipped. Can't figure it out why...

Found the cause of that issue. Java Heap doesn't have that dynamic part (-900KB/+4KB) described by mandatory pattern (-?+?\d+[KM]B). Not sure is it worth to fix it, because it is a constant and looks like a straight line.

Cool!!! 👍


entproto.Service(): 🐛 Error codegen field type Inet & field name conflict with golang keyword (eg. type)

entproto.Service(): Error codegen field type Inet & field name conflict with golang keyword (eg. type)

[x] The issue is present in the latest release.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯
Error type Inet:
var nasNasipaddress schema.Inet
cannot use nasNasipaddress (variable of type "mify_api_radius/ent/schema".Inet) as *"mify_api_radius/ent/schema".Inet value in argument to m.SetNasipaddresscompiler[IncompatibleAssign](https://pkg.go.dev/golang.org/x/tools/internal/typesinternal?utm_source%3Dgopls#IncompatibleAssign)

Error field name type (golang keyword):
--entgrpc_out: entpb/entpb_nas_service.go: unparsable Go source: 31:14: expected 'IDENT', found ':=' (and 2 more errors)

generated code line 31:14:
   24       // toProtoNas transforms the ent type to the pb type
   25       func toProtoNas(e *ent.Nas) (*Nas, error) {
   26           v := &Nas{}
   27           id := int32(e.ID)
   28               v.Id = id
   29           nasname := e.Nasname
   30               v.Nasname = nasname
   31           type := e.Type
   32               v.Type = type
   33           return v, nil
   34       }

Expected Behavior 🤔
No Errors
Steps to Reproduce 🕹

Steps:

Clone this repo: https://github.com/luthfimasruri/entproto_service_issues
Exec go generate ./...

Tech
Version

Go
1.17.8

Ent
0.10.1

Hey @luthfimasruri 👋
Thanks for reporting this issue. The fix for it should be simple, would you like to contribute it? @rotemtam can help with it.

Yes, should be an easy fix. @luthfimasruri, if you want to contribute this change I will be happy to support you. WDYT?
I can do it early next week otherwise.


Quoted strings in arrays

When we need to quote a string in an array value like:
@bundles
store 'node_modules/@enhance/store'

The compiler will output a string that no longer contains the single quotes (or double quotes). Then when you attempt to parse the arc file it will fail due to the @ character.
Related issue https://github.com/beginner-corp/cli/issues/72
To maintain a high standard of quality in our releases, before merging every pull request we ask that you've completed the following:

[x] Forked the repo and created your branch from master
[x] Made sure tests pass (run npm it from the repo root)
[x] Expanded test coverage related to your changes:

[x] Added and/or updated unit tests (if appropriate)
[ ] Added and/or updated integration tests (if appropriate)

[ ] Updated relevant documentation:

[ ] Internal to this repo (e.g. readme.md, help docs, inline docs & comments, etc.)
[ ] Architect docs (arc.codes)

[ ] Summarized your changes in changelog.md
[x] Linked to any related issues, PRs, etc. below that may relate to, consume, or necessitate these changes

Signed-off-by: macdonst<EMAIL_ADDRESS>

This patch appears to be breaking things; matched quotes in values should coerce a string (as intended), but unless additional quotes are found within the string, the opening/closing quotes should be stripped.


support non string properties

https://izpack.atlassian.net/browse/IZPACK-1638
I used an existing test class to demonstrate the problem.
Unfortunately the test is set to @Ignore for some reason...

Thank you


Support passing a condition expression to deletion request

DynamoDB Docs: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html#API_DeleteItem_RequestSyntax
Fixes #3.

DynamoDB Docs: https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html#API_DeleteItem_RequestSyntax
Fixes #3.

The test is failing because some files are not formatted. Would you mind running sbt scalafmtAll please?


How to crop image and upload cropped image to a service?

Hello,
I am trying to take picture from IOS mobile device and use cropping feature then send cropped image to a web service. Is there any tutorial for this particular issue? Hope you can help me.
Best Regards.

It really depends on the webservice that you're working with.  Do you control this service?  If not, do they accept base64 images or just files?
Here's a pretty good example of someone placing a base64 image inside of a form, and submitting the form to a php server:
http://stackoverflow.com/a/34623950/1875969
If you're writing your own server, the code's going to change depending on the language that you're using.  There's several different ways to do the JS, but this one should get you going easily.
I've been meaning to write more blog posts on croppie and how to use it.  I just haven't gotten around to it yet.

Hi,
Thanks for your reply. Actually I imğlemented a WCF service. Here is the service interface.
`[ServiceContract]
public interface IOCRService
{
    [OperationContract]
    [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "/FileUpload")]
    string OCRImage(Stream fileStream);

and here is service portion:
` [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class LoTToOCR : IOCRService
{
Image<Gray, Byte> gray_image;
Bitmap bmpImage;
String ocrresult;
String service_Result;
    public string OCRImage(Stream fileStream)
    {
        try
        {
            var FilePath = @"C:\upload\test.bmp";

            var length = 0;
            using (FileStream writer = new FileStream(FilePath, FileMode.Create))
            {
                int readCount;
                var buffer = new byte[8192];
                while ((readCount = fileStream.Read(buffer, 0, buffer.Length)) != 0)
                {
                    writer.Write(buffer, 0, readCount);
                    length += readCount;
                }
                bmpImage = (System.Drawing.Bitmap)Image.FromStream(writer);
            }

By the way I am implementin via VS 2015. I tested the service with console app, it is working but I am not sure how to make it work with js. Here is my index.html for mobile client:
`

LoTTo

Resim Çek

    <button class="button button-full button-balanced icon-right ion-images" ng-click="choosePhoto()">
        Resim Seç
    </button>

Gönderilecek Resim:

    <button class="button button-full button-balanced icon-right ion-images" ng-click="upload(myCroppedImage)" ng-if="myImage !== undefined">
        Resim Yükle
    </button>

</ion-content>

and here is app.js with ng-img-crop for cropping the image:
`angular.module('starter', ['ionic', 'ngCordova', 'ngImgCrop','ngFileUpload'])
.controller("ExampleController", ['$scope', '$cordovaCamera', 'Upload', '$timeout', function ($scope, $cordovaCamera, Upload, $timeout, $cordovaFileTransfer) {
$scope.takePhoto = function () {
    var options = {
        quality: 100,
        destinationType: Camera.DestinationType.DATA_URL,
        sourceType: Camera.PictureSourceType.CAMERA,
        allowEdit: true,
        encodingType: Camera.EncodingType.JPEG,
        targetWidth: 300,
        targetHeight: 300,
        popoverOptions: CameraPopoverOptions,
        saveToPhotoAlbum: true
    };

    $cordovaCamera.getPicture(options).then(function (imageData) {
        $scope.imgURI = "data:image/jpeg;base64," + imageData;
    }, function (err) {
        console.log(err);
        alert(err);
    });
}

$scope.choosePhoto = function () {
    var options = {
        quality: 100,
        destinationType: Camera.DestinationType.DATA_URL,
        sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
        allowEdit: true,
        encodingType: Camera.EncodingType.JPEG,
        targetWidth: 300,
        targetHeight: 300,
        popoverOptions: CameraPopoverOptions,
        saveToPhotoAlbum: false
    };

    $cordovaCamera.getPicture(options).then(function (imageData) {
        $scope.imgURI = "data:image/jpeg;base64," + imageData;
        $scope.myImage = $scope.imgURI;

    }, function (err) {
        console.log(err);
        alert(err);
    });
}

$scope.myCroppedImage = '';

//$scope.uploadFile = function () {

//    var win = function (r) {
//        console.log("Code = " + r.responseCode);
//        console.log("Response = " + r.response);
//        console.log("Sent = " + r.bytesSent);
//    }

//    var fail = function (error) {
//        alert("An error has occurred: Code = " + error.code);
//        console.log("upload error source " + error.source);
//        console.log("upload error target " + error.target);
//    }

//    var url = encodeURI("http://<IP_ADDRESS>/wcf/upload/");
//    //target path may be local or url
//    var targetPath = $scope.myCroppedImage;

//    var options = new FileUploadOptions();

//    options.fileKey = "Lotto";
//    options.fileName= "Lotto.jpg";
//    options.chunkedMode = false;
//    options.mimeType = "image/jpeg";
//    var headers = { Connection: "close" };
//    options.headers = headers;

//    var ft = new FileTransfer();
//    ft.upload(targetPath, url, win, fail, options);

//}

$scope.upload = function (dataUrl) {

    Upload.upload({

        //url: 'http://<IP_ADDRESS>/wcf/upload',
        url: 'http://<IP_ADDRESS>/wcf_test/OCRService.svc/FileUpload',
        data: {
            file: Upload.dataUrltoBlob(dataUrl)
        },

    }).then(function (response) {
        $timeout(function () {
            $scope.result = response.data;
            console.log(response.data);
            alert(response.data);
        });
        console.log(response.data);
    }, function (response) {
        if (response.status > 0) $scope.errorMsg = response.status
			+ ': ' + response.data;
        alert(response.status);
    });

}

}]);
But somehow I couldn't upload image to the WCF.
`

Maybe I'm mistaken, but I don't see you using croppie anywhere in this code.  Maybe you're looking for this github repo instead? https://github.com/alexk111/ngImgCrop

sorry I couldn't express it clearly. I tried the ng-img-crop repo in my example. I was wondering if I could use your crop repo, how can I implement my solution?

I hope you found some answers for this.  Sorry I couldn't be more help.  I don't have that much time to support this project.
If you're still looking for help, maybe stackoverflow would be a better place to ask for help.


Small typo in README.md

"Tertirary" => "Tertiary"

@didoo probably duplicate of #34

@JB1905 yep! Sorry I missed it 🤦♂ - I am going to close this.


Question about Object Detection on Prophesee GEN1

Hello,
I want to run 'object_detection.py', do I need to download the GEN1 Automotive Detection Dataset myself? (I find the official website about this dataset)
Thanks in advance.

Hello,
Yes, you need to download the dataset on the official Prophesee website. Beware as the dataset is quite large (370Go uncompressed).

Firstly, thanks you for your answer!!!
I have a few more questions. Since the dataset is large, can I download one compressed package for debugging code first?
The other question is, after I downloaded the dataset, I unzipped it to the 'object-detection-with-spiking-neural-networks' directory, how do I set up '-dataset' and '-path' in 'object_detection.py'? (line 33 and 34). The above question puzzled me two days...
My English is a little poor...Thank you very much for your patient answer.

Hi again,

can I download one compressed package for debugging code first?

Yes of course, the dataset generation will iterate through all the files you have in your directory, it can be a small subset of the dataset.

how do I set up '-dataset' and '-path' in 'object_detection.py'?

the -dataset parameter supports only the value "gen1", so you don't have to modify it. If you unzipped the dataset in a directory named "PropheseeDataset" for example, just specify the relative path to this directory (in this case, simply "PropheseeDataset").
The pretrained models will be available soon.
Good luck!


Wrong FPGA device plugin af/region ID

I followed the doc cmd/fpga_plugin.
Run FPGA device plugin as administrator in af mode
# kubectl describe node node08 node09 node10 | grep fpga.intel.com
                    fpga.intel.com/device-plugin-mode: af
 fpga.intel.com/af-f7df405cbd7acf7222f144b0b93acd18:      1
 fpga.intel.com/region-a9f2d0f3b39857b0b34fd226bf364fee:  0
 fpga.intel.com/af-f7df405cbd7acf7222f144b0b93acd18:      1
 fpga.intel.com/region-a9f2d0f3b39857b0b34fd226bf364fee:  0
  fpga.intel.com/af-f7df405cbd7acf7222f144b0b93acd18      0           0
  fpga.intel.com/region-a9f2d0f3b39857b0b34fd226bf364fee  0           0
                    fpga.intel.com/device-plugin-mode: af
 fpga.intel.com/af-f7df405cbd7acf7222f144b0b93acd18:      1
 fpga.intel.com/region-a9f2d0f3b39857b0b34fd226bf364fee:  0
 fpga.intel.com/af-f7df405cbd7acf7222f144b0b93acd18:      1
 fpga.intel.com/region-a9f2d0f3b39857b0b34fd226bf364fee:  0
  fpga.intel.com/af-f7df405cbd7acf7222f144b0b93acd18      0          0
  fpga.intel.com/region-a9f2d0f3b39857b0b34fd226bf364fee  0          0
                    fpga.intel.com/device-plugin-mode: af
 fpga.intel.com/af-f7df405cbd7acf7222f144b0b93acd18:      1
 fpga.intel.com/region-a9f2d0f3b39857b0b34fd226bf364fee:  0
 fpga.intel.com/af-f7df405cbd7acf7222f144b0b93acd18:      1
 fpga.intel.com/region-a9f2d0f3b39857b0b34fd226bf364fee:  0
  fpga.intel.com/af-f7df405cbd7acf7222f144b0b93acd18      0          0
  fpga.intel.com/region-a9f2d0f3b39857b0b34fd226bf364fee  0          0

the af ID is af-f7df405cbd7acf7222f144b0b93acd18, BUT when I run the demo and replaced fpga.intel.com/arria10-nlb3 to fpga.intel.com/arria10-nlb0. I got
[root@node08 demo]# kubectl apply -f test-fpga-region-ypc.yml
pod/test-fpga-region-ypc2 created
[root@node08 demo]#
[root@node08 demo]# kubectl describe pod test-fpga-region-ypc2
Name:               test-fpga-region-ypc2
Namespace:          default
Priority:           0
PriorityClassName:  <none>
Node:               <none>
Labels:             <none>
Annotations:        kubectl.kubernetes.io/last-applied-configuration:
                      {"apiVersion":"v1","kind":"Pod","metadata":{"annotations":{},"name":"test-fpga-region-ypc2","namespace":"default"},"spec":{"containers":[{...
Status:             Pending
IP:
Containers:
  test-container:
    Image:      ubuntu-demo-opae:devel
    Port:       <none>
    Host Port:  <none>
    Command:
      sh
      /usr/bin/test_fpga.sh
    Limits:
      cpu:                                                 1
      fpga.intel.com/af-d8424dc4a4a3c413f89e433683f9040b:  1
      hugepages-2Mi:                                       20Mi
    Requests:
      cpu:                                                 1
      fpga.intel.com/af-d8424dc4a4a3c413f89e433683f9040b:  1
      hugepages-2Mi:                                       20Mi
    Environment:                                           <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-9mrqb (ro)
Conditions:
  Type           Status
  PodScheduled   False
Volumes:
  default-token-9mrqb:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-9mrqb
    Optional:    false
QoS Class:       Burstable
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  3s    default-scheduler  0/3 nodes are available: 3 Insufficient fpga.intel.com/af-d8424dc4a4a3c413f89e433683f9040b, 3 Insufficient hugepages-2Mi.

Such situation appeared when I use region mode too. My region id is fpga.intel.com/region-a9f2d0f3b39857b0b34fd226bf364fee. BUT when I run the demo, reported that it requests region-9926ab6d6c925a68aabca7d84c545738
So how to set right configuration in yaml.
spec:
  containers:
  - name: test-container
    ...
    resources:
      limits:
        fpga.intel.com/arria10-nlb3: 1  # here
        cpu: 1
        hugepages-2Mi: 20Mi

Thank you!

Hi,
From the first look you might be using different FPGA firmware. Can you show the output of the below commands. I assume that you've programmed the device with nlb0 bitstream.
$ cat /sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0/pr/interface_id
$ cat /sys/class/fpga/intel-fpga-dev.0/intel-fpga-port.0/afu_id
$ kubectl describe node <node name> |grep -A10 Allocatable:

@Antsypc I can already see from the issue description that your region id is a9f2d0f3b39857b0b34fd226bf364fee
Currently plugin supports only dcp1.0 and dcp1.1 interface ids. You can see them in deployments/fpga_admissionwebhook/mappings-collection.yaml
We'd be happy to accept PR implementing support for other dcp versions.

@Antsypc btw, which FPGA device model are you using?

@bart0sh Thanks for your help! I'm really appreciate that!
Here are outputs
[root@node08 ~]# cat /sys/class/fpga/intel-fpga-dev.0/intel-fpga-fme.0/pr/interface_id
a9f2d0f3b39857b0b34fd226bf364fee

[root@node08 ~]# cat /sys/class/fpga/intel-fpga-dev.0/intel-fpga-port.0/afu_id
f7df405cbd7acf7222f144b0b93acd18

[root@node08 ~]# kubectl describe node node08 | grep -A10 Allocatable
Allocatable:
 cpu:                                                     56
 ephemeral-storage:<PHONE_NUMBER>90
 fpga.intel.com/af-f7df405cbd7acf7222f144b0b93acd18:      0
 fpga.intel.com/region-a9f2d0f3b39857b0b34fd226bf364fee:  0
 hugepages-1Gi:                                           0
 hugepages-2Mi:                                           0
 memory:                                                  230469272Ki
 nvidia.com/gpu:                                          0
 pods:                                                    110
System Info:

[root@node08 ~]# kubectl describe node node09 | grep -A10 Allocatable
Allocatable:
 cpu:                                                     56
 ephemeral-storage:<PHONE_NUMBER>90
 fpga.intel.com/af-f7df405cbd7acf7222f144b0b93acd18:      1
 fpga.intel.com/region-a9f2d0f3b39857b0b34fd226bf364fee:  0
 hugepages-1Gi:                                           0
 hugepages-2Mi:                                           0
 memory:                                                  230475168Ki
 nvidia.com/gpu:                                          2
 pods:                                                    110
System Info:
[root@node08 ~]#

I'm not sure what do you mean FPGA device model, how can I get that information from my centOS7. How can I get version of dcp interface ids of my devices? Sorry for my poor knowledge.
Thanks again!

@Antsypc Interface Id of your device is a9f2d0f3b39857b0b34fd226bf364fee. You can add it to mappings-collection.yaml and apply the changes with kubectl apply -f mappings-collection.yaml. That should make the mapping working.
By device model I mean FPGA hardware model, e.g. Arria 10 or Stratix 10.

According to release notes, this interface ID seems to belong to 2.0 (Pre-Beta) Statix10 (d5005) PAC card: https://www.intel.com/content/www/us/en/programmable/documentation/edj1542148561811.html#pao1544211266875

@Antsypc  you can check examples of updating mappings for different cards in https://github.com/intel/intel-device-plugins-for-kubernetes/pull/199/commits/6395b1626d1e82754de6ae4a884a732dbc3d163b


Lock only beeps

System Health details
System Information

version
core-2024.3.3

installation_type
Home Assistant OS

dev
false

hassio
true

docker
true

user
root

virtualenv
false

python_version
3.12.2

os_name
Linux

os_version
6.6.20-haos

arch
x86_64

timezone
America/Chicago

config_dir
/config

Home Assistant Community Store

GitHub API
ok

GitHub Content
ok

GitHub Web
ok

GitHub API Calls Remaining
4994

Installed Version
1.34.0

Stage
running

Available Repositories
1406

Downloaded Repositories
14

Home Assistant Cloud

logged_in
false

can_reach_cert_server
ok

can_reach_cloud_auth
ok

can_reach_cloud
ok

Home Assistant Supervisor

host_os
Home Assistant OS 12.1

update_channel
stable

supervisor_version
supervisor-2024.03.1

agent_version
1.6.0

docker_version
24.0.7

disk_total
125.3 GB

disk_used
34.3 GB

healthy
true

supported
true

board
ova

supervisor_api
ok

version_api
ok

installed_addons
Z-Wave JS (0.4.5), File editor (5.8.0), Samba share (12.3.1), Check Home Assistant configuration (3.11.0), Duck DNS (1.16.0), Terminal & SSH (9.10.0), Studio Code Server (5.15.0), Mosquitto broker (6.4.0), WireGuard (0.10.2), Advanced SSH & Web Terminal (17.2.0), ESPHome (2024.3.1), go2rtc (1.8.5), Piper (1.5.0), openWakeWord (1.10.0), Whisper (2.0.0)

Dashboards

dashboards
2

resources
1

views
11

mode
storage

Recorder

oldest_recorder_run
March 23, 2024 at 12:43 PM

current_recorder_run
March 31, 2024 at 6:24 AM

estimated_db_size
6811.00 MiB

database_engine
sqlite

database_version
3.44.2

Checklist

[X] I have enabled debug logging for my installation.
[X] I have filled out the issue template to the best of my ability.
[X] This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
[X] This issue is not a duplicate issue of any previous issues..

Describe the issue
I can add the integration and my 3 locks show up as entities under the integration. When trying to lock or unlock, it makes the lock beep, but does not change the bolt position. I have a Bluetooth proxy for communication. My locks are also connected via Zwave.
Thanks for your work on this integration. I’m happy to help test. I have 3 U-Bolt-Zwave locks. I hoped that updating to the latest version of the integration would help, but no change.
Reproduction steps

Configure integration
Go to lock entity
Push lock
Alternatively, go to developer tools
Run the lock service on the lock entity (with or without a code)

...
Debug logs
This error originated from a custom integration.

Logger: custom_components.ultraloq_ble
Source: custom_components/ultraloq_ble/lock.py:203
integration: Ultraloq Bluetooth (documentation, issues)
First occurred: 7:04:47 AM (3 occurrences)
Last logged: 7:11:46 AM

('Error communicating with device Front Door Lock(FC:A8:9B:XX:XX:XX).', 'Command LOCK_STATUS failed.')
('Error communicating with device Front Door Lock(FC:A8:9B:XX:XX:XX).', 'Command ADMIN_LOGIN failed.')
('Error communicating with device Front Door Lock(FC:A8:9B:XX:XX:XX).', 'Command BOLT_LOCK failed.')

Diagnostics dump
No response

Honestly, if you have zwave locks I would recommend using HAs built-in zwave support. Utec's Bluetooth implementation is piss poor and the zwave interface should provide most of the lock functionality and provide real-time state updates. With the Bluetooth interface we are forced to conduct regular polling for state updates which is not efficient and time consuming. If you still want to use Bluetooth I'll be releasing an update with debug functionality soon, this will help translate some of the errors you are seeing.

Ok I understand. The reason I’m hoping to use Bluetooth instead of Zwave is because I’m hoping it will be more flexible. Zwave requires the controller/dongle which is USB. I am using Zwave JS UI to make that accessible over my network, but I’m not thrilled with the way I have to do this. Also, my Zwave network isn’t super reliable because my house is fairly large and I don’t have a lot of Zwave devices. I’m using an ESP32 Bluetooth proxy which I can easily place centrally in my home and extend HA Bluetooth connectivity to my locks.
Get Outlook for iOShttps://aka.ms/o0ukef

From: maeneak @.>
Sent: Sunday, March 31, 2024 9:41:12 AM
To: maeneak/utecio-ha @.>
Cc: mrmichael1389 @.>; Author @.>
Subject: Re: [maeneak/utecio-ha] Lock only beeps (Issue #24)
Honestly, if you have zwave locks I would recommend using HAs built-in zwave support. Utec's Bluetooth implementation is piss poor and the zwave interface should provide most of the lock functionality and provide real-time state updates. With the Bluetooth interface we are forced to conduct regular polling for state updates which is not efficient and time consuming. If you still want to use Bluetooth I'll be releasing an update with debug functionality soon, this will help translate some of the errors you are seeing.
—
Reply to this email directly, view it on GitHubhttps://github.com/maeneak/utecio-ha/issues/24#issuecomment-2028776895, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AQCTHOZJRVFCLZWFCG53XJLY3AOARAVCNFSM6AAAAABFQMWA22VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMRYG43TMOBZGU.
You are receiving this because you authored the thread.Message ID: @.***>


[+Here's how To WatcH! BOXING] Jake Paul vs Mike Tyson Live Streams [PPV] and TV Channel

Mike Tyson vs. Jake Paul fight start time: Where to watch, live stream online, fight card, Netflix price
Everything you need to know to watch Friday's unprecedented fight
🅻🅸🆅🅴🔴▶ CLICK HERE TO WATCH LIVE ONLINE
🆆🅰🆃🅲🅷🔴▶ CLICK HERE TO LIVE STREAM
The biggest combat sports spectacle of 2024 is inbound. "Iron" Mike Tyson boxes professionally for the first time in nearly two decades against Jake Paul, a controversial boxer with a massive youth edge.
Paul vs. Tyson should draw more eyes than any combat sports event this year. This is a credit to the headliners' wide reach, but most importantly, the fight will stream to Netflix's reported 282 million subscribers at no extra cost. It's a puzzling fight that raises the question: how competitive will Tyson, 58, be against an athletic opponent 31 years his junior?
"Yeah, it's cute. I fear no man. So I want him to be that old savage Mike," Paul said. "He says he's going to kill me. I'm ready. I want that killer. I want the hardest match possible Friday night, and I want there to be no excuses from everyone at home when I knock him out."
Things got heated at the ceremonial weigh ins on Thursday when after stepping off the scale and preparing for the final faceoff, Tyson slapped Paul square across the face before the two were separated. An enraged Tyson stormed off the stage as Paul continued to troll the living legend.
The action gets underway on Netflix at 8 p.m. ET. The full fight card with odds and complete viewing information is listed below.
Where to watch Mike Tyson vs. Jake Paul
Date: Nov. 15
Location: AT&T Stadium -- Arlington, Texas
Start time: 8 p.m. ET (Main card)
Where to watch: Netflix (subscription required, plans begin at $6.99)
Tyson vs. Paul fight card, odds
Favorite Underdog Weight class
Jake Paul -200 Mike Tyson +160 Heavyweights
Katie Taylor (c) -115 Amanda Serrano -115 Undisputed junior welterweight title
Mario Barrios (c) -1400 Abel Ramos +800 WBC welterweight title
Neeraj Goyat -475 Whindersson Nunes +330 Middleweights
Who wins Mike Tyson vs. Jake Paul on November 15, and which Paul vs. Tyson props should you be all over? Visit SportsLine now to see Brandon Wise's best bets for the Nov. 15 bout, all from the CBS combat sports specialist who just called Paul's first-round win in March, and find out.
Mike Tyson vs. Jake Paul fight start time: Where to watch, live stream online, fight card, Netflix price
Everything you need to know to watch Friday's unprecedented fight
The biggest combat sports spectacle of 2024 is inbound. "Iron" Mike Tyson boxes professionally for the first time in nearly two decades against Jake Paul, a controversial boxer with a massive youth edge.
Paul vs. Tyson should draw more eyes than any combat sports event this year. This is a credit to the headliners' wide reach, but most importantly, the fight will stream to Netflix's reported 282 million subscribers at no extra cost. It's a puzzling fight that raises the question: how competitive will Tyson, 58, be against an athletic opponent 31 years his junior?
"Yeah, it's cute. I fear no man. So I want him to be that old savage Mike," Paul said. "He says he's going to kill me. I'm ready. I want that killer. I want the hardest match possible Friday night, and I want there to be no excuses from everyone at home when I knock him out."
Things got heated at the ceremonial weigh ins on Thursday when after stepping off the scale and preparing for the final faceoff, Tyson slapped Paul square across the face before the two were separated. An enraged Tyson stormed off the stage as Paul continued to troll the living legend.
The action gets underway on Netflix at 8 p.m. ET. The full fight card with odds and complete viewing information is listed below.
Where to watch Mike Tyson vs. Jake Paul
Date: Nov. 15
Location: AT&T Stadium -- Arlington, Texas
Start time: 8 p.m. ET (Main card)
Where to watch: Netflix (subscription required, plans begin at $6.99)
Tyson vs. Paul fight card, odds
Favorite Underdog Weight class
Jake Paul -200 Mike Tyson +160 Heavyweights
Katie Taylor (c) -115 Amanda Serrano -115 Undisputed junior welterweight title
Mario Barrios (c) -1400 Abel Ramos +800 WBC welterweight title
Neeraj Goyat -475 Whindersson Nunes +330 Middleweights
Zzzxzx..3233..33333.........

vcvcv

gf fgf


Label widget not rendering math

For me, on the current notebook 4.x branch, running the label widget example in the Widget List example notebook yields: "[Math processing error]", and right-clicking and showing the mathjax error shows "Error: this.CHTMLcreateNode is not a function"

@jasongrout I cannot reproduce. Should I close this?

I'm pretty sure we fixed this a while ago. I can look at the PRs to get the reference, but I think it's fine to close now.

I saw this last week, I'll double-check versions of everything. Could be broken in 5.0, fixed in 5.1.

I think this was fixed in https://github.com/ipython/ipywidgets/pull/560.

Perfect, thanks @jasongrout!


GitHub integration

@d1am0nd not sure if you want to use Dependabot and preview of packages in NPM, it's just a suggestions from my side

@CodingLukas should I close this PR?

@HenriBeck and @d1am0nd should I close this PR?


[BUG] IS_LOCAL=false treated as if it is indeed local

Expected Behavior
When process.env.IS_LOCAL=false run the script as if it is not local (e.g. on AWS Lambda)
Current Behavior
When process.env.IS_LOCAL=false running on AWS Lambda the Chrome executable fails to run because headless is set false and thus chromium.executablePath returns null.
Steps to Reproduce
Set the environment variable IS_LOCAL to "false" and run on AWS Lambda.
Possible Solution
Our workaround was to change our code from using IS_LOCAL to IS_LOCAL_ENV. Ideally a check for IS_LOCAL="false" could be added in the code as to not confuse other people like me in the future for hours. 😄

Looks like the implementation checks if process.env.IS_LOCAL !== undefined so you should be able to omit IS_LOCAL to achieve IS_LOCAL=false.


[pagmo2] Update to 2.19.0

[x] Changes comply with the maintainer guide
[x] SHA512s are updated for each updated download
[x] The "supports" clause reflects platforms that may be fixed by this new version
[x] Any fixed CI baseline entries are removed from that file.
[x] Any patches that are no longer applied are deleted from the port's directory.
[x] The version database is fixed by rerunning ./vcpkg x-add-version --all and committing the result.
[x] Only one version is added to each modified port's versions file.

I asked the upstream maintainers to confirm the usage file change.


⚠ Processors has degraded performance

In ba034bd, Processors ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 65 ms

Resolved: Processors performance has improved in 084a0d5.


[Questions] Interaction with DynamicData ?

Hi,
As always thank for sharing your incredible work.
I often use dotnet/reactive with DynamicData to build and bind collections in WPF.
As you have published ObservableCollections, I suppose you have also this kind of needs.
Do you think we can imagine building (and binding) collections with R3 ?
regards.

IObservable<T> can be converted to Observable<T> and used as is!
ObservableCollections will be changed to the R3 version when R3 is officially released.


Api

Hello,
How to trigger paypal functions only if passed my own API validation? I see even @click event doesn't work in vue-paypal-checkout.
Thanks in advance

+1


alpine distro does not support git.config()

git.config() uses an "ls" option that is not available in busybox
Using the https://github.com/Fizzadar/pyinfra/blob/master/standalone_examples/git.py example against an alpine instance it returns an error, "ls: unrecognized option: time-style=long-iso"
Steps to reproduce:

clone pyinfra
cd standalone_examples
pyinfra @docker/alpine git.py

Error:
--> Preparing operations...
    Loading: git.py
    [pyinfra.api.operation] Adding operation, {'Clone repo'}, called @ git.py:10, opLines=(0, 10), opHash=bca15b80109a88ea7a8e86f82272ecf855ed9396
    [pyinfra.api.facts] Getting fact: directory (ensure_hosts: (<IP_ADDRESS>,))
    [pyinfra.api.util] Building command (shell_executable: sh sudo: True): ls -ld --time-style=long-iso /usr/local/src/pyinfra || ls -ldT /usr/local/src/pyinfra
    [pyinfra.api.connectors.ssh] Running command on <IP_ADDRESS>: (pty=False) sudo -H sh -c 'ls -ld --time-style=long-iso /usr/local/src/pyinfra || ls -ldT /usr/local/src/pyinfra'
[<IP_ADDRESS>] >>> sudo -H sh -c 'ls -ld --time-style=long-iso /usr/local/src/pyinfra || ls -ldT /usr/local/src/pyinfra'
[<IP_ADDRESS>] ls: unrecognized option: time-style=long-iso
[<IP_ADDRESS>] BusyBox v1.31.1 () multi-call binary.
[<IP_ADDRESS>]
[<IP_ADDRESS>] Usage: ls [-1AaCxdLHRFplinshrSXvctu] [-w WIDTH] [FILE]...
[<IP_ADDRESS>]
[<IP_ADDRESS>] List directory contents
[<IP_ADDRESS>]
[<IP_ADDRESS>] -1	One column output
[<IP_ADDRESS>] -a	Include entries which start with .
[<IP_ADDRESS>] -A	Like -a, but exclude . and ..
[<IP_ADDRESS>] -x	List by lines
[<IP_ADDRESS>] -d	List directory entries instead of contents
[<IP_ADDRESS>] -L	Follow symlinks
[<IP_ADDRESS>] -H	Follow symlinks on command line
[<IP_ADDRESS>] -R	Recurse
[<IP_ADDRESS>] -p	Append / to dir entries
[<IP_ADDRESS>] -F	Append indicator (one of */=@|) to entries
[<IP_ADDRESS>] -l	Long listing format
[<IP_ADDRESS>] -i	List inode numbers
[<IP_ADDRESS>] -n	List numeric UIDs and GIDs instead of names
[<IP_ADDRESS>] -s	List allocated blocks
[<IP_ADDRESS>] -lc	List ctime
[<IP_ADDRESS>] -lu	List atime
[<IP_ADDRESS>] --full-time	List full date and time
[<IP_ADDRESS>] -h	Human readable sizes (1K 243M 2G)
[<IP_ADDRESS>] --group-directories-first
[<IP_ADDRESS>] -S	Sort by size
[<IP_ADDRESS>] -X	Sort by extension
[<IP_ADDRESS>] -v	Sort by version
[<IP_ADDRESS>] -t	Sort by mtime
[<IP_ADDRESS>] -tc	Sort by ctime
[<IP_ADDRESS>] -tu	Sort by atime
[<IP_ADDRESS>] -r	Reverse sort order
[<IP_ADDRESS>] -w N	Format N columns wide
[<IP_ADDRESS>] --color[={always,never,auto}]	Control coloring
[<IP_ADDRESS>] drwxr-xr-x    3 root     root          4096 Jan  7 18:01 .

$ cat pyinfra-debug.log
  File "/Users/mikekinney/Documents/python/mkinney_pyinfra/venv/lib/python3.7/site-packages/pyinfra-0.12-py3.7.egg/pyinfra_cli/main.py", line 188, in main
    _main(*args, **kwargs)
  File "/Users/mikekinney/Documents/python/mkinney_pyinfra/venv/lib/python3.7/site-packages/pyinfra-0.12-py3.7.egg/pyinfra_cli/main.py", line 464, in _main
    load_deploy_file(state, filename)
  File "/Users/mikekinney/Documents/python/mkinney_pyinfra/venv/lib/python3.7/site-packages/pyinfra-0.12-py3.7.egg/pyinfra_cli/util.py", line 181, in load_deploy_file
    exec_file(filename)
  File "/Users/mikekinney/Documents/python/mkinney_pyinfra/venv/lib/python3.7/site-packages/pyinfra-0.12-py3.7.egg/pyinfra_cli/util.py", line 53, in exec_file
    exec(PYTHON_CODES[filename], data)
  File "git.py", line 17, in <module>
    repo=dest,
  File "/Users/mikekinney/Documents/python/mkinney_pyinfra/venv/lib/python3.7/site-packages/pyinfra-0.12-py3.7.egg/pyinfra/api/operation.py", line 334, in decorated_func
    **actual_kwargs
  File "/Users/mikekinney/Documents/python/mkinney_pyinfra/venv/lib/python3.7/site-packages/pyinfra-0.12-py3.7.egg/pyinfra/api/util.py", line 212, in unroll_generators
    for item in generator:
  File "/Users/mikekinney/Documents/python/mkinney_pyinfra/venv/lib/python3.7/site-packages/pyinfra-0.12-py3.7.egg/pyinfra/modules/git.py", line 45, in config
    if key not in existing_config or existing_config[key] != value:
TypeError: argument of type 'NoneType' is not iterable

@mkinney the ls thing is expected - the actual command executed attempts ls with the --time-style flag and re-attempts if that fails (https://github.com/Fizzadar/pyinfra/blob/master/pyinfra/facts/files.py#L16).
Looks like there is an underlying bug here where the git repo doesn't exist at the fact gather stage, and existing_config is None. This is fixed in https://github.com/Fizzadar/pyinfra/commit/4dd55ceb5c751d01757fdf22738463826410c901 + https://github.com/Fizzadar/pyinfra/commit/faff24649092a3911ff75332d377fe338507cc78. The Alpine image is missing git by default though!


LGTM