Trainer_server: inaccurate measurement of operations on GPU

The current way to measure operations on GPU, e.g. forward pass, backward pass, etc. is not accurate (here as an example), because CUDA kernels are executed asynchronously. Instead of
stopw.start("Forward", resume=True)
output = self._model.model(data)
stopw.stop("Forward")

we should synchronize cuda operations, i.e. do
torch.cuda.synchronize(device=self._device)
stopw.start("Forward", resume=True)
output = self._model.model(data)
torch.cuda.synchronize(device=self._device)
stopw.stop("Forward")

.
Here is a chart to manifest the difference:

The left panel is without cuda synchronization and the right is with.

However, we probably don't want to directly inject those synchronization lines into the program, as synchronization slows down the training process. We should have a config "measure_gpu_operations", when set to True, we use the stop watch and add cuda synchronization.

However, we probably don't want to directly inject those synchronization lines into the program, as synchronization slows down the training process. We should have a config "measure_gpu_operations", when set to True, we use the stop watch and add cuda synchronization.

For my use case where I want to have a more fine granular view on the "Training" pipeline stage a synchronization option measure_gpu_operations wouldn't be a fair experiment setup. This is because I don't only want to compare the operations within training, but also set them into relation with other costs like trigger policy evaluation or information the selector. CUDA synchronization would probably affect training time negatively, skewing the comparison on pipeline level.

Adding synchronization everywhere also looks quite brittle as we have quite some model calls spread across several loops and functions. It's quite easy to miss sth. there.

No, for sure we don't want synchronization because that will decrease throughput. We cannot really measure those individual ops, unfortunately, just overall time spent training.

However, we probably don't want to directly inject those synchronization lines into the program, as synchronization slows down the training process. We should have a config "measure_gpu_operations", when set to True, we use the stop watch and add cuda synchronization.

For my use case where I want to have a more fine granular view on the "Training" pipeline stage a synchronization option measure_gpu_operations wouldn't be a fair experiment setup. This is because I don't only want to compare the operations within training, but also set them into relation with other costs like trigger policy evaluation or information the selector. CUDA synchronization would probably affect training time negatively, skewing the comparison on pipeline level.

sorry to miss this comment. Good perspective. but I think we can

enable measure_gpu_operations to compare steps inside training.
disable measure_gpu_operations to compare pipeline level stages.


Bug when using variables in imports

Hi all
I want to create a Service which imports a Service Template. We have four different Service Templates, depending on the priority. My idea was to add a variable to the host and then import the specified service template.
Here's an example Host object:
object Host "host.example.com" {
  import "priority1-host"

  address = "<IP_ADDRESS>"
  vars.nb["monitoring_icinga"] = true
  vars.nb["tenant"] = "UMBRELLA"
  vars.nb["config"] = {
    checks = [ "check_service_123", ]
  }
  vars.nb["priority"] = "priority1"
  vars.nb["platform"] = "Ubuntu-22-04"
  vars.nb["service_priority"] = "priority1-service"
}

And here's the Service object that I want to create:
  - name: CPU
    type: Service
    file: zones.d/main/services/services.conf
    apply: true
    imports:
      - host.vars.nb.service_priority
    check_command: check_load
    command_endpoint: host.name
    assign:
      - linux-hosts in host.groups
    vars:
      notification: true

The problem is that the icinga2_object.py script adds the import as string, not as variable. So the rendered config looks like this:
apply Service "CPU" {
  import "host.vars.nb.service_priority"

  check_command = "check_load"
  command_endpoint = host.name
  assign where "linux-hosts" in host.groups
  vars.notification = true
}

But it should look like this (import without quotes):
apply Service "CPU" {
  import host.vars.nb.service_priority

  check_command = "check_load"
  command_endpoint = host.name
  assign where "linux-hosts" in host.groups
  vars.notification = true
}

I'm not quite sure how this can be solved. Because sometimes the import should be a string, e.g. if I import priority1-service directly, but if it's a variable, it should be without quotes...

This is a fix for the current issue, but it's not generic enough. Can you think of other cases when quotes are not necessary in the import statement?
#
# imports?
#
if 'imports' in obj:
    for item in obj['imports']:
        if item.startswith('host.vars'):
            object_content += '  import ' + str(item) + '\n'
        else:
            object_content += '  import "' + str(item) + '"\n'
    object_content += '\n'

I didn't know this was even possible within the DSL. Thanks, we basically need to detect if it is a custom var and then apply it. Does it work with constants as well? :D
I need to check if there's more clauses possible.

@mkayontour Yes, I just verified that it also works with constants. Here's an example:
constants.conf
const ServiceTemplate = "generic-service"

services.conf
apply Service "CPU" {
  import ServiceTemplate

  check_command = "check_load"
  command_endpoint = host.name
  assign where "linux-hosts" in host.groups
  vars.notification = true
}


Agent fails to render jobs with non-ASCII chars in title

When running a job with non-ASCII characters in its title, pyfarm-agent will fail with the following error messages:
2015-06-03 17:14:35 ERROR    - pf.agent.http.assign - Loading jobtype for assignment 4c43c69a-cfb4-4f2e-9e1e-b2071b15e96f failed, removing.
2015-06-03 17:14:35 WARNING  - pf.agent.http.assign - Could not process log message Traceback (most recent call last):
File "/var/tmp/virtualenv/pyfarm-agent-python2/lib/python2.7/site-packages/Twisted-15.0.0-py2.7-linux-x86_64.egg/twisted/internet/base.py", line 1201, in mainLoop
    self.runUntilCurrent()
File "/var/tmp/virtualenv/pyfarm-agent-python2/lib/python2.7/site-packages/Twisted-15.0.0-py2.7-linux-x86_64.egg/twisted/internet/base.py", line 797, in runUntilCurrent
    f(*a, **kw)
File "/var/tmp/virtualenv/pyfarm-agent-python2/lib/python2.7/site-packages/Twisted-15.0.0-py2.7-linux-x86_64.egg/twisted/internet/defer.py", line 383, in callback
    self._startRunCallbacks(result)
File "/var/tmp/virtualenv/pyfarm-agent-python2/lib/python2.7/site-packages/Twisted-15.0.0-py2.7-linux-x86_64.egg/twisted/internet/defer.py", line 491, in _startRunCallbacks
    self._runCallbacks()
--- <exception caught here> ---
File "/var/tmp/virtualenv/pyfarm-agent-python2/lib/python2.7/site-packages/Twisted-15.0.0-py2.7-linux-x86_64.egg/twisted/internet/defer.py", line 578, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
File "/home/guido/git/pyfarm/pyfarm-agent/pyfarm/agent/http/api/assign.py", line 345, in loaded_jobtype
    instance = jobtype_class(request_data)
File "/home/guido/git/pyfarm/pyfarm-agent/pyfarm/jobtypes/core/jobtype.py", line 290, in __init__
    logger.debug("Instanced %r", self)
File "/home/guido/git/pyfarm/pyfarm-agent/pyfarm/agent/logger/python.py", line 48, in debug
    time=time(), logLevel=DEBUG)
File "/var/tmp/virtualenv/pyfarm-agent-python2/lib/python2.7/site-packages/Twisted-15.0.0-py2.7-linux-x86_64.egg/twisted/python/threadable.py", line 53, in sync
    return function(self, *args, **kwargs)
File "/var/tmp/virtualenv/pyfarm-agent-python2/lib/python2.7/site-packages/Twisted-15.0.0-py2.7-linux-x86_64.egg/twisted/python/log.py", line 203, in msg
    self.observers[i](actualEventDict)
File "/home/guido/git/pyfarm/pyfarm-agent/pyfarm/agent/logger/twistd.py", line 213, in __call__
    self.emit(event)
File "/home/guido/git/pyfarm/pyfarm-agent/pyfarm/agent/logger/twistd.py", line 160, in emit
    message = text % args
File "/home/guido/git/pyfarm/pyfarm-agent/pyfarm/jobtypes/core/jobtype.py", line 303, in __repr__
    str(self.assignment["job"]["title"]))
exceptions.UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 15: ordinal not in range(128)
with args ()

Fixed in #290


How to run probes with timeout > interval?

With cloudprober v0.11.4, we're able to run DNS probes with interval_msec=100 and timeout_msec=2000. Running probes 10x per second provides enough samples to quickly alert on elevated failure rates while avoiding false positives from occasional drops.
More recent versions added the restriction that timeout must be <= interval, enforcing that there is only a single outstanding probe per interval. While 2s is probably excessive for a DNS probe, we would still like to be able to use a timeout greater than 100ms. The reason is that once the timeout is reached, we lose all visibility into how long requests are actually taking. Therefore, we like to set probe timeouts much higher than we would for an application timeout, and use the latency metrics to alert at lower thresholds than the timeouts.
Would it be possible to support interval < timeout, by allowing multiple outstanding probes to maintain a fixed request rate?
The requests_per_probe option specific to HTTP probes provides close to the desired functionality. It staggers each batch of requests across the interval, and doesn't move on to the next interval until the batch is complete, so it can't guarantee a fixed request rate unless timeout < interval / requests_per_probe. If all requests_per_probe requests were sent at the start of each interval, then you could set interval = timeout, and tune requests_per_probe to achieve the desired average RPS. In my example, it would be interval_msec=2000, timeout_msec=2000, requests_per_probe=20. Of course, this would be more bursty vs. sending 1 request every 100ms.

Hello Chris,
Happy new year! :)
Yeah, we had to make that change because Cloudprober's behavior with timeout > interval is not deterministic. I guess it works fine when very few probes take longer than "interval" to finish, but if that happens consistently, metrics will become inconsistent.
As you said, we can probably do the same thing for DNS probes as we do for HTTP probes, to allow high frequency probing. In HTTP probes, we use the following formula:
     (requests_per_probe * requests_interval) + timeout < interval

You could probably use the following values for your use case:
request_per_probe = 50
per_request_interval = 80 ms
timeout = 999 ms
interval = 5000 ms
This way you'll be able to run 50 probes per 5 sec. You can also tune it a bit.. increase interval between requests and reduce timeout a bit.
There will still a be gap of timeout in every probe interval though (20% in this case), but impact of that can be minimized by increasing the interval and number of requests in that interval, while timeout remains constant.
To minimize time gaps further, you can possibly run replicas of the same probe --
   {
      name: "my_dns_probe_00"
      ...
  }
  {
      name: "my_dns_probe_01"
      ..
   }

What do you think?

Happy new year! 😄

There will still a be gap of timeout in every probe interval though (20% in this case), but impact of that can be minimized by increasing the interval and number of requests in that interval, while timeout remains constant.

That's a good point about using a larger interval and number of requests to amortize the timeout. I think that should work well enough in practice for achieving a fixed rate of requests.

Cool, I've prepared a PR to add parallel requests to DNS probes:
https://github.com/cloudprober/cloudprober/pull/670
I'll do some more testing and add some tests before merging.

Thanks - #670 LGTM

@cbroglie I've merged #670. Give it a try if you can, using the 'main' docker tag or pre-release binaries. I'm planning to cut a new release in a couple of weeks if you want to wait for that.

Gave docker.io/cloudprober/cloudprober:main a shot and everything seems to work as expected, thanks again!

Awesome. Great to hear.
I'll close this now. I am targeting the new release in about 2-3 weeks, but may end up releasing sooner.


Does Geo Location can  get city status ？

hello！
first, thanks for the tool！
I download GeoLiteCity City database，modify the config well，but generate the html is also don't have city, how to resolve problem.

Here are the steps to get the city field working (For IPv4 City database):
# mkdir -p  /usr/local/share/GeoIP/
# cd  /usr/local/share/GeoIP/
# wget -N http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# gunzip GeoLiteCity.dat.gz

Then edit your goaccess config file and add
geoip-database /usr/local/share/GeoIP/GeoLiteCity.dat

or run it as:
goaccess -f /var/log/nginx/access.log --geoip-database=/usr/local/share/GeoIP/GeoLiteCity.dat

thanks ! I already get it ok!

Great. Closing this.


Confusing error message for certain invalid joint parent/child frame configurations

Open arm26
Navigate to Joints --> offset
Change PhysicalFrame:child_frame to r_ulna_radius_hand_offset
Message of "Reason: Assigned an invalid SimTK::MobilizedBodyIndex" may be unclear to users

W10 Pro, OpenSim 4.0-2018-10-12-3071a2d5

@carmichaelong thanks for reporting. I will look into that once other changes to ComponentPath are done since AbsolutePath may get shorter and become usable or a mechanism to disambiguate may be more applicable then. Just a heads up.


Include a check for disk space before migrating

Let's consider the current space being used by the source data and the amount of space available in destination.
Sometimes the volume bound to a PVC is larger and the application may write past the PVC size.  Looking at PVC size only is not sufficient, we need to be aware of the PV size and the actual usage.
Issue shows up as:

No space left on device (28)\nrsync error: error in file IO (code 11) at receiver.c(374) [receiver=3.1.3]

Notes from requestor:

... thinking is if we can add an extra check when we generate the pvc-data.json file and identify if a PVC is full (or almost full - lets say >98% of capacity) to add extra 5Gbi to the PVC that we’ll create on the destination; and with it solve that issue.

One thing we haven't determined yet is when the volume size is larger than the PVC request, is this always reflected in the PV. In other words, if the volume is extended (potentially outside of OpenShift), will the PV size be updated too, or is it possible that even PV size isn't sufficient and we'll have to look at the filesystem itself? We should find an example of something like this from an in-use cluster. Lets look at PVC size, PV size, and mounted volume size and see if it's possible for mounted volume size to be greater than PV size.

I think a possible solution could be do something like:
$ oc -n <namespace> exec <pod> -- df -Ph /<pvc-name>
From there extract the usage % of the pvc mounted on the pod; and with that, take the decision of increasing or not the value for the capacity on the pvc-data generation.
Here: https://github.com/konveyor/pvc-migrate/blob/master/1_pvc_data_gen/pvc_data_gen.py#L142

So in this case PV size won't help us -- it's actually the PVC. Using the filesystem size/utilization as @lcordero suggested will help, but even there, it may be hard for a 100% guarantee due to the fact that block sizes on src and target may be different.

Regarding the block size issue, it may be that to determine the appropriate target PVC size we need to connect to the src cluster node in stage 1 and look at filesystem size and percent usage, and then to handle the block size issue we could have a configurable parameter to specify "target percentage over source cluster usage". So if it was, say, 5% by default and the src PVC is 100GB, 99% full, this would result in a target cluster PVC of 104GB or so. As a configurable param, if we start seeing the "no space left on device" failures, we could bump it up to 10% for future runs.


Domain join fails on reboot

After the DC promo + reboot, the configuration does a TEST of all the resources. This ends up failing on my xWaitForADDomain resource because it can't find the domain after 10 minutes. Note, this is post domain join (2nd reboot) -- so I don't know why it can't find the domain after the reboot.
VERBOSE: [2015-08-27T03:01:46] [ERROR] PowerShell DSC resource MSFT_xWaitForADDomain  failed to execute Set-TargetResource
functionality with error message: Domain 'sphafarm.com' NOT found after 20 attempts.

+1

+1

See my response in https://github.com/Azure/azure-quickstart-templates/issues/557#issuecomment-137604041
A different configuration for the LCM fixed it for me.

@kenazk Could this be a dupe of Issue #32 ?

This was due to a bug in WMF that has been fixed in the DSC 2.6 version. Please use that one.

So I am having this issue as well, using RebootNodeIfNeeded = $true using xWaitForADDomain.  This is a domain controller that is joined to the domain, and I am passing the same credentials that are passed as local administrator.


Make list of allowed tiers for Rucio; disallowed tiers for PhEDEx

Fixes #9600
Status
not-tested
Description
TODO: update the default values to empty list (I guess we will want to have Rucio disabled in the first days we start rolling the new version in).
Created another parameter listTiersToInject for the RucioInjector component.
This parameter has a list of datatiers that we want RucioInjector to inject data into Rucio. Data that belongs to any other datatiers will be completely skipped from any actions performed by the RucioInjector component.
Uses the same RucioInjector parameter - but in the opposite logic - for the PhEDExInjector component. Thus, PhEDExInjector will drop any data that matches that list of datatiers. Including dataset subscription, block deletion, closure of blocks, etc.
Is it backward compatible (if not, which system it affects?)
somehow
Related PRs
none
External dependencies / deployment changes
none

test this please

@ericvaandering @nsmith- Eric, Nick, sorry to bug you again. I just wanted to make sure there was no misunderstanding from my side, for what we have been planning for the end of this month.
This PR will control what goes to PhEDEx and what goes to Rucio (description above describes it better).

Tests went fine. I'm merging it to cut a fresh new release, still an issue or two before we can make a wmagent release candidate.


👩💻👩💻Implementation of the budget app ⚙⚙

We created a Ruby on Rails application that allows the user to:
👍Register and log in, so that the data is private to them.
👍Introduce new transactions associated with a category.
👍See the money spent on each category.
Thanks and kindly ♻
For my video presentation i had issues when i finish to record on loom the video is not uploading, i recorded countless video s it is still thesame. Kindly understand

@Reem-lab understood and thanks for your review and optional requested changes i will implement them thanks


For correction

In the part of the welcome to BCUninstaller in part 3/6 the texts in parts disappear the of descriptions

It's because text next to the check boxes is too long to fill in a single line. It doesn't wrap around like normal labels. This is a problem with the Net Framework and can't be easily fixed.

You need to manually insert new lines in the translation of checkboxes to fix this.

Fixed it in ac2bbe6d7ea20d79c6683ff8ff8b70e88c4aa00d


Question about the code releasing time

Great work！I am wondering when you will release your code？Thx

I was quite busy working on a new research project in the last few months and didn't have time to sort out the code. I will release the code in December. Thanks.


Raise the deprecation warning for args (besides kwargs)

Currently the deprecation warning is only shown for kwargs. I think that doing the same for args would be interesting (either by config or by default).
@deprecat(deprecated_args={'a':{'version':'4.0', 'reason': ''}, 'b':{'version':'3.0',  'reason': ''}})
def multiply(a, b, c):
    return 42

multiply(1,2,3)
multiply(a=1,b=2,c=3)

Wouldn't it be more consistent to display the deprecation at the first call? The deprecated args have actually been called. Currently the output is

>>> multiply(1,2,3)
42
>>> multiply(a=1,b=2,c=3)
<stdin>:1: DeprecationWarning: Call to deprecated Parameter a. -- Deprecated since v4.0.
<stdin>:1: DeprecationWarning: Call to deprecated Parameter b. -- Deprecated since v3.0.
42

I'm not 100% sure that's even possible given the Python argument resolution works.


chore(deps): upgrade configuration

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-configuration-k8s-27-main" workflow

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 4068

Questions ?
Please refer to the Backport tool documentation


[WIP] The root of all evil

This implements daemonization, let's see if it builds under Windows. I'll test under a windows machine i could get my hand on tomorrow.

Pull Request Test Coverage Report for Build 245339110

-34 of 40 (15.0%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at ?%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/config.rs
1
2
50.0%

src/revaultd.rs
5
7
71.43%

src/main.rs
0
31
0.0%

Totals

Change from base Build 245053445:
0%

Covered Lines:

Relevant Lines:
0

💛  - Coveralls

Works on Windows :tada:

Just needs a cap


Added heap insertion and deletion program

Max-Heap Implementation
This C program demonstrates the basic operations of a Max-Heap data structure, including insertion, deletion of the root node, and displaying the heap elements.
In a Max-Heap, each parent node is greater than or equal to its child nodes, which means the root node always contains the maximum element. The program provides a menu-driven approach to insert elements into the heap, delete the root node, and display the heap structure.
Key Operations:

Insert into Heap: Inserts an element into the heap and maintains the Max-Heap property by reordering the elements appropriately using a bottom-up approach (heapify up).
Delete Root: Deletes the root element (which is the maximum element) and maintains the Max-Heap property by reordering the heap using a top-down approach (heapify down).
Display Heap: Prints the current elements of the heap.

Sample Input and Output
MAIN MENU

INSERT
DELETE
DISPLAY
EXIT
Enter your choice: 1
Enter the item to be inserted in the heap: 30

MAIN MENU

INSERT
DELETE
DISPLAY
EXIT
Enter your choice: 1
Enter the item to be inserted in the heap: 50

MAIN MENU

INSERT
DELETE
DISPLAY
EXIT
Enter your choice: 1
Enter the item to be inserted in the heap: 20
The heap is: 50 30 20

MAIN MENU

INSERT
DELETE
DISPLAY
EXIT
Enter your choice: 2
Root node deleted
The heap is: 30 20

Time Complexity:

Insertion: Inserting a new element involves adding it at the last position and heapifying up. This takes O(log n) because - the height of the heap is log n.
Deletion (Root): Deleting the root involves moving the last element to the root and heapifying down. This also takes O(log n).
Display: Displaying the heap involves printing all elements, which takes O(n).

@pankaj-bind This program is w.r.t issue #402 assigned to me.


Minimize the Clone trait bound in src/structure/*

This change removes Clone from structs and impls in src/structure/*.rs.
This is actually the thing that started me down #31. It's is a much milder version, but I think it's necessary.
First, I'm not trying to rehash the same issue in #31. It's related, but I think this change is more important and easier to defend.
Second, please see “Data structures do not duplicate derived trait bounds” from the Rust API Guidelines for why “generic data structures should not use trait bounds that can be derived or do not otherwise add semantic value.” This applies directly to Clone, which (unlike AsRef<[u8]>) is not intrinsic to the structs or the to collection of functions that use them.
Finally, I think it's important to use Clone::clone as little as possible to avoid allocating (heap) memory when not necessary. Fortunately, Rust allows us to do that easily. This change is a precursor to moving some places away from using clone().

Thanks for revisiting this!


Bootstrap removal? Carousel alternative?

To avoid any confusion, it may be better to remove the references to Bootstrap 5 now that tailwind has been successfully added.
Although I'd like to add a carousel on the home page for products, finding a way to do something similar with tailwind may be better than leaving Bootstrap in the application.

After investigating, using tailwind for something like this feels like a bit of a stretch. You end up having to use a ton of classes (even more than usual with tailwind).
For the time being, I've implemented a Bootstrap 5 carousel, but I'm not entirely happy with how it works. As with a Blazor Server app, it needs to be initialised via JavaScript (using JSInterop), but the initialisation seems inconsistent. It usually needs the user to click on another element on the page before starting up, so I'm tried shifting focus to and from the the navbar element, which seems to improve things. This may not be an issue when there are more page elements for the user to click on.
Another longer term option may be to use the carousel in BlazorStrap instead, which would give me more options on the admin side, as it displays slide content from a C# List<>.


Syncing from upstream patroni/patroni (master)

bt_gitbot

Pull Request Test Coverage Report for Build<PHONE_NUMBER>7
Warning: This coverage report may be inaccurate.
This pull request's base commit is no longer the HEAD commit of its target branch. This means it includes changes from outside the original pull request, including, potentially, unrelated coverage changes.

For more information on this, see Tracking coverage changes with pull request builds.
To avoid this issue with future PRs, see these Recommended CI Configurations.
For a quick fix, rebase this PR at GitHub. Your next report should be accurate.

Details

117 of 117 (100.0%)  changed or added relevant lines in 9 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 99.867%

Totals

Change from base Build<PHONE_NUMBER>0:
0.0%

Covered Lines:
14285

Relevant Lines:
14304

💛  - Coveralls


Cut new release?

https://github.com/dronekit/dronekit-python/releases/tag/v2.9.1 was cut April 2017
What are the TODO items for a v2.9.2 or v2.10 or v3 release? (which would include the python3 support #891)
❤

@peterbarker is probably the best person to answer that!

I was thinking we might just from the current master - pretty much as soon as either (a) there's a chorus of "Yes please!") or (b) there's a deafening silence or.
https://github.com/dronekit/dronekit-python/pull/919 <- that would be merged into master and the v2.9.2 tag created.
Do we need #907 in first?

https://test.pypi.org/project/dronekit/#files <- test packages for 2.9.2
... and while we're at it: https://test.pypi.org/project/dronekit-sitl/#files


fix: add spec.description to produced yaml

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)
[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[ ] I have added tests to cover my changes.
[x] All new and existing tests passed.
[x] All commits are signed-off.

Summary
Some version(s) of OSCO require spec.description in the yaml.
Key links:

Sonar coverage

Fixes #864.


Horizontal alignment on profile at collections

re #1102
Needs to be done on collections view on the profile

Maybe @prachi00 can take this one?

@yangwao sure, I will do this


Prevent show event if reverting to last displayed URL's fragment

See this line and fix it...

What about if last match was a route with regExp hash? can I navigate back to this route?

What about if opening for first time a wrong link?


Why is the "remember" field excluded from login.html?

I'm referring to this. Is there a reason the "Remember me" checkbox is being excluded from the form entirely?

I can't remember why I made that decision. We should add it. Do you want to open a PR?
Instructions here: https://github.com/danihodovic/django-allauth-ui#hacking-on-the-project

Looking at what happens when the conditional is removed maybe it was put there to not give the checkbox the same look/styling as the email/password fields, so maybe it was supposed to be an if-else instead of just an if conditional?
As for a PR, I'd love to but I'm still learning Django and Tailwind so I can't right now unfortunately.

I will see if I can open a PR. Good catch


run.font.name doesn't work

I want to change whole ppt's font from one typeface to another, but it seems doesn't work, or there is anything I'm missing? Here is my code:
from pptx import Presentation
from pptx.util import Pt
from pptx.dml.color import RGBColor

pr = Presentation('d:/desktop/test1.pptx')

for slide in pr.slides:
    for shape in slide.shapes:
        if not shape.has_text_frame:
            continue
        for p in shape.text_frame.paragraphs:
            for r in p.runs:
                r.font.size = Pt(20)
                r.font.color.rgb = RGBColor(0, 0, 0)
                r.font.name = 'Arial'

pr.save('test1.pptx')

I would start by making it work for one shape, then scale up from there.
I can't see anything obviously wrong in your code, although I notice the pasted in code had a mixture of tabs and spaces for indentation; that's never a good idea and can cause problems with loops not looping where you think they are. I've reformatted it in your question. I'd get that straightened out before going too much further to avoid chasing your tail.

Will run.font.name set work with custom font like downloadable?
If yes, what is the procedure to apply it?


Bug on  create a Dataset from a DataFrame when  index its not ordered

This code generate a  segmentation fault
import pandas     as pd
import tensorflow as tf
import tensorflow.contrib.eager as tfe
tf.enable_eager_execution()

train = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=[2, 1, 4])
label = pd.Series([7, 8, 9], index=[2, 1, 4])

ds = tf.data.Dataset.from_tensor_slices((dict(train), label))

But this not,  (only index  it's changed) from [2, 1, 4] to [0, 1, 4]:
import pandas     as pd
import tensorflow as tf
import tensorflow.contrib.eager as tfe
tf.enable_eager_execution()

train = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=[0, 1, 4])
label = pd.Series([7, 8, 9], index=[0, 1, 4])

ds = tf.data.Dataset.from_tensor_slices((dict(train), label))

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow): Yes
OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Kubuntu 17.10 (Artful Aardvark), Kernel 4.13.0-21-generic
TensorFlow installed from (source or binary): binary
TensorFlow version (use command below): 1.8.0
Python version:  3.6.3
Bazel version (if compiling from source): N/A
GCC/Compiler version (if compiling from source): N/A
CUDA/cuDNN version: N/A
GPU model and memory: N/A
Exact command to reproduce: N/A

Thank you for your post. We noticed you have not filled out the following field in the issue template. Could you update them if they are relevant in your case, or leave them as N/A? Thanks.
Have I written custom code
OS Platform and Distribution
Bazel version
CUDA/cuDNN version
GPU model and memory
Exact command to reproduce

I updated the missing information.

Thanks for the report @marcelino-m - it surely shouldn't crash, so I'll look into that.
In the mean time, a workaround would be to explicitly convert to tensors before creating the dataset, with something like this:
import tensorflow as tf
import pandas as pd
import numpy as np
tf.enable_eager_execution()

train = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=[2, 1, 4])
label = pd.Series([7, 8, 9], index=[2, 1, 4])

np_train  = {k: np.array(v) for k, v in dict(train).items()}
np_label = np.array(label)
ds = tf.data.Dataset.from_tensor_slices((np_train, np_label))

thanks for the tips. I did something like that.


Rename DelayedServiceProvider to DeferredServiceProvider

Actually, the services get registered with no delay when they are requested. I think renaming to DeferredServiceProvider is more correct

@prowwid

Agree. Renaming it makes sense.

Hello @samdark and @SilverFire
Fixed in PR 16
With best regards,
Dmitry


DOC Explain how to get off CWP

Parent issue: https://github.com/silverstripeltd/product-issues/issues/468

The last commit:

change the name of the substitute recipes
added a blurb about cleaning up some extra composer metadada
added answers for all the questions

Approved assuming that we want this in the open source framework docs and somewhere else

I support this going into the open-source docs.
My feeling is that in the near term we should create a new section on the CMS Dev Docs that relates to recipes. Under this, we can get specific about each recipe and any relevant additional information. The idea of focusing more on recipes has already been started here.
The docs in this PR could then be linked from, or moved to, this new section under something along the lines of "NZ Public Sector Recipe' (or whatever we choose to call it), something like: .../Module Recipes/NZ Public sector recipes/Migrating off CWP Guide


ModuleNotFoundError: No module named 'nbconvert'

When i try and convert from an ipynb to a py file, I get ModuleNotFoundError: No module named 'nbconvert'
Environment data

VS Code version: 1.55.2
Jupyter Extension version (available under the Extensions sidebar): v2021.5.745244803
Python Extension version (available under the Extensions sidebar): v2021.4.765268190
OS (Windows | Mac | Linux distro) and version: Ubuntu 20.04
Python and/or Anaconda version: 3.7.6
Type of virtual environment used (N/A | venv | virtualenv | conda | ...): pyenv virtualenv
Jupyter server running: Local

Expected behaviour
Can convert a notebook to a script
Actual behaviour
Exception trying to convert a notebook to a script
Steps to reproduce:
Open any notebook, Export As "Python Script"
Workaround
Manually install 'nbconvert'

pip install nbconvert

I've attached the logs below, looks like vscode installed jupyter-core but not nbconvert
Logs
Info 2021-05-03 15:03:40: Process Execution: > ~/.pyenv/versions/3.7.6/envs/warp-speed/bin/python ~/.vscode/extensions/ms-toolsai.jupyter-2021.5.745244803/pythonFiles/pyvsc-run-isolated.py jupyter nbconvert --version
> ~/.pyenv/versions/3.7.6/envs/warp-speed/bin/python ~/.vscode/extensions/ms-toolsai.jupyter-2021.5.745244803/pythonFiles/pyvsc-run-isolated.py jupyter nbconvert --version
Error 2021-05-03 15:03:40: Export failed [i [Error]: Traceback (most recent call last):
  File "/home/david/.local/bin/jupyter-nbconvert", line 7, in <module>
    from nbconvert.nbconvertapp import main
ModuleNotFoundError: No module named 'nbconvert'

	at ChildProcess.<anonymous> (/home/david/.vscode/extensions/ms-toolsai.jupyter-2021.5.745244803/out/client/extension.js:24:222504)
	at Object.onceWrapper (events.js:422:26)
	at ChildProcess.emit (events.js:315:20)
	at maybeClose (internal/child_process.js:1021:16)
	at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)] {
  category: 'unknown'
}

Collecting nbconvert
  Downloading nbconvert-6.0.7-py3-none-any.whl (552 kB)
     |████████████████████████████████| 552 kB 12.6 MB/s
Requirement already satisfied: jupyter-core in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from nbconvert) (4.7.1)
Collecting defusedxml
  Downloading defusedxml-0.7.1-py2.py3-none-any.whl (25 kB)
Collecting jupyterlab-pygments
  Downloading jupyterlab_pygments-0.1.2-py2.py3-none-any.whl (4.6 kB)
Collecting nbformat>=4.4
  Downloading nbformat-5.1.3-py3-none-any.whl (178 kB)
     |████████████████████████████████| 178 kB 21.1 MB/s
Collecting nbclient<0.6.0,>=0.5.0
  Downloading nbclient-0.5.3-py3-none-any.whl (82 kB)
     |████████████████████████████████| 82 kB 1.2 MB/s
Collecting bleach
  Downloading bleach-3.3.0-py2.py3-none-any.whl (283 kB)
     |████████████████████████████████| 283 kB 21.5 MB/s
Collecting entrypoints>=0.2.2
  Using cached entrypoints-0.3-py2.py3-none-any.whl (11 kB)
Requirement already satisfied: pygments>=2.4.1 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from nbconvert) (2.8.1)
Collecting pandocfilters>=1.4.1
  Downloading pandocfilters-1.4.3.tar.gz (16 kB)
Collecting testpath
  Downloading testpath-0.4.4-py2.py3-none-any.whl (163 kB)
     |████████████████████████████████| 163 kB 21.9 MB/s
Requirement already satisfied: jinja2>=2.4 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from nbconvert) (2.11.3)
Collecting mistune<2,>=0.8.1
  Using cached mistune-0.8.4-py2.py3-none-any.whl (16 kB)
Requirement already satisfied: traitlets>=4.2 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from nbconvert) (5.0.5)
Requirement already satisfied: MarkupSafe>=0.23 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from jinja2>=2.4->nbconvert) (1.1.1)
Requirement already satisfied: jupyter-client>=6.1.5 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from nbclient<0.6.0,>=0.5.0->nbconvert) (6.2.0)
Collecting async-generator
  Downloading async_generator-1.10-py3-none-any.whl (18 kB)
Requirement already satisfied: nest-asyncio in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from nbclient<0.6.0,>=0.5.0->nbconvert) (1.5.1)
Requirement already satisfied: tornado>=4.1 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from jupyter-client>=6.1.5->nbclient<0.6.0,>=0.5.0->nbconvert) (6.1)
Requirement already satisfied: python-dateutil>=2.1 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from jupyter-client>=6.1.5->nbclient<0.6.0,>=0.5.0->nbconvert) (2.8.1)
Requirement already satisfied: pyzmq>=13 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from jupyter-client>=6.1.5->nbclient<0.6.0,>=0.5.0->nbconvert) (22.0.3)
Collecting jsonschema!=2.5.0,>=2.4
  Downloading jsonschema-3.2.0-py2.py3-none-any.whl (56 kB)
     |████████████████████████████████| 56 kB 7.0 MB/s
Requirement already satisfied: ipython-genutils in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from nbformat>=4.4->nbconvert) (0.2.0)
Requirement already satisfied: attrs>=17.4.0 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.4->nbconvert) (20.3.0)
Requirement already satisfied: importlib-metadata in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.4->nbconvert) (3.10.1)
Collecting pyrsistent>=0.14.0
  Downloading pyrsistent-0.17.3.tar.gz (106 kB)
     |████████████████████████████████| 106 kB 21.2 MB/s
Requirement already satisfied: six>=1.11.0 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.4->nbconvert) (1.15.0)
Requirement already satisfied: setuptools in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.4->nbconvert) (41.2.0)
Requirement already satisfied: packaging in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from bleach->nbconvert) (20.9)
Collecting webencodings
  Using cached webencodings-0.5.1-py2.py3-none-any.whl (11 kB)
Requirement already satisfied: typing-extensions>=3.6.4 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from importlib-metadata->jsonschema!=2.5.0,>=2.4->nbformat>=4.4->nbconvert) (<IP_ADDRESS>)
Requirement already satisfied: zipp>=0.5 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from importlib-metadata->jsonschema!=2.5.0,>=2.4->nbformat>=4.4->nbconvert) (3.4.1)
Requirement already satisfied: pyparsing>=2.0.2 in /home/david/.pyenv/versions/3.7.6/envs/warp-speed/lib/python3.7/site-packages (from packaging->bleach->nbconvert) (2.4.7)
Building wheels for collected packages: pandocfilters, pyrsistent
  Building wheel for pandocfilters (setup.py) ... done
  Created wheel for pandocfilters: filename=pandocfilters-1.4.3-py3-none-any.whl size=7992 sha256=2e53e1294fe91eabde439c4e2ffedc95081e3bf4d0e01367220b89cf8c4d352a
  Stored in directory: /home/david/.cache/pip/wheels/42/81/34/545dc2fbf0e9137811e901108d37fc04650e81d48f97078000
  Building wheel for pyrsistent (setup.py) ... done
  Created wheel for pyrsistent: filename=pyrsistent-0.17.3-cp37-cp37m-linux_x86_64.whl size=130115 sha256=913a74c3b7c6242cb6b0b4b0f3d4a02e790deae3b79725f5cdb114fc898d5f94
  Stored in directory: /home/david/.cache/pip/wheels/a5/52/bf/71258a1d7b3c8cbe1ee53f9314c6f65f20385481eaee573cc5
Successfully built pandocfilters pyrsistent
Installing collected packages: pyrsistent, jsonschema, webencodings, nbformat, async-generator, testpath, pandocfilters, nbclient, mistune, jupyterlab-pygments, entrypoints, defusedxml, bleach, nbconvert
Successfully installed async-generator-1.10 bleach-3.3.0 defusedxml-0.7.1 entrypoints-0.3 jsonschema-3.2.0 jupyterlab-pygments-0.1.2 mistune-0.8.4 nbclient-0.5.3 nbconvert-6.0.7 nbformat-5.1.3 pandocfilters-1.4.3 pyrsistent-0.17.3 testpath-0.4.4 webencodings-0.5.1

@david-waterworth Thanks for the bug. Just to clarify:

Was nbconvert already installed in your current environment when you attempted the export?
Are the second set of logs the terminal output from you manually installing nbconvert yourself?
Did you get prompted to install nbconvert or did it simply fail with an error?

We should prompt to install nbconvert if we're not already doing that.

@joyceerhl, no nbconvert wasn't already installed. The second set of logs shows what was installed when I manually installed nbconvert. I've never installed nbconvert in the past, whenever I've started a notebook in a new virtualenv everything automatically installs (or at least I've not had an issue using export in a new environment without installing any additional notebook dependencies). It was only an error message, not prompt.

Thanks, that's very helpful. We rely on nbconvert being installed to perform notebook exporting, so the bug here is that we should have shown you a prompt to install nbconvert on detecting that nbconvert wasn't installed.

Resolving as dupe of #5222. That bug contains many more users running into the same issue and it appears that it reflects users not being properly prompted to install dependencies needed for export to work.


multipleOf fails validation (decimals)

I noticed that json schemas with multipleOf fail to validate when using decimals.
1.1 is accepted as multiple of 0.1, but 1.9 is not.
example program that demonstrates the problem
    from jsonschema import validate, __version__
    import json

    schema = json.loads("""
    {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "type": "object",
        "properties": {
            "foo": {
                "type": "number",
                "multipleOf" : 0.1
            }
        },
        "additionalProperties": false,
        "required": [
            "foo"
        ]
    }
    """)

    example1 = json.loads("""
    { "foo": 1.1}
    """)

    example2 = json.loads("""
    { "foo": 1.9}
    """)

    def main():
        print "jsonschema.__version__ = ", __version__
        validate(example1, schema)  # this one works
        validate(example2, schema)  # this should work, but doesn't

    if __name__ == "__main__":
        main()

result
jsonschema.exceptions.ValidationError: 1.9 is not a multiple of 0.1

expected result
validation passes
version
jsonschema.__version__ =  2.5.1

Hi! Thanks.
I can read this more carefully tomorrow, but from quickly glancing at that, you don't have any decimals there, you have floats. Specifically you have 1.9, which most likely is not in fact divisible by 0.1 because I suspect it's not representable exactly in binary. If you're unfamiliar and my guess is correct, you'd want to familiarize yourself with floating point (im)precision, and possibly to tell json.loads to deserialize your JSON numbers as decimal.Decimals or the like instead, if you actually want fixed or arbitrary precision.
Apologies if my guess is wrong, just let me know if you're aware of the above.

I understand In json there is no decimal, just integers and floats. the json schema above uses 'multipleOf' as a way to restrict the 'number'  to 1 digit decimals.
Although it might be possible to solve this with parse_float=decimal.Decimal in json.loads (its not, see below)  one could argue that jsonschema should handle this somehow. (I did not think this through, so I'm not sure this is what jsonschema should do)
What would you expect jsonschema to do here ? Handle this transparantly or not ? In my case the python code doesn't mind that the actual number is a float, thats perfectly fine. I just want to be sure that the json validates against the schema.
If you think json schema should handle this transparantly, the implementation of multipleOf could do some smarter checks if the remainder is smaller than some EPSILON.
problem with using parse_float=decimal.Decimal
When changing the code to use
example2 = json.loads("""
{ "foo": 1.9}
""",
parse_float=decimal.Decimal
)

you get the following exception
...v/lib/python2.7/site-packages/jsonschema/_validators.py", line 291, in properties_draft4 schema_path=property,
...v/lib/python2.7/site-packages/jsonschema/validators.py", line 114, in descend for error in self.iter_errors(instance, schema):
.../v/lib/python2.7/site-packages/jsonschema/validators.py", line 98, in iter_errors  for error in errors:
...v/lib/python2.7/site-packages/jsonschema/_validators.py", line 111, in multipleOf quotient = instance / dB
TypeError: unsupported operand type(s) for /: 'Decimal' and 'float

when using parse_float=decimal.Decimal also in the json.loads() of the schema itself, the above problem does not happen. then the example program works fine.
So still open, what you want jsonschema do, in case a python program doesn't care about how it interprets the these numbers.

I don't see why jsonschema should treat floats any differently than any other program in Python personally. Users who want arbitrary precision are free to use decimal.Decimal, yeah.

Well its not the same as any other program in Python, If one wants Decimal one can indeed use it. However I see the following problem when someone don't want decimal.Decimal.They are now forced to use it, if they want to validate their json.
A program that is perfectly fine with using just floats internally (as is the default) cannot rely on validating its json with jsonschema when the schema contains multipleOf.  validate might just fail (or pass) for them, while the original json string is perfectly valid.
What should such a program do ?  First loads() all json with parse_float=decimal.Decimal, just be be able to validate the json? and then loads() again to use floats internally as it intended?
Not sure what the right approach is, but the current behaviour makes jsonschema hard to work with, if a schema has multipleOf=0.1.
I guess this program probably arises from the fact that jsonschema.validate() works on python objects, instead of the actual json strings.

What you're describing has nothign to do with multipleOf -- your original example is equally "correct" / "wrong" if you just have validate(1.9, {"divisibleBy" : 0.1}). The "problem" is that anyone dealing with JSON needs to know that JSON does not have decimals, it has numbers, and they're generally deserialized as floats. If they don't want that, they need to specify that they want fixed precision instead, which was what I meant by "it's the same as any other Python program" -- it's just JSON, you need to use it properly, same as anywhere else.

Sorry, sent that too quickly, obviously multipleOf and divisibleBy are the same thing, so scratch that first sentence. The rest was my point though.

I'm going to close, but if you feel strongly / disagree / want to discuss more, feel free to reopen.


fix: catch missing exceptions in kernel

Without this change, the kernel throws C++ exceptions (which are not catchable in Lean code).  For example, run the following in server mode:
import Lean
open Lean

def slowlyEvalsToTrue : Prop :=
  go 1000000
where
  go | 0 => True | n + 1 => go n

#eval addDecl <| .thmDecl {
  name := `test
  levelParams := []
  type := .const ``slowlyEvalsToTrue []
  value := .const ``True.intro []
}

The snippet above crashes the server (due to an uncaught lean::stack_space_exception).  But with this PR, addDecl converts the C++ exception into a Lean exception and you get a nice error message.
This is blocking mathport.  One of the declarations we add to the environment takes forever to check in the kernel, breaking mathport.  If we could set a timeout, then this failure could be handled gracefully.

https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/mathport.20fails.20after.20mathlib4.20update/near/321295828

Unfortunately, this doesn't help at all since there's lots of "pure" functions (like Expr.instantiateRevRange) which can throw C++ exceptions but don't go through the wrapper. :sob:

The lack of exception catching also affects #1364, if we ever want to revive it.

Disable heartbeats for instantiate_rev_range
Alternative: add heartbeat-less version of replace.


Uploading files and images

Summary of problem or feature request
I couldn't figure out how to upload files and images with the editor. I'm doing some tests but I always get the same error, is there a guide or documentation to understand how to do it? I need to enable uploading of pdf files and images but I'm completely stuck and don't understand how to do it
Code snippet of problem

System details

Operating System Linux
PHP Version 8.2
Laravel Version 10
Laravel-DataTables Version 10.1
Laravel-DataTables Editor Version 1.25

Use the File or Image field, then set some upload rules. Inspect the ajax request to see the payload. Unfortunately, it's not well-documented atm. Thanks!
Fields\Image::make('avatar')
  ->fieldInfo('The image must be square and at least 200x200 pixels.'),


Fixed code example of extending detail endpoint

In custom endpoints docs, the code example is wrong:
export default class CommentResource extends Resource {
  static detail<T extends typeof Resource>(this: T) {
    return super.detail.extend({
      schema: { data: this },
    });
  }

Updated .detail to .detail()
export default class CommentResource extends Resource {
  static detail<T extends typeof Resource>(this: T) {
    return super.detail().extend({
      schema: { data: this },
    });
  }

Thanks for the fix! Can you also apply this to the website/versioned_docs folder for v5?

Thanks for the fix! Can you also apply this to the website/versioned_docs folder for v5?

Done

Done


SIL: Fix SILType::isLoweringOf() to correctly handle opaque archetypes

This predicate is meant to ask if the loweredType is equal to getLoweredType(pattern, formalType) for some abstraction pattern.
If the formal type contained an opaque archetype, we performed a different check, because we asked if loweredEqual is equal to getLoweredType(AbstractionPattern(formalType), formalType).
This caused a spurious SIL verifier failure when the payload of an existential contained an opaque archetype, because we lower the payload with the most general AbstractionPattern, so that @thin metatypes become @thick, etc.
The regression test exercises this bug, and also another bug that was present in 6.0 but was already fixed on main by one of my earlier refactorings.
Fixes rdar://problem/138655637.

@swift-ci Please smoke test

@swift-ci Please test source compatibility

@swift-ci Please test Windows


Review: https://headwayapp.co/rcn-changelog :octocat: !

Review: https://headwayapp.co/rcn-changelog :octocat: !
--
by restuta


[Bug]: Under Task-Related data, the delete button under the "identifiers" slice on the radial annotator is not working.

Steps to reproduce the bug
1.When I go to the "Identifiers" slice on the radial annotator under
2.Task-Related data
3.The delete button is not working.
...

Screenshot

Expected behavior
I expect the delete button to delete the identifier.
Additional Screenshots
No response
Environment
Production
Sandbox Used
No response
Version
version 0.35.1
Browser Used
Chrome

Duplicated: https://github.com/SpeciesFileGroup/taxonworks/issues/3601
@mjy same issue, it's no possible to delete global identifiers on shared objects


Added Code Generator For Ruby (Faraday)

PR Description
This PR adds automated code generation for Ruby's Faraday library and also tests the generated code.
Related Issues

Related Issue #147
Closes #147

Checklist

[x] I have gone through the contributing guide
[x] I have updated my branch and synced it with project main branch before making this PR
[x] I have run the tests (flutter test) and all tests are passing

Added/updated tests?

[x] Yes, I have added and tested all the test cases and the generated code behaves as expected.

Instructions to run the generated code in local computer

Install ruby and setup path so that ruby and gem executable are available.
Run

gem install bundler

to install bundle as a command line tool.
4. Inside a directory create one GemFile and main.rb file.
5. Add faraday as mentioned in the Documentation and Faraday Multipart for sending multipart form requests. Add them inside the GemFile along with one source attribute at the top of the GemFile. Then run
bundle install

to install the dependencies.
6. Copy the generated code inside main.rb file.
7. Run ruby ./main.rb to run the generated code.
Note: For HEAD 2 test case, the initial response has status code 301 but faraday_middleware gem, which was previously required for following redirections, is deprecated and a curated list has been published under awesome-faraday by the maintainers. The redirection middleware is now bundled as it's own gem faraday-follow-redirects which is an external dependency which I have not included in code generator.
I wish to add that after discussing that with maintainers. Integrating redirection following is mentioned in the documentation as

and can be achieved by adding the faraday.response :follow_redirects statement above adapter setup.

Along with that, we need to add the require statement with the existing require statements so that the respective code is imported.
Thus currently running generated code for HEAD 2 returns 301 but API Dash returns 405, which can be modified accordingly for both to return 405 and get the desired output of the user. If required, I am willing to add the support for redirection and modify the required code.

Thanks for the PR

Thanks for the PR

You are welcome @animator . I has a query though, I was reviewing the changes made to the PR before merging and saw that application/x-www-form-urlencoded content type header setup is removed. I just wanted to ask regarding whether this should be totally avoided from next time onwards and #337 should be used to set it up automatically? In that case, I'll try to fix #337  before raising any other code generator PRs.
Thanks again for merging the PR. LGTM 🚀


Implement Unifi Protect-complaint output

Let me preface this suggestion with acknowledging that I am not sure if this is even possible.
The unifi ecosystem is pretty nifty, but the hardware prices are very steep. Their NVR offering is pretty reasonable, but cameras are not. It would be great if go2rtc could support bringing standard RTMP/RTSP cameras into Unifi Protect. UI doesn't seem to be interested in supporting 3rd-party cameras, most likely for business reasons.
There's at least one project (unifi-cam-proxy) implementing that functionality, but it would be great to have it "under one roof" within the swiss-army-knife go2rtc :)

Well. unifi-cam-proxy project does many interesting things about passing motion data from different camera brands to Unifi platform. I don't see the point in repeating all this code yet.

I would have loved to see this feature!

For reference for anyone looking to do this, the protocol doesn’t new to be reverse engineered or anything. UniFi now supports ONVIF.
https://help.ui.com/hc/en-us/articles/26301104828439-Third-Party-Cameras-in-UniFi-Protect

I am digging through the wireshark diffs now, more to go but two things have jumped out at me so far.

🚩go2rtc returns unsupported action when unifi protect sends GetVideoSources.

A working response looks like this and appears straight forward to implement.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    xmlns:i0="http://www.onvif.org/ver10/device/wsdl" xmlns:tns="http://tempuri.org/"
    xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
    xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema">
    <soap:Body>
        <trt:GetVideoSourcesResponse xmlns:trt="http://www.onvif.org/ver10/media/wsdl"
            xmlns="http://www.onvif.org/ver10/media/wsdl">
            <trt:VideoSources token="video_src_token">
                <trt:Framerate>29.97003</trt:Framerate>
                <trt:Resolution>
                    <trt:Width>1280</trt:Width>
                    <trt:Height>720</trt:Height>
                </trt:Resolution>
            </trt:VideoSources>
        </trt:GetVideoSourcesResponse>
    </soap:Body>
</soap:Envelope>

❓go2rtc's GetProfilesResponse is missing the VideoSourceConfiguration block in the profile.

It's unclear if it is required but a working response looks like this:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    xmlns:i0="http://www.onvif.org/ver10/device/wsdl" xmlns:tns="http://tempuri.org/"
    xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
    xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema">
    <soap:Body>
        <trt:GetProfilesResponse xmlns:trt="http://www.onvif.org/ver10/media/wsdl"
            xmlns="http://www.onvif.org/ver10/media/wsdl">
            <trt:Profiles token="main_stream">
                <trt:Name>MainStream</trt:Name>
                <trt:VideoSourceConfiguration token="video_src_config_token">
                    <trt:Name>VideoSource</trt:Name>
                    <trt:UseCount>2</trt:UseCount>
                    <trt:SourceToken>video_src_token</trt:SourceToken>
                    <trt:Bounds x="0" y="0" width="1280" height="720"></trt:Bounds>
                </trt:VideoSourceConfiguration>
                <trt:VideoEncoderConfiguration token="encoder_hq_config_token">
                    <trt:Name>CardinalHqCameraConfiguration</trt:Name>
                    <trt:UseCount>1</trt:UseCount>
                    <trt:Encoding>H264</trt:Encoding>
                    <trt:Resolution>
                        <trt:Width>1280</trt:Width>
                        <trt:Height>720</trt:Height>
                    </trt:Resolution>
                    <trt:Quality>4</trt:Quality>
                    <trt:RateControl>
                        <trt:FrameRateLimit>29.97003</trt:FrameRateLimit>
                        <trt:EncodingInterval>1</trt:EncodingInterval>
                        <trt:BitrateLimit>5000</trt:BitrateLimit>
                    </trt:RateControl>
                    <trt:H264>
                        <trt:GovLength>29.97003</trt:GovLength>
                        <trt:H264Profile>Main</trt:H264Profile>
                    </trt:H264>
                    <trt:SessionTimeout>PT1000S</trt:SessionTimeout>
                </trt:VideoEncoderConfiguration>
            </trt:Profiles>
            <trt:Profiles token="sub_stream">
                <trt:Name>SubStream</trt:Name>
                <trt:VideoSourceConfiguration token="video_src_config_token">
                    <trt:Name>VideoSource</trt:Name>
                    <trt:UseCount>2</trt:UseCount>
                    <trt:SourceToken>video_src_token</trt:SourceToken>
                    <trt:Bounds x="0" y="0" width="1280" height="720"></trt:Bounds>
                </trt:VideoSourceConfiguration>
                <trt:VideoEncoderConfiguration token="encoder_lq_config_token">
                    <trt:Name>CardinalLqCameraConfiguration</trt:Name>
                    <trt:UseCount>1</trt:UseCount>
                    <trt:Encoding>H264</trt:Encoding>
                    <trt:Resolution>
                        <trt:Width>854</trt:Width>
                        <trt:Height>480</trt:Height>
                    </trt:Resolution>
                    <trt:Quality>4</trt:Quality>
                    <trt:RateControl>
                        <trt:FrameRateLimit>29.97003</trt:FrameRateLimit>
                        <trt:EncodingInterval>1</trt:EncodingInterval>
                        <trt:BitrateLimit>1000</trt:BitrateLimit>
                    </trt:RateControl>
                    <trt:H264>
                        <trt:GovLength>29.97003</trt:GovLength>
                        <trt:H264Profile>Main</trt:H264Profile>
                    </trt:H264>
                    <trt:SessionTimeout>PT1000S</trt:SessionTimeout>
                </trt:VideoEncoderConfiguration>
            </trt:Profiles>
        </trt:GetProfilesResponse>
    </soap:Body>
</soap:Envelope>

I'll set up a go2rtc instance with main_stream and sub_stream and see how where that gets me but I expect that GetVideoSourcesResponse will need to be implemented before moving further.
It's not clear yet which of these names/tokens are arbitrary or if they are meaningful, but at least we've got an idea of where we need look.


Dynamic Group - UI Issues with List View

Environment

Python version:
Nautobot version: 1.4.0-beta1 (branch next from 4th of August)

Steps to Reproduce

Create following dynamic groups:

Cisco
Juniper
Leaf
Spine
Salt-Service

Stack them as below:

Salt-service
| Cisco
| - Leaf
| - Spine
| Juniper
| - Leaf
| - Spine

so that the top service (salt) has both Cisco and Juniper. Each Cisco and Juniper has Leafs and Spines

Expected Behavior
Sorted as per the information above.

Observed Behavior
Sorting as on the screenshot:

It looks like this is sorting by weight and not taking into account inheritance

I think it's a basic bug in the UI code that is mapping objects based on their slug and a weight, and if there are duplicates the most recent one is being included incorrectly. That's just a hunch though.

Closed with #2144


fix typo in README. Add flag to skip downloading CA certificates

Adding the option to disable downloading CA certificates by creating an environment variable DOWNLOAD_CA_CERTIFICATES and setting it to false
Fix typo in README described in this issue

Thanks!


add Solo-learn

Before submitting

[x] Was this discussed/approved via a GitHub issue? (no need for typos and docs improvements)
[x] Did you create/update your configuration file?
[x] Did you add your config to CI - GitHub action and Azure pipeline?
[x] Are all integration tests passing?

What does this PR do? [optional]
Resolves https://github.com/vturrisi/solo-learn/issues/219
Did you have fun?
Make sure you had fun coding 🙃

the issue with aligning to the latest development seems to be related to adding loops to checkpoints...
>       assert list(ckpt.keys()) == expected_keys
E       AssertionError: assert ['epoch', 'gl...llbacks', ...] == ['epoch', 'gl..._states', ...]
E         At index 4 diff: 'loops' != 'callbacks'
E         Left contains one more item: 'lr_schedulers'
E         Full diff:
E           [
E            'epoch',
E            'global_step',
E            'pytorch-lightning_version',
E            'state_dict',
E         +  'loops',
E            'callbacks',
E            'optimizer_states',
E            'lr_schedulers',
E           ]

@awaelchli any thoughts, is this intended so we shall ask @vturrisi to update tests?

This is expected.
New lightning version saves a key loops into the checkpoint
Loading an old checkpoint with new lightning version is no problem, we skip loading that key.
I don't see any problem :)


API break with the latest semanticscholar package v0.3.2

Hey oowekyala, hope you are doing well!
I have wanted to reuse your tool lately but I ran into an exception while trying to use it.
I have installed all the dependencies to their latest released versions.
It looks like semanticscholar got its API changed... here is the traceback:

Traceback (most recent call last):
File "/usr/lib/python3.10/runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/home/gageotd/Documents/workspace/citegraph/src/citegraph/main.py", line 142, in
main(args, parser.error)
File "/home/gageotd/Documents/workspace/citegraph/src/citegraph/main.py", line 118, in main
with PaperDb(bibdata=bibdata, dbfile=db_loc) as db:
File "/home/gageotd/Documents/workspace/citegraph/src/citegraph/semapi.py", line 230, in exit
raise exc_val
File "/home/gageotd/Documents/workspace/citegraph/src/citegraph/main.py", line 120, in main
graph = create_graph(seeds=seeds, biblio=bibdata, params=params, db=db)
File "/home/gageotd/Documents/workspace/citegraph/src/citegraph/explore.py", line 249, in smart_fetch
roots = [resp for id in seeds for resp in [db.fetch_from_id(id)] if resp or not handle_api_failure(id, None)]
File "/home/gageotd/Documents/workspace/citegraph/src/citegraph/explore.py", line 249, in
roots = [resp for id in seeds for resp in [db.fetch_from_id(id)] if resp or not handle_api_failure(id, None)]
File "/home/gageotd/Documents/workspace/citegraph/src/citegraph/semapi.py", line 163, in fetch_from_id
paper_dict: Dict = semanticscholar.paper(paper_id)
AttributeError: module 'semanticscholar' has no attribute 'paper'. Did you mean: 'Paper'?

I "fixed" it by setting semanticscholar version to 0.2.1 in DEPENDENCIES, which might be a good workaround for the moment.
Dylan

Hi Dylan, thanks for reporting! I hope you're doing well too!
This unfortunately got buried in my notifications, but I have now updated semanticscholar to v0.4.1 and fixed the api incompatibilities. I hope your workaround helped you get something out of this program anyway
Cheers
Clément


Update question answering sample to use GPT-3.5

Purpose
Update the question answering with openai and pinecone sample to use GPT-3.5 model
This was suggested as a review comment for the blog article - https://github.com/wso2-enterprise/choreo/issues/20467

Hi,
Thanks a lot for the PR Sorry, we've missed this PR ;(. We've recently updated all the samples to gpt4o mini with this PR https://github.com/ballerina-guides/ai-samples/pull/71


contribution request

Hi
I would like to contribute and update the project to work with R16. My PR is ready. Just need a permissions to push it into the repository.

Fork the project and submit a PR! Would be happy to accept it and give you contributor access afterwards.


npm run dev error on Ubuntu 16.04, Laravel Homestead Laravel 5.4 on fresh project

I use laravel homestead on my Ubuntu 16.04. LTS. On new Laravel 5.4 project I get this errors when I run npm run dev command. On npm/npm they said it's problem with webpack.config.js in laravel-mix This is errors from terminal:
vagrant@homestead:~/www/blog$ npm run dev

> @ dev /home/vagrant/www/blog
> node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js

/home/vagrant/www/blog/node_modules/laravel-mix/setup/webpack.config.js:126
        let extractPlugin = new plugins.ExtractTextPlugin(
        ^^^

SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:387:25)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at requireConfig (/home/vagrant/www/blog/node_modules/webpack/bin/convert-argv.js:96:18)
    at /home/vagrant/www/blog/node_modules/webpack/bin/convert-argv.js:109:17
    at Array.forEach (native)

npm ERR! Linux 3.19.0-25-generic
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "dev"
npm ERR! node v5.7.0
npm ERR! npm  v3.6.0
npm ERR! code ELIFECYCLE
npm ERR! @ dev: `node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ dev script 'node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the  package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node node_modules/cross-env/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/vagrant/www/blog/npm-debug.log

Log:
npm-debug.log.zip

Update your installed version of Node.

@JeffreyWay My Vagrant Box is updated but Node is still 5.7 version. How to do that in Laravel Homestead?


Add the sched_getaffinity support for Android.

Now the NumSchedulableCPUs() always chooses to  return 4 cores for Android, other than try the Bionic supported sched_getaffinity to get the actual available cores. Here I remove the "!defined(ANDROID)" macro and just keep the " linux" macro to work for both pure-linux and android-linux platform.
The reason why we can drop the "ANDROID" marco is that the GNU toolchain would always has the system-specific predefined macros "linux"  setting to 1.

Can one of the admins verify this patch?

Information about the GNU toolchain's "system-specific predefined macros" can be get from:
https://gcc.gnu.org/onlinedocs/cpp/System-specific-Predefined-Macros.html

How can we infer that the linux is always set to 1 by the GNU cpp?

(1) gcc-4.9/gcc/c-family/c-cppbuiltin.c: in c_cpp_builtins()
1041   TARGET_OS_CPP_BUILTINS ();
(2) gcc-4.9/gcc/config/aarch64/aarch64-linux-android.h:
#undef TARGET_OS_CPP_BUILTINS #define TARGET_OS_CPP_BUILTINS()                \   do                                            \     {                                           \         GNU_USER_TARGET_OS_CPP_BUILTINS();      \         ANDROID_TARGET_OS_CPP_BUILTINS();       \     }                                           \   while (0)
(3) gcc-4.9/gcc/config/linux.h:
#define GNU_USER_TARGET_OS_CPP_BUILTINS()                       \     do {                                                        \         if (OPTION_GLIBC)                                       \           builtin_define ("__gnu_linux__");                     \         builtin_define_std ("linux");                           \         builtin_define_std ("unix");                            \         builtin_assert ("system=linux");                        \         builtin_assert ("system=unix");                         \         builtin_assert ("system=posix");                        \     } while (0)
(4) gcc-4.9/gcc/c-family/c-cppbuiltin.c: in builtin_define_std() routine, the "linux" macro will be converted to "linux"

Maybe pete<EMAIL_ADDRESS>can help to review.
Thanks!

THIS E-MAIL INCLUDING ANY ATTACHMENTS CONTAINS SPREADTRUM’S PROPRIETARY CONFIDENTIAL INFORMATION THAT IS HIGHLY CONFIDENTIAL AND PRIVILEGED.
From: Tensorflow Jenkins<EMAIL_ADDRESS>Sent: Thursday, March 23, 2017 5:44 PM
To: tensorflow/tensorflow
Cc: Ji Qiu (邱吉); Author
Subject: Re: [tensorflow/tensorflow] Add the sched_getaffinity support for Android. (#8653)
Can one of the admins verify this patch?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHubhttps://github.com/tensorflow/tensorflow/pull/8653#issuecomment-288666071, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AXR6un-flMzXuaLFquG0DStQTDTiLKqxks5roj7GgaJpZM4Mmese.

@tensorflow-jenkins Test this, please.

Please don't merge this yet; while testing this internally I discovered a build issue. Looking into it now.

@andrewharp working now?

@drpngx Not yet. We need to replicate sched_getaffinity() as the function isn't present in the NDK/API combination we use internally for building.

@andrewharp is this good to go now?

@martinwicke No, it can't go in as-is since we need a workaround internally. sched_getaffinity() isn't provided by our Android NDK so we need to replicate the system calls it uses. I'll update once I get a chance to properly test the fix.

I talked to Andrew offline and it sounds like due to internal API differences, this change sort of has to be completely done differently, and Andrew has decided to take this on, so I'm going to close this PR.
I wish I had a better answer for you, but the TF team doesn't control the NDK versions that are built inside all of Google, so the best we can do is do the work required to solve this problem for you.


Sprite examples

Hello there! I'm experimenting with the library and getting the hang of it, however the sprite examples don't seem to work. The release version has some naming typos for the assets, but even after correcting those, no sprites show on the emulator.
The game examples appear to deal with sprites differently, by writing directly to vram. Is this the intended way? Or maybe there is something I am missing?
Cheers!

Hello, it is strange as we tested all examples.
Could you please explain which example exactly (we have more than one sprite example).
Also, what do you mean with release version ? and which typos assets did you find ?
By the way, fixing typo will not help to have something on emulator.

Hey, thanks for the reply!
The release version I'm talking about is the latest, 1.5.1.
The examples in questions are graphics/sprites/simplesprite and animatedsprite. The first one (simplesprite) references 'TILpacsprite' and 'SZTILpacsprite' which lack the 'gfx' suffix added by the bitmap conversion tool. (This appears to have been fixed on the main branch already).
However, after fixing these and building, no sprites show up on emulators (tried both blueMSX and ColEm). I've also tried copying the contents of the generated .inc file directly to the C source file, as I thought maybe the sprite data was not properly defined, but that didn't work either.
I tried looking into other examples to see if I could figure it out, but both Bunny and Diamond appear to use custom assembly routines and not the library functions such as sprite_set, etc.
I've attached the zipped example folder - the only thing I changed from the original was include 'gfx' for the assets. The built ROM file is also in there, so you may take a look.
simplesprite.zip

sorry, i thought it was about pvsneslib and not pvcollib ...
ok, I will check the example ^^

Hi! Dropping by to check if there's any answer to my problem, hehe. I really look forward to using this lib for some projects. :D

Yeah, lots of work but, you know, i'm using the lib in all my projects. SO, even if one example is not working for you, I think it's a good idea to try a project and test the lib ;)

Sure thing! Just wanted to know the intended way of using the functions, but I'll fiddle around a bit. Thanks! =)


New Feature : Whitelisting IPs and drop everything else

Hello
I would like to ask if you can implement the following feature :
Instead of blacklisting ips  , create  whitelisting ips functionality where all other requests will be rejected.
Thanks in advance

**Hi 👽 ! If you are interested in ⚙Advanced Phishing⚙ and the ✨Evilginx3✨ tool then I offer you Google Gmail and Custom Phishlets with a ✅Free Tutorial✅ which arrives if the 📈Telegram reaches 50 Subscribers📈
⏳ GOOGLE GMAIL PHISHLET 2024 WITH PROOF ⏳
->
⛔https://www.youtube.com/watch?v=nA47UknIE6A⛔
🔓 Ask your questions and a free tutorial from 50 subs on telegram !!!
->
📩https://t.me/Noremorse1011📩**


Formatting and notes for missing sections

There's a bit of LLM in here because I'm lazy at grammar checking.
Cut down some extra text and reworded bits for readability.

I got bored so added some ideas for the extra sections

lgtm. Might reword a lot of the latter end of the doc, but apart from that, the rewording is great :)


fix: fluentd outputs ecs-agent logs.

fix for fluentd default container name.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.2 out of 3 committers have signed the CLA.:white_check_mark: giltk:white_check_mark: povilasv:x: amit-mazorYou have signed the CLA already but the status is still pending? Let us recheck it.


refactor: xml launchfiles to python

Purpose

Refactor ros2 launch files implemented in XML to Python.
The purpose is described in more details in: https://github.com/RobotecAI/rai/issues/323

Proposed Changes

[x] Refactor ros2 launch files implemented in XML to Python.

[x] turtlebot launch
[x] rosbot xl launch

[x] Reduce code copies in launchfiles by extracting reusable launch blocks to a separate
files.
[x] fix rosbot-xl demo missing allowlist for HMI node

Issues

https://github.com/RobotecAI/rai/issues/323

Testing

Summary by CodeRabbit

New Features

Introduced command-line argument handling in the ROS demo script, allowing users to specify an allowlist file for topics and actions.
Added a new launch configuration for ROS applications, facilitating modular execution of multiple processes.
Developed a new allowlist file specifying essential ROS topics and services for robotic operations.
Created launch configurations for TurtleBot4 and ROS 2 applications, enhancing simulation capabilities.

Bug Fixes

Removed outdated launch configurations to streamline deployment and execution processes.

@maciejmajek
Good catch, fixed!


StoryLiner breaks autosaving

Add-on edition: StoryLiner Light
Add-on version: V 1.0.50
Blender version, from installer or from zip: 4.2 RC, installed through Blender Launcher (precise version - 4.2.0 Release Candidate, branch: blender-v4.2-release, commit date: 2024-07-14 21:29)
Blender was launched in Admin mode? No
OS: Windows 10 x64
Bug was also on previous versions (I don't know / No / Yes, seen on version x.x): I don't know

Describe the bug
Makes autosave not autosaving
To Reproduce

Enable StoryLiner Light

Expected behavior
Autosaving according to Preferences (I've set timer to 1min for quicker tests)
Additional context, screenshots...
Addon enabled - no autosaves in temp folder. Addon disabled + blender restarted -> autosaves start appearing in temp folder.

Hi @tonpix,
I'm afraid this is not a new bug... It was already there at the time of Ubisoft Shot Manager and I didn't know why and how to fix it.
Now I found a bit more information about it here: Autosave is postponed by 10 seconds when a modal operator is running #77825
So this is a bug at Blender level. It is due to the use of modal operators - which are omnipresent in StoryLiner - and impacts many add-ons. Apparently it has not been fixed yet on Blender side, although it has been around for years 😞.
I will try to find the operators involved in the issue in StoryLiner but this may not fix the issue  - no ETA for that though, I cannot put a high priority on that at the moment.
Best thing I can do at the moment is to advice you to use the manual incremental save (which is a not too bad practice by the way) and inform users of the issue.
I hope that helps...


faq: add tail emission video

im not willingly putting spaces / %20 in filenames (and having to forcepush about 5 times). when a pull request is made, you generally try to blend in / use similar code styles/syntax as the area you are changing if there are no strict standards in place

Yes yes, but the filename is bad (spelling and an extra space at the end), even if it use %20 like other stuff in the list

spelling/extra space corrected thanks, i requested an m4a and got an mp4, lets wait for vosto emisio to send an m4a (also no idea about these formats)

took a look at what M4V is and.. its not good:

M4V is a container video format developed by Apple, closely resembling the MP4 format. The main difference between M4V and MP4 is that an M4V file can enjoy DRM copy protection. This DRM protection is in place to prevent piracy, ensuring that M4V files purchased from the iTunes store cannot play on non-Apple players.

we will definitely not be getting an M4V version of the tail emission video from vosto :D

after realising what m4v format is, i dont think we should blend in anymore and stop using m4v. i have also replaced spaces with "_" in the filename. The only concern now could be that the filesize is 40~MB

WebM can be even better.

Thanks Vosto. I've added the 2 webm files. instead of adding a new translated string for nodes, ive recycled one for "Node" hopefully this is OK

fixed a typo Emsision -> Emission


npm run build error

It looks like you are using PowerShell. I don’t think we support that well. Can you try with WSL?

It looks like you are using PowerShell. I don’t think we support that well. Can you try with WSL?

Yes now  its working thanks very much  for quick  help

@surma Why do we not support Powershell again? Are there some commands or smth we're using that are linux specific?

I think I was wrong, actually. @RReverser spent some time years ago adding support for PowerShell. In fact, we even run CI on Windows.
However, after I opened #1423, I learned that we only ever ran CI with Node 14 and that CI breaks on Windows with Node 22. The error looks very similar to what OP said, so we should prob investigate.

There seems to be a typo in the resolve-dirs plugin, might be the root cause of the whole Windows-filepath issue? Lemme explain.
On my system the path to the squoosh dir is C:\\Projects\\Squoosh. Let's take one of the initial-css imports, import css0 from 'css:shared/prerendered-app/colors.css';. Here's a pseudo-log:
// (css-plugin)
"Resolving css:shared/prerendered-app/colors.css from initialCss"

// (resolve-dirs-plugin)
"Trying to resolve shared/prerendered-app/colors.css"
"Trying to resolve ./src/shared/prerendered-app/colors.css"
"Successfully resolved using this.resolve"
resolveResult = {
  external: true,
  id: './src/shared/prerendered-app/colors.css',
  meta: {},
  moduleSideEffects: true,
  syntheticNamedExports: false
}
// Not absolute, so return posix.resolve(resolveResult)
posix.resolve(resolveResult) // "/Projects/Squoosh/src/shared/prerendered-app/colors.css"

// (back to css-plugin)
return prefix + resolved.id; // "css:/Projects/Squoosh/src/shared/prerendered-app/colors.css"

And of course, the POSIX path does not exist on Windows, so we end up with this error:

[!] (plugin css) Error: Could not load css:/Projects/Squoosh/src/shared/prerendered-app/colors.css (imported by initialCss): Cannot find \Projects\Squoosh\src\shared\prerendered-app\colors.css in pathToResult

Using the fix shown in #1425, the logs will be the same except the ending:
// ...
// Not absolute, so return the path module's resolve(resolveResult) [the one that adjusts for the platform automatically]
resolve(resolveResult) // "C:\Projects\Squoosh\src\shared\prerendered-app\colors.css"

// (back to css-plugin)
return prefix + resolved.id; // "css:C:\Projects\Squoosh\src\shared\prerendered-app\colors.css"

Which correctly points to the CSS file. Tried it on both Windows and WSL, so fingers crossed.


disk attack: create file and write data to it automatically when the action is read-payload

when action is read-payload, users must specify the path of the file to read.
Chaosd can create a file and write data automatically, and then users don't need to specify the path.

related to https://github.com/chaos-mesh/chaosd/issues/40, and seems that #40 can be closed


Add seqhash v2

Changes in this PR
Fixes #397 . This PR makes seqhash v2, which is both compressed (~3x smaller than seqhash v1) and has compatibility for encoding fragments as seqhashes.
This PR has 100% test coverage.
Why are you making these changes?
Seqhash v1 produces hashes that are too large, and cannot be used to encode genetic parts / fragments.
Are any changes breaking? (IMPORTANT)
No
Pre-merge checklist
All of these must be satisfied before this PR is considered
ready for merging. Mergeable PRs will be prioritized for review.

[x] New packages/exported functions have docstrings.
[x] New/changed functionality is thoroughly tested.
[x] New/changed functionality has a function giving an example of its usage in the associated test file. See primers/primers_test.go for what this might look like.
[x] Changes are documented in CHANGELOG.md in the [Unreleased] section.
[x] All code is properly formatted and linted.
[x] The PR template is filled out.

Don't merge this yet: I am unsatisfied with the fragment algorithm, and want to fix it up.

Ready for check @TimothyStiles

Least Rotation is super applicable and allows people to hash plasmids reliably.

It doesn't though - you still have to do least comparison in order to get reverse complements.

Should the non-metadata string component be non-cryptographic and more similar to bwt for speed and better comparison?

I don't think they should be used for comparison at least, not many opinions on cryptography but it's hard to fix non cyptographic later if someone maliciously breaks things. Seqhash is used as an identifier - the kmer table or mash or blast index or minimap index or whatever can be on the other side of the index. Let's you change what your comparison algorithm is, which is much more important that your hashing algorithm.

Should V2 just be the metadata and we let users choose their own hashing method?

No, I don't think this is a good idea when trying to make relatively stable identifiers.

How many different hash algorithms should we intend to support and how should they be named?

However many are necessary! And I'm not really sure about naming - but might be good to think about.

Same could be said for the seqhash family but in this case there are some true semantic difference in both input and output. Should seqhashV2 be called FragHash?

I think I explain the use case for seqhashV2 pretty clearly in the package documentation. It shouldn't be called FragHash because it isn't just for fragments, it's for DNA/RNA/Proteins/Fragments. Fragment hashing is just a feature of v2 that v1 did not have.

"When should I use V1 rather than V2?"

This is a good question that I should add to the top of the package docs, but I do think it is answered if you read the v2 documentation. ie, V2 is much smaller but sacrifices length from 256 to 120 bits, increasing collision chance. But more people will probably have that question and not bother to read the full docs.

"how many versions will there be

"How many versions will there be" I think is literally unanswerable because you can't fully predict the future, and if it was predictable, that would be bad, because then it would be inflexible to the changing needs of users. The point of having versions is so that you can add more later, otherwise just do away with versioning at all.

how will I know which one I should be using if there's, V3, V4, etc?".

Well, presumably we can explain that to the user.

V2 gives the assumption that you should always use the most up to date hash version. Is there any case where that's not true and it would be better to use V1 instead of V2?

Rather than use 256 bits for encoding
the hash, we use 120 bits. Since seqhashes are not meant for security, this
is good enough (50% collision with 1.3x10^18 hashes), while making them
conveniently only 16 btyes long

Less collision chance. But generally speaking, I think you should probably always use V2 over V1.
TODO for me:

[ ] Add doc at top clearly explaining difference between v1 and v2


Consider using ObjectiveC.jl

Currently I have implemented CF* structures and functions within Julia.  It would be ideal if I could call Objective-C directly (using ObjectiveC.jl), however currently it appears this project has been abandoned.

ObjectiveC.jl was written by the brilliant @MikeInnes, so perhaps he has some thoughts on my Core Foundation bindings :sweat_smile:


Better TMS support.

As discovered during the conversation starting here:
https://gitter.im/openseadragon/openseadragon?at=5b633b8d945df30dc1447c62
... It appears that some TMS tile sets have different ideas about level than what OSD is expecting. In the case of that conversation, adding one to the OSD level seemed to do the trick.
Now we just need to figure out how to tell what the appropriate levels are for a particular TMS tile set.

Related to #1855 ?

Maybe? What do you think, @rsimon?


how to accelerate rebin operation

Hello, thx for your greate job!
I adopt the 2016Mayo challenge data, it has 40 thousands+ view of every patient.
I have tried to rebin it for four hours, is there any methods to accelerate the operation?
Many thx again

And I still wanna to know if this function 'rebin_curved_to_flat_detector' refer to any literatures？Many thx @faebstn96

Hi @listar0810,Indeed, rebinning can take a while when processing plenty/very large scans. I did not look too much into function acceleration yet. You might be able to quickly parallelize the rebinning loops using PyTorch libraries like Numba though. Please have a look there, I do not have the capacity to do that right now.The function rebin_curved_to_flat_detector does not follow a particular publication but is based on the geometry considering the curved detector provided by the rebinning (Noo et al.) on the one hand and the flat detector geometry required by the FBP reconstruction algorithm on the other hand.Hope that helped!On 13. Jul 2023, at 09:03, listar0810 @.***> wrote:
And I still wanna to know if this function 'rebin_curved_to_flat_detector' refer to any literatures？Many thx @faebstn96
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: @.***>

Thx a lot!

@faebstn96 Hi, I would like to know if helix2fan supports the case of flying focal spot, many thx!


Aqara E1 2 gang switch (without neutral) don’t work Decoupled mode

Description of the issue
The decoupling mode does not work. When I try to enable this feature, the system gives an error  - Publish 'set' 'operation_mode' to 'device name' failed: 'Error: undefined is not a object, got string ("decoupled")'
Is there a plan to solve this problem in the next updates?
Addon version
1.34.0-1
Platform
Core 2023.11.3
Supervisor 2023.11.6
Operating System 11.2
Logs of the issue (if applicable)
No response

Have same problem. Should be fixed with new release:
https://github.com/Koenkk/zigbee2mqtt/issues/20264


Question: Is it feasible to use the openlayers canvas renderer with a NodeJS canvas implementation?

I work on an application where users are given a map interface in a web client using openlayers, and the users can use this interface to input different sorts of geographical data.
Later, on the server side, there is a need to generate static raster images showing these map data inputs given earlier in the client. It would be convenient if I can replicate the same layers and styling and such the user saw when inputting their data, and direct openlayers to draw essentially the same view again using a NodeJS canvas implementation.
This definitely doesn't seem to be a use case made to be doable out-of-the-box, unless I'm missing something. It does seem like it could be manageable, though, given that the canvas rendering code in the repo appears to be pretty modular?
Is this possible currently, and how can it be done? Specifically, using openlayers with a NodeJS canvas implementation to generate static map images server-side, reproducing what users previously saw rendered in their browser. If it's not possible currently, can I get some direction on what would need to be added or changed to make it happen?
Thanks!

I have the same desire here. Currently I'm using OL on the client side for any data modification by the user, then I use MapServer to generate a complex single image output, which contains multiple layers with filtered features and everything.
The issue with my current solution is that the final image on the server side slightly differs from the client side due to the fact it was generated by a completely different engine. Also, I cannot get any vector tile layers displayed via MapServer, which would be an easy task with OL.
I would really appreciate a rendering API for OL which takes a list of layers/filters/properties and compiles it into a single image without the need to simulate a dummy html site.
If anyone knows any alternatives, or how to use vector layers with MapServer, I beg you reach out to me!
Thanks!

Hey, maybe you can use https://geostyler.org/ for conversion of styles, it supports OpenLayers Styles and for example SLD styles. I suppose that it will not match 100%, but maybe it is close enough?

Hey, maybe you can use https://geostyler.org/ for conversion of styles, it supports OpenLayers Styles and for example SLD styles and mapserver mapfiles. I suppose that it will not match 100%, but maybe it is close enough?

Definitely helps me bringing the styling closer. Thank you!