removed _check_targets

deleted the _check_targets function and associated tests #587

Codecov Report

Merging #596 into master will increase coverage by 0.84%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #596      +/-   ##
==========================================
+ Coverage   97.47%   98.31%   +0.84%
==========================================
  Files          45       45
  Lines        3603     3565      -38
==========================================
- Hits         3512     3505       -7
+ Misses         91       60      -31

Impacted Files
Coverage Δ

gpflow/likelihoods.py
100% <ø> (+9.7%)
:arrow_up:

gpflow/params/parameterized.py
99.06% <0%> (+0.46%)
:arrow_up:

Continue to review full report at Codecov.

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


add favicon icon

@deewoc so here is how "Request a changes PR looks". On most serious projects it is very nice practice to review each other via such method. Now you have to push to repo at the mentioned line to resolve it, watch carefully how page looks now


Adding a download step for getting the official wheels for releases.

Now for official releases we can just run:
Python build.py download_official_wheels
Python build.py publish_official

Keeping the steps separate to catch any errors in between.

Looks good. Can you also update the release guide with the new workflow?

:shipit:


Question about meaning of FetchedBatch#offset_lag

I'm a bit confused what FetchedBatch#offset_lag actually means. Consider this:
[5] pry(main)> batch.highwater_mark_offset
=> 6718
[6] pry(main)> batch.first_offset
=> 0
[7] pry(main)> batch.last_offset
=> 6717
[8] pry(main)> batch.offset_lag
=> 1

The operation fetched all messages that are in the partition. However, the lag is 1. Shouldn't it be 0? I understand this is because the highwater_mark_offset is the offset of the next message, and last_offset is the offset of the last message in the batch.
But intuitively, if I have read the last message in a partition, shouldn't the lag be 0?

Version of Ruby: 2.2.4
Version of Kafka: 0.10.1
Version of ruby-kafka: 0.3.16

That looks like a bug... the lag is supposed to be zero in this case. Care to create a PR?

Okay, I'll have a look early next week.


Updated the branch alias

The events changes were breaking. We need to update to 1.4.x.

Also, this should have been 1.3.x previously anyway.

Fixed


Trouble installing with dependencies L5.4 Voyager 0.10.14

Laravel Version: 5.4.11
Voyager Version: 0.10.14
PHP Version: 7.0.8
Database Driver & Version:

Description:
I can't install voyager into a brand new laravel 5.4 app, I saw you were updating to work with 5.4 on 12th February so I waited. I recieve errors due to dependencies:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for tcg/voyager ^0.10.14 -> satisfiable by tcg/voyager[v0.10.14].
- Conclusion: remove laravel/framework v5.4.11
- Conclusion: don't install laravel/framework v5.4.11
- tcg/voyager v0.10.14 requires illuminate/support 5.3.* -> satisfiable by illuminate/support[v5.3.0, v5.3.16, v5.3.23, v5.3.4].
- don't install illuminate/support v5.3.0|don't install laravel/framework v5.4.11
- don't install illuminate/support v5.3.16|don't install laravel/framework v5.4.11
- don't install illuminate/support v5.3.23|don't install laravel/framework v5.4.11
- don't install illuminate/support v5.3.4|don't install laravel/framework v5.4.11
- Installation request for laravel/framework (locked at v5.4.11, required as 5.4.*) -> satisfiable by laravel/framework[v5.4.11].
Steps To Reproduce:
composer create new laravel project.
composer require tcg/voyager

I also received exactly the same problem

Laravel 5.4 support will come along with v0.11.
It should hopefully be ready for release in just a few days.
You can follow up here: https://github.com/the-control-group/voyager/pull/718

If you can't wait you can always run:
composer require "tcg/voyager:dev-laravel-54-support"

Thanks for the prompt replies, I read the issue the other day and thought it was coming in Sundays update so once it updated I tried, my bad. Look forward to trialling it in a few days.


Exported filename didn't match query name

When I first exported, I noticed it used the name of my query for the file name (ExampleQuery.js I believe). I renamed my query, saved, exported again, and the filename didn't change. I navigated away from the editor, and back in, exported again, and it worked right.

Interesting. @cfjedimaster - are you running netlify --dev graph or are you using netlify graph:edit and netlify graph:pull?

I was using --dev graph.

Yep, seems good now. (Btw above I didn't mean to type --dev, it's just dev of course. :)


[Addition] Additional info and correction about stations

I have done some testing, and based on that, I'd like to provide some more info about stations, to this page: VRC School | Stations
The number of stations on an avatar

The maximum number of stations that you can add to an avatar, is 6.
Any chair, after the 6th one that is found on the avatar, can not be used in the game.
The chair order is based on the hierarchy. So chairs will be made available from the top of the hierarchy to the bottom of it.
If Chair 7 is next to Chair 6 (below it), then Chair 6 will still be active, but Chair 7 will not be.
This is the hierarchy that I have used for the test:

Maximum allowed distance between the Enty and Exit points

Another additional info is that the Entry point of the station must be within 2 meters of the Exit point, or else the station will not work in the game.
I tested a distance of 2.01 meters in game, and the station was not active because of this.
I also tested a distance of 2.0001 meters in game, and the results are the same. The station is also not active because of this.

Also, another interesting point is that if you exceed the distance limit between the Entry and Exit points, but the station would have been active otherwise, as it does not go over the avatar station number limit, it will still count towards it, despite not being active.

So if we look at the previous screenshot that I posted, and I set the Entry and Exit points of Chair 1 too far from each other, then the only active stations will be:

Chair 2
Chair 3
Chair 4
Chair 5
Chair 6

Chair 7 will not be active in this case, as Chair 1 failed the Entry-Exit distance test, and it counts as an active station.

Overcoming the distance limitation

It is also important to note, that if the Entry and Exit points are within 2 meters of each other, and they become active in the game, then you can use an animation to move them further from each other, by any means, and the station will still be functional.

A correction about stations

While it is not possible to toggle the station script itself, it is possible to turn off the object in the hierarchy, that the station script is on.
If you disable the object in the hierarchy, that the station script is on, then anyone sitting in said station will fall off of it
I think the caution note should state this instead ^
But it should also warn people that stations should be fully enabled in their hierarchy on upload, or else they will not work in game.
They can be turned off on frame 1 however.
Turning off the collider that the station is using, makes the station unclickable for others, but it will not kick the person, who is sitting in it already.

(Not sure if this should be noted, but good info):
And to solve the annoying issue where people can just sit in your stations, because they have custom animations disabled for you, the solution is to put the stations high up in the air, or down low under the floor.

What if a station script has no collider?

If the station script has no collider on the object the script is on, then VRChat adds a collider to it automatically

The wrong type of collider?

If the station script has a collider that is not set to Is Trigger, the station will still work (Does the game set it to Is Trigger(?))

One more addition:
People, who sit in stations, face forward, towards the blue arrow (Z axis), and face up towards the green arrow (Y axis)
This is important, when placing a station on an avi

Added, thanks!


activation beacon  Needle In A Haystack   test failed

只有最后4k插入needle可以通过，前面插入全部失败。
测试输入长度16k,32k,128k.
Needle In A Haystack
下面是29.5k长度测试输出
`********************
Input Length: 29605
Position: 0k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29605
Position: 1k
Prediction:    The best thing to do in San Francisco is to visit the Golden Gate Bridge. The Golden Gate Bridge is a famous suspension bridge that connects San Francisco to Marin County. It is an

Input Length: 29606
Position: 2k
Prediction:    The best thing to do in San Francisco is to visit the Golden Gate Park. It is a beautiful park with many attractions, including the Japanese Tea Garden, the California Academy of Sciences,

Input Length: 29605
Position: 3k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29604
Position: 4k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29607
Position: 5k
Prediction:    The best thing to do in San Francisco is to visit the Golden Gate Bridge, Alcatraz Island, and Fisherman's Wharf.
The Golden Gate Bridge is an iconic

Input Length: 29606
Position: 6k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29606
Position: 7k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29605
Position: 8k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29605
Position: 9k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29605
Position: 10k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29605
Position: 11k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29606
Position: 12k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29606
Position: 13k
Prediction:    The best thing to do in San Francisco is to visit the Golden Gate Bridge, Alcatraz Island, and Fisherman's Wharf.
The Golden Gate Bridge is an iconic

Input Length: 29607
Position: 14k
Prediction:    The best thing to do in San Francisco is to visit the Golden Gate Bridge, Alcatraz Island, and Fisherman's Wharf.
The Golden Gate Bridge is an iconic

Input Length: 29605
Position: 15k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29605
Position: 16k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29605
Position: 17k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29607
Position: 18k
Prediction:    The best thing to do in San Francisco is to visit the Golden Gate Bridge, Alcatraz Island, and Fisherman's Wharf.
The Golden Gate Bridge is an iconic

Input Length: 29606
Position: 19k
Prediction:    The best thing to do in San Francisco is to visit the Golden Gate Bridge, Alcatraz Island, and Fisherman's Wharf.
The Golden Gate Bridge is an iconic

Input Length: 29606
Position: 20k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island

Input Length: 29607
Position: 21k
Prediction:    The best thing to do in San Francisco is to visit the Golden Gate Bridge, Alcatraz Island, and Fisherman's Wharf.
The Golden Gate Bridge is an iconic

Input Length: 29606
Position: 22k
Prediction:    There are many great things to do in San Francisco! Here are some suggestions:

Visit Alcatraz Island: Take a ferry to the former prison and explore the island
`

Hi, 能分享一下你的测试脚本么？我看原git仓库里只有openai和anthropic的。

data/book/dinosaurs.txt方便也分享一下不

data/book/dinosaurs.txt方便也分享一下不

这个版权类书籍，你随便找一本大一点的英文书测试。

我测试了几种llama的prompts，现象是一致的。
unitxt构造prompts

Hi, 我按照脚本进行了测试：

Activation Beacon在8K上大部分时间能成功找回needle，但是32K基本全部失败，这是因为越长的context需要更大的压缩率（8K->2, 32K->8），而压缩会带来信息的损失，因此当context变长后复现needle任务上表现很差，这和我们在topic retrieval/passkey retrieval上的结论是一致的。但是，值得注意的是模型失败时竟然会输出完全一样的结果，这一点我们会继续深入研究，之前没有注意到这个问题。

Activation Beacon可以和检索配合从而增强其在这种高精度记忆类任务上的表现，目前其能够支持简单的bm25检索，即通过bm25确定3个interval，这些interval中的内容使用较低压缩率（2），其余内容使用较高压缩率（128），这种方法可以改善Activation Beacon在needle in a haystack上的表现，基本能够保证80%成功率。我用了PG19 test上第一本书，代码在这里，请你尝试。

Activation Beacon仅是我们对于长文本的一个初步尝试，验证了压缩的可行性，之后我们会将其与更加精巧的检索机制结合在一起，形成系统的长文本解决方案，请你继续关注并提出宝贵意见。


Refactor db_array_schema_to_clickhouse_schema() function

Description of changes
Summarize the changes made by this PR.

Improvements

The new implementation is more concise and readable, as it uses a list comprehension and the join() function instead of nested for loops and string concatenation. This makes it easier to understand the purpose of the function at a glance.

Test plan
How are these changes tested?
Documentation Changes
Are all docstrings for user-facing APIs updated if required? Do we need to make documentation changes in the docs repository?

@HiteshGorana  thanks for opening this PR! this portion of the code is under a lot of flux right now with our refactor in full swing - https://docs.trychroma.com/roadmap. This will likely change a lot - and so I am going to close the PR for now.


Chapter 6 Transaction Challenge Introduction Pages

Add the concept introduction pages for Chapter 6, this includes implementing the new transaction overview image/object more information is needed on the scope for this

https://www.figma.com/file/LqjK3Tpvd9KJ4buFArCJBQ/Saving-Satoshi?node-id=6398%3A17385&mode=dev
https://www.figma.com/file/LqjK3Tpvd9KJ4buFArCJBQ/Saving-Satoshi?node-id=6401%3A18420&mode=dev

@GBKS could you give some clarification on this, is the page on the right just an image, or is there some dynamic things that will happedn to explain to the player what is going on?

It could be just an image. I am not super happy with the background yet, as it does not fit in with the rest of the page, but should be easy to update if it's just an image.


Added "ClassName#instanceMethodName" Routes callable support.

Because it is sometimes very useful to be able to create a Class instance rather than calling a static method of this Class (it allows custom common initialization in the Class constructor, for example), this simple and intuitive notation allows this process, without breaking anything.

I'll look at pulling this in for the 1.7.0 release. This only appears to be a bit of sugar on top of:
$app->get('/foo', array(new Foo(), 'instanceMethod'));

I can appreciate the simpler syntax, for sure. Will get back with on this later after 1.6.0 stable is released.

Great !
Yes, the syntax is a little bit simpler than array(new Foo(), 'instanceMethod') ; but more of all, it allows some lazy-loading (the Foo instance will be created only when we need it)


Making it work into RS232

Hi Frakkkkk!
I have read your code and it is great
I would like to make it work through RS232 because my Pylon are using RS485 interface to communicate with my inversor.
As far as I know Pylontech RS485 protocol and RS232 are almost the same, but I am not completly sure.
My batteries communicate with RS232 with BatteryView (Pylontech software) perfectly, using and RS232 to USB adapter connected to console port.
I think the first step is putting the serial port in 1200 bps, because this is the default for Pylontech RS232 (although they could go faster setting them up with a specific command)
Before I deep more into this I want to know if someone has tried before or your knowledge, if it is possible or not
Lots of thanks
Let's start!
Changing only the baud rate from 115200 to 1200 and adding some print for debug (same port, /dev/ttyUSB0)
----> Sending:  b'~20024642E002FFFD09\r'
7e3230303234363432453030324646464430390d
<---- Receiving:  b'~200146900000FDAA\r'
7e323030313436393030303030464441410d
Traceback (most recent call last):
  File "/home/pi/python-pylontech/tommy_test.py", line 4, in <module>
    print(p.get_values())
  File "/home/pi/python-pylontech/pylontech/pylontech.py", line 277, in get_values
    d = self.get_values_fmt.parse(f.info[1:])
  File "/usr/local/lib/python3.10/site-packages/construct-2.10.68-py3.10.egg/construct/core.py", line 288, in parse
  File "/usr/local/lib/python3.10/site-packages/construct-2.10.68-py3.10.egg/construct/core.py", line 300, in parse_stream
  File "/usr/local/lib/python3.10/site-packages/construct-2.10.68-py3.10.egg/construct/core.py", line 312, in _parsereport
  File "/usr/local/lib/python3.10/site-packages/construct-2.10.68-py3.10.egg/construct/core.py", line 2120, in _parse
  File "/usr/local/lib/python3.10/site-packages/construct-2.10.68-py3.10.egg/construct/core.py", line 312, in _parsereport
  File "/usr/local/lib/python3.10/site-packages/construct-2.10.68-py3.10.egg/construct/core.py", line 2653, in _parse
  File "/usr/local/lib/python3.10/site-packages/construct-2.10.68-py3.10.egg/construct/core.py", line 312, in _parsereport
  File "/usr/local/lib/python3.10/site-packages/construct-2.10.68-py3.10.egg/construct/core.py", line 1041, in _parse
  File "/usr/local/lib/python3.10/site-packages/construct-2.10.68-py3.10.egg/construct/core.py", line 91, in stream_read
construct.core.StreamError: Error in path (parsing) -> NumberOfModules
stream read less than specified amount, expected 1, found 0

Error parsing number of modules... 🤔 So now I have changed the address from 2 to 1 in get_values():
From this:
 def get_values(self):
        self.send_cmd(**2**, 0x42, b'FF')

To this
 def get_values(self):
        self.send_cmd(**1**, 0x42, b'FF')

No what I get is:
----> Sending:  b'~20014642E002FFFD0A\r'
7e3230303134363432453030324646464430410d
<---- Receiving:  b'~20014600B0D800020F0CF70C\r\n'
7e3230303134363030423044383030303230463043463730430d0a
Traceback (most recent call last):
  File "/home/pi/python-pylontech/tommy_test.py", line 4, in <module>
    print(p.get_values())
  File "/home/pi/python-pylontech/pylontech/pylontech.py", line 274, in get_values
    f = self.read_frame()
  File "/home/pi/python-pylontech/pylontech/pylontech.py", line 204, in read_frame
    f = self._decode_hw_frame(raw_frame=raw_frame)
  File "/home/pi/python-pylontech/pylontech/pylontech.py", line 183, in _decode_hw_frame
    assert got_frame_checksum == int(frame_chksum, 16)
AssertionError

🤔 I think we have not caught the full response. So I updated the timeout from 2 to 3. Now I get:
----> Sending:  b'~20014642E002FFFD0A\r'
7e3230303134363432453030324646464430410d
<---- Receiving:  b'~20014600B0D811020F0CF70CF60CF70CF70CF70CF80CF70CF70CF70CF70CF80CF50CF40CF60CF7050BA50B870B870B870B87FFEEC274B5A402C35000010F0CF50CF60CF60CF50CF70CF60CF70CF70CF60CF~20024692E00202FD2E\r6050B9B0B870B870B870B87FFEDC268BF6802C350027FCC3A\r\r\r\n'
7e323030313436303042304438313130323046304346373043463630434637304346373043463730434638304346373043463730434637304346373043463830434635304346343043463630434637303530424135304238373042383730423837304238374646454543323734423541343032433335303030303130463043463530434636304346363043463530434637304346363043463730434637304346363043467e3230303234363932453030323032464432450d363035304239423042383730423837304238373042383746464544433236384246363830324333353030323746434333410d0d0d0a
Traceback (most recent call last):
  File "/home/pi/python-pylontech/tommy_test.py", line 4, in <module>
    print(p.get_values())
  File "/home/pi/python-pylontech/pylontech/pylontech.py", line 274, in get_values
    f = self.read_frame()
  File "/home/pi/python-pylontech/pylontech/pylontech.py", line 204, in read_frame
    f = self._decode_hw_frame(raw_frame=raw_frame)
  File "/home/pi/python-pylontech/pylontech/pylontech.py", line 183, in _decode_hw_frame
    assert got_frame_checksum == int(frame_chksum, 16)
AssertionError

This response looks quite longer, but same error. I am thinking in changing the self.s.read() for something like read_until('\r') or something similar, I mean reading until certain byte value, to detect the end of the frame and avoid receiving garbage. What do you think? Have you seen something I can not see?
I would like learning to break down the response. I have read the protocol PDF but I will need some detailed example

Finally I get it working. At least most of the times.
p.get_values_single(1) works always
p.get_system_parameters() works always
However p.get_values() only works sometimes. Other times it fails with a weird response, I do not why 😕
What I did:
Change address from 2 to 1 into get_values() and into get_system_parameters()
Modify constructor to allow communication at 4800 speed rate:
    def __init__(self, serial_port='/dev/ttyUSB0', baudrate=1200):
        self.s = serial.Serial(serial_port, baudrate, bytesize=8, parity=serial.PARITY_NONE, stopbits=1, timeout=6)
        self.s.write(bytes([0x7E, 0x32, 0x30, 0x30, 0x31, 0x34, 0x36, 0x39, 0x31, 0x45, 0x30, 0x30, 0x32, 0x30, 0x33, 0x46, 0x44, 0x32, 0x46, 0x0D])) # Sets speed to 4800
        time.sleep(1)
        self.s.close()
        self.s = serial.Serial(serial_port, 4800, bytesize=8, parity=serial.PARITY_NONE, stopbits=1, timeout=2)
        self.s.isOpen()
        self.s.flush()

Change read_frame() to read until '\n' (end of frame)
    def read_frame(self):
        #raw_frame = self.s.readline()
        raw_frame = self.s.read_until(b'\r')
        f = self._decode_hw_frame(raw_frame=raw_frame)
        parsed = self._decode_frame(f)
        return parsed

As mentioned, p.get_system_parameters() does never fail.
----> Sending:  b'~200146470000FDA8\r'
7e323030313436343730303030464441380d
<---- Receiving:  b'~20014600B032000E420BEA0B540D0D0A3D03FCD2F0B3B0ADD40D0D0A3DFC18F240\r'
7e3230303134363030423033323030304534323042454130423534304430443041334430334643443246304233423041444434304430443041334446433138463234300d
Container:
    CellHighVoltageLimit = 3.65
    CellLowVoltageLimit = 3.05
    CellUnderVoltageLimit = 2.9
    ChargeHighTemperatureLimit = 61.0
    ChargeLowTemperatureLimit = -11.0
    ChargeCurrentLimit = 10.2
    ModuleHighVoltageLimit = 54.0
    ModuleLowVoltageLimit = 46.0
    ModuleUnderVoltageLimit = 44.5
    DischargeHighTemperatureLimit = 61.0
    DischargeLowTemperatureLimit = -11.0
    DischargeCurrentLimit = -10.0

p.get_values_single(1) does not fail:
----> Sending:  b'~20014642E00201FD35\r'
7e3230303134363432453030323031464433350d
<---- Receiving:  b'~20014600C06E00010F0CF80CF80CFA0CF90CF70CFA0CF90CF70CF90CFA0CF90CF90CF80CF90CF9050BA50B870B870B870B87FFF6C293A60402C3500001E47C\r'
7e3230303134363030433036453030303130463043463830434638304346413043463930434637304346413043463930434637304346393043464130434639304346393043463830434639304346393035304241353042383730423837304238373042383746464636433239334136303430324333353030303031453437430d
Container:
    NumberOfModule = 1
    NumberOfCells = 15
    CellVoltages = ListContainer:
        3.32
        3.32
        3.322
        3.321
        3.319
        3.322
        3.321
        3.319
        3.321
        3.322
        3.321
        3.321
        3.32
        3.321
        3.321
    NumberOfTemperatures = 5
    AverageBMSTemperature = 25.0
    GroupedCellsTemperatures = ListContainer:
        22.0
        22.0
        22.0
        22.0
    Current = -1.0
    Voltage = 49.811
    Power = -49.811
    CycleNumber = 1
    RemainingCapacity = 42.5
    TotalCapacity = 50.0
    TotalPower = -49.811
    StateOfCharge = 0.85

But p.get_values() fails most of the times (one good each a lot of bads):
----> Sending:  b'~20014642E002FFFD0A\r'
7e3230303134363432453030324646464430410d
<---- Receiving:  b'~20014600B0D800020F0CF80CF80CF70CF90CF80CF80CF80CF80CF80CF80CF90CF80CF70CF90CF7050BA50B870B870B870B87FFF5C288A60402C35000010F0CF80CF80CF60CF70CF80CF80CF70CF80CF80CF90CF90CF90CF80CF80CF8050B9B0B870B870B870B87FFF4C287A7F802C3500280CC47\r'
7e323030313436303042304438303030323046304346383043463830434637304346393043463830434638304346383043463830434638304346383043463930434638304346373043463930434637303530424135304238373042383730423837304238374646463543323838413630343032433335303030303130463043463830434638304346363043463730434638304346383043463730434638304346383043463930434639304346393043463830434638304346383035304239423042383730423837304238373042383746464634433238374137463830324333353030323830434334370d
Container:
    NumberOfModules = 2
    Module = ListContainer:
        Container:
            NumberOfCells = 15
            CellVoltages = ListContainer:
                3.32
                3.32
                3.319
                3.321
                3.32
                3.32
                3.32
                3.32
                3.32
                3.32
                3.321
                3.32
                3.319
                3.321
                3.319
            NumberOfTemperatures = 5
            AverageBMSTemperature = 25.0
            GroupedCellsTemperatures = ListContainer:
                22.0
                22.0
                22.0
                22.0
            Current = -1.1
            Voltage = 49.8
            Power = -54.78
            CycleNumber = 1
            RemainingCapacity = 42.5
            TotalCapacity = 50.0
        Container:
            NumberOfCells = 15
            CellVoltages = ListContainer:
                3.32
                3.32
                3.318
                3.319
                3.32
                3.32
                3.319
                3.32
                3.32
                3.321
                3.321
                3.321
                3.32
                3.32
                3.32
            NumberOfTemperatures = 5
            AverageBMSTemperature = 24.0
            GroupedCellsTemperatures = ListContainer:
                22.0
                22.0
                22.0
                22.0
            Current = -1.2
            Voltage = 49.799
            Power = -59.758799999999994
            CycleNumber = 640
            RemainingCapacity = 43.0
            TotalCapacity = 50.0
    TotalPower = -114.5388
    StateOfCharge = 0.855

Bad:
----> Sending:  b'~20014642E002FFFD0A\r'
7e3230303134363432453030324646464430410d
<---- Receiving:  b'~20014600B0D800020F0CF60CF70CF80CFA0CF\r'
7e323030313436303042304438303030323046304346363043463730434638304346413043460d
Traceback (most recent call last):
  File "/home/pi/python-pylontech/tommy_test.py", line 4, in <module>
    print(p.get_values())
  File "/home/pi/python-pylontech/pylontech/pylontech.py", line 284, in get_values
    f = self.read_frame()
  File "/home/pi/python-pylontech/pylontech/pylontech.py", line 214, in read_frame
    f = self._decode_hw_frame(raw_frame=raw_frame)
  File "/home/pi/python-pylontech/pylontech/pylontech.py", line 192, in _decode_hw_frame
    assert got_frame_checksum == int(frame_chksum, 16)
AssertionError

Bad:```
----> Sending:  b'~20014642E002FFFD0A\r'
7e3230303134363432453030324646464430410d
<---- Receiving:  b'~20014600B0D800020F0CF80CF60CF90CF80CF70CF80CF90CF80CF90CFA0CFB0CFB0CF90CFA0CFA050BA50B870B870B870B87FFF5C295A60402C35000010F0CF80CF80CF70CF80CF80CF70CF80CF70CF80CF~20024692E00202FD2E\r'
7e323030313436303042304438303030323046304346383043463630434639304346383043463730434638304346393043463830434639304346413043464230434642304346393043464130434641303530424135304238373042383730423837304238374646463543323935413630343032433335303030303130463043463830434638304346373043463830434638304346373043463830434637304346383043467e3230303234363932453030323032464432450d
Traceback (most recent call last):
File "/home/pi/python-pylontech/tommy_test.py", line 4, in
print(p.get_values())
File "/home/pi/python-pylontech/pylontech/pylontech.py", line 284, in get_values
f = self.read_frame()
File "/home/pi/python-pylontech/pylontech/pylontech.py", line 214, in read_frame
f = self._decode_hw_frame(raw_frame=raw_frame)
File "/home/pi/python-pylontech/pylontech/pylontech.py", line 192, in _decode_hw_frame
assert got_frame_checksum == int(frame_chksum, 16)
AssertionError

**Bad:**

----> Sending:  b'~20014642E002FFFD0A\r'
7e3230303134363432453030324646464430410d
<---- Receiving:  b''
Traceback (most recent call last):
File "/home/pi/python-pylontech/tommy_test.py", line 4, in
print(p.get_values())
File "/home/pi/python-pylontech/pylontech/pylontech.py", line 284, in get_values
f = self.read_frame()
File "/home/pi/python-pylontech/pylontech/pylontech.py", line 214, in read_frame
f = self._decode_hw_frame(raw_frame=raw_frame)
File "/home/pi/python-pylontech/pylontech/pylontech.py", line 192, in _decode_hw_frame
assert got_frame_checksum == int(frame_chksum, 16)
ValueError: invalid literal for int() with base 16: b''

Some clue? Perhaps is something normal and the packets in this protocol get corrupted sometimes, more probabbly if they are greater? Does this happen with RS485?

Hi tomascrespo,
i had the same idea as you described/ask, let's use the serial console.
Can you please do a fork/share your code ,so we can work together on it?
I have two UP5000 which i plan to monitor ..
BTW, beside the RS485 communication document, there also exists document from pylontech regarding the RS232 communication.
KR

Hi,
I completely forgot about this issue :(. I didn't know that the rs232 proto was documented.; maybe I should find + upload the PDF here?
Indeed, merging both protocols would be awesome!
Happy new year :-)
On December 29, 2023 5:38:08 PM GMT+01:00, MC68030 @.***> wrote:

Hi tomascrespo,
i had the same idea as you described/ask, let's use the serial console.
Can you please do a fork/share your code ,so we can work together on it?
I have two UP5000 which i plan to monitor ..
BTW, beside the RS485 communication document, there also exists document from pylontech regarding the RS232 communication.
KR
--
Reply to this email directly or view it on GitHub:
https://github.com/Frankkkkk/python-pylontech/issues/29#issuecomment-1872208412
You are receiving this because you are subscribed to this thread.
Message ID: @.***>

Just search for "PYLON LFP Battery communication protocol - RS232" :-)


Nvahmadi/3dregistration learn2reg

Description
Added MONAI tutorial for paired lung-CT 3D registration with keypoint matching (Learn2Reg 2023, NLST task), in collaboration with @brudfors. This is a modified version of the of the training code for the Learn2Reg-NLST submission by @brudfors  (currently rank 14/111) in the challenge (see leaderboard).
Contributions beyond current tutorial
Compared to the current tutorial (paired_lung_ct.ipynb), this tutorial uses data from the current NLST task of the Learn2Reg 2023 challenge. The solution was developed in close alignment with the challenge organizer Mattias Heinrich (@mattiaspaul on GitHub) and collaborators, who will create a template test submission based on this solution. Together, these tutorials will serve as a MONAI-native guide on how to participate this year and in upoming iterations of Learn2Reg .
Beyond challenge participation, the tutorial introduces a new datatype to MONAI (pointclouds) and demonstrates how easy it is to write custom transforms for them (I/O and linear transforms). It also shows how to write a custom multi-target loss function for registration that uses loss components from MONAI/PyTorch/custom-code. This composite loss can be flexibly used in both unsupervised (image-based) registration scenarios, as well as supervised registration tasks (i.e. with auxiliary keypoints and/or labelmaps).
Checks

[ X ] Avoid including large-size files in the PR.
[ X ] Clean up long text outputs from code cells in the notebook.
[ X ] For security purposes, please check the contents and remove any sensitive info such as user names and private key.
[ X ] Ensure (1) hyperlinks and markdown anchors are working (2) use relative paths for tutorial repo files (3) put figure and graphs in the ./figure folder
[ X ] Notebook runs automatically ./runner.sh -t <path to .ipynb file>. Note: The execution takes very long (approx. 50 mins, output of runner.sh below:

Executing: 100%|█████████████████████████████████████████████████████████████████████| 37/37 [49:42<00:00, 80.61s/cell]
/home/ahmad/.local/lib/python3.8/site-packages/papermill/iorw.py:153: UserWarning: the file is not specified with any extension : -
  warnings.warn(

real    49m46.070s
user    10m25.173s
sys     4m0.110s

Testing finished. 0 of 1 executed tests passed!

thanks @nvahmadi @brudfors, this looks great, we should consider adding the point transform and collate fn to the core (https://github.com/Project-MONAI/MONAI/issues/4027).
also please have a look at the minor style issues:

https://github.com/Project-MONAI/tutorials/actions/runs/6124451978/job/16624498264?pr=1513

NotImplementedError                       Traceback (most recent call last)
Input In [8], in <cell line: 52>()
     50 ax.scatter(moving_points[:, 0], moving_points[:, 1], moving_points[:, 2], s=10.0, marker="o", color="orange")
     51 ax.view_init(-10, 80)
---> 52 ax.set_aspect("equal")
     53 plt.title("Pointcloud visualizations")
     54 plt.show()

File /opt/conda/lib/python3.8/site-packages/mpl_toolkits/mplot3d/axes3d.py:311, in Axes3D.set_aspect(self, aspect, adjustable, anchor, share)
    258 """
    259 Set the aspect ratios.
    260
   (...)
    308 mpl_toolkits.mplot3d.axes3d.Axes3D.set_box_aspect
    309 """
    310 if aspect != 'auto':
--> 311     raise NotImplementedError(
    312         "Axes3D currently only supports the aspect argument "
    313         f"'auto'. You passed in {aspect!r}."
    314     )
    315 super().set_aspect(
    316     aspect, adjustable=adjustable, anchor=anchor, share=share)

NotImplementedError: Axes3D currently only supports the aspect argument 'auto'. You passed in 'equal'.

https://github.com/Project-MONAI/tutorials/actions/runs/6124451974/job/16624494374?pr=1513

stdin:83:2: N812 lowercase 'torch.nn.functional' imported as non lowercase 'F'
import torch.nn.functional as F
 ^
stdin:88:1: F401 'monai.apps.download_url' imported but unused
from monai.apps import download_url, download_and_extract
^
stdin:481:121: E501 line too long (124 > 120 characters)
...

@wyli @nvahmadi Thanks for the feedback! Happy to help with Core integration if need be.

Thanks @wyli  - I just pushed changes to fix the minor style issues. A few notes:
---> 52 ax.set_aspect("equal")-->NotImplementedError`
The build setup uses a slightly older version of matplotlib (v3.5.1), the feature axes3d.set_aspect('equal') was added in v3.6.0 (current mpl stable version is 3.7.x). I still changed the keyword equal to auto, as required by v3.5.1.
stdin:83:2: N812
import torch.nn.functional as F is an official PyTorch convention, better not to change it even if styleguide recommends that
stdin:88:1: F401
monai.apps.download_url removed
stdin:481:121:
Added line break / multiline string

thanks @nvahmadi, let me try to modify the config to ignore N812, there are a few other style issues, I'll try to fix them.

Awesome, thanks @wyli for the review, the fixes and for approving! Great to see this added!


[material-ui][docs] Add Hatchify to the admin frameworks section

[x] I have followed (at least) the PR section of the contributing guide.

Check out the repo and start building - https://github.com/bitovi/hatchify
Watch the getting started video - https://youtu.be/4xD9DQ_V-x4
Read the launch article - https://www.bitovi.com/blog/introducing-hatchify-low-code-libraries-for-react-node-and-sequelize

@samuelsycamore seems good to me! Any thoughts?


now it updates only the widgets that have changed their layout

fix #659

191-201, it is confusing here to have two functions that do the same thing.  It would be easier to follow to just pass this.state.widgets to updateServerWidgets if that is what is being updated.
1736 it is customary to use destructuring here. const {widgets} = this.state
1764 You dont need to create a array just to pass it to updateServerWidgets. Then you are looping over the object twice.
1765 this line is causing mutation. I dont think 1763 is creating new copies of each widget object, just a new array with references to the same widget object.  This means that you are mutating the state directly here.  This logic wont cause mutation.
const newWidgets = widgets.map((w, i) => ({...w, layout: layout[i]}))
1769 this does not need to be a call back if you are not using this.state in updateServerWidgets.
1769 The only reason widgetsToUpdate has correct values for updateServerWidgets is because widgetsToUpdate is array of objects that are the same as widgets.  You then mutate individual widget objects in widgets (that are the same object).  This code can look un-intentional.
Here is one option that does not mutate.  Its not ideal to also have side affects in the map but it works.
const {widgets} = this.state.widgets;
const newWidgets = widgets.map((w, i) => {
    if (_.isEqual(w.layout, layout[i])) {
        return w;
    } else {
        const newWidget = {...w, layout: layout[i]};
        this.serveItUp(`${this.state.theURI}/update-widget?widgetId=${newWidget.id}`, newWidget);
        return newWidget;
    }
});
this.setState({
    widgets: newWidgets,
    layout: layout,
});

You could also be more simple here and then add code for componentDidUpdate.  The code here would be
onLayoutChange = layout => {
    if (this.state.haveWidgets) {
        this.setState({
            widgets: this.state.widgets.map((w, i) => ({...w, layout: layout[i]})),
            layout: layout,
        });
    } else {
        this.setState({layout: layout});
    }
};

And then
componentDidUpdate(prevProps, prevState) {
    if (prevState.widgets !== this.state.widgets && prevState.widgets.length !== this.state.widgets.length) {
        this.state.widgets.forEach((w, i) => {
            if (!_.isEqual(w.layout, prevState.widgets[i])) {
                this.serveItUp(`${this.state.theURI}/update-widget?widgetId=${w.id}`, w);
            }
        });
    }
}

The benifit to the second option is that you can also remove
if (changed) {
this.updateAllServerWidgets();
}

191-201, it is confusing here to have two functions that do the same thing.  It would be easier to follow to just pass this.state.widgets to updateServerWidgets if that is what is being updated.
1736 it is customary to use destructuring here. const {widgets} = this.state
1764 You dont need to create a array just to pass it to updateServerWidgets. Then you are looping over the object twice.
1765 this line is causing mutation. I dont think 1763 is creating new copies of each widget object, just a new array with references to the same widget object.  This means that you are mutating the state directly here.  This logic wont cause mutation.
const newWidgets = widgets.map((w, i) => ({...w, layout: layout[i]}))
1769 this does not need to be a call back if you are not using this.state in updateServerWidgets.
1769 The only reason widgetsToUpdate has correct values for updateServerWidgets is because widgetsToUpdate is array of objects that are the same as widgets.  You then mutate individual widget objects in widgets (that are the same object).  This code can look un-intentional.
Here is one option that does not mutate.  Its not ideal to also have side affects in the map but it works.
const {widgets} = this.state.widgets;
const newWidgets = widgets.map((w, i) => {
    if (_.isEqual(w.layout, layout[i])) {
        return w;
    } else {
        const newWidget = {...w, layout: layout[i]};
        this.serveItUp(`${this.state.theURI}/update-widget?widgetId=${newWidget.id}`, newWidget);
        return newWidget;
    }
});
this.setState({
    widgets: newWidgets,
    layout: layout,
});

You could also be more simple here and then add code for componentDidUpdate.  The code here would be
onLayoutChange = layout => {
    if (this.state.haveWidgets) {
        this.setState({
            widgets: this.state.widgets.map((w, i) => ({...w, layout: layout[i]})),
            layout: layout,
        });
    } else {
        this.setState({layout: layout});
    }
};

And then
componentDidUpdate(prevProps, prevState) {
    if (prevState.widgets !== this.state.widgets && prevState.widgets.length !== this.state.widgets.length) {
        this.state.widgets.forEach((w, i) => {
            if (!_.isEqual(w.layout, prevState.widgets[i])) {
                this.serveItUp(`${this.state.theURI}/update-widget?widgetId=${w.id}`, w);
            }
        });
    }
}

The benifit to the second option is that you can also remove
if (changed) {
this.updateAllServerWidgets();
}


⚠ Fox Sports has degraded performance

In 77500eb, Fox Sports (https://foxsports.com) experienced degraded performance:

HTTP code: 200
Response time: 2946 ms

Resolved: Fox Sports performance has improved in e0f1fb6.


Porcupine Issue: two-part wake-words in python demo

Expected behaviour
For two-part wake words like "hey edison", it should print:
Listening {
hey edison (0.5)
}
[....] Detected hey edison
Actual behaviour
Listening {
hey (0.5)
}
[....] Detected hey

fixed


Morgan/upstream fix

Types of changes

fix residual fuse mountpoint after graceful shutdown
fix compatibility to image without ext table for blob cache
fix not reuse blob cache of old version
fix: bad read by wrong data region

Unit test failed, PTAL.

Unit test failed, PTAL.

This pr is in no contact with block device. Please help seek for problems of ut. @jiangliu


affiliation: field for postal address

Affiliation information contains:

information about the institution
information about the department, including the postal address of the author

data coming from ringgold only contains info about the institution, this includes a postal code that may be different than the postal code of the author department.
Author address (departement+ street +postal code + city) can be added in orcid, manually.
How should we handle that, how does jats4r do it?

#26:
(add details for other entries that go in the free text in jats4r.)

Related: jgm/pandoc#6867


Add @wesleimp as member

There are currently no plans to add new global members. Just create a team with the name of the plugin you want to add and add yourself there.

There are currently no plans to add new global members. Just create a team with the name of the plugin you want to add and add yourself there.


Add tui-journal to APPS.md

tui-journal - https://github.com/AmmarAbouZor/tui-journal
Still on tui instead of ratatui, but using the library nonetheless

Hey, thanks for your PR! Is there any plans to migrate to ratatui? Let us know if we can help with anything!

Aren't we putting the apps in the wiki now ? or are we doing both ?

I think we can remove APPS.md and only use the Wiki.

APPS.md no longer exists, please use the Wiki.


Data from field name, quantity,price and weight get removed from variants of configurable product if user entered a product url that already exist and click on save.

Framework Version: 0.1.6

Fixed


Use the hostApp releases for os.download() & os.getSupportedOsUpdateVersions()

These are cloud only atm, so it's non-breaking to switch them to rely on the hostApps instead of /device-types/v1.
Change-type: minor
Signed-off-by: Thodoris Greasidis<EMAIL_ADDRESS>
Contributor checklist

[ ] Includes tests
[ ] Includes typings
[ ] Includes updated documentation
[ ] Includes updated build output

@balena-ci I self-certify!


Updated to 1.3.9 Beta

I have updated this to work with the  latest beta 1.3.9

These changes are included in the newer pull request #4, so it's safe to close this one.


Expose handler classes in top level import

Fix #47
Maybe also need to update doc? 🤷♀

Codecov Report

Merging #58 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #58   +/-   ##
=======================================
  Coverage   82.05%   82.05%
=======================================
  Files          14       14
  Lines         758      758
=======================================
  Hits          622      622
  Misses        136      136

Continue to review full report at Codecov.

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

Yes I think we should update the API docs for this too (dropping the github_api in doc/api.rst)

Bonus: I also cleaned up import baldrick namespace. It was messy and my OCD was tingling. With this patch, it now looks like:


compilation fail with g++13

the problem is in the dependency of Catch2, the latest version of Catch2 has fixed it.
❯ cmake --build .
[ 23%] Built target c-ares
[ 29%] Built target libcoro
[ 31%] Built target ahost
[ 33%] Built target adig
[ 35%] Built target acountry
[ 35%] Building CXX object _deps/catch2-build/src/CMakeFiles/Catch2.dir/catch2/internal/catch_clara.cpp.o
In file included from /home/J1senn/Desktop/project/cpp/libcoro/build/_deps/catch2-src/src/catch2/internal/catch_clara.cpp:12:
/home/J1senn/Desktop/project/cpp/libcoro/build/_deps/catch2-src/src/catch2/../catch2/internal/catch_string_manip.hpp:47:14: error: ‘uint64_t’ in namespace ‘std’ does not name a type; did you mean ‘wint_t’?
   47 |         std::uint64_t m_count;
      |              ^~~~~~~~
      |              wint_t
/home/J1senn/Desktop/project/cpp/libcoro/build/_deps/catch2-src/src/catch2/../catch2/internal/catch_string_manip.hpp:51:42: error: expected ‘)’ before ‘count’
   51 |         constexpr pluralise(std::uint64_t count, StringRef label):
      |                            ~             ^~~~~~
      |                                          )
make[2]: *** [_deps/catch2-build/src/CMakeFiles/Catch2.dir/build.make:328: _deps/catch2-build/src/CMakeFiles/Catch2.dir/catch2/internal/catch_clara.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:1213: _deps/catch2-build/src/CMakeFiles/Catch2.dir/all] Error 2
make: *** [Makefile:166: all] Error 2

Hmm, I think the latest release still shows this problem on g++13?  Did you just switch to the latest devel branch set of amalgamated files?  Catch v3.3.2 doesn't seem to work.

Looks like its maybe just fedora 38 (latest) with an issue.


Automatically get host and port from an environment variable

It would be useful to be able to do
qc.QdrantClient()

where the client will check if there the environment variables "QDRANT_IP, QDRANT_PORT, QDRANT_GRPC_PORT" present and if so will use those value.

Closed in favor of url param, please consider using
qc.QdrantClient(url=os.getenv("QDRANT_URL"))


Add your name on position nr. 7

In index.html add your name to the list.

I will take this one...  7 is my favourite number ;-)


python3Packages.recipe-scrapers: add missing isodate dependency

https://hydra.nixos.org/build/281489290

Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 363242

x86_64-linux

:white_check_mark: 7 packages built:

mealie
mealie.dist
python311Packages.recipe-scrapers
python311Packages.recipe-scrapers.dist
python312Packages.recipe-scrapers
python312Packages.recipe-scrapers.dist
tandoor-recipes

Thank you :-)


Implement Pulling Patch Data from Azure Data Blob Instead of Web Server

It is desirable to expand patcher functionality to be able to source data assets from an azure data blob. This is desirable for these reasons:

reduces bandwidth requirements/congestion on primary web server
azure data blob is more suited to large / rapid file transfer than a web server

Unfortunately, due to the relative infancy of the Rust:Azure SDK, it would be recommended to postpone work in this area until the SDK becomes more stable to avoid future re-work.

Hi,
Indeed, it would be great to support more file storage options for serving patches.
I would definitely wait until a proper v0.1 is released before working on that integrating that crate.

Feel free to assign it to me.  I'll sit on it for now and begin work when the crate becomes a more mature.


Fix some docs phrasings and headers

...as mentioned in a livecoding session just now...
Pre-requisites
Please ensure you have done the following:

[x] I have read the CONTRIBUTING.md document.
[x] If my change requires a change to docs, I have updated the documentation accordingly.
[ ] If I have added an integration, I have updated the integrations table.
[ ] I have added tests to cover my changes.

Types of changes

[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)
[ ] Other (add details above)

I added @fa9r as a reviewer as you made this review from my PC :D. @AlexejPenner maybe also take a look?

@AlexejPenner  and @fa9r please do take a look when you have time


Is anybody earning from this

Please help me . I want to know if you are making money doing this.

I was restricted when i withdrew $10

Me too, just got banned


Add lending-iter feature

This show how GATs can be used for our problem that lifetime of paquet is link to capture lifetime. However, this is behind a lending-iter feature that I think should be considered not a part of our public api.

Now complete or still work in progress?

I finally got around to having a look. Thanks for the PR! Looks good to me. Just fix a few things for consistency and I will merge.

Oh, and please add a note to the CHANGELOG. After I merge, I will release 1.1.0 with this feature.

Oh, and please add a note to the CHANGELOG. After I merge, I will release 1.1.0 with this feature.

I already did no ?

Oh, and please add a note to the CHANGELOG. After I merge, I will release 1.1.0 with this feature.

I already did no ?

Ah, sorry. Yes, you did. It just occurred to me later and I didn't check.

Looks good to me. Thanks! I will merge now.


Add tests for the runtime API

Codecov Report

Merging #12 into master will increase coverage by 9.09%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master      #12      +/-   ##
==========================================
+ Coverage      75%   84.09%   +9.09%
==========================================
  Files           8        8
  Lines          44       44
  Branches       23       23
==========================================
+ Hits           33       37       +4
+ Misses          4        1       -3
+ Partials        7        6       -1

Impacted Files
Coverage Δ

src/runtime.js
100% <0%> (+80%)
:arrow_up:

Continue to review full report at Codecov.

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


#1634: Use repr instead of str as the response body can have non-ascii chars

See issue #1634

This change is

Could we get a test to verify this?

Following up on old PR. I am not able to reproduce the issue. Could we get a test for this ?


Uptime count is wrong when scaling up a new instance?

When you increase the number of running instances using the "emp scale" command the up time counter of the new instance seems to borrow from one of the existing ones instead of starting from 0.
e.g.
Alexs-MBP-2:python-microservice alexs$ emp scale -a doppelganger web=2
Scaled doppelganger to web=2:1X.
Alexs-MBP-2:python-microservice alexs$ emp ps -a doppelganger
v26.web.6f06054d-bb78-4231-abd8-3bed4af2f43c  1X  RUNNING  23h  "./bin/web"
Alexs-MBP-2:python-microservice alexs$ emp ps -a doppelganger
v26.web.6f06054d-bb78-4231-abd8-3bed4af2f43c  1X  RUNNING  23h  "./bin/web"
v26.web.a3eaa100-7d92-4909-860f-73dc5b7b59a2  1X  RUNNING  23h  "./bin/web"

The uptime count is currently the time from when the task definition was submitted. This requires changes from ECS to support timestamps for state changes. Doesn't seem to be a lot that we can do about this right now unfortunately, unless I'm missing something in the ECS API.
/cc @euank

The ECS API, indeed, doesn't offer that information. I'll add that as a feature request.

Thanks @euank


Not able to fetch Audiobook URL

Script is timing out after waiting to fetch the Audiobook URL. Happening with all books and multiple libraries
`Initializing webdriver.
Reading library card configuration file.
Loading library page for 'wccls'
Starting signin to Washington County Cooperative Library Services.
Library card number entered.
PIN entered.
Sign In completed.
Loans page loaded.

Beneath Stone and Sacri
Enter the number of the desired title: 1
Opening Audiobook.
Retrieving audiobook url...
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
waiting
Timed out waiting for audiobook url.
Page says: An error was encountered while opening this audiobook.`

Oh no, I'm sorry this is happening for you.   I discovered this problem and reported it as issue #17 so you can read about it there.  It's possible that Libby is blocking users who are downloading MP3's with libbyfetch.  (See 'Warning' in README).  If this is true that would be very bad. I have installed a fix 57c364b418224680316bf4113c581bddd43f26c5 so that it won't timeout and instead displays an error.  But that doesn't repair the underlying issue, which is that Libby is not allowing your card to access materials.  Try to manually play an audio book and see what happens.

Duplicate of #17

Hi @jdalbey sorry for opening this issue as this started happening suddenly and I am using it with v1.04 so don't think it is related to #17.

@jdalbey I am able able to play the audiobook on libbyapp.
Also, this is happening on multiple cards, tried it on multiple devices to rule out IP blocks.
I am not sure if this is something about the card being blacklisted by Overdrive.

If needed, I can share the library card details to test this further.

@JaegerMaster Thanks for the additional info.  I see you are able to play the audiobook on libbyapp. So that sounds like your issue is slightly different than the one previously reported so I'm going to reopen this issue.

@JaegerMaster You said that "this started happening suddenly" so you were able to download MP3 files with previous versions of libbyfetch?  Did the error occur when you updated to the current version?
I'm not able to reproduce this error myself so if you are willing to share the library card that is causing the problem I can investigate.  Email to me at<EMAIL_ADDRESS>

Hi, I was able to download with 1.04 as well. Worked with 2-3 books. Then suddenly started happening with the 4th book and now happens with everything. I tried 2 different cards. Will try with a 3 card and let you know.
Will mail you the card number.

That's odd that it worked for a few books then stopped.  Quite a head scratcher.

Not working with the 3rd card as well. Don't think this is an IP block as didn't work on a different machine as well. If you can add a more detailed log option, I can help with the logs.

@JaegerMaster  Thanks, at last I was able to reproduce the error.  I've gathered these two examples for diagnosis:

Here's the developer console log from a successful audiobook load after logging in manually (Firefox).

Here's a log of HTTP Requests captured by libbyfetch form a run that produced "An error was encountered ..." message trying to open an audiobook.

By studying these and looking for discrepancies I hope to identify why the manual process works but libbyfetch fails.

Thanks @jdalbey for looking into this.

Were the books that were tested already checked out and accessed at least one time prior via libbyapp.com or Overdrive, and prior to trying any of the LF scripts?  I seem to recall I had the same thing going on until I checked out a new audio book and tried to access via libbyapp.com.  At that point could not listen via the browser or access via LF.

@flyswimr Very interesting.  To clarify, you were able to listen to audiobooks via libbyapp.com, and you tried Libby Fetch and it worked okay?  But after checking out a new audiobook, you were no longer able to access any loans via libbyapp.com?

Yes. Tried playing the book on libbyapp and then downloading using the script. Didn't work.

I disabled headless mode so I could see where it failed and it displays the audiobook book but underneath says "An error occurred while opening this audiobook."

This audiobook plays perfectly on a normal chrome window, just not the libbyfetch window.

@lsixecho Thanks for confirming this behavior. This seems like the same error others are experiencing. When in headless mode libbyfetch will display the error after attempting to retrieve the audiobook URL times out (as seen in the initial reporting of this issue).
Do you recall if you acquired the loan of this audiobook BEFORE you tried to download any other books with libbyfetch?  Or had you downloaded other audiobooks with libbyfetch and then subsequently acquired this one on your "shelf".
I'm curious what will happen if you now acquire a new audiobook loan and try to play it manually (not with libbyfetch).  Does that work?  Are you able to checkout additional audiobooks and listen to them through the web browser?  If you have time to try it let me know what happens.

@lsixecho Thanks for confirming this behavior. This seems like the same error others are experiencing. When in headless mode libbyfetch will display the error after attempting to retrieve the audiobook URL times out (as seen in the initial reporting of this issue). Do you recall if you acquired the loan of this audiobook BEFORE you tried to download any other books with libbyfetch? Or had you downloaded other audiobooks with libbyfetch and then subsequently acquired this one on your "shelf".
I'm curious what will happen if you now acquire a new audiobook loan and try to play it manually (not with libbyfetch). Does that work? Are you able to checkout additional audiobooks and listen to them through the web browser? If you have time to try it let me know what happens.

Ok, I tried another couple audiobooks on different cards and they all have the same waiting/timeout error. I tried playing first, then downloading first alternatively. They all play normally during a default session of chrome, regardless of being played first or download attempted first, so I am guessing it's a selenium issue. I have previously downloaded many audiobooks before this sudden error and none since. Any other ideas for debugging?

@lsixecho Thanks, that's a very interesting report.  It's good that you can still play audiobooks through the browser.  That is no longer working for me; even the browser gives me the "error encountered" message.   If you would like to help debug I could use some logs from using Libby in the browser.  Here are some directions for how to Capture HTTP requests from the browser. If you could capture a complete session using Libby to sign in, go to your loans page, and play an audiobook.  Then post the resulting file containing HAR log as an attachment to a comment here.  That way I can compare a session that succeeds against one that fails and see what's happening.

I found that one cause of "An error was encountered" message when using Libby in the browser is if you have ad blocker or privacy extensions enabled.   Try disabling ad blocker or similar privacy extensions while using libbyapp.com.

I too am experiencing this issue, I can access the books just fine via the app or browser, I have yet to successfully download a book via your program though

I'm seeing this issue as well.  I'm testing on a new Linux VM set up just for this purpose with a fresh install of Chromium, no extensions.  Issue occurs on a book that was already on loan before trying lf for the first time, and one that was borrowed after trying lf, no difference. Both books will play in Chromium normally.

@lsixecho  Thanks for taking time to create these HAR files.  I'm looking into this problem but haven't yet isolated what's going wrong.

@lsixecho Thanks for taking time to create these HAR files. I'm looking into this problem but haven't yet isolated what's going wrong.

I did a lot more testing today with various methods, and I do think they are blocking selenium efforts, to the point that I can no longer even play the audiobook under any circumstances, whereas I was able to play it in the default chrome profile nearly all day. I tried different ip addresses, incognito, tor browser, VPN, different computer on a different ISP, etc and in no method am I able to play it at all anymore, with a new error message "Access to this magazine is not allowed with your active library card." There may be a cooldown period and I have 14 days left with this particular audiobook, so I can try again near the end of that period.
I was attempting to diagnose why a default session would behave differently than a debugging/selenium session. I also tried undetected_chromedriver, all with no success. I really feel that this is the key to solving it. What are they doing to detect the non-user session and how to mask that enough to access the page without it erroring out? I know it's cat and mouse, but the cat is winning right now, and I'm trying to be a good mouse.
Perhaps if this method is stalling out, we could automate the gathering of the mp3 urls and save them to a text file, then automate their download with python. I suspect that if I had a clean card and/or a clean loan, I could step through the audiobook, gather the mp3 locations, and download them, just like your script does, but without the headless selenium automation so the book loads properly. It would be much more manual than the current script, but the failure point is the opening of the book, so if we have to clear that hurdle as a human, at least the tedium of mp3 url gathering, downloading, and renaming could be automated.
Still works with the iPhone app though. 😔

And one more follow up is that my library still has it's overdrive page active (even thought downloads are no longer available in the .odm format). And I can play the audiobook with no restrictions here, performing the same method of inspect tab, chapter skipping, looking for mp3 media, now in the https://odrmediaclips.cachefly.net/ url. I wonder if we could modify the script to use the overdrive site to pull the mp3s, until they shut it down completely.

@lsixecho Thanks for this detailed report.  You have put a lot of effort into this.  I applaud your persistence. I'm sorry that your library card is now blocked from playing audiobooks.  I'm getting that same message about "Access to your magazine ..." which is weird because the loan isn't a magazine.  I'm not so sure they are blocking selenium specifically as it is that the program is failing some kind of authenticaion and after some number of attempts the server blocks that card.
One additional data point: I recorded a script in Selenium IDE that when played, successfully opens the Audiobook player.  But when I export that script to Python it gets an error when attempting to open the player.
Yes, the crux of the technical problem is gathering the URL's.  When I initially coded LibbyFetch the URL's were all sequential (Part-01, Part-02, ...).  But they have recently changed it to add some encrypted string the query parameters to you can't just increment the integer value.  Now you have to gather all the URL's, not just the first one.

Hi, it appears that libbyapp does detect if an automation is being used. I tried it using chromium with and without the webdriver - with the webdriver, I get a similar error and without the webdriver, it appears to be working fine. I tried replacing the selenium webdriver with undetected_chromedriver, but that did not resolve the issue. Sorry, looks like a better option might be to explore using a chrome plug-in.

Is it accurate then that they are now detecting automation with LF, and they weren't a couple of weeks ago?  It also seems that Libby then bans access to materials.  They still allow materials to be checked out using the libby app.
I want to say I remember seeing a chrome plug-in developed but it was abandoned, ostensibly due to Overdrive/Libby detecting that individual mp3 were being accessed due to skippping chapters or something (but also downloading individual mp3s).

I guess you mean this one here: https://github.com/bookbonobo/libby-download-extension - yeah I just tested it. It stopped working about a year ago. Earlier while testing, as I skipped chapters and switched between books, they blocked access to one title for a few seconds. So, there is likely some session monitoring underway as well.

@kailashkalyani Correct.  What is interesting is I was able to use the browser console in Firefox from my library's Overdrive site to locate the cachefly links, open them individually (let them play short time), and then do a save as for each.  And so far not blocked, and why should that happen, they are valid links and the browser allows this.  Am assuming this is similar to what Libby fetch does and session monitoring is in play.  And if developers at Libby are listening - please give a way to play content on smaller devices, mp3 player, Sandisk, etc.  You all might even save some time redesigning your work, and if so, that means there is a demand for the capability.

Yeah it's definitely seeming like there won't be an easy/automated way to download books from Libby, with Overdrive being retired it looks like we're gonna have to look to alternative methods to get mp3s of audiobooks unfortunately

Frankly, it all depends on whether they are using sophisticated pattern
detection systems to analyse session behaviors. If so, then there is not a
lot one can do other than playing the whole audiobook and capturing the
media. And I am inclined to think they do. Look at the tracking available
to you on what segment you listened to and if you skipped forward or
rewound in an audiobook.
https://www.fullstory.com/blog/user-sessions/
On Wed, Dec 4, 2024 at 10:51 PM OGQueenie @.***> wrote:

Yeah it's definitely seeming like there won't be an easy/automated way to
download books from Libby, with Overdrive being retired it looks like we're
gonna have to look to alternative methods to get mp3s of audiobooks
unfortunately
—
Reply to this email directly, view it on GitHub
https://github.com/jdalbey/libbyfetch/issues/23#issuecomment-2518633102,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD4DU46BRRNEDV7ZXFH4KYL2D52N7AVCNFSM6AAAAABSHH4W4OVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMJYGYZTGMJQGI
.
You are receiving this because you were mentioned.Message ID:
@.***>

Is it possible to take a different approach: Have the computer listen to the whole book, in real time? That is, use libbyfetch's chapter parsing, but actually play the audio chapter by chapter? Then grab the audio stream at the OS level or browser level and re-encode mp3s?
For e-books (that I'll only listen to once) I'm not too concerned about quality degradation. And I can wait 10-20 hours for it to happen in the background. Thoughts?

It should actually be easier. In effect you could "mute" your tab, choose
playback speed 2x, hit play and monitor the network accesses - each time a
new cachefly link is made available, download that file. The approach least
likely to be "detected" would be via plugin, I think.
On Thu, Dec 5, 2024 at 12:45 PM AnonJohn @.***> wrote:

Is it possible to take a different approach: Have the computer listen to
the whole book, in real time? That is, use libbyfetch's chapter parsing,
but actually play the audio chapter by chapter? Then grab the audio stream
at the OS level or browser level and re-encode mp3s?
For e-books (that I'll only listen to once) I'm not too concerned about
quality degradation. And I can wait 10-20 hours for it to happen in the
background. Thoughts?
—
Reply to this email directly, view it on GitHub
https://github.com/jdalbey/libbyfetch/issues/23#issuecomment-2520088813,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD4DU47S2VCPBVUKUHDBFY32EA4GLAVCNFSM6AAAAABSHH4W4OVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDKMRQGA4DQOBRGM
.
You are receiving this because you were mentioned.Message ID:
@.***>

Since libbyfetch has stopped working, I've been using the Java script from here: https://remedylegacy.com/Files/LibbyDownload-3.2.zip. This requires you to install Java, open Libby in your browser, go to the audiobook you want to save, open the Developer Tools in your browser, play the audiobook then fast forward all the way to the end, then save the session to a HAR file. The script will then read the HAR file and save the audiobook mp3 files. It takes more work but still works, the step by step details are in a readme file within the zip.

I checked to see if LibbyDownload would work with LibbyDownload using Overdrive w/s (for those that are blocked from using Libbyapp.com).  It doesn't because it is looking for a table of contents.   For now can filter to the individual mp3 files.  Good enough for now.

I use this Firefox/Chrome/Edge extension: https://www.downloadhelper.net/ I have to start playing every file from Ovedrive book's contents page and then download mp3 file. Inconvenient but works so far.

This is absolutely the easiest method so far. I used this extension on Overdrive play (since I am now blocked, seemingly permanently on libby). I would presume it would work the same for Libby, but can't test it.
It's a dead simple solution, easier than getting python working for most people. I assume it's doing what we discussed about grabbing MP3 links from the network tab and displaying in the GUI with a download button.
All I had to do was clean up the extras (for some reasons there were two of everything expect the last chapter/section) and use my preferred app to join the files (which you wouldn't have to do for an mp3 player if you didn't want to).
For me (or until this is further restricted) I will consider this closed with libbyfetch dead, but I am so glad to have alternative now that honestly took me about as much time to run as libbyfetch.
Thank you so much @schuchuva and the team here!

Regarding @raybies808 suggestion about the Java downloader, I took a look at their code and I see that not only does it grab the URL from the HAR file, it also grabs all the request headers.  So when it requests the .mp3 file it can duplicate all the request headers that libbyapp uses.

@isixecho, @schuchuva It does work pretty well on Overdrive, thank you!  It would be interesting to see if it works on Libbyapp.com without triggering adverse consequences.

I made a little tutorial, because I found that downloadhelper extension missed a bunch of files for some unknown reason. I'm not able to test on libby because I am banned because of libbyfetch. I realized that for 4/5 books I tried, downloadhelper missed several mp3s and I had to go back and do it manually anyway, so I made a little tutorial for how I eventually was successful, but it's an ugly tutorial because I threw it together quick and had to blur/crop personal stuff.
It's an uglier method than my last post's praise would seem to indicate, but I'm just happy something works at all!
https://github.com/user-attachments/assets/26af8842-bf3c-40b3-b3db-595b2b7ad0d2

That's good.  I've had the same thing happen when using the provided control on the right hand side that advances "x"m (minutes).  Holding the right arrow on the keyboard down advances 15 seconds at a time but once it goes into repeat mode goes by rapidly enough (and so far haven't missed a file).

I verified and confirm that downloadhelper extension works on libbyapp.com.
@lsixecho - I'm curious how you managed to miss some files with downloadhelper extension. I have another problem - links on overdrive/libbyapp contents page often point to same file - I have to guess and verify link to next file.

I'm not too sure. I had the 19 hour book "On Call" by Fauci to use as a test, and when I downloaded everything in the extension, it added up to only 12 hours. I even watched the helper (you can have it in the sidebar so you can watch new files pop-in) and I would skip to a hour-ish long file that I missed in the first pass, and it would just not see it for some reason. Like I said, this happened with 4/5 books, and only on one of them did it grab everything.
Not too sure if it's something I'm doing wrong, but I don't think so since it won't show as a "found" MP3, at least until I click on the network tabbed one to open it, then it can find it just fine.

Thanks for everyone's input and comments.  I find that download helper is kind of messy, but overall it works.   To avoid downloading duplicate files this is what I do.

Download the first file and note the duration.
Look at the table of contents and start play at that duration and download the 2nd file.
Note the duration of the 2nd file and add it to the first duration.  I do this in a spreadsheet that looks like this:
The cumulative duration tracks really well with the durations on the table of contents:
Its a bit tedious but I end up with a set of files where the total duration matches what Overdrive says.  Would love any suggestions to streamline this process.

one other way to keep track of what parts you have is to look at the GET requests, they have the part number they are requesting.


Post about improvements in "SkoHub Pages"

We should publish a post about https://github.com/skohub-io/skohub-docker-vocabs/issues/17 & https://github.com/skohub-io/skohub-docker-vocabs/issues/21 and promote the pages/docker-based "serverless" service more, preferably with a catchy new name.

[ ] Repo entsprechend umbenennen

Done with #37. Closing.


Expose distinct query via ObjC and Swift APIs

First I'd like to thank you guys for all the incredible work you are doing!
Ability to get distinct and sorted data is vital to my new project. According to this PR the object store is ready so I followed @jpsim's suggestion and exposed it via a new method on Results.
Hope this helps.
To do:

[ ] tests
[ ] documentation

Thanks for the PR and your interest in doing this @qubblr! I've marked this as "in-progress" until you address the tests and documentation items you mentioned. We might want to bikeshed on the naming a bit too, but what you have seems like a good starting point. We'll definitely want to refer to "key paths" and not "properties" though, since we moved our terminology to that a few months ago.
And if the object store implementation doesn't yet support nested key paths (it doesn't appear to at quick glance) we'll need to update that as well.

And if the object store implementation doesn't yet support nested key paths (it doesn't appear to at quick glance) we'll need to update that as well.

It should, AFAICT, since it takes a DistinctDescriptor, which contains a vector of column indexes.

@qubblr I have interest in this feature as well. If you want I can help with tests and docs. Let me know.

This was closed automatically due to my merging of master-3.0 into master. Reopening.

@bdash May I please ask what are the status.  Do we not have a way to filter distinct() ?  Thanks

Can we go ahead and close this since it's handled in #5467


serialization: revive CLAS_NEW

For some reason, we are using experimental features of abapGit.
Some time ago, all class were re-serialized with the serializer
LCL_OBJECT_CLASS_NEW.
After upgrade to 1.60, we started getting an error telling that CLAS
is not supported.
The CLASS NEW serializer became standard and the class has been renamed.
Unfortunately, our xml files still includes reference to the CLASS NEW.
I would just use a sed script, if knew all the affected repositories -
we have plenty of repositories versioned by abapGit.
This patch revives the CLASS NEW. It reports itself as the standard
class, so the CLASS NEW can be removed in year or two when all files
are re-serialized.
See commit 21d22d93f2e52154be0e07da256c7e25f364ca44

Okay, I think you must have been unlucky with the version installed.
Can you help adding a comment in the code that the class is to be deleted sometime, plus a reference to this PR?

Amended.

thanks 😄  merged


Update DOCKER_REGISTRY_URL to the recommended one

The recommended hostname ( https://github.com/docker/hub-feedback/issues/2113#issuecomment-866298153 ) for docker registry is https://registry-1.docker.io.
This was fixed on mybinder deployment https://github.com/jupyterhub/mybinder.org-deploy/pull/1937, updating the URL here so people depending on dockerhub in their own binderhub deployments don't hit this issue.

Thanks, @MridulS. Once merged, can we remove the override from mybinder.org-deploy?

Yeah we could revert https://github.com/jupyterhub/mybinder.org-deploy/pull/1937, let me know if I should do it :)

@MridulS that would be great!


Special characters for file names

Since some versions it is no longer possible to upload files, for example documents with special characters.
The special characters are changed or discarded; special characters still exist in old files that were uploaded in <IP_ADDRESS>, for example, and are also displayed.
This is a problem because, for example, for store owners who attach PDFs to products in the storefront, the file name is not the same. Special characters are displayed for old files, but not for new ones. There should be a standardized configuration here.

[public] Shopware automated response: This issue is linked to the internal issue: NEXT-39831
[created from NEXT-39831, comment 517865]


Conditional access policy has no effect on SMTP

SMTP is mentioned several times in the document but there's no mention of the fact that blocking legacy authentication via a conditional access policy has no effect on SMTP authentication.

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: d7c2489b-dc36-4318-b1c8-dc74e34dd948
Version Independent ID: 19f748cc-89b8-7788-23e2-a4ff33a72bb5
Content: Block legacy authentication - Azure Active Directory - Microsoft Entra
Content Source: articles/active-directory/conditional-access/block-legacy-authentication.md
Service: active-directory
Sub-service: conditional-access
GitHub Login: @MicrosoftGuyJFlo
Microsoft Alias: joflore

This was a configuration error. Please disregard. Closing the issue.

Hi! How did you resolve this issue?


ProcessException: ProcessException: Process "D:\xxx\apptest\android\gradlew.bat" exited abnormally

command
flutter run
exception
ProcessException: ProcessException: Process "D:\projects\apptest\android\gradlew.bat" exited abnormally:

Gradle 5.4.1
Build time:   2019-04-26 08:14:42 UTC
Revision:     261d171646b36a6a28d5a19a69676cd098a4c19d
Kotlin:       1.3.21
Groovy:       2.5.4
Ant:          Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM:          1.8.0_152-release (JetBrains s.r.o 25.152-b01)
OS:           Windows 10 10.0 amd64
The system cannot find the path specified.
Command: D:\projects\apptest\android\gradlew.bat -v
#0      runCheckedAsync (package:flutter_tools/src/base/process.dart:250:5)
<asynchronous suspension>
#1      _initializeGradle (package:flutter_tools/src/android/gradle.dart:210:9)
<asynchronous suspension>
#2      _ensureGradle (package:flutter_tools/src/android/gradle.dart:191:37)
<asynchronous suspension>
#3      _readGradleProject (package:flutter_tools/src/android/gradle.dart:119:31)
<asynchronous suspension>
#4      _gradleProject (package:flutter_tools/src/android/gradle.dart:111:34)
<asynchronous suspension>
#5      getGradleAppOut (package:flutter_tools/src/android/gradle.dart:105:29)
<asynchronous suspension>
#6      AndroidApk.fromAndroidProject (package:flutter_tools/src/application_package.dart:137:23)
<asynchronous suspension>
#7      ApplicationPackageFactory.getPackageForPlatform (package:flutter_tools/src/application_package.dart:37:32)
<asynchronous suspension>
#8      FlutterDevice.runHot (package:flutter_tools/src/resident_runner.dart:288:56)
<asynchronous suspension>
#9      HotRunner.run (package:flutter_tools/src/run_hot.dart:295:39)
<asynchronous suspension>
#10     RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:405:37)
<asynchronous suspension>
#11     FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:545:18)
#12     _asyncThenWrapperHelper.<anonymous closure> (dart:async/runtime/libasync_patch.dart:77:64)
#13     _rootRunUnary (dart:async/zone.dart:1132:38)
#14     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#15     _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
#16     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)
#17     Future._propagateToListeners (dart:async/future_impl.dart:668:32)
#18     Future._complete (dart:async/future_impl.dart:473:7)
#19     _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#20     _AsyncAwaitCompleter.complete (dart:async/runtime/libasync_patch.dart:28:18)
#21     _completeOnAsyncReturn (dart:async/runtime/libasync_patch.dart:294:13)
#22     RunCommand.usageValues (package:flutter_tools/src/commands/run.dart)
#23     _asyncThenWrapperHelper.<anonymous closure> (dart:async/runtime/libasync_patch.dart:77:64)
#24     _rootRunUnary (dart:async/zone.dart:1132:38)
#25     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#26     _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
#27     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)
#28     Future._propagateToListeners (dart:async/future_impl.dart:668:32)
#29     Future._complete (dart:async/future_impl.dart:473:7)
#30     _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#31     _AsyncAwaitCompleter.complete (dart:async/runtime/libasync_patch.dart:28:18)
#32     _completeOnAsyncReturn (dart:async/runtime/libasync_patch.dart:294:13)
#33     AndroidDevice.targetPlatform (package:flutter_tools/src/android/android_device.dart)
#34     _asyncThenWrapperHelper.<anonymous closure> (dart:async/runtime/libasync_patch.dart:77:64)
#35     _rootRunUnary (dart:async/zone.dart:1132:38)
#36     _CustomZone.runUnary (dart:async/zone.dart:1029:19)
#37     _FutureListener.handleValue (dart:async/future_impl.dart:126:18)
#38     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:639:45)
#39     Future._propagateToListeners (dart:async/future_impl.dart:668:32)
#40     Future._complete (dart:async/future_impl.dart:473:7)
#41     _SyncCompleter.complete (dart:async/future_impl.dart:51:12)
#42     _AsyncAwaitCompleter.complete.<anonymous closure> (dart:async/runtime/libasync_patch.dart:33:20)
#43     _rootRun (dart:async/zone.dart:1124:13)
#44     _CustomZone.run (dart:async/zone.dart:1021:19)
#45     _CustomZone.bindCallback.<anonymous closure> (dart:async/zone.dart:947:23)
#46     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#47     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
#48     _runPendingImmediateCallback (dart:isolate/runtime/libisolate_patch.dart:115:13)
#49     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:172:5)

flutter doctor
[✓] Flutter (Channel stable, v1.2.1, on Windows, locale en-PH)
    • Flutter version 1.2.1 at D:\flutter
    • Framework revision 8661d8aecd (3 months ago), 2019-02-14 19:19:53 -0800
    • Engine revision 3757390fa4
    • Dart version 2.1.2 (build 2.1.2-dev.0.0 0a7dcf17eb)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at D:\AndroidSDK
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • ANDROID_HOME = D:\AndroidSDK
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)
    • All Android licenses accepted.

[✓] Android Studio (version 3.4)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 35.2.1
    • Dart plugin version 183.6270
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1343-b01)

[✓] Connected device (1 available)
    • ASUS X00DDA • GBAXHM11M641RDE • android-arm64 • Android 8.1.0 (API 27)

• No issues found!

Hello @rkg0612 !
Did you manage to solve the issue? Does the problem still persist in the latest stable version?

Without additional information, we are unfortunately not sure how to resolve this issue. We are therefore reluctantly going to close this bug for now. Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.


fix: remove unneeded warn log

Since the lintOnStart option is false by default, the user must have intentionally set this configuration option. So we don't need this warn lint clogging up the terminal when it's working as intended.

Thank you for this, was about to do the same thing, but I have low hope this will get merged because there is no activity on this repo...
This package is used by a Nuxt3 ESLint Module and this warning actually overwrites other info in the console making it disappear which is extra annoying...


Feat: login and signup page

Describe the feature
i would like to add login page and signup page for this website
Add ScreenShots

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

and will write  backend for the login page  and signup page

Can I go for frontend part

i can help in the backend. assign this issue to me under gssoc'24

@Rimaru06 , @Paarisha1 , @InshiyaRavat  ....  Please complete it ASAP! because too much duplicate issues on this !

@PatilHarshh I would like to work on this issue as well. I can provide a fully functional: Signup page with authorisation using json web tokens(jwt).

@Rimaru06 , @Paarisha1 , @InshiyaRavat ....  Please complete it ASAP! because too much duplicate issues on this !

Please Update your Local repository!! As Ui has changed

as me and  @InshiyaRavat    both working on the project how will you distribute the point @PatilHarshh

we are working on the backend side

we are working on the backend side

what changes from your side ?

as me and @InshiyaRavat both working on the project how will you distribute the point @PatilHarshh

I will manage it ! According to your work ! Don't worry !

i have created the signup api and added bcrypt

we are working on the backend side

what changes from your side ?

login api , midlleware jwtverify , jwt authentication , zod validation , bcrypt

@PatilHarshh  me and  @InshiyaRavat   ready to make a PR for backend  and  for frontend  i'll make another PR

If the issue is still pending I would like to over this.

Login and signup page is completed just left with the little bit of functionality ,I'll make PR by tomorrow @PatilHarshh

We need to proceed with another !! it is pending over month

@AnanyaJain25  Go ahead for this issue

Hey I am interested in this issue, And I can complete both the front-end and the backend part, I assure you I can complete this as soon as faster


Fixed minor typo in tutorial-kubernetes-deploy-application.md

Fixed a typo in the title.

@DavidMoraisFerreira : Thanks for your contribution to the Azure documentation! The author, @neilpeterson, has been notified to review your proposed change.

@DavidMoraisFerreira  Thanks
#sign-off


Improve vscode integration

This should be more tested on all platforms and better documented (especially how to use the debugging integration), it does not work out of the box on mac for instance...

we have now a dedicated Vscode extension


Zipformer-s model training problem , thanks!

How to fine-tune the zipformer-s model on aishell dataset, is there a pretrained model of zipformer-s on wenetspeech data?

hi, the aishell recipe doesnt have scripts for finetuning by far, you could refer to the ones in the librispeech recipe
there is no pre-trained zipformer-s wenetspeech model


mysql-connection with python3 and socket

python3 needs the package python3-pymysql.
ubuntu uses auth_socket for root@localhost:
https://askubuntu.com/questions/766334/cant-login-as-mysql-user-root-from-normal-user-account-in-ubuntu-16-04

This change would assume you're running Python 3, which the example in the book does not yet do... I will leave this PR open for now, but I'm considering whether I want to make sure we can do this without adding a bunch of manual configuration for the socket...


Add release documentation

This is documenting the release procedure normally followed for containerd releases

LGTM

Codecov Report

Merging #2975 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master    #2975   +/-   ##
=======================================
  Coverage   43.98%   43.98%
=======================================
  Files         102      102
  Lines       10873    10873
=======================================
  Hits         4782     4782
  Misses       5358     5358
  Partials      733      733

Flag
Coverage Δ

#linux
47.63% <ø> (ø)
:arrow_up:

#windows
41.19% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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


New Component: Split button

Would be great to see a split icon as well when adding this, vscode has one in the terminal window for adding a new terminal:


Can't use on Linux kernel version after 4.4

Required Info

Camera Model
SR300

Firmware Version

Operating System & Version
Ubuntu 16.04 LTS (kernel version 4.10)

librealsense version
v1.12.1

pyrealsense version
2.2

When I tried to install pyrealsense with the legacy librealsense (v1.12.1, the latest version that we can use with pyrealsense) based on the manual (https://github.com/IntelRealSense/librealsense/blob/v1.12.1/doc/installation.md), the installation fails when patching uvcvideo module (when running ./scripts/patch-uvcvideo-16.04.simple.sh). This is because this patch isn't applicable for the kernel after 4.4 version.
I think this is a known issue, but what is the recommendation when having this issue? Use the old kernel version or use pyrealsense2 from the latest librealsense?

I can confirm, this is a librealsense problem. Had to change my kernel also back to 4.4.


Improve installation instructions on Mac

We generate binaries for Mac in releases but I was assuming that Mac users would know how to run those binaries and maybe it is not so obvious?
Maybe we should improve the README instructions explaining how to install those binaries and run them on a Mac...

I have encountered some problems when trying to use the binaries.
After downloading both executables in a Mac, I run chmod +x on them and tried to execute via the command line, getting the following output:
./rudof_v0.1.25_aarch64_apple: Bad CPU type in executable
./rudof_v0.1.25_x86_64_apple: Bad CPU type in executable

The machine has the following characteristics:

Processor: 2 GHz Intel Core i4 (4 cores)
Graphics: Intel Iris Plus Graphics 1536 MB
Memory: 16 GB 3733 MHz LPDDR4X
OS: macOS Sonoma version 14.4.1

chmod +x rudof_v0.1.25_aarch64_apple then ./rudof_v0.1.25_aarch64_apple -h worked for me on an M3 Mac. As per its protections, the Mac complains about the unknown program so you have to go into settings and agree to let the OS open it.
Note - I had to get help from someone to give me the chmod command since I know NOTHING about using binaries on a Mac. It would be good to add the chmod instruction to the documentation, which currently says something vague about using a package -- Mac package (Brew) didn't work.

Hi!, Karen!!
Indeed the colleague that checked it in his mac also advised my about the chmod +x and going into settings and agree to let the OS open it.
Thanks for your info and I hope you have fun trying rudof...if you have any issues, don't hesitate to open a issue or just send me a direct email.

Yesterday, I found this command line tool bat which is also written in Rust and it is available in several platforms.
The instructions to install it in Mac suggest either Homebrew or MacPorts. Maybe we should do something like that?

I would think that most - even all -  Mac command line users are familiar with Homebrew. That would help a lot.

Yes it's very easy to declare new Homebrew Tap.
By creating a repo like: https://github.com/MarcAntoine-Arnaud/homebrew-video
You have to ad some ruby files to give dependencies and installation commands.


Fixing some text

There was an error while validating job f729ab1a-88c9-4740-8a9b-4a11b76dc975 Message:
Result status: Failed
There was a problem accessing Github repository 'https://github.com/Microsoft/cordova-docs.git'.
Details:Microsoft.LightweightJobEngine.Core.Language.ContextCommandBase+ContextCommandException:
Result status: Failed
There was a problem accessing Github repository 'https://github.com/Microsoft/cordova-docs.git'.
---> System.AggregateException: One or more errors occurred. ---> System.ArgumentException: Error clonning repository ---> LibGit2Sharp.NotFoundException: Branch 305 not found. Available branches: origin/master
at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.GetBranch(Repository repo, String name)
at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.<>c__DisplayClass30.<>c__DisplayClass34.b__29(KeyValuePair2 branch)    at System.Collections.Generic.List1.ForEach(Action1 action)    at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.<>c__DisplayClass30.<CloneRepository>b__28()    at Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling.RetryPolicy.<>c__DisplayClass1.<ExecuteAction>b__0()    at Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling.RetryPolicy.ExecuteAction[TResult](Func1 func)
at Microsoft.Practices.EnterpriseLibrary.TransientFaultHandling.RetryPolicy.ExecuteAction(Action action)
at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.CloneRepository(String url, IDictionary2 branches)    --- End of inner exception stack trace ---    at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.CloneRepository(String url, IDictionary2 branches)
at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.CloneRepository()
at Microsoft.DPS.Services.LibGit2SharpSourceControlProvider.GetVersionAsync(String path)
at Microsoft.DPS.Commands.IdentifyDocumentsToPublish.CheckExternalServicesCommand.Do(IDictionary2 context)    --- End of inner exception stack trace ---    --- End of inner exception stack trace ---    at Microsoft.LightweightJobEngine.Core.Language.ContextCommandBase.ThrowIfErrorsLogged()    at Microsoft.DPS.Commands.IdentifyDocumentsToPublish.CheckExternalServicesCommand.Do(IDictionary2 context)
at Microsoft.LightweightJobEngine.Core.Language.JobWorkflow1.RunCommands(Guid jobId, IDictionary2 context, CancellationTokenSource cancelSignal)


Lack of coloring for HTML

Here are 2 screenshots comparing Gruvbox with Darcubox. This is just an example, but I find Darcubox really poor. in that regard Most things are not colored yet.
Gruvbox:

Darcubox:

I do really like Darcubox though. It is becoming my favorite colorscheme! If support for that were added, Id be using it 100%. I also find that sometimes, even in Javascript, it is missing some syntax?

Hi! I've added highlighting to the html tags and javascript attributes which I think can improve readability a bit.

before
Now