[BUG] PAT not being updated after tspcommand

Bug description:
Changes in the PAT are not reflected unless the last service in the list of PMT plugins is updated.
How to reproduce:
Note: This sample code sets up services 0x1, 0x2 and 0x3 and updates them to be 0x4, 0x5, and 0x6 respectively. It then updates services 0x4, 0x5, and 0x6 back to their original services 0x1, 0x2, and 0x3 respectively.
Execute the following (sets up services 0x1, 0x2, and 0x3):
tsp --control-local localhost --control-port 8000 -v -b 41000000 -I null -j -O ip localhost:8999
-P pat -c
-P regulate
-P merge -j --no-psi-merge --ignore-conflicts -p 0x1-0x20 -d 0x0 -d 0x21-0x1FFE "tsp -v -b 3000000 -I file -i C:\files\file_a.ts -P regulate"
-P pat -c
-P mux -b 2000000 C:\files\file_0x1.ts
-P pat -c -a 0x1/0x21
-P pmt  -c -a 0x500/0x5 -s 0x1 --pcr-pid 0x1fff
-P mux -b 1000000 C:\files\file_0x2.ts
-P pat -c -a 0x2/0x21
-P pmt -c -a 0x501/0x5 -s 0x2 --pcr-pid 0x1fff
-P mux -b 1000000 C:\files\file_0x3.ts
-P pat -c -a 0x3/0x21
-P pmt -c -a 0x502/0x5 -s 0x3 --pcr-pid 0x1fff

execute the following (changes services 0x1 to 0x4, and 0x2 to 0x5):
tspcontrol -t localhost:8000 restart 6 -r 0x1 -c -a 0x4/0x21
tspcontrol -t localhost:8000 restart 7 -r 0x500 -c -a 0x500/0x5 -s 0x4 --pcr-pid 0x1fff

tspcontrol -t localhost:8000 restart 9 -r 0x2 -c -a 0x5/0x21
tspcontrol -t localhost:8000 restart 10 -r 0x501 -c -a 0x501/0x5 -s 0x5 --pcr-pid 0x1fff

Expected behavior:
PAT should show PMTs with new services. 0x1 should now show as 0x4, 0x2 should now show as 0x5, and 0x3 (the last in the list of PMTs) should still be 0x3.
Errors and logs:
PAT still shows services as 0x1, 0x2, and 0x3
If the following command is executed (changes service of the last set of services from 0x3 to 0x6):
tspcontrol -t localhost:8000 restart 12 -r 0x3 -c -a 0x6/0x21
tspcontrol -t localhost:8000 restart 13 -r 0x502 -c -a 0x502/0x5 -s 0x6 --pcr-pid 0x1fff

All services now show 0x4, 0x5, and 0x6
The same issue occurs if you attempt to change 0x4 back to its original 0x1 and 0x5 back to 0x2. The services still shows as 0x4, 0x5, and 0x6. At this point, if you change the 0x6 (the last service) back to its original 0x3, then you'll see all of the the changes, 0x4 is now 0x1, 0x5 is now 0x2 and 0x6 is now 0x3.
Any and all changes made to any services other than the last service in the list of PAT/PMT plugins are not reflected in the PAT. Once the service for the last set of PAT/PMT is changed, all services are reflected correctly.
Environment:

OS: Windows
OS Windows 10
TSDuck full version: 3.30-2710
Installation type: official binary TSDuck-Win64-3.30-2710.exe

Additional information:
I've submitted a bug similar to this before, but this has more detail and uses -P mux as opposed to -P merge. I also added a couple of "-P pat -c" plugins, first after the tsp command, and second after the first merge to make absolutely certain that the PAT exists prior to adding the 3 services (I know that is probably overkill).
I'm attaching a word document that describes this issue in more detail.
PAT Bug.docx

Hi @lmoody1
Could you please post the result of tsanalyze and tspsi for the 4 TS files? A zip archive with 8 text files should be accepted as attachment. If possible, could you also upload the 4 TS files somewhere?

Hi @lmoody1
-P pat -c -a 0x1/0x21
...
-P pat -c -a 0x2/0x21
...
-P pat -c -a 0x3/0x21

Is there a reason why you declare the three services with the same PMT PID 0x21? This is legal but rather unusual. If this is correct, this means that the three services have their PMT on the same PID. Again, nothing illegal, just potential issues.

Hi @lmoody1
Since this problem and its previous variants were around for some time, I looked into it more closely, without the files. In fact, this is not a bug, this is the intended behavior, based on the MPEG-defined role of the "version" field in sections with long headers (PAT, PMT, etc).
The problem can be easily reproduced without any file and without TSReader using the following command:
tsp -v -b 41000000 --control-port 8000 \
    -I null \
    -P regulate \
    -P pat -c -a 1/100 \
    -P pat -c -a 2/101 \
    -P tables -p 0 -a \
    -O drop

You can see the evolution of the PAT section at the end of the pipe in the standard output.
From another terminal:
$ tspcontrol -t 8000 list -v

Executable: /usr/bin/tsp

 0: -I null
 1: -P regulate
 2: -P pat -c -a 1/100
 3: -P pat -c -a 2/101
 4: -P tables -p 0 -a
 5: -O drop

$ tspcontrol -t 8000 restart 2 -c -r 1 -a 5/100  # => PAT still displays services 1, 2
$ tspcontrol -t 8000 restart 2 -c -r 1 -a 6/100  # => PAT still displays services 1, 2
$ tspcontrol -t 8000 restart 3 -c -r 2 -a 9/100  # => PAT now displays services 6, 9

And this is normal. Let's see why.
The ISO 13818-1 standard states that whenever the content of a section with a long header changes (table id and table id extension remaining identical), the version field must be incremented (or change to any other value). This means that any section demux (including the one in TSDuck) considers that, on a given PID, for a given table id / table id extension pair, a section can be safely ignored as long as the version does not change.
In practice, a section demux notifies its client of a new table when all sections are collected for a given table id / table id extension pair with a version number which is different from the previous one.
The pat plugin (and any other similar plugin) uses the same standard algorithm. Each time the section demux notifies the plugin of a new PAT, the requested modifications are applied and the resulting table is cycled in replacement of the previous one.
The initial version of the PAT is zero. The first pat plugin adds service 1 (but does not modify the version). It does that from the beginning. The second pat plugin initiallu receives a PAT with version 0 and service 1. Then, you restart the first pat plugin, removing service 1, adding service 5 but still without version update. The second pat plugin now receives a PAT with sevice 5, but still version 0. The version not being changed, the section demux in the second pat plugin does not notify the plugin of the new PAT. This is not supposed to be a new PAT since its version did not change. The second pat plugin consequently continues to cycle the initially modified table with services 1 and 2.
Now, when you restart the second pat plugin, it restarts from the beginning, resetting its section demux. The first time an input PAT is seen, it contains sevice 5 (and still version 0). Consequently, the second PAT plugin starts cycling a PAT with service 5 and 6.
Quite normal according to MPEG rules.
If you want to verify this, move the tables plugin between the two pat plugins. At this point, you see only one service, number 1. The version of the PAT section is 0. At the first restart -c -r 1 -a 5/100, the PAT section immediately contains service 5 instead of 1. But its version is still 0. The next pat plugin does not see any new version of the PAT and does not generate a new version.
Note that the problem is not the second pat plugin or the pat plugin not being able to do more than what the MPEG standard requires (such as detecting the modification of the PAT content even though the version was not updated). The problem is restarting the first pat plugin, forcing a new content but not a new version. Even if you had only one pat plugin, you would have issues with most receivers. The section demux in most receivers works the same way and would not detect the new PAT if the version number was not increased.
The right way is to force a new version of the PAT each time you modify its content. For instance:
$ tspcontrol -t 8000 restart 2 -c -r 1 -a 5/100 -v 1
$ tspcontrol -t 8000 restart 2 -c -r 1 -a 6/100 -v 2
$ tspcontrol -t 8000 restart 2 -c -r 1 -a 7/100 -v 3

In that case, the second pat plugin is correctly notified of the new version of the PAT and correctly propagates its contents, with its own modification.
Resist the temptation to use option -i or --increment-version. It won't work. This option increments the version based on the input version of the PAT. If the input PAT has always version 0, the output PAT will always have version 1. This means that the second pat plugin will always see version 1 on input, meaning no version change, no trigger.
Also make sure to increment the version in all plugins when you restart it with a new modification of a table, even on the last one in the chain. Again, as explained above, you would only push the detection problem into the receivers.
Admittedly, this is the limitation of TSDuck. This is a very low-level tool which only does what you instruct it to do, even if the result if not compliant with the standards (this is sometimes done on purpose). The price to pay is a thorough understanding of all details in the MPEG/DVB signalization.

@lelegard
Thank you for your response. I really appreciate it. Your recommendation for adding the change of the versions worked well.
Thanks again.

Hi @lelegard
Unfortunately, I just found another issue.
If I run your example tsp command from above and then change the second PAT plugin (changing the version to 2):
tspcontrol -t 8000 restart 3 -c -r 2 -a 6/100 -v 2

The PAT version is 2 (as expected):
* PAT, TID 0 (0x00), PID 0 (0x0000)
Section: 0 (last: 0), version: 2, size: 24 bytes
TS id:       0 (0x0000)
NIT:         0 (0x0000)  PID:   16 (0x0010)
Program:     1 (0x0001)  PID:  100 (0x0064)
Program:     6 (0x0006)  PID:  100 (0x0064)

However, if I then change the first PAT plugin (changing the version to 3):
tspcontrol -t 8000 restart 2 -c -r 1 -a 5/100 -v 3

The PAT version remains 2:
* PAT, TID 0 (0x00), PID 0 (0x0000)
Section: 0 (last: 0), version: 2, size: 24 bytes
TS id:       0 (0x0000)
NIT:         0 (0x0000)  PID:   16 (0x0010)
Program:     5 (0x0005)  PID:  100 (0x0064)
Program:     6 (0x0006)  PID:  100 (0x0064)

Performing the exact same steps in reverse order works as expected.
The ability to change any existing PAT entry at any time in any order is a requirement for our application.
Thanks.

You are mixing everything here.

You inject your PAT on PID 1000 instead of 0
Your XML PAT says service 0x1 on PMT PID 100 (decimal)
Your pat plugin in second command says service 0x1 on PID 0x21
Your pat plugins in second command still declare the two services on the same PMT PID.
Your PAT bitrate is probably too high (typically 15 kb/s for 10 PAT per second)


Incorrect upvote and downvote counts

I don't know how this happens, just that it is happening, and happening as recently as this week.  In our busy instance, we currently have 14 comments and one post with a negative number in either upvotes or downvotes.  One comment I examined has upvotes set to -2 and downvotes set to 2, and three related SubPostCommentVote entries, two with positive set to 1 and one with positive set to 0.

This is a race condition that we've managed to mitigate but not completely eliminate. Happens when two requests change a vote very close one to another. One possible fix is to rate-limit the voting endpoint to maybe 1 request every 0.5sec? The other is to add locks

Or just don't post controversial stuff. :P

Banning people with broken mouses that double-click everything works too

I dug into the logs on a comment that had negative downvotes and found a user who managed to click upvote 8 times and downvote once in slightly over a second, which supports the race condition explanation.

Our rate limiter lets you limit things to 2/second but not 1/0.5 seconds, and 2 per second would still allow two requests in rapid succession possibly triggering the race condition.  And it would also probably be noticed by people who want to upvote several comments quickly.  We could also have the front end vote function limit voting by keeping a map of ids to booleans and using it to prevent a new POST from being sent before the previous one on that comment or post has received a response.


Organize Repository

Alex said we have some strange organization, particularly with our MVC folders. We need to go through and find the logical place layout for our code.
From the feedback:

not sure that ClaimDateSorter should be in the Controllers package. Maybe Models
ClaimListSingleton should probably be a model, too
a few things in surprising places. If you want to use folders like that, which is nice, be careful not to put things where they don't belong. You can always have classes that aren't in one of the MVC folders.

Claim date sorter can be part of the claim model. Java has quick ways to
sort lists. We can use those.
On Mar 5, 2015 7:11 PM, "bkhunter"<EMAIL_ADDRESS>wrote:

Alex said we have some strange organization, particularly with our MVC
folders. We need to go through and find the logical place layout for our
code.
From the feedback:

not sure that ClaimDateSorter should be in the Controllers package.
Maybe Models
ClaimListSingleton should probably be a model, too
a few things in surprising places. If you want to use folders like
that, which is nice, be careful not to put things where they don't belong.
You can always have classes that aren't in one of the MVC folders.

—
Reply to this email directly or view it on GitHub
https://github.com/CMPUT301W15T13/TravelPlanner/issues/143.

Excellent. As long as everything makes sense, we'll be fine I think.


Amendments and Supporting information

Change: Some typos, uppercase
Added: New Talk IT Author and British Beekeeper.
Added: Additional supporting information Type 1 and Type 2 hypervisors, and more examples.

Please complete requested changes and this will be merged.

Please complete requested changes and this will be merged.

what changes are required ?

Oops @closebracket, if you tried to leave a review it didn't go through :slightly_smiling_face:

My bad. Using the mobile app. Thought adding the comments was enough!

Please complete requested changes and this will be merged.

what changes are required ?

Pushed now. Sorry about that.

Yes, I've just spotted this.
Category corrected : - Hypervisors and Virtual Machines, the main category was already changed, just the main link.

Looks good to me


fix: Add googleapis as dep in buf.yaml

Without this buf generate fails as it cannot find import "google/api/annotations.proto" in proto/transfer/v1/query.proto.

@pr0n00gler let's merge it?

@apollo-sturdy thank you!


ImportError: DLL load failed with error code<PHONE_NUMBER> while importing _pywrap_tensorflow_internal

Traceback (most recent call last):
File "C:\Users\风中叶子\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in
from tensorflow.python.pywrap_tensorflow_internal import *
File "C:\Users\风中叶子\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in
_pywrap_tensorflow_internal = swig_import_helper()
File "C:\Users\风中叶子\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "F:\python\lib\imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "F:\python\lib\imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: DLL load failed with error code<PHONE_NUMBER> while importing _pywrap_tensorflow_internal
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "demo5.py", line 2, in
import tensorflow as tf
File "C:\Users\风中叶子\AppData\Roaming\Python\Python38\site-packages\tensorflow_init_.py", line 41, in
from tensorflow.python.tools import module_util as module_util
File "C:\Users\风中叶子\AppData\Roaming\Python\Python38\site-packages\tensorflow\python_init.py", line 50, in
from tensorflow.python import pywrap_tensorflow
File "C:\Users\风中叶子\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\pywrap_tensorflow.py", line 69, in
raise ImportError(msg)
ImportError: Traceback (most recent call last):
File "C:\Users\风中叶子\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\pywrap_tensorflow.py", line 58, in
from tensorflow.python.pywrap_tensorflow_internal import *
File "C:\Users\风中叶子\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 28, in
_pywrap_tensorflow_internal = swig_import_helper()
File "C:\Users\风中叶子\AppData\Roaming\Python\Python38\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 24, in swig_import_helper
_mod = imp.load_module('_pywrap_tensorflow_internal', fp, pathname, description)
File "F:\python\lib\imp.py", line 242, in load_module
return load_dynamic(name, filename, file)
File "F:\python\lib\imp.py", line 342, in load_dynamic
return _load(spec)
ImportError: DLL load failed with error code<PHONE_NUMBER> while importing _pywrap_tensorflow_internal
Failed to load the native TensorFlow runtime.
See https://www.tensorflow.org/install/errors
for some common reasons and solutions.  Include the entire stack trace
above this error message when asking for help.

@1619513467 ,
In order to expedite the trouble-shooting process, could you please provide the following information
OS Platform and Distribution (e.g., Linux Ubuntu 16.04):
Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device:
TensorFlow installed from (source or binary):
TensorFlow version:
Python version:
Installed using virtualenv? pip? conda?:
Bazel version (if compiling from source):
GCC/Compiler version (if compiling from source):
CUDA/cuDNN version:
GPU model and memory:
and the exact sequence of commands / steps that you executed before running into the problem

Looking at the error log, seems like it is similar to this issues and let us know if it helps.Link1,Link2.
Thanks!


feat: Add shorter version of Docker and Kubernetes installation

Added a component for hiding the footer, top bar, and edit page link for selected pages. - Done
Added initial draft for docker business edition installation - Initial Review
TO - DO
Add a shorter version for Kubernetes installation
Add a shorter version for Docker Upgrade to Business Edition
Add a shorter version for Kubernetes Upgrade to Business Edition
Add a new docker-compose.yaml file with BE image
Create bitly link for the docker-compose.yaml file.

@danciaclara and @pranayagarwal96 - Initial version for look and feel.

@danciaclara and @pranayagarwal96 - The PR is available for final review.
@pranayagarwal96 - Please confirm if the pages are embedded in the customer portal deploy preview, so that we can do a end to end test and modify any styles if needed.

@sharat87 - This is ready for technical review.

Changes requested by @pranayagarwal96 -
In place of just numbers 1, 2, etc., can we edit it to show Step 1:, Step 2: (or open to other ideas to make it even more readable)
Indentation for command line instructions across all docs looks slightly off, can we fix that (attaching screenshot as well for reference)?
Last step in the instruction for Docker -> install should say - "Create or sign in to your Appsmith account, and enter your license key to activate the instance"

Changes requested by @pranayagarwal96 -

In place of just numbers 1, 2, etc., can we edit it to show Step 1:, Step 2: (or open to other ideas to make it even more readable)
Indentation for command line instructions across all docs looks slightly off, can we fix that (attaching screenshot as well for reference)?
Last step in the instruction for Docker -> install should say - "Create or sign in to your Appsmith account, and enter your license key to activate the instance"

IMO, adding a line -  Follow the steps listed below to install Appsmith on docker: will be helpful instead of adding Step1, Step2, and more.
Done, will be available with the next commit.
Done, will be available with the next commit.
@pranayagarwal96 - Please confirm point 1.

For screenshots - IMO, it just gives the user a visual representation of what to expect once the instance is up. @danciaclara - Your thoughts.

@sharat87 - Please share your review comments for content here.

On the two pending points above:

@jnikhila your suggestion to add that line instead of Step 1, Step 2 makes sense - let's go ahead with that
Also, cool, let's keep the screenshot then as part of the instructions

@sbalaji1192 - Can we use 'eager loading' for the iframe widget's URL to prevent the flicker of the footer and topbar when they are hidden using JS? CC: @pranayagarwal96

@pranavkanade, for your point about the screenshot at the end, yeah I agree with you, it does not need to be there.
As for the points, we could try doing some CSS around to make it look like something in the screenshots.

@danciaclara yeah the preview above looks great, if that can be easily implemented, let's please do that
Also, on the screenshot, seems like vote is divided whether to show it or not. To go ahead, let's remove it for now, and we can revisit it in the future if we receive opposing feedback

@pranayagarwal96 I managed to get the numbering style on CSS. I have removed the screenshots as well and committed the changes. Not sure of any changes that were being tracked. Hopefully, It's just these two.  @jnikhila can you verify whether these changes have affected other list items on our documentation?

@Pranay105 can you help create bitly links to link the docker-compose.yml files and add it where relevant in this PR so that we can merge it soon?


Need list of community homes

This needs to be as comprehensive as possible a list of senior living facilities, assisted living homes, hospice centers, and senior communities within the path of Hurricane Harvey (all such centers in Texas and Louisiana, essentially. Bonus points for Mississippi) that may be affected by Harvey.
Google Sheet for this data collection is https://docs.google.com/spreadsheets/d/1M0s6mW3SHWslazLE3w4GGLe40ONYbjvLCxibWDhMu2s/
If you'd like to contribute to this issue, please request access to that Google Sheet.
The sheet named locations has the following columns:

location_name: Name of location
location_owner: Service provider (Say, Brookdale Senior Living, Genesis HealthCare, HCR Manorcare, or an empty string if no service provider is known)
id: unique ID of location: lowercase and dashes, should be recognizably related to the location name and service provider, or the location name if no service provider is known: brookdale-corpus-christie, genesis-woodlands, somerset-retirement-village
address: Street address
city: City/town/county name: what would be used for mailing or driving.
county: County of facility (useful because evac orders are by-county, but harde to automate)
state: state
zip: 5-digit zip code
phone: Contact phone number
latitude: optional, should be latitude of location
longitude: optional, should be longitude of location
mpn: Medicare Provider Number, if known.

The sheet named locations_statuses has the following columns:

id: unique ID of location, from the locations table
date: day of contact, in YYYY-MM-DD format
time: time of contact, in East-coast time, in 24-hour form HH:MM: 13:32 is 1:32 p.m.
color: status color, determined by whoever contacted the location:

green: fully operational
yellow: affected by storm but still open: service reductions, canceled activities
red: phone lines out, news reports significant damage, flooded, destroyed
grey: certified evacuated

status: status message at contact: this should be something along the lines of "I called at 4:27 p.m. Eastern and received a phone robot message saying that the center was open with full service" or "I called at 5:30 p.m Eastern and the line was dead" or "I called at 7:37 p.m. Eastern and spoke with Mary, who said that they had lost paoer but had a backup generator powering the refrigerators for food and had bottled drinking water available for residents.

Ooh. Might be a starting point. Going to go explore. straps on miner's helmet and switches on lamp https://data.medicare.gov/data/nursing-home-compare

Also: Updated list of cities & towns being evacuated for Harvey: http://www.mysanantonio.com/news/local/article/Here-are-all-the-places-being-evacuated-due-to-11956084.php

Issue description has been updated with sheet link, column keys.

Excellent. I started work before I read your most recent comment, but you can follow the trail of breadcrumbs from the commit/issues I've linked here. I'm starting out by using Medicare.gov data, and paring that down to the list of counties and cities with evacuation orders. Even after I do that, it will still need to be matched up with the particular data format you've laid out above. I'll be working with .csv files in the /data folder of my own fork of the repo until I get things into better shape, with the idea that the data will eventually live in the Google Sheet you've linked here.
One suggestion: it turns out facilities have unique ids in the form of Medicare Provider Numbers.  It might be useful to use these because if we do, we could then add an extra layer of information -- nursing homes and assisted living facilities that have been fined for violations of federal guidelines.

Oooh, Medicare Provider Numbers is an excellent idea! I'll add a column for that in the sheet, but I think that the core IDs used for matching between the two tables and for the URLs of the per-site status pages should be human-readable.
I ended up splitting address into address, city, state, and zip.

OK. I am continuing to work on the dataset -- I'm using the census geocoder to match county names with our city/state pairs so we can match it up with evacuation orders.  Lots more detail in the commit message above.

psst @benlk take a look at the most recent commit message ^^

I'm going to take a little break and then return to this. Ben, you can feel free to grab any useful files from my fork of the repo, but let me know if you're working on it. If I don't see a note here, when I return, I'm going to continue working on it. Unless something better occurs to me, I may take a more manual approach -- just getting a list of the names of cities in evacuating counties, sifting and sorting my csv, and copy/pasting facilities into the Google Sheet.

Sorry for the late reply - thank you for trying the geocoding stuff. It's not essential; just a nice-to-have in case this ends up including a map of affected locations.
If you put the data in the sheet now, we can start doing county stuff by hand, or see if someone wants to tackle adding counties.

@benlk Howdy! Hey, I now have an updated and geocoded list of nursing homes in areas with formal evacuation notices. It turns out to be a relatively small number of facilities (32). The largest chunk are located in Corpus Christi. We would get a lot more if we included Houston, of course, but as far as I can tell, Houston is not under a formal evacuation order.  Let me know if you want to include cities that are in the path but not under evacuation and I can take a look at what might be involved in generating a list of facilities for that.

PS: Take a look at my most recent commit message for more details. There are some questions about what to include in "facility owner" column.

Yeah, I wanted to include pretty much everything that's going to get rained on this week, to include all of Texas and Louisiana, and maybe parts of Mississippi. At a minimum, we should include the Houston area, as that's part of the most-rain area on the weather maps. But this group is a good start.

https://github.com/lisawilliams/harvey-senior-homes/commit/89de8d7aef69d4f370404d4d15b212b468ef54ae

Your concerns about "facility owner" are valid; I had thought that most places would have just one owner but that is now proven to be wrong. We could limit that to majority-owner companies, maybe?It would need some caveats on the reader-facing side, for sure.

WAR AND PEACE as commit messages :D
I can dig in to Houston. That will build the list quite a bit. It would actually help to have someone from Texas sanity-check the list.

OK, have started to build out more. Google sheet now contains all of Houston, which triples the size of the list. More detail in the commit message.

This list doesn't have Corpus Christi homes that are known to be evacuated (from http://newsroom.brookdale.com/)  - maybe they don't have FPNs?
You had a bunch of numeric IDs in the 'id' column; I copied those to the 'mpn' column and then prefixed those IDs with 'fpn-' because of a problem encountered in creating per-location views (https://github.com/benlk/harvey-senior-homes/issues/10) where the copytext library was returning those numbers as decimals: 455999 became 455999.0, and it was becoming excessively difficult to get that to return to being 455999.

Note that rows without a 'id' entry won't show up in the app.

Change to table schema: status color grey is now evacuated

Adding https://www.brookdale.com/en/find-a-community.html?location=Texas&distance=250&count=125, and none of the 5 seen so far have appeared in the Medicare data at https://data.medicare.gov/Nursing-Home-Compare/Ownership/y2hd-n93e

OK, as of now, all entries in the sheet have phone numbers.

WaPo has a map in this article with a ton of nursing home locations, but no idea of the data source: https://www.washingtonpost.com/graphics/2017/national/harvey-houston-flooding/


Problem with MicrosoftML and RevoScaleR packages in RStudio

Hi,
I have just installed the latest Microsoft R Client. I am using RStudio as the IDE. The MicrosoftML and RevoScaleR pacakges will not load, they do not appear in the search path, and I get the following errors on start up of RStudio:
Error : .onLoad failed in loadNamespace() for 'RevoScaleR', details:
  call: NULL
  error: file.exists(defaultDataDir) is not TRUE
Error : .onLoad failed in loadNamespace() for 'RevoScaleR', details:
  call: NULL
  error: file.exists(defaultDataDir) is not TRUE
In addition: Warning message:
package ‘RevoScaleR’ in options("defaultPackages") was not found
During startup - Warning message:
package ‘MicrosoftML’ in options("defaultPackages") was not found
[Workspace loaded from ~/.RData]

The regular Rgui.exe IDE has no such problems and I can run the package examples fine. Do you know what might be causing this? Can you reproduce?
Thanks.

In Rstudio, can you go to Tools --> Global Options and check the R version path. It should point to C:\Program Files\Microsoft\R Client\R_SERVER

Hi. I’ve discovered what it is. We are in a corporate environment so the working directory is set to a network share in the form \machine\sharename<file:///\machine\sharename>. RStudio does not like UNC paths in general, so I understand, and it seems these 2 packages definitely don’t like UNC paths. When I change the start up working directory to C:/ or P:/ drives RStudio opens with no error messages and the packages work fine. This post helped me understand:
https://github.com/Microsoft/RTVS/issues/3232
Thanks.
Chris.
From: Ramkumar Chandrasekaran<EMAIL_ADDRESS>Sent: 22 May 2017 22:32
To: Microsoft/microsoft-r<EMAIL_ADDRESS>Cc: Chris Cole<EMAIL_ADDRESS>Author<EMAIL_ADDRESS>Subject: Re: [Microsoft/microsoft-r] Problem with MicrosoftML and RevoScaleR packages in RStudio (#9)
In Rstudio, can you go to Tools --> Global Options and check the R version path. It should point to C:\Program Files\Microsoft\R Client\R_SERVER
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/Microsoft/microsoft-r/issues/9#issuecomment-303225703, or mute the threadhttps://github.com/notifications/unsubscribe-auth/APy6LsHUL3metYbG1ZOwFQplHjNlT3xeks5r8f6ygaJpZM4NiWnW.
Chris Cole
Manager - Investment Solutions
Investec Asset Management
<EMAIL_ADDRESS><EMAIL_ADDRESS>+44 20 7597 2490
25 Basinghall Street, London, EC2V 5HA
www.investecassetmanagement.comhttp://www.investecassetmanagement.com

This email is confidential and may be legally privileged. It is subject to important terms and conditions, available at www.investecassetmanagement.com/emailhttp://www.investecassetmanagement.com/email. Please notify the sender if you cannot access this link. If you are not the intended recipient, please advise the sender immediately and delete this email and any attachments.


linux-yocto-onl/5.15: update to 5.15.22

Update 5.15 to latest, and meta accordingly.
Most interesting fixes from 5.15.19:
net: bridge: vlan: fix memory leak in __allowed_ingress

[ Upstream commit fd20d9738395cf8e27d0a17eba34169699fccdff ]

When using per-vlan state, if vlan snooping and stats are disabled,
untagged or priority-tagged ingress frame will go to check pvid state.
If the port state is forwarding and the pvid state is not
learning/forwarding, untagged or priority-tagged frame will be dropped
but skb memory is not freed.
Should free skb when __allowed_ingress returns false.

net: bridge: vlan: fix single net device option dumping

[ Upstream commit dcb2c5c6ca9b9177f04abaf76e5a983d177c9414 ]

When dumping vlan options for a single net device we send the same
entries infinitely because user-space expects a 0 return at the end but
we keep returning skb->len and restarting the dump on retry. Fix it by
returning the value from br_vlan_dump_dev() if it completed or there was
an error. The only case that must return skb->len is when the dump was
incomplete and needs to continue (-EMSGSIZE).

Which affect us both.
Apart from that the ususal assortment of fixes in various subsystems and
drivers.
Signed-off-by: Jonas Gorski<EMAIL_ADDRESS>

lgtm


semantic-release: 23.0.8 -> 23.1.1

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/semantic-release/semantic-release/releases.
meta.description for semantic-release is: Fully automated version management and package publishing
meta.homepage for semantic-release is: https://semantic-release.gitbook.io/semantic-release/
Updates performed

NPM version update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 23.1.1 with grep in /nix/store/xvbkwzqgxilr3hsmw6vpy1pgpypmr5hh-semantic-release-23.1.1
found 23.1.1 in filename of file in /nix/store/xvbkwzqgxilr3hsmw6vpy1pgpypmr5hh-semantic-release-23.1.1

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

2 package rebuild(s)

First fifty rebuilds by attrpath

semantic-release

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/xvbkwzqgxilr3hsmw6vpy1pgpypmr5hh-semantic-release-23.1.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A semantic-release https://github.com/r-ryantm/nixpkgs/archive/c3d848e2b1b62370ba11f91a1a7e5dec060b482b.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/c3d848e2b1b62370ba11f91a1a7e5dec060b482b#semantic-release

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/xvbkwzqgxilr3hsmw6vpy1pgpypmr5hh-semantic-release-23.1.1
ls -la /nix/store/xvbkwzqgxilr3hsmw6vpy1pgpypmr5hh-semantic-release-23.1.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review --extra-nixpkgs-config '{ allowInsecurePredicate = x: true; }' run on x86_64-linux 1

1 package built:

semantic-release

Maintainer pings
cc @sestrella for testing.

Result of nixpkgs-review pr 310731 run on x86_64-linux 1

1 package built:

semantic-release


avoid getting prompted for params already in argv

This is a little annoying.
let's take the example-prompt templates from the repo
Designed usage:
$ hygen example-prompt new --name foo
? What's your message? hello

Loaded templates: src/templates
       added: hygen-examples/mailers/foo.js
       added: hygen-examples/mailers/hello/html.ejs
       added: hygen-examples/mailers/hello/subject.ejs
       added: hygen-examples/mailers/hello/text.ejs
      inject: hygen-examples/mailers/hello/html.ejs

Possible usage:
$ hygen example-prompt new --name foo --message hello
? What's your message? <Enter>

Loaded templates: src/templates
       added: hygen-examples/mailers/foo.js
       added: hygen-examples/mailers/hello/html.ejs
       added: hygen-examples/mailers/hello/subject.ejs
       added: hygen-examples/mailers/hello/text.ejs
      inject: hygen-examples/mailers/hello/html.ejs

It should be possible to avoid certain prompts if a param is already specified
Possible solution

make prompt.js optionally export a function.
pass in argv's to that function
let the developer decide on what to prompt for, taking into account what is already provided.

Pull Request: #32

Merged!


Octo issue create creates the issue before saving the buffer or providing body

Issue Description
Describe what happened (or what feature you want)
When using Octo issue create the issue is immediately created with the provided title, not waiting to get a body/description before.
Describe what you expected to happen
When creating an issue, ask me for the title, then take me to the buffer where I'll edit the body. Once the buffer is saved the issue is created.
This is problematic because it notifies the repo watchers while you haven't completed the issue. It might even get closed by the repo maintainers or a bot.
How to reproduce it (as minimally and precisely as possible)

Octo issue create
provide a title
go to the repository you'll se an issue with empty body and the provided title

Tell us your environment
Neovim HEAD
Anything else we need to know?

This is something I wanted to implement, havent found the time yet. But is in my TODO list

I have implemented this as part of #294
When creating an issue, Octo will ask if you want to use the contents of the current buffer as the body of the issue. So you can work on the issue's body and when ready, create the issue from it


Password Hashing

Describe the bug
Password is not hashed before storing it to the database
To Reproduce
Steps to reproduce the behavior:

Create a new account.
Look in the database

Expected behavior
Hashed password should be stored in the database.

The issue was resolved and merged to main.
Here is the PR.


Configure travis to use a local installation for testing

Coverage remained the same at 44.88% when pulling 5ce827c3212af3384c616816c474d1d74a35938b on mathoid-travis into 445dcf9b112fa60dd10b9ac105e4287bb22eb099 on master.


Fix song title interfering with scrolling

from the image above the title of the song is scrolling in chat because of the '!' in it
might remove or replace the '!' ?

while doing this i also fixed an iframe involving previewing videos from public playlists


python ffi creation

Rationale
Wanted to set us up for success. I created the beginnings of the Rust API layer and the Python FFI. Comments welcome.
Also, this unlocks parallel streams of work and tasks with a lower bar to entry for the project.
Changes

Exposes Rust API and maintains standard crate configuration.
Creates Python API with a simple Matter class exposed.
Adds a Makefile and some targets for easier scripting (abusing make a bit but it's available everywhere)
Updates README.md with instructions for new developers.

I am pretty happy with how I cleaned up the directory structure after a few iterations and separated the python code from the main library. The only changes to the core library are to support a simple #[pyclass] above the definition of the struct.
Testing
You are encouraged to check out the branch and try these commands.
> make clean libs preflight python-shell
Python 3.10.6 (main, Aug 11 2022, 13:49:25) [Clang 13.1.6 (clang-13<IP_ADDRESS>.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from cesride import Matter
>>> m = Matter(qb64="BGlOiUdp5sMmfotHfCWQKEzWR91C72AH0lT84c0um-Qj")
>>> qb2 = m.qb2()
>>> print(qb2)
[4, 105, 78, 137, 71, 105, 230, 195, 38, 126, 139, 71, 124, 37, 144, 40, 76, 214, 71, 221, 66, 239, 96, 7, 210, 84, 252, 225, 205, 46, 155, 228, 35]
>>> m2 = Matter(qb2=bytes(qb2))
>>> m2.qb64()
'BGlOiUdp5sMmfotHfCWQKEzWR91C72AH0lT84c0um-Qj'
>>> m3 = Matter(code=m.code(), raw=bytes(m.raw()), raw_size=len(m.raw()))
>>> m3.qb64()
'BGlOiUdp5sMmfotHfCWQKEzWR91C72AH0lT84c0um-Qj'
>>> Matter(qb64="_" * 44)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
Exception: unexpected code error: op code start
>>> Matter(qb64="-" * 44)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
Exception: unexpected code error: count code start

Screenshots (updated README.md)

Here is a live link to a preview of this file.

Side note: the tarpaulin action occasionally fails, we should look at using a make or shell command rather than the action.

@jasoncolburne  I would consider usage of uniffi Rust crate for FFI bindings.
It can generate bindings for multiple languages at once (Kotlin, Swift, Python, Ruby).
You may have the following project structure:

cesride-rs rust package published to crates.io
cesride crate depending on cesride-rs which provides system library and FFI bindings with using uniffi.

@Artemkaaas Thanks for this, it sounds less hacky than what I threw together! Someone mentioned it recently but it went past me and I didn't really know what it offered. I created a ticket for investigation: #65


Require mercenary

Added param for require_merc
If require_merc set to 1, will attempt two revives of merc. If can't revive on first attempt, will end run and retry one more time. If no luck will shut down bot.

@aeon0 could I request the shut down function be kept? There is no reason here to leave d2 open consuming power. I realize this was changed because someone lost an item when they ran into a stash full bug, but I think the shut down function is nice personally.

@aeon0 could I request the shut down function be kept? There is no reason here or if a stash is full to leave d2 open consuming power. I realize this was changed because at least one person lost an item when they ran into a stash full bug, but I think the shut down function is nice personally, and would be worth keeping for at least this case with no Merc.

we could bring back src/utils/misc.py/shut_down_d2() and move all unrecoverable errors that stop bot to that function. After that we can add a option in params.ini to chose to taskkill/os.exit or just os.exit.

Okay, how about this. Whenever there is no reason to keep d2 alive we first call the game recovery which should send you to the hero selection screen quite reliably. Only then wen shut down d2.
So a shut_down function would look like this:
game_recovery.go_to_hero_selection()
Logger.log("...")
if discord:
  # do discord stuff
kill d2 process (and  bnet process)
os._exit(1) # shut down botty itself


Update dependencies.

/CC @cvrebert: only grunt-saucelabs is left in order to switch to grunt 1.x.

:shipit:


Inés Feedback - Video Display

Videos

I haven't had time to watch them all yet, and I think the teaser video idea is fabulous and more people should definitely do that!! :)
I'm concerned they are displayed very small in the entries. If the visuals aren't important, it may be best to present them as audio-only. If the visuals are important, I think you can stack them so they are both larger. For the teasers I think you could eliminate the time-bar in youtube as you scroll over (I have a few plugins that let you tweak all of this when embedding YT videos, doing things such as autoplay, hiding the timeprogress bar which shouldn't be needed in a short teaser video, and other features), to avoid crowding when hitting the play button. Ideally, I think what would work really nicely is to have the teaser and a snippet of the entry displayed automatically, and when the reader clicks "View Full Episode", then it opens in a new window which does not display the teaser video and instead has the full podcast waiting (and additionally have a link in the video using YouTube Cards for the viewer to click and go to the next episode).
Make some custom thumbnails with the WeRockTech brand to make them look more enticing! :)

Point 3 addressed in #13


Remove 'Focus Launcher is running' notification

As a user, I want to install & use Focus Launcher without seeing any unnecessary notifications, so that I can focus more on using my phone mindfully.

This persistent notification was introduced in #20 (#19). As I understand, the more recent version of Android SDK enforced stricter notifications. It is possible to avoid this notification (by turning Focus Launcher back into a background service, I think).
When @zed13 tried that initially, the app started crashing.
Fgure out how to avoid that notification while maintaining the app's stability.

This persistent notification was introduced in #20 (#19). As I understand, the more recent version of Android SDK enforced stricter notifications. It is possible to avoid this notification (by turning Focus Launcher back into a background service, I think).
When @zed13 tried that initially, the app started crashing.

You understood me in a wrong way. It's just impossible to have a background task without such notifications on new Android's versions. Here is some info about such restriction https://developer.android.com/about/versions/oreo/background.

It's just impossible to have a background task without such notifications

But how do other launchers get setup without displaying that notification (Before Launcher, for example)?

It's quite interesting actually. I've looked at Before launcher screen shots at Google Play. Looks like they use special workaround for this NotificationListenerService. To work without notification it should be properly configured. I've never worked with NotificationListenerService.
There is such class in our codebase. And it has appropriate config in AndroidManifest. Why previous developers have decided to make it foreground - I don't know.
Never the less, there are two additional services wich are run as foreground service:

AlarmService - redeliver notifications in specified period of time. It looks like work for NotificationListenerService (It has special api for such things).
StatusBarService - tracks down user time in junk apps. I think it could be replaced with calls to special api. So, need to investigate further.

Interesting. OK, so it sounds like it's possible, but would take some more investigation and work. I say we put this on hold until after the 1.0.0 launch and let the initial user feedback decide when to prioritize this


chore(databases): Replace SQLite3 to MySQL in local environment

Issue link
Closes #34
What does this PR do?

Added missing migration files to set UUIDField as primary key (ref: #29 )

What does not include in this PR?
N/A

In https://github.com/hwakabh/bennu-official/pull/37/commits/6e8159b91c82a480abdc0c61ca987382cd1fdf56, migrations by Django would become success, but need to add some codes to run with python manage.py dbshell.
# Confirm access via localhost:3306
% docker ps
CONTAINER ID   IMAGE                                         COMMAND                  CREATED         STATUS         PORTS                                       NAMES
f2011ed9c9d6   ghcr.io/hwakabh/bennu-official/mysql:latest   "/opt/bitnami/script…"   4 minutes ago   Up 4 minutes   <IP_ADDRESS>:3306->3306/tcp, :::3306->3306/tcp   mysql

# Validate required migrations
% python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 22 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, bennuhp, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
December 20, 2023 - 14:39:05
Django version 5.0, using settings 'bennu_official.settings'
Starting development server at http://<IP_ADDRESS>:8000/
Quit the server with CONTROL-C.

^C%

# Execute migrations
% python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, bennuhp, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying bennuhp.0001_initial... OK
  Applying bennuhp.0002_liveschedule_movie_music_delete_blogpost... OK
  Applying bennuhp.0003_remove_liveschedule_id_remove_movie_id_and_more... OK
  Applying bennuhp.0004_alter_liveschedule_uuid_alter_movie_uuid_and_more... OK
  Applying sessions.0001_initial... OK

# Check actual database tables
% docker exec -it -u root mysql /bin/bash
root@f2011ed9c9d6:/# mysql -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.2.0 Source distribution

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use bennu;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------------------+
| Tables_in_bennu            |
+----------------------------+
| auth_group                 |
| auth_group_permissions     |
| auth_permission            |
| auth_user                  |
| auth_user_groups           |
| auth_user_user_permissions |
| bennuhp_liveschedule       |
| bennuhp_movie              |
| bennuhp_music              |
| django_admin_log           |
| django_content_type        |
| django_migrations          |
| django_session             |
+----------------------------+
13 rows in set (0.00 sec)

As checking implementation of PyMySQL, the workarounds with using install_as_MySQLdb() to allow Django to use PyMySQL seems to require local installation of mysql commands.
Ref: https://github.com/PyMySQL/PyMySQL/blob/1e28be81c24dde66f8acbf4c5e24f60d6b5e72e7/pymysql/init.py#L64-L69
Confirmed python manage.py dbshell would be success after install mysql-client onto local macOS, but this seems to require to change from localhost to <IP_ADDRESS> for allowing access to local mysql container.
% PATH="/opt/homebrew/opt/mysql-client/bin:$PATH" mysql --user=root --host=localhost --port=3306 bennu -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

% PATH="/opt/homebrew/opt/mysql-client/bin:$PATH" mysql --user=root --host=<IP_ADDRESS> --port=3306 bennu -p
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.2.0 Source distribution

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


Number::useLocale not working

Package
filament/filament
Package Version
v3.2.92
Laravel Version
v11.11.1
Livewire Version
v3.5.1
PHP Version
PHP 8.3.8
Problem description
When adding the number helper function it doesn't work as expected.
I used ar locale because it changes the numbers completely.
Expected behavior
To change the Locale according to the provided locale in the AppServiceProvider
Steps to reproduce

Make a filament project
Make a test resource
Add Number::useLocale('ar'); to AppServiceProvider boot() function
check

Reproduction repository (issue will be closed if this is not valid)
https://github.com/Zacktamondo/FilamentNum
Relevant log output
No response

Donate 💰 to fund this issue

You can donate funding to this issue. We receive the money once the issue is completed & confirmed by you.
100% of the funding will be distributed between the Filament core team to run all aspects of the project.
Thank you in advance for helping us make maintenance sustainable!

Hello @danharrin and @dmason30
Thank you for your hard work, but I tested it with the repo after updating to the latest and the issue still persist.
Is there anything I need to do after applying the Number::useLocale to make it take effect that I am not aware of?
Thanks a lot again for your work

I didn't spot that my bad.
Thanks for the info and the fix.

Yes it was merged after the release, its not in the changelog.


JS test for ariatiseForm.js

Added radio buttons to ariatiseForm.js
Added karma-jasmine-jquery and karma-fixture
created fixture to test forms
created ariatiseFormSpec.js
moved existing JS tests to lib/assets/javascripts/spec

linter is failing on ariatiseFormSpec.js because it says 'fixture' is undefined. fixture is being pulled in via the karma.config though, so I'm not really sure what the best approach is to fix these linter errors

closing to rebase with latest changes. Will resend in new PR


[feature-fix] Contributor Visibility Logs -- Anonymous VOLs

Adds custom log language for contributor visibility changes in anonymous view only links.
[OSF-5331]

Pass complete, confirmed that behavior is as expected. Sending this to RTM :mouse:

Pass finished; just the one suggestion/question above.

@sloria, moved the logic into log_templates.mako :octopus:

LGTM. Build failure is from a jshint error that got into develop, but nothing in this should affect tests.


#241 - Implementation of pype-config/presets/plugins/standalonepublisher

Implemented schema for  pype-config/presets/plugins/standalonepublisher

Requires:
pypeclub/pype/#479

Can you try wrapping the individual items in a dict-form? they will get nicely aligned. Ready to merge after. Also please change target directly to develop

According to @iLLiCiTiT 'ExtractReviewSP' shouldn't be there at all. Removed from implementation.
Needs to be removed from 'pype-config' in separate PR.


Redelegation is not restricted to active validators

Description:
execute_redelegate_proxy does not restrict that redelegation are done only to active validators, which could create unexpected situations. For example, if the owner mistakenly delegates to a non-active validator and wants to fix it by redelegating again to an active validator, he will need to wait a cooldown period (because of consecutive redelegations) to carry out this task.
Code Location:
krp-staking-contracts/contracts/basset_sei_hub/src/contract.rs#L239-L248

execute re_delegate_proxy is restricted to be called only by the basset_sei_validator_registry contract. The redelegate operation is implemented by calling the ExecuteMsg::Redelegations { address } message of the basset_sei_validator_registry contract, and will specify the delegate vote of the validator that has been removed and re-vote to other active nodes. However, these active nodes It is obtained from the query on the chain.


Revert "[IOTDB-3390] Serialize ConfigNode expansion"

Reverts apache/iotdb#6256

Coverage decreased (-0.1%) to 44.437% when pulling 02c4f0464fba333e90c9178145f541e1fee5e080 on revert-6256-Serialize_ConfigNode_expansion into 3e0a1281fb1a0b09e6d23cccd600580861920ad6 on master.


computed properties clarify

computed properties cache the resource/variable for the individual request only, not for subsequent requests.

Thanks!


Allow Open -o with both relative & absolute paths

Allows the use of both absolute and relative paths when using the open flag [-o]. This is a none breaking change as currently the Open option just doesnt work (in my tests) if starting with a forward slash.
Allowing absolute paths is important as someone might want to force the use of a particular host that doesnt want to use the value in canonicalHost.
It determines whether it is a relative path or not simply by checking whether the -o argument starts with a forward slash, anything else passes through as before.

I'm not @indexzero is interested in this, but squashing your commits would help your case :)
Also, this is a near identical duplicate of #234 which was opened a few months before this PR. I would recommend closing this and code reviewing #234 if you think this PR has something that was missed.

I know about #234 but he introduced a breaking change, my pull request does something similar but is a none breaking change to existing peoples code. (Not criticising their code)
In their solution everybody would be forced to change any existing code that works with the current implementation to switch from absolute to relative paths. I have given an alternative that introduces relative paths but retains absolute paths. This can be an issue where people have hard coded the absolute path in say an npm script. Hence why the additional pull request.
As for the squashing commits, I was not aware you could do that after submitting, it failed only on code style guidance, the same as hancharou did. If it is possible then I am happy to do it, or do you mean before I re-commited the style changes in the first place? I have done years of private company source control work before, but this is in fact my first open source pull request, so I am open to suggestions.

Cool, thanks for articulating the difference!
You can check out https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History for squashing. In your case git rebase -i HEAD~3 should do the trick. It'll open a text editor. Change the second and third pick to s and then save. It'll send you back to the command line with directions on how to amend the commit (you may want to change the message), and then git rebase --continue. In order to push back to this branch, you will need to add a -f.

Thank you for the link, I cant do it this minute Ill read through that particular help page properly before I do it, your example makes sense, but will want to make sure I dont do something stupid (the git help pages are great but wow its easy to miss alot when you dont know exactly what your looking for). Thank you again :)

Lski,
I tested your solution on Windows 8.1 x64 and see my results:
http-server -o index.html    index.html is opened in IE and it's not served through HTTP. I see local path in IE.
http-server -o /index.html    index.html is opened and served through HTTP.
http-server -o folder/2.html    2.html is opened in IE and it's not served through HTTP. I see local path in IE.
http-server -o /folder/2.html    2.html is opened and served through HTTP.
My #234 serves all commands correctly and serves all of them through HTTP. This change will open files properly not matter you provide it with / or without.

Sorry but I disagree, I would suggest "index.html" is still a relative path, "http://<IP_ADDRESS>:8081/index.html" is an absolute path and what people are probably currently using.
Your pull request does not allow absolute paths to be loaded any more which could BREAK their existing build scripts.
Although just my opinion I would say starting with a forward "/" slash makes sense with regards to the web as its a root relative from the website you have just started.
I am happy to switch my code to sniff for http/https if no slash is really that important and what people want, Im flexible :) or if not, please update your PR so that it doesnt break peoples existing code.

lski,
I disagree with you. I think if you provide -o index.html or -o /index.html there is no difference. In both cases you expect to see http://<IP_ADDRESS>:8080/index.html
What do you mean by relative path? You still will be opening root + whatever you have in -o parameter. For me it's even more obvious to have -o /index.html so I know that it'll open the file from root folder.

Ok lets step back from 'relative' and 'absolute' path as it s not so important and focus on the fact your proposing a breaking change. Imagine the following snippet from someones existing packge.json:
{
    "scripts": {
         "build": "http-server -p 8081 -o http://myComputerName/subfolder/index.htm"
    }
}

In that example it would turn out "http://<IP_ADDRESS>/http://myComputerName/subfolder/index.htm" which obviously wont work.
You are also making the assumption that people will always want to use "http://<IP_ADDRESS>/subfolder/index.html" so will be happy with "http://<IP_ADDRESS>/" + whatever they put, but sometimes that just is not what people need to load.
The example above of "computer name" host instead of <IP_ADDRESS> could be because they are using cors with a base api service and need to ensure they are coming from a particular host.
Hopefully that makes more sense :)

Correction "http://myComputerName:8081/subfolder/index.htm" as I missed the port number (sorry on mobile this week). And I meant to mention a local network address IP e.g. "http://<IP_ADDRESS>:8081/subfolder/index.htm"

Why do you keep this line opener(baseUrl, { command: argv.o !== true ? argv.o : null }); as is? Is not passing opener a command with anything other than null undesired?

Well the check in the original is there because if you pass "non-string" values to the opener via the arguments e.g. true, 2 etc it throws an error, so the check needs to be there. And a check still needs to be made after checking the initial check for the "/", because if it is a string value e.g. a full url "http://<IP_ADDRESS>:8080/" it still needs to be passed to behave the same as it did before this change.
I believe the author originally passed the command separately as if options.command == null then it will use the first argument, otherwise uses the options.command. I decided to stick with the authors original way as to make it more likely they would be happy with the pull request.
Although I should have changed it to the following to avoid other values other than just 'true':
opener(typeof argv.o === 'string' ? argv.o : protocol + '//' + canonicalHost + ':' + port);

When doing the code I originally wrote something along the lines of the code below:
if (argv.o) {
  var isStr = (typeof argv.o === 'string');
  if (isStr && argv.o.charAt(0) === '/') {
    opener(protocol + '//' + canonicalHost + ':' + port + argv.o);
  }
  else {
    opener(isStr ? argv.o : protocol + '//' + canonicalHost + ':' + port);
  }
}

But I felt I then possibly altering the behaviour of the code, so I put the original line back in. I personally would have preferred to use the my original code as it was easier to read for me and did a check for string values.

any update on this issue?

any updates on this? Its been a while :) close it or merge it? 😆

@andrevenancio I'm not at all opposed to merging this (or one of the similar duplicate attempts at solving it), but (as you've noted) it's been a while, so this (and/or the other approaches) need review/comparison/tests/etc.
If you want to help dig through the other related opener issues and make a recommendation (and ideally tests!), then I'm more than happy to review it and (if all is well) merge it.

@lski do you have time to add a test since you're more into this issue originally?
Also, would this make everybody happy:
if (argv.o) {
    opener(argv.o);
}

so things like:
http-server -o ./build/index.html
http-server -o http://localhost:8888/example
will work making everybody happy? 😁

@andrevenancio I am currently travelling with a laptop, so not able to atm, sorry

I believe this should be achieved by the earlier #250. Please comment and/or reopen if this is not the case.


Audio component

Create a react component that plays a sound based on the props.
<Notification play={true} audio={audioFile} />

This should play the audio file when play is true.
It should play again when the props change from false to true

@muke1908 can I start working on this issue?

@jradha11 Sure. Can you also assign yourself once you start?


yarn add ohm-js fails: ELOOP: too many symbolic links encountered

➜ yarn add ohm-js                     yarn add v1.22.10
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
error An unexpected error occurred: "ELOOP: too many symbolic links encountered, stat '/Users/-----/Library/Caches/Yarn/v6/npm-ohm-js-15.2.1-7dc3b9abba22e25a5fe7a75d37996f4da01584e4-integrity/node_modules/ohm-js/README.md'".

Cross-posting the same issue on the yarn repo
https://github.com/yarnpkg/yarn/issues/8441

@drush Thanks for the report. I am able to reproduce this, and I think I know what the cause is.

Just pushed v15.3.0 which should resolve the issue. Installation works for me now:
/tmp/issue-268$ yarn add ohm-js
yarn add v1.22.4
info No lockfile found.
[1/4] 🔍  Resolving packages...
[2/4] 🚚  Fetching packages...
[3/4] 🔗  Linking dependencies...
[4/4] 🔨  Building fresh packages...
success Saved lockfile.
success Saved 3 new dependencies.
info Direct dependencies
└─<EMAIL_ADDRESS>info All dependencies
├─<EMAIL_ADDRESS>├─<EMAIL_ADDRESS>└─<EMAIL_ADDRESS>✨  Done in 1.71s.


Program gets killed while running & Request for CURL baseline

Hi,
Thank you for your great work and the kind release of your implementation!
However, when I tried to run your code as described in README, the program got "Killed" after running for 10+ hours. Do you have any idea what is going on?
In addition, would you like to share with us the CURL baseline implementation in this framework?
Appreciate your help.

Could you post

Error message
System spec. CPU model, RAM and GPU model
Exact command you used

Error message is only "Killed". And then the program is killed.
CPU:28 cores 112 processors, RAM: 300G, GPU: 3090*2
In readme, commands from "Train & Visualize Pybullet Ant with Keypoint3D(Ours)" to "Train 'Close-Box' environment in Meta-world with baselines", 8 commands in total in tmux.
In addition, would you like to share with us the CURL baseline implementation in this framework?

Could you post

Error message
System spec. CPU model, RAM and GPU model
Exact command you used

Error message is only "Killed". And then the third and fifth program are killed.
CPU:28 cores 112 processors, RAM: 300G, GPU: 3090*2
Commands in readme from "Train & Visualize Pybullet Ant with Keypoint3D(Ours)" to "Train 'Close-Box' environment in Meta-world with baselines", 8 commands in total in tmux.
In addition, would you like to share with us the CURL baseline implementation in this framework?

It's likely an out-of-memory error. The program can take a significant amount of RAM to run so running multiple instances will result in "killed" due to unix memory manager. You can probably only run 2-3 instances on your machine at the same time.
For CURL, please email me and cc Deepak. I will send you the code when I am free asap. The code is not cleaned up but I will provide some instruction on running it.


[RFC] New lean server protocol

I have spent the day on drafting a prototype for the new lean server protocol
as discussed in issue #1197.  The implementation works, and you can try it out.
I would appreciate if someone with emacs 24 could see whether it works, I'm
almost certain I used some 25-only features.
To do (aka what's missing from #1197):

No indication whether lean is still running, or what it is working on.
Opening a file most likely recompiles all its reverse dependencies even if you don't change anything.
No information about currently visible files is exchanged.
Unloading single files is not supported.
No debugger interface.

Short overview of server protocol
It looks almost like before, with two main differences: 1) commands that return
responses such as info or complete now take an additional seq_num parameter,
which is a sequentially increasing number maintained by the client.  2)
Messages are no longer returned on check, but in separate unsolicited messages.
Example exchange:
18:37:08.976 -- server<= {"seq_num":0,"command":"sync","file_name":"/home/gebner/scratch7.lean","content":"example : true := ⟨⟩"}
18:37:09.025 -- server=> {"message":"file invalidated","response":"ok","seq_num":0}

18:37:15.954 -- server<= {"seq_num":1,"command":"info","file_name":"/home/gebner/scratch7.lean","line":1,"column":10}
18:37:15.965 -- server=> {"record":{"full-id":"true","source":{"column":10,"file":"/home/gebner/lean/library/init/core.lean","line":90},"type":"Prop"},"response":"ok","seq_num":1}
...
18:37:24.389 -- server<= {"seq_num":3,"command":"sync","file_name":"/home/gebner/scratch7.lean","content":"example : tre := ⟨⟩"}
18:37:24.407 -- server=> {"message":"file invalidated","response":"ok","seq_num":3}

18:37:24.622 -- server=> {"msg":{"caption":"","file_name":"/home/gebner/scratch7.lean","pos_col":10,"pos_line":1,"severity":"error","text":"unknown identifier 'tre'"},"response":"additional_message"}

Note that each command sent by the client carries a sequence number, which is
returned by the server with the corresponding response.  The last response does
not correspond to a request, it transports an error message.
Possible requests/commands (all of them have mandatory command and seq_num fields):

sync (parameters file_name, content): informs the server about file contents
info (parameters file_name, line, column): request information about the thing at the given position
complete (parameters file_name, line, column): request auto-completion choices at the given position

Possible responses (the kind is indicated in the response field):

ok (has seq_num): result of a successful request
error (has message): error

can have an optional seq_num field if the error is related to a request

additional_message (has msg field containing a single message)
all_messages (has msgs field containing an array of messages)

In the spirit of "never transfer changes, always transfer the whole file", the
protocol does not support deleting messages in any fancy way.  If a message
should no longer be shown, you have to send an all_messages response
containing the now valid messages.  The additional_message response just adds
a single new message; but we could get rid of that.
Project handling is not very sophisticated either: we spawn one lean server per
project.  Invalidation across project boundaries is not supported.  If you
change something in the standard library and want to use it somewhere else,
please restart the lean server.
Emacs interface
Since we have unsolicited responses from the server, we can no longer use
tq.el, but have to roll our own version with process filters.  No major
problems there.  We store a list of the currently valid messages client-side.
lean-debug-mode is now set globally instead of per-buffer.
On the flycheck side, we now use flycheck only as a dumb error message viewer
(see flycheck/flycheck#774).  We do the change detection ourselves.  200ms
after the last change, we send the contents to the server.  Whenever new
messages arrive, we let flycheck "check" the buffer.  Our flycheck checker only
returns the currently stored messages.  This is the same technique that
intero-mode uses as well.

In addition to the missing stuff, maybe I should mention some of the features:

Supports multiple files in the same lean server.  Dependency invalidation should finally work.
When you open a lean file, it gets checked immediately.
Messages are displayed immediately when they are produced.
Completions are handled completely asynchronously as tasks in the task queue.

It works on Emacs 24.

I made the following changes to be able to compile the code on my machine:
https://github.com/leodemoura/lean/commit/58768940e33b4569ebf60c8d249a7b754c486d22

I'm having problems with the LEAN_PATH.  Here is the repro:
Create files a.lean and b.lean in some directory, where a.lean contains
def x := 10

and b.lean contains
import a
eval x

Inside of Emacs, I get invalid import 'a'\n\nfile 'a' not found in the LEAN_PATH. I get the same error if I generate a.olean.
In the command line, lean b.lean works correctly, even if I don't have a.olean.

Remark: the example above works if I create the files a.lean and b.lean in one of the folders of the standard library.

lean b.lean

I guess you're starting emacs from a different directory than the one where b.lean is, right?  For files that are not in projects (i.e. do not have a .project file somewhere above them), I am starting the lean server in the emacs working directory.
Instead of falling back to the working directory, we could fall back to the directory of the file.

I guess you're starting emacs from a different directory than the one where b.lean is, right?

I see.
Yes, it works if I start emacs at the b.lean directory. It also works when I add the .project file.

Instead of falling back to the working directory, we could fall back to the directory of the file.

I think this is a good idea.

Some observations:

Emacs sometimes hangs and/or is extremely laggy when lean is running at 100% CPU (for example when super unsuccessfully tries to prove something)
A global error list would be nice.

Emacs sometimes hangs and/or is extremely laggy when lean is running at 100% CPU (for example when super unsuccessfully tries to prove something)

Is it clear why this happens? I did not manage to reproduce this problem yet.
Here is a minor problem. Suppose I am editing a proof A, and the proof B above A is broken, and B relies on expensive automation. Now, as I edit the file, the red marks on B keep blinking since the closest snapshot is above B, and whenever I change A, lean tries to reprocess B.
If I add a command between A and B (e.g., check 0), then the "blinking" goes away. So, I'm wondering now whether we should save snapshot after B even if it is broken. What do you think?

Emacs sometimes hangs and/or is extremely laggy when lean is running at 100% CPU (for example when super unsuccessfully tries to prove something)

For me, Emacs is still responsive as an editor if I use super on a big proof. However, the green/red marks take a long time to update. Is that what you meant by "hangs and/or is extremely laggy"?

Is it clear why this happens? I did not manage to reproduce this problem yet.

Not at all.  I should've attached gdb then.  But I got it when just viewing the automation/super/examples.lean from before I fixed the breakage caused by the lean-native merge earlier today.

Here is a minor problem. Suppose I am editing a proof A, and the proof B above A is broken, and B relies on expensive automation. Now, as I edit the file, the red marks on B keep blinking since the closest snapshot is above B, and whenever I change A, lean tries to reprocess B.

The fact that B is broken is only relevant in so far as that there's an error message.  You'd observe exactly the same phenomenon if B just had trace output.
I can't recall exactly why and can't find the discussion that led to it, but we discard the last snapshot as well because the command right before the snapshot might now be continued after the snapshot.  We introduced this behavior in https://github.com/leanprover/lean/commit/87ec1e0ac5a0d292262b7284c326d9891152eb4e

For me, Emacs is still responsive as an editor if I use super on a big proof. However, the green/red marks take a long time to update. Is that what you meant by "hangs and/or is extremely laggy"?

No, I meant laggy as in "emacs takes five seconds to process a keystroke" and "emacs no longer redraws the screen".  I'll try to reproduce it tomorrow.

I have merged the commits sent so far.

I can't recall exactly why and can't find the discussion that led to it, but we discard the last snapshot as well because the command right before the snapshot might now be continued after the snapshot.

The underlying problem is that our syntax grammar does not have a mandatory terminator token for commands ending in terms. We do actually have the Coq . terminator, but that doesn't help if nobody is using it.
I believe the best job at placing snapshots we can do right now is to set one in front of a command after we've parse its command token -- in particular, there should be no snapshot at the end of the file. Only then do we know that the previous command is truly complete.
However, that would still invalidate the previous proof a few times while the user is typing out 'theorem` below it. We could do a basically perfect job by including a small tweak in our grammar: Do not allow empty lines in a top-level (non-parenthesized) function application, like in
lemma a :=
b

theore

While this would be somewhat unpleasing from a theoretic point by making our language whitespace-sensitive, I would argue that it should not create any problems in practice. Furthermore, it would allow context-sensitive autocompletion to know when it should only complete commands.

I believe the best job at placing snapshots we can do right now is to set one in front of a command after we've parse its command token

It's not immediately clear how that would would work, when we restore from a snapshot we move the scanner to the position of the snapshot.  If we then start to parse a command, it would fail because the first token has already been consumed.
A variant on this approach would be to just have a separate field that records the end-position of the first command token after a snapshot, i.e. the point at which we commit to use the snapshot and no changes after it make the snapshot invalid.

However, that would still invalidate the previous proof a few times while the user is typing out 'theorem` below it.

We just need to train our users to type more quickly; you have 200ms between each keystroke or your CPU dies. :smile:

It's not immediately clear how that would would work, when we restore from a snapshot we move the scanner to the position of the snapshot. If we then start to parse a command, it would fail because the first token has already been consumed.

Sorry, the wording was a bit ambiguous.  That should be a simple change.

Sorry, the wording was a bit ambiguous.  That should be a simple change.

I don't think it matters when we create the snapshot.  The snapshot might be successfully created after parsing theorem, but the user can still change theorem to thorem and we need to discard the snapshot.  We need that information when we figure out which snapshots to throw away.

The snapshot might be successfully created after parsing theorem, but the user can still change theorem to thorem and we need to discard the snapshot.

Oh, you're completely right! We basically have to regard the command token to be part of both commands. Your suggestion of also recording the end position of the snapshot sounds fine then.

@leodemoura Should I open a new PR for the unmerged commits?

I will reopen

No, I meant laggy as in "emacs takes five seconds to process a keystroke" and "emacs no longer redraws the screen". I'll try to reproduce it tomorrow.

I managed to reproduce this behavior. It happened for me when Lean was consuming a lot of memory (e.g., > 16Gb). It was triggered by a temporary bug.
I think this may also happen when executing tactics since we don't have a check_memory in the VM loop.
I will address this issue today.

@jroesch There has been one addition: the server now sents unsolicited current_tasks messages, informing the client about the work the server is currently doing: that messages contains an is_running boolean parameter, an optional task cur_task, and an array of tasks tasks.  Each task has a file_name, pos_col, pos_line, and desc.

@gebner Should we close this one?

Yes.  I "smuggled in" the unmerged commits in another PR already.  We should make new PRs for further improvements.


Drop Platform abstraction in favor of SDL2

Originally when I started this I wanted to have an abstraction layer for the platform implementation. However, SDL2 runs on everything I need for my use cases & I'm not interested in personally maintaining more platform abstraction layers, so I may simplify the API and just require SDL2.

If you're looking to keep the low-level and minimum dependencies, Sokol could be a good alternative https://github.com/floooh/sokol

Yeah I've seen (and used) Sokol and it's great! For the time being I'm still happy using my own rendering implementation(s) for the sake of learning, but long term I may switch to that.

Are the goals for this:

deprecate win32 support (delete blah_interal_platform_win32.cpp, remove all #ifdef's and the CMake flag)
replace the platform abstraction with just SDL2, AKA blah_interal_platform_sdl2.cpp just becomes blah_internal_platform.cpp

I wouldn't mind taking a stab at this unless you want to take it yourself!

Yeah this was my general idea ... I've been slightly hesitant to actually do it though due to console implementations. SDL supports most (all?) consoles I care about, but I also like the ability to write quick and dirty platform implementations without having to get the SDL-specific ports...

That makes sense! Maybe makes more sense to just no longer maintain it rather than removing it.
It looks like the win32 platform and d3d11 renderer are pretty tightly coupled here? So maybe decoupling them is how you can start to phase out win32 from the rest of blah

You can always implement the SDL2 functions you use on any new platform, if needed. That's another option. Personally that's what I'll do if needed. Just another thought.

It looks like the win32 platform and d3d11 renderer are pretty tightly coupled here? So maybe decoupling them is how you can start to phase out win32 from the rest of blah
Hmm they shouldn't have any coupling at all! You can run the SDL backend with D3D11 - I do it right now on Windows.

You can always implement the SDL2 functions you use on any new platform, if needed. That's another option. Personally that's what I'll do if needed. Just another thought.
Ohh that's a really good point! I'm not sure why I didn't consider that... That might be the best route to be honest.

My mistake, my brain was confusing BLAH_PLATFORM_WIN32 and _WIN32 when reading 😅

Merged that in, seems like the right direction to me! I think eventually I'll remove the platform.cpp file entirely and just use SDL stuff inside the source files directly (ex. in blah_app.cpp)


breadcrumbs should be relative to workspace root, not absolute

Note that the breadcrumbs includes the initial / only in file view, not src view

And sometimes it's relative to the src directory still?