Added my-button which lots of customization

Added my-button

You can change its width
Add classes
typeButtton prop which can be primary, warning or black

@Haider-Ali-Dev
It would be good to be able to change the color of the component depending on the type.
And a place where users can pass a icon which should be placed on the button properly as well.

@r4pt0s I will try to add more customization

@r4pt0s  I added more customization also added a icon library so people can added icon classed in icon props which straight away got to class attribute, I also added color props as you told me to.
Here's the link of library i used got the icons https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css

Looks good @Haider-Ali-Dev .
Just one thing, we will close this PR first.
Could you make another PR with the target branch dev instead of main?
We merge all PRs into dev first and Marge thd dev branch into main after we had a couple of PRs merged into dev.

@r4pt0s Should make another pull request but in dev branch?

Exactly @Haider-Ali-Dev


Configuring many-to-one relationships in fluent API results in shadow-state FKs even when explicitly configured not to

This is similar to #1284
Some relationships that can be configured as one-to-many throw when the reverse relationship is configured as many-to-one
This configuration works:
builder.Entity<DbProductSubcategory>(b =>
b.OneToMany(subcategory => subcategory.Products, product => product.ProductSubcategory)
.ForeignKey(product => product.ProductSubcategoryID))

while this configuration doesn't:
builder.Entity<DbProduct>(b =>
b.ManyToOne(product => product.ProductSubcategory, subcategory => subcategory.Products)
.ForeignKey(product => product.ProductSubcategoryID))

An exception is thrown saying that ProductSubcategoryIDKey is an invalid column name.

Ran the provided sample and it did not throw any exceptions. Checked with @AndriySvyryd and he suggested this was likely resolved by another fix in the last few days.


feat(cli,world): batch register function selectors

The old pull request seems to lag behind for a long time due to conflicts with later commits. Therefore, I have created a new updated pull request here for easier merging.
Please refer to the rationale from the old PR: https://github.com/latticexyz/mud/pull/1287.
fix https://github.com/latticexyz/mud/issues/1280

I have checked the test error and it seems that I need to update the gas report. I have generated the report locally and committed it.

I found the gasUsed in my local machine is exactly 2 gas less than the one in test. So should I setup a container with the same env as test script to test it, and then commit?

I found the gasUsed in my local machine is exactly 2 gas less than the one in test. So should I setup a container with the same env as test script to test it, and then commit?

Haha I don't know what's going on here, but maybe try foundryup to make sure you're on a recent version of foundry?
We're also thinking of trying a more generic "multicall" approach so we can batch calls of ~anything, so going to put this PR on pause for a bit.

I found the gasUsed in my local machine is exactly 2 gas less than the one in test. So should I setup a container with the same env as test script to test it, and then commit?

Haha I don't know what's going on here, but maybe try foundryup to make sure you're on a recent version of foundry?
We're also thinking of trying a more generic "multicall" approach so we can batch calls of ~anything, so going to put this PR on pause for a bit.

Agree. It would be better if we could batch all the registration tasks. Multicall could improve this process in a long way.
In addition, it also would be great if we could have a simple mitigation method for function registration, which currently dominates most of the registration tasks XD

we're now able to call any system method in batch: https://github.com/latticexyz/mud/pull/1500
wanna make a new PR for the CLI changes to register function selectors in batch using this new approach?


Enable transparent DNS proxying in Firefox.

Fixes https://github.com/uProxy/uproxy/issues/1772

:+1:
Thanks for finding and fixing!
Separately, could you think about how we might automate testing of this? I agree it's a very important thing to have right on both Chrome and Firefox and easily missed in manual testing.


Implement cache.skip_features, to skip writing the features DataFrames

Codecov Report
Attention: Patch coverage is 68.75000% with 5 lines in your changes are missing coverage. Please review.

Project coverage is 91.47%. Comparing base (53bce0b) to head (08bd43b).

Files
Patch %
Lines

src/blueetl/cache.py
70.00%
2 Missing and 1 partial :warning:

src/blueetl/config/analysis.py
50.00%
1 Missing and 1 partial :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #38      +/-   ##
==========================================
- Coverage   91.62%   91.47%   -0.16%
==========================================
  Files          45       45
  Lines        2628     2638      +10
  Branches      535      539       +4
==========================================
+ Hits         2408     2413       +5
- Misses        137      140       +3
- Partials       83       85       +2

Flag
Coverage Δ

pytest
91.47% <68.75%> (-0.16%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Does this support other languages like golang or python?

Does this support other languages like golang or python?
I'm looking for a way to use this in a monorepo to support linting of microservices.
Thank you!

Hey,
you need Node.js to install lint-staged, but other than that it simple spawns a specific command and passes filenames to it as the argument. It should work with other languages too, yes.

It is common to use the lint-staged along with the husky package, which when installed will add itself into git commit hooks.
For example, to use it with any tooling/language, you would do the following (this example will auto-format Go and Markdown files on any commit):

first make sure you have a valid package.json in your project's root folder (i.e. the content is at least {}). echo "{}" > package.json
Make sure you've installed Node.js (this should normally also install the npm command, but some Linux distros ship a separate npm package that you should also install besides nodejs f.e. in Ubuntu).
...install whatever Go stuff you normally would...
npm install husky lint-staged prettier --save-dev
Finally, open your package.json and add husky and lint-staged entries:{
    ... etc ...
    "husky": {
        "hooks": {
            "pre-commit": "lint-staged"
        }
    },
    "lint-staged": {
        "*.go": [
            "gofmt -w"
        ],
        "*.md": [
            "prettier --write"
        ],
    },
}

Note I am not a Go user so you may need to verify that the Go parts are correct.
Now, any time you modified some files, if any of those files are .go or .md files, then when you make your commit those files that were committed will be formatted. Maybe you would want to use gofmt -d instead of gofmt -w if you only want to "lint" instead of auto-format.


On Limited, only show very basic details

Raised by Kruvek. Currently, the limited view is very... well not limited. I want to ideally remove 90% of the character and NPC sheets if the player has limited permissions. This need's improvement. Currently, limited permission does nothing.

Fixed in 0.2.3. Added Limited Sheet. The fields can't be seen even if the player knows how to use inspect via dev tools. Though technically the data is probably there if they are able to use the API.... Probably an issue other systems also have. I shouldn't need to build for those with a lack of trust here really...


Add visualization example

Visualization of training process is useful for model evaluation, i.e. validation accuracy curves.

Close via #131


better handling of missing save folder

If saveFolder is not called, then it crashes with a cryptic message
"....object has no attribute 'outputNames'"
we should set the save folder to ./ if it is not defined.

We now use pathlib to create the parent directories, too, if missing.  see commit 6c7606c


Connection limited not working when add Id to CustomHandle

What platform were you using when you found the bug?

React Flow / Svelte Flow version: React Flow
Browser and version: Chrome 127.0.6533.120
OS and version: Windows 10

Live code example
No response
Describe the Bug
Connection limited is not working when I add Id to CustomHandle like this:  .
You can see the full example at https://codesandbox.io/p/sandbox/ecstatic-tdd-df75v9?file=%2FCustomNode.jsx&utm_medium=sandpack
Steps to reproduce the bug or issue

Go to https://codesandbox.io/p/sandbox/ecstatic-tdd-df75v9?file=%2FCustomNode.jsx&utm_medium=sandpack
Add Id to the CustomHandle in the CustomNode file.
Test the connection and see the result

Expected behavior
The connection is limited.
Screenshots or Videos
No response
Additional context
No response

what is not working for you here? I can only create one connection as specified with connectionCount={1}.

https://github.com/user-attachments/assets/4b5e8c75-7a4d-4abf-8f19-51458a67c2db
I can create two connections after adding a id. You can see it in this video.

@dinhchien-zps
You need to update the CustomHandle to check for handles with that specific id you assigned
const CustomHandle = (props) => {
  const connections = useHandleConnections({
    id: props.id, // <--- add the id here!
    type: props.type,
  });

 // ... rest

@bcakmakoglu Thank you so much. That helps me a lot.


Boolean Conditional is not working

a import like
require('~/modules/notice-box#?triwala-vk/modules/notice-box-exists');
where triwala-vk/modules/notice-box-exists is the module that exports a boolean does not work.
a error is thrown Condition modules cannot contain . or / in the name
https://github.com/stealjs/steal-conditional/blob/master/conditional.js#L58
@m-mujica do you know why . and / is forbidden?

I think / is the problem here, it shouldn't be forbidden should it?

@matthewp @pYr0x the restriction on using / was inherited from the original implementation. I can't remember why it was done that way..... I'll try to remove that and see how it goes.

@m-mujica and news about this issue?

@pYr0x I plan to work on this in my spare time or after I'm done with the dev bundle stuff....

@pYr0x just released v0.3.3. Please, give it a try when you have a chance and let me know how it goes.


Don't truncate package docs

From https://github.com/googleapis/google-api-go-client/issues/372
https://godoc.org/google.golang.org/api/compute/v0.beta and https://godoc.org/google.golang.org/api/compute/v1 both displays:
The documentation displayed here is incomplete. Use the godoc command to read the complete documentation.

instead of rendering the godoc for the packages.

The current document size limit is 800'000 bytes:
https://github.com/golang/gddo/blob/af0f2af80721261f4d211b2c9563f7b46b2aab06/database/database.go#L263-L264
The compute/v0.beta package document size is currently 1'004'901 bytes, and compute/v1 is 834'564 bytes.
Instead of doubling the limit, I am considering going with a more conservative 1.5x multiplier and updating it to 1'200'000 bytes. If we need to exceed that limit further in the future, we can re-evaluate then.
/cc @shantuo @stephenmw


[Debugger] Test exception that thrown in recursion method

Motivation
Test exception that thrown in recursion method

Could you rebase? it'll solve the .NET failures
@cbeauchesne done


hasCapability Method.

Description
Add hasCapability method, along with the supporting enum.
Documentation added to the enum in particular to explain the concepts.
Closes #1119

[x] I have updated the release notes.
[x] I have updated all relevant user documentation.

paired implementation with @foundrytom
Reviewer Notes
This implementation needed some C-api changes because it's pure virtual, so that's in there.

Draft as we need to:

Split between Manager and ManagerInterface
Add kEntityReferenceIdentification and kManagementPolicyQueries


After facebook connect  I am redirected to admin profile

Hello,
I'm having a problem with facebook connect with hoauth and yii-user installed;
I try to create a new authenticated user by using facebook connection. When I click on facebook button , the facebook login is open and when I login to facebook, I am redirected to the admin profile !!
Any idea ?

There can be problems with returnUrl in yii-user or it can be, that your facebook account is already assotiated with admin account.


Why use mysql storage，app still use a lot of memory，Xmx=1g got OutOfMemoryError？

Exception in thread "ZipkinMySQLStorage-3" java.lang.OutOfMemoryError: GC overhead limit exceeded

Hi Dreampie. Please file an issue in the Zipkin repo.


[FLINK-14265][table-planner-blink] Don't use ContinuousFileReaderOperator to support multiple paths

What is the purpose of the change
Now, blink planner use ContinuousFileReaderOperator to support InputFormat, but ContinuousFileReaderOperator not support multiple paths.
If read partitioned source, after partition pruning, we need let InputFormat to read multiple partitions which are multiple paths.
We can use InputFormatSourceFunction directly to support InputFormat.
Verifying this change
TableSourceITCase.testMultiPaths
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): no
The serializers: no
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Yarn/Mesos, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no

@wuchong Can you take a look?

	 *
NOTES ON CHECKPOINTING:  In the case of a {@link FileInputFormat}, the source
	 * (which executes the {@link ContinuousFileMonitoringFunction}) monitors the path, creates the
	 * {@link org.apache.flink.core.fs.FileInputSplit FileInputSplits} to be processed, forwards
	 * them to the downstream {@link ContinuousFileReaderOperator} to read the actual data, and exits,
	 * without waiting for the readers to finish reading. This implies that no more checkpoint
	 * barriers are going to be forwarded after the source exits, thus having no checkpoints.

It seems that there are some benefit when use ContinuousFileMonitoringFunction in streaming mode. But the cost is that we can not use multi-paths.

	 *
NOTES ON CHECKPOINTING:  In the case of a {@link FileInputFormat}, the source
	 * (which executes the {@link ContinuousFileMonitoringFunction}) monitors the path, creates the
	 * {@link org.apache.flink.core.fs.FileInputSplit FileInputSplits} to be processed, forwards
	 * them to the downstream {@link ContinuousFileReaderOperator} to read the actual data, and exits,
	 * without waiting for the readers to finish reading. This implies that no more checkpoint
	 * barriers are going to be forwarded after the source exits, thus having no checkpoints.

It seems that there are some benefit when use ContinuousFileMonitoringFunction in streaming mode. But the cost is that we can not use multi-paths.

After discuss with @wuchong offline, I will use ContinuousFileMonitoringFunction in streaming-mode (require streaming exactly-once) and use InputFormatSourceFunction in batch-mode (do not need care about checkpoints).


ES6 modules export { var1, var2, ... } doesn't work.

m is not exported in this example. But should. As result, I cannot use TypeDoc for in my libraries, thus, severity 'critical'.
Could we do something about it? May be I'm doing something wrong?
export const on = Events;
export class X {};
export interface Y {};
export function f(){};

let m = 5;
export { m };

To reproduce, add
export { Foo }
to the https://github.com/TypeStrong/typedoc/blob/master/examples/es6/src/es6.ts
Generate docs, and see that Foo doesn't appears in "exported". Really bad bug. Making the tool unusable. I hope that's me doing something wrong.

People, seriously, please help. Is it really possible to use TypeDoc without that? Can someone investigate the issue?

@gaperton I'm sorry that you are having trouble. You should know that this project is only maintained by volunteer effort from the community. There is no one dedicated to resolving issues.
I tried adding export {foo}; to es6.ts and running the run script in that directory and it didn't change the output I saw. Both times the Foo class appeared as a class under the "es6" module. What are you expecting and how have you configured TypeDoc?

Just made clean install of the TypeDoc, done npm install, executed run.bat in examples/es6
Added export { Foo }. Then, when you click 'only exported' checkbox, you don't see Foo, as it's not considered like it's exported.

Could you please confirm again, that you don't have such a problem, and tell me which TS compiler version are you using? Mine is 1.8.10.
It becomes huge problem with 'barrel' modules, as they contains a lot of re-export directives.

Then, when you click 'only exported' checkbox, you don't see Foo, as it's not considered like it's exported.

Ah, I missed that you were filtering that checkbox. Okay, I can reproduce this. I exported the JSON. You can see that the isExported flag is not set for Foo while it is for DataService.
"children": [
				{
					"id": 28,
					"name": "DataService",
					"kind": 128,
					"kindString": "Class",
					"flags": {
						"isExported": true
					}
				},
				{
					"id": 18,
					"name": "Foo",
					"kind": 128,
					"kindString": "Class",
					"flags": {},
					"children": [

It doesn't get there for export { Foo }. Problem is in the missing node converter for this node kind.
https://github.com/TypeStrong/typedoc/blob/master/src/lib/converter/converter.ts#L366
node.kind is 231. TypeDoc just ignores it.

So, looking at the sources, only simple assignment exports support is implemented. Other exports directives are ignored. Too bad.
Flag 'exported only' is useless, so there must be other way to hide private declarations. Is there some way?

Okay, for everyone who are interested in workaround.
Use --mode file option, and @private comment to hide the stuff you don't want to appear in docs. Unfortunately, modules mode doesn't suit the purpose, as I originally thought.

Closing in favor of #712, #801 should fix this once merged.


[proposal] verify the configs of koordinator components to prevent components from starting

What is your proposal:
It is easy for some users to manually configure the configuration of the koordinator component to introduce wrong configurations, such as incorrect formats, incorrect parameters, or conflicting settings, etc., which may cause the components to fail to start or behave differently from user expectations. Whether to consider validating these configurations through webhooks to avoid these risks.
Why is this needed:
Is there a suggested solution, if so, please add it:

cc @zwzhang0107 @saintube @hormes @FillZpp


sort_array_using-recursion

Description
We have given an array to sort using recursion.
Fixes #1855
Type of change

[x] New feature (non-breaking change which adds functionality)

Checklist:

[x] My code follows the style guidelines(Clean Code) of this project
[x] I have performed a self-review of my own code
[x] I have commented my code, particularly in hard-to-understand areas
[ ] I have created a helpful and easy to understand README.md
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] I have added tests/screenshots(if any) that prove my fix is effective or that my feature works

@Surajvatsya remove other file

Since no update, I am closing this


Spike: Investigate Tracing Frameworks for LLMs and AI Agents Applicable for Kyma Companion

https://github.tools.sap/kyma/ai-force/issues/195

https://github.tools.sap/kyma/ai-force/pull/205/files


Fix errors when running Rails without Sprockets

When creating Rails app with --skip-sprockets, Rails::Application::Configuration does not know assets method so that the following error occurs because now it is the method which is added by Sprockets and Rails itself no longer has it on Rails::Application::Configuration (like I have reported in this issue).
I don't know how common that Rails app is configured without Sprockets, but I have added a check if Rails.application.config responds to assets.

Thanks !
How about :
Rails.application.config.try(:assets).try(:paths) || []

instead ?

Thanks, that looks more concise :smile:
I've updated the branch by force pushing.

Brilliant, I'll merge when it gets green


Cactbot duty timeline shrinks over time

I have a problem in which the timeline for duties in cactbot shrinks over time. I've seen it happen in TEA and now UCoB. At the beginning of the duty, the timeline shows 5-6 lines with 30s of warning in advance as to what is to come as per my configuration but as time goes by it begins shrinking until the number of lines available at the same time becomes just 2.
Leaving the duty and going back in seems to fix the problem until it eventually shrinks again.
I have attached two screenshots below showing the problem: the first one is taken from TEA with 115:35 minutes remaining while the second one was taken with 55:15 minutes left.

Any idea as to why this might be happening?
Thank you in advance.

I have noticed this as well but haven't had time to debug it due to being sick the past ~3 weeks. Does this reproduce with the test timeline in Summerford Farms?

I spent more than an hour in Summerford Farms with the timeline on and it kept going as normal. Then I started a couple of new countdowns for some extra 15 minutes after and it was still fine.
I think it's related to time spent within a duty because of how it resets back to normal after leaving and going back into it.

I did UCoB again today and increased the number of maximum shown lines to 7. The 7th one disappeared after a while and by the end (around 5:48 minutes left in the duty), they had shrunk to 5.

I can confirm this behavior too. I don't know the cause and I know this has been around for a long time (at least a year?).
What I do when this happens is press the Reload overlay button under cactbot's MiniParseOverlay in the OverlayPlugin.dll tab of ACT Plugins and that seems to reset it, until it happens again.

I can repro this in Summerford Farms, and I've narrowed it down to the (or at least a) set of circumstances that will cause the issue.  If a wipe/reset happens while the top timeline entry being displayed has a duration that extends beyond the timeline event time (e.g., it displays at the top with no remaining time shown), the next time the timeline is started, the maximum number of bars displayed is decremented by 1.  I was able to repeat this behavior until eventually no timeline was shown at all.
Steps:

Summerford Farms: /cd 5
When the first timeline entry ("Angry Dummy") hits zero and continues to then display with no time value, do "/echo end" before it disappears.
Repeat steps as needed.  If you have 6+ bars as your max, you'll either need to progress further in the timeline when the # of bars displayed = max, or repeat multiple times until the number of bars are reduced sufficiently for this to be observable.

There's a comment in timeline.ts that might be relevant:
// [...] Durations are extremely awkward as they are manually
// added once their original event has passed.  This means that if you ever jump
// to a new location with an ongoing duration from the past, it will not appear.

I'm juggling some IRL stuff, so I may not be able to get back to this until later in the weekend.  If anyone else has time to dive in  and fix it, all yours - but I'd be grateful if you could ping me on Discord so I don't waste time if you're already fixing it. :-)


Activity::updateICal

fix missing tag UID. Create missing or empty tag UID

fixed with opencrx-4.2.0+


Fixes and comments

In order to run.
Now communicates with the ic but still does not return any coord so far.

I don't know if you caught the forum post where I said you have to initialize the touch driver AFTER the display.
As far as not getting any coords into LVGL..  you are running the event loop yes?

I took this into consideration, as indicated in the top comment as well.
However, my bad, I did call the GT911 constructor after the screen constructor but before the disp_drv was registered (using the older module).
It's now behaving better.
I have a last fix to push to this file and it should be good.

yeah I has some pretty dumb typos in that thing didn't I?... Is it working correctly now?

Yes, fully working now as is (with the i2c timeout patch mentionned in the comments)
For instance, here is my test program on the Makerfabs board, with previous C display driver:
import Makerfabs
import gt911
from machine import Pin, I2C
import lvgl as lv
import lv_utils
import espidf as esp

lv.init()
led = Pin(2, Pin.OUT)
led.on()

disp = Makerfabs.display(de=40, vsync=41, hsync=39, pclk=42, d0=45, d1=48, d2=47, d3=21, d4=14, d5=5, d6=6, d7=7, d8=15, d9=16, d10=4, d11=8, d12=3, d13=46, d14=9, d15=1, width=800, height=480, hsync_polarity=0, hsync_front_porch=8, hsync_pulse_width=4, hsync_back_porch=8, vsync_polarity=0, vsync_front_porch=8, vsync_pulse_width=4, vsync_back_porch=8, pclk_active_neg=1, speed=16000000)
disp.init()

width = 800
height = 480
factor = 8
buf_size = (width * height * lv.color_t.__SIZE__) // factor
disp_buf1 = lv.disp_draw_buf_t()
buf1_1 = esp.heap_caps_malloc(buf_size, esp.MALLOC_CAP.DMA)
disp_buf1.init(buf1_1, None, buf_size // lv.color_t.__SIZE__)

disp_drv = lv.disp_drv_t()
disp_drv.init()
disp_drv.draw_buf = disp_buf1
disp_drv.flush_cb = disp.flush
disp_drv.hor_res = width
disp_drv.ver_res = height
lvd=disp_drv.register()

i2c =  I2C(0, sda=Pin(17), scl=Pin(18), freq=444444)
touch=gt911.GT911(i2c)

scr=lv.obj()
btn=lv.btn(scr)
lbl=lv.label(btn)
lbl.set_text("Press me!")
btn.center()
btn.add_event_cb(lambda event: print('Button clicked!'),lv.EVENT.CLICKED,None)
lv.scr_load(scr)

event_loop = lv_utils.event_loop(asynchronous=False)

The coordinates are roughly ok, and the lv event is working right.

OK cool deal.
I still have to key up a touchscreen calibration script. The script will store the calibration values in NV memory. I have one that I put together but I have not fully tested it. It's actually pretty simple. I draw a total of 5 buttons. One on each corner and one in the center of the display. I record the x, y values when the screen is touched. I then take those touch coords and subtract them from the actual position of the button that was to be clicked on to get offset values. I then average the offset values. Then I rerun the alignment with the offset values applied and see how close the touches are to the button locations. If they are within whatever percentage of error that is set it accepts that touch input as being valid. If more than 3 of the 5 are not within the percentage of error it will use the touch values that have already been corrected and subtract the new values from that and apply that average to the already existing calibration and it will run the calibration once again. If the calibration runs 3 times and the calibration is not able to be dialed in correctly it will spit out an error stating that the allowed error amount is too small and needs to be widened or there is something wrong with the the digitizer.
That is what I came up with. it sounds like it should work. The calibration program would run as soon as the touch driver is initialized and no existing calibration data is able to be located in NV memory. I am going to add a counter for the number of touch displays that have been initialized this way if a user has more then one display and those displays are the same brand and model the calibrations will be stored based on the loading order that is defined in the code. Each display will have it's own calibration data as it should. Because the display needs to be loaded before the touch driver it would work out perfect. The loading order for multiple displays would be
display
touch
display
touch
so when the touch driver collects the display from LVGL the most recent display that has been added will be returned. The touch driver should end up marries to that display when the touch driver is registered with LVGL

I did want to mention to you the use of memoryview in micropython and why it's so important to use when dealing with any kind of communications on the ESP.
as you already know the amount of resources is very limited on the ESP. If you are using any form of communications whether it be WiFi, BT or I2C, basically anything you want to keep the amount of resources used in check. The other thing you have to concern yourself with is memory fragmentation from making a lot of small containers. As an example you have the touch interface, You have seen what the output is when you move your finger. It spits out coords like it's no body's business. If you create a data buffer in the functions that handle the processing of those coords each time the function is run x bytes of memory gets allocated for the buffer. In this case it is 6 bytes. unless the GC is run often you will end up with memory fragmentation. which is where there is something stored in memory but it is not in use. Memory allocation is not contiguous things get stuck in there all over the place. in the example of 6 bytes You could have 500K free but end up with a memory allocation error if there isn't 6 bytes that are contiguous for the buffer. So when we do is we allocate a buffer once and only once so multiple allocations don't need to occur keeping the memory from getting fragmented.
Now here is the twist to it.
If you allocate 6 bytes in a bytearray if you slice that bytearray a copy is made. If you pass the buffer in a function call a copy is made. That copy is mutable but it is still a copy. when a copy gets made allocation of memory occurs and fragmentation happens. So how we stop that form happening is using memoryview. what you do is create the buffer and then create another variable that wraps the buffer in memoryview you assign the bytes like you would as normal to the buffer but when you want to pass the buffer to a function you pass the memoryview object instead, or even a sliced memory view. This passes a memory pointer instead of making a copy of the buffer. No memory allocation occurs when you do this.
In ESP programming any time you need a large data buffer that is going to be used over and over again it is always best to initialize it at the very beginning of your program. That is why it is best to initialize the display first and foremost because it has a HUGE buffer that it uses. This ensures that you will get the contiguous memory needed for the buffer allocation,
Here is an example of what I am talking about
class GT911(_touch_base.TouchBase):

    def __init__(
        self,
        i2c,
        invert_x: bool = False,
        invert_y: bool = False,
        swap_xy: bool = False,
    ):
        self.i2c = i2c
        self.data_buf = bytearray(6)
        self.mv = memoryview(self.data_buf)

        super().__init__(invert_x=invert_x, invert_y=invert_y, swap_xy=swap_xy)

    def init(self):
        config = bytearray([
            (GT911_REG_CONFIG_DATA & 0xFF00) >> 8,
            GT911_REG_CONFIG_DATA & 0xFF,
            0x81,
            self.width & 0x00FF,
            (self.width >> 8) & 0x00FF,
            self.height & 0x00FF,
            (self.height >> 8) & 0x00FF,
            1,
            (int(self.invert_y) << 7) |
            (int(self.invert_x) << 6) |
            (int(self.swap_xy) << 3) |
            (1 << 2),
            0x20, 0x01, 0x08, 0x28, 0x05, 0x50,  # 0x8047 - 0x8053
            0x3C, 0x0F, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00,  # 0x8054 - 0x8060
            0x00, 0x89, 0x2A, 0x0B, 0x2D, 0x2B, 0x0F, 0x0A, 0x00, 0x00, 0x01,
            0xA9, 0x03,  # 0x8061 - 0x806D
            0x2D, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x21,  # 0x806E - 0x807A
            0x59, 0x94, 0xC5, 0x02, 0x07, 0x00, 0x00, 0x04, 0x93, 0x24, 0x00,
            0x7D, 0x2C,  # 0x807B - 0x8087
            0x00, 0x6B, 0x36, 0x00, 0x5D, 0x42, 0x00, 0x53, 0x50, 0x00, 0x53,
            0x00, 0x00,  # 0x8088 - 0x8094
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00,  # 0x8095 - 0x80A1
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00,  # 0x80A2 - 0x80AD
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x04, 0x06,
            0x08, 0x0A,  # 0x80AE - 0x80BA
            0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
            0x00, 0x00,  # 0x80BB - 0x80C7
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00,  # 0x80C8 - 0x80D4
            0x02, 0x04, 0x06, 0x08, 0x0A, 0x0F, 0x10, 0x12, 0x16, 0x18, 0x1C,
            0x1D, 0x1E,  # 0x80D5 - 0x80E1
            0x1F, 0x20, 0x21, 0x22, 0x24, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
            0xFF, 0x00,  # 0x80E2 - 0x80EE
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00,  # 0x80EF - 0x80FB
            0x00, 0x00, 0xD6, 0x01  # 0x80FC - 0x8100
        ])

        config[184] = 0

        for i in range(184):
            config[184] += config[i]

        config[184] = (~config[184]) + 1

        # Get product ID
        print('Touch product id:', self.product_id)
        print('Touch firmware:', self.firmware)

        self.i2c.writeto(GT911_I2C_SLAVE_ADDR, config)
        self.set_command_register(0x00)

    def _get_coords(self):
        status = self.status

        if (status & 0x80) != 0:
            coord_num = status & 0x0F
            if coord_num != 0:
                coord_x = []
                coord_y = []
                for i in range(coord_num):
                    self.data_buf[0] = (
                        ((GT911_POINT1_X_ADDR + (i * 8)) & 0xFF00) >> 8
                    )
                    self.data_buf[1] = (GT911_POINT1_X_ADDR + (i * 8)) & 0xFF
                    self.i2c.writeto(GT911_I2C_SLAVE_ADDR, self.mv[:2])

                    self.i2c.readfrom_into(GT911_I2C_SLAVE_ADDR, self.mv[:6])

                    x = self.data_buf[0]
                    y = self.data_buf[2]
                    x |= (self.data_buf[1] << 8)
                    y |= (self.data_buf[3] << 8)

                    coord_x.append(x)
                    coord_y.append(y)

                x = int(sum(coord_x) / len(coord_x))
                y = int(sum(coord_y) / len(coord_y))

                if self.swap_xy:
                    x, y = y, x

                if self.invert_x:
                    x = self.width - x

                if self.invert_y:
                    y = self.height - y

                if y < 0:
                    y += abs(y)

                self.status = 0
                return x, y

            self.status = 0

    def set_command_register(self, command):
        self.data_buf[0] = (GT911_REG_COMMAND & 0xFF00) >> 8
        self.data_buf[1] = GT911_REG_COMMAND & 0xFF
        self.data_buf[2] = command

        self.i2c.writeto(GT911_I2C_SLAVE_ADDR, self.mv[:3])

    @property
    def product_id(self):
        self.data_buf[0] = (GT911_REG_ID & 0xFF00) >> 8
        self.data_buf[1] = GT911_REG_ID & 0xFF
        self.i2c.writeto(GT911_I2C_SLAVE_ADDR, self.mv[:2])
        self.i2c.readfrom_into(GT911_I2C_SLAVE_ADDR, self.mv[:4])

        buf = bytearray([self.data_buf[3], self.data_buf[2], self.data_buf[1], self.data_buf[0]])
        return buf.decode('utf-8')

    @property
    def firmware(self):
        self.data_buf[0] = (GT911_REG_FW_VER & 0xFF00) >> 8
        self.data_buf = GT911_REG_FW_VER & 0xFF

        self.i2c.writeto(GT911_I2C_SLAVE_ADDR, self.mv[:2])
        self.i2c.readfrom_into(GT911_I2C_SLAVE_ADDR, self.mv[:2])

        return self.data_buf[1] << 8 | self.data_buf[0]

    @property
    def status(self):
        self.data_buf[0] = (GT911_READ_COORD_ADDR & 0xFF00) >> 8
        self.data_buf[1] = GT911_READ_COORD_ADDR & 0xFF

        self.i2c.writeto(GT911_I2C_SLAVE_ADDR, self.mv[:2])

        self.i2c.readfrom_into(GT911_I2C_SLAVE_ADDR, self.mv[:1])
        return self.data_buf[0]

    @status.setter
    def status(self, value):
        self.data_buf[0] = (GT911_READ_COORD_ADDR & 0xFF00) >> 8
        self.data_buf[1] = GT911_READ_COORD_ADDR & 0xFF
        self.data_buf[2] = value
        self.i2c.writeto(GT911_I2C_SLAVE_ADDR, self.mv[:3])

Just to let you know that the code above is going to be what the final looks like. I am going to merge your PR so you get the credit for making the changes to the GT911 driver and then I am going to apply the above code to those changes. I don't want to skirt giving credit where it is due. You have helped out a HUGE amount with all of this so far and I want to make sure that any changes you make you get credit for.

Thanks, and roger that!
Yes, I'm familiar with memoryview, I already used them extensively in other contexts.
I also had in mind to further optimize the driver in a next step.
"premature optimization is the root of all evil" ;)
Great Job, eager to have a clean framework soon!

I think we are definitely making really good headway on this. I am happy that your display is not sitting in a drawer not being used because of lack of support in LVGL for it. That is the exact reason why I ended up spending the time on learning how to add to LVGL. I had a need to fill and there was nothing that was going to fill it. I also wanted to make it easier to update the program code over WiFi so that meant using MicroPython

I did want to mention. If you update your version of micropython to the master branch on github you will not need to set that define in mpconfigboard. The problem has been corrected but there is no release yet with the fix added to it. Since the S3  SOC was just added to the boards list for the ESP32 port you should be running the master branch of micropython anywho so setting that macro should not need to be done.
You should be using espidf version 4.4.4


Bug fix for speech translation data preparation

Bug introduced in https://github.com/pytorch/fairseq/commit/d974c709bf57cf494738a824a1597e1886bebb7a I believe.

It may not be a bug.
I followed the instructions in S2T Example: Speech Translation (ST) on MuST-C, and run this command:
python examples/speech_to_text/prep_mustc_data.py \
  --data-root ${MUSTC_ROOT} --task asr \
  --vocab-type unigram --vocab-size 5000

In the latest version, I got errors:
Fetching split train...
Extracting log mel filter bank features...
  0%|                                                                                | 0/229703 [00:00<?, ?it/s]
Traceback (most recent call last):
  File "/home/qwang/.tools/fairseq/examples/speech_to_text/prep_mustc_data.py", line 294, in <module>
    main()
  File "/home/qwang/.tools/fairseq/examples/speech_to_text/prep_mustc_data.py", line 290, in main
    process(args)
  File "/home/qwang/.tools/fairseq/examples/speech_to_text/prep_mustc_data.py", line 141, in process
    features = extract_fbank_features(
  File "/home/qwang/.tools/fairseq/examples/speech_to_text/data_utils.py", line 90, in extract_fbank_features
    features = _get_torchaudio_fbank(_waveform, sample_rate, n_mel_bins)
  File "/home/qwang/.tools/fairseq/fairseq/data/audio/audio_utils.py", line 153, in _get_torchaudio_fbank
    features = ta_kaldi.fbank(
  File "/home/qwang/.miniconda/lib/python3.9/site-packages/torchaudio/compliance/kaldi.py", line 561, in fbank
    waveform, window_shift, window_size, padded_window_size = _get_waveform_and_window_properties(
  File "/home/qwang/.miniconda/lib/python3.9/site-packages/torchaudio/compliance/kaldi.py", line 139, in _get_waveform_and_window_properties
    waveform = waveform[channel, :]  # size (n)
IndexError: too many indices for tensor of dimension 1

By replacing _waveform = _waveform[0].numpy() with _waveform = _waveform.numpy() (simply reverting this commit), the error disappear!
Environment:
Pytorch=1.10.1, py3.9_cuda11.3_cudnn8.2.0_0
fairseq: 1b61bbad327d2bf32502b3b9a770b57714cc43dc (install from source)
torchaudio: 0.10.1+cu113
I did not install pykaldi, and found the following lines:
    features = _get_kaldi_fbank(_waveform, sample_rate, n_mel_bins)
    if features is None:
        features = _get_torchaudio_fbank(_waveform, sample_rate, n_mel_bins)

In my settings, my code calls the function _get_torchaudio_fbank which fits with _waveform = _waveform.numpy().
This commit use  _waveform = _waveform[0].numpy(), and it may work with _get_kaldi_fbank  I guess.
Can anyone recheck this commit and test with the two cases torchaudio fbank and kaldi fbank please?

@voidmagic the discussion in https://github.com/pytorch/fairseq/pull/3887 looks relevant. cc @kahne

@voidmagic Thanks very much for reporting! As discussed in the relevant PR that @jmp84 pointed out, this is a bug and we will include the fix in our next batch of bug fixes (coming next Monday).


cmd/cgo: overflow error on int64_t

Under go 1.9 the following code no longer compiles due to an overflow:
package main

/*
#include <stdint.h>
#define AV_NOPTS_VALUE   ((int64_t)UINT64_C(0x8000000000000000))
*/
import "C"

func main() {
	if C.int64_t(0) == C.AV_NOPTS_VALUE {
		// irrelevant
	}
}

./main.go:10: constant<PHONE_NUMBER>854775808 overflows C.int64_t
Under go 1.8.3 and below this code compiles and works without error. Obviously 0x8000000000000000 does overflow an int64_t, but it seems like the (int64_t) cast in the C code should already have overflowed it to the value -9223372036854775808 before cgo sees it?

/cc @ianlancetaylor @hirochachacha

This is a serious bug, could be a go1.9.1 candidate.
package main

/*
#include <stdint.h>
#define AV_NOPTS_VALUE   (int64_t)(-1)
*/
import "C"
import "fmt"

func main() {
	fmt.Println(C.AV_NOPTS_VALUE)
}

./x.go:11: constant<PHONE_NUMBER>3709551615 overflows int

$ go tool cgo -debug-gcc x.go
...
not-signed-int-const:1:11: error: token is not a valid binary operator in a preprocessor subexpression
#if 0 < (AV_NOPTS_VALUE)
          ^~~~~~~~~~~~~~
/Users/hiro/x.go:5:35: note: expanded from macro 'AV_NOPTS_VALUE'
#define AV_NOPTS_VALUE   (int64_t)(-1)
                         ~~~~~~~~~^
...

The problem is that current uint detection is too optimistic.
I'm not sure about the right solution here. But at least if the detection is failed,
it should fallback to int64, not uint64.
This is the second time I broke in this season, I'm really sorry about that.

@hirochachacha It's okay, I appreciate the rapid diagnosis. It's easy to stay on go1.8.3 until this is resolved. Thanks for all that you do!

@reaperhulk Thank you. I sent the fix. I hope that solve the problem

Reopening for cherry picking for Go1.9.1

CL 60810 OK for Go 1.9.2.
I also tested that the new test in misc/cgo/test works with (int64_t)(0xFFFFFFFFFFFFFFFF) as well as it does with (int64_t)(-1), just in case it didn't.

Thank you @reaperhulk for reporting it, @hirochachacha for the fix and @rsc for testing and evaluating for the cherry pick.

CL 70970 OK for Go 1.9.2.
(Gerrit believes that a cherry-pick of 60810 has already happened on release-branch.go1.9 and will not allow a second. It doesn't appreciate that we wiped that from the Git history. CL 70970 is a straight cherry-pick but with the Change-Id incremented to break the cherry-pick association on Gerrit.)

go1.9.2 has been packaged and includes:

CL 70970

The release is posted at golang.org/dl.
— golang.org/x/build/cmd/releasebot, Oct 26 21:09:11 UTC


Logo and Raiden dApp on connect screen on small size not centered

Thanks for filing a bug report :-)
Steps to Reproduce

Go to the connect screen

Expected Result

Raiden Logo and  Text "Raiden dApp" is centered

Actual Result

More on the right, than center
On mobile I have seen this before, but on Chrome for the first time

@christianbrb It only happens on smaller window sizes/screens due to how the proportional adjustment works. It should not be overly hard to fix.

It's on very small sizes, but it is also a problem on 1920 x 1080
If I make the window smaller it is centered, but if I make it very small it is not centered again

closed by #656


Clear Cache/WDB

Would it be a reasonable idea to clear Cache/WDB if the realmlist differs from the previous run of a client?

To do that 100% of the time would involve saving the realmlist of the previous run to the disk or registry somewhere, which I would prefer to avoid.  I could maybe add an option to the configuration xml and have it just remember the last realmlist used in the launcher's memory.

Yeah that sounds fine to me.
I used to clear the cache on every launch in my own launcher, but I'm not as sure of the consequences as you might be.

I just released 2.0 which adds an option for this.  I made it even simpler, where when the option is enabled, the cache is emptied before each launch of wow.


Cow: Watch dontkillmyapp.com

Cow requests the watch of the watch_keyword dontkillmyapp\.com. See the MS search here and the Stack Exchange search in text, in URLs, and in code.

dontkillmyapp\.com has been seen in 1 true positive, 2 false positives, and 0 NAAs.

Rejected by VLAZ in Charcoal HQ. Reason: 'many false positives. This is an often referred to website for Android application management'


Add shim library for MacOS ARM64 and Linux ARM64

For MacOS ARM64 and Linux ARM64, we'll use a shim instead of the legacy Wasmer 1. Here, we define the shim library and build it using GitHub workflows.
See https://github.com/multiversx/mx-chain-vm-go/pull/834.
"Official" builds:

artifacts-darwin-arm64.zip
artifacts-linux-arm64.zip

From runs:

https://github.com/multiversx/wasmer/actions/runs/8174372826/job/22349000856?pr=35
https://github.com/multiversx/wasmer/actions/runs/8174372827/job/22349000843?pr=35

$ sha256sum ./libwasmer_darwin_arm64_shim.dylib
2df1180b027fb00905566f6015c559a80d09379e4e1e37f26eb8604b0a91ba7b

$ sha256sum ./libwasmer_linux_arm64_shim.so
9003cccda01a271292a44ffd44844a01caceda3bd20cf7ff74e2c62e8fedbdc0

For locally building & using the Linux Docker image:
docker run --privileged --rm tonistiigi/binfmt --install all

docker buildx create --name multiarch --use

docker buildx build --load --platform=linux/arm64 . -t mx-image -f ./Docker/arm64.dockerfile

docker run --platform=linux/arm64 -it --rm mx-image cat /data/libwasmer_linux_arm64_shim.so > libwasmer_linux_arm64_shim.so

Additional references:

https://docs.docker.com/build/building/multi-platform/


'bundle help list' shows help for 'bundle show'

This was originally reported at [1]:
Description of problem:
'bundle help list' command provides the same output as for 'bundle help show' command. It looks like if no GEM is provided to 'bundle show' its behaviour is same as for 'bundle list' but still I think 'bundle help list' should not have in usage 'bundle show GEM [OPTIONS]'.
And if 'bundle show' without a GEM specified should be the same as 'bundle list' it should be also mentioned in man page.

Version-Release number of selected component (if applicable):
rubygem-bundler-1.7.8-3.el7.noarch

How reproducible:
100%

Steps to Reproduce:
1.bundle help show
2.bundle help list
3.and compare the outputs

Actual results:
bundle help list

Usage:
  bundle show GEM [OPTIONS]

Options:
      [--paths=List the paths of all gems that are required by your Gemfile.], [--no-paths]
      [--no-color=Disable colorization in output], [--no-no-color]
  -V, [--verbose=Enable verbose output mode], [--no-verbose]
  -r, [--retry=Specify the number of times you wish to attempt network commands]

Description:
  Show lists the names and versions of all gems that are required by your Gemfile. Calling show with [GEM]
  will list the exact location of that gem on your machine.

Expected results:
bundle list should have its own description in help

Additional info:

This seems to be intentional, i.e. looking at the source (https://github.com/bundler/bundler/blob/master/lib/bundler/cli.rb#L206), it appears that the list and show commands should have the same functionality but then the bundle help says:
       bundle list(1)
	      Show all of the gems in the current bundle

       bundle show(1)
	      Show the source location of a particular gem in the bundle

Which implies minor difference. Would you mind to clarify this a bit?
[1] https://bugzilla.redhat.com/show_bug.cgi?id=1257622

Indeed, there is no difference.
I believe we should split the two functionalities (showing the path of a gem and the list of all gems) to be two separate commands with different implementations:

bundle list lists all the gems and does not accept any arguments
bundle show must be passed a gem name

@indirect WDYT?

I completely forgot that list even exists, and I use show exclusively. I agree that list shouldn't accept arguments, and I'd be happy with removing list in 2.0, and only documenting show, with or without arguments.

Looks like we can close this


tzdata: 2018e -> 2018g

Motivation for this change
Important timezone updates.
Notable changes:

Morocco switched to permanent +01 on 2018-10-27
Volgograd moved from +03 to +04 on 2018-10-28
Fiji ends DST 2019-01-13, not 2019-01-20
Most of Chile changes DST dates, effective 2019-04-06

Things done

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[x] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Fits CONTRIBUTING.md.

Success on aarch64-linux (full log)
Attempted: tzdata
Partial log (click to expand)
gzipping man pages under /nix/store/qq1zsqqf3sxv1jav461qisj92zzh98rp-tzdata-2018g-man/share/man/
strip is /nix/store/p9akxn2sfy4wkhqdqa3li97pc6jaz3r1-binutils-2.30/bin/strip
patching script interpreter paths in /nix/store/qq1zsqqf3sxv1jav461qisj92zzh98rp-tzdata-2018g-man
checking for references to /build in /nix/store/qq1zsqqf3sxv1jav461qisj92zzh98rp-tzdata-2018g-man...
shrinking RPATHs of ELF executables and libraries in /nix/store/w6bb81adv7nj1jw3sm6r0q497zddjgfs-tzdata-2018g-dev
strip is /nix/store/p9akxn2sfy4wkhqdqa3li97pc6jaz3r1-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/w6bb81adv7nj1jw3sm6r0q497zddjgfs-tzdata-2018g-dev/lib
patching script interpreter paths in /nix/store/w6bb81adv7nj1jw3sm6r0q497zddjgfs-tzdata-2018g-dev
checking for references to /build in /nix/store/w6bb81adv7nj1jw3sm6r0q497zddjgfs-tzdata-2018g-dev...
/nix/store/pyrp6h3wqp7j3p2avfyj0py7x2gqpn3b-tzdata-2018g

Success on x86_64-linux (full log)
Attempted: tzdata
Partial log (click to expand)
gzipping man pages under /nix/store/vybllas3gfj6hmpvyk7rgbh48kxwmm03-tzdata-2018g-man/share/man/
strip is /nix/store/vcc4svb8gy29g4pam2zja6llkbcwsyiq-binutils-2.30/bin/strip
patching script interpreter paths in /nix/store/vybllas3gfj6hmpvyk7rgbh48kxwmm03-tzdata-2018g-man
checking for references to /build in /nix/store/vybllas3gfj6hmpvyk7rgbh48kxwmm03-tzdata-2018g-man...
shrinking RPATHs of ELF executables and libraries in /nix/store/vnhymg1v753izv51yanlsirycn653hrz-tzdata-2018g-dev
strip is /nix/store/vcc4svb8gy29g4pam2zja6llkbcwsyiq-binutils-2.30/bin/strip
stripping (with command strip and flags -S) in /nix/store/vnhymg1v753izv51yanlsirycn653hrz-tzdata-2018g-dev/lib
patching script interpreter paths in /nix/store/vnhymg1v753izv51yanlsirycn653hrz-tzdata-2018g-dev
checking for references to /build in /nix/store/vnhymg1v753izv51yanlsirycn653hrz-tzdata-2018g-dev...
/nix/store/zv6kq9kc823vdmd47c2fkmzmhrfll2gw-tzdata-2018g

Success on x86_64-darwin (full log)
Attempted: tzdata
Partial log (click to expand)
stripping (with command strip and flags -S) in /nix/store/vqgmh0q2knq397pbsigkwi1f6sn4m1if-tzdata-2018g-bin/bin
patching script interpreter paths in /nix/store/vqgmh0q2knq397pbsigkwi1f6sn4m1if-tzdata-2018g-bin
/nix/store/vqgmh0q2knq397pbsigkwi1f6sn4m1if-tzdata-2018g-bin/bin/tzselect: interpreter directive changed from "/bin/bash" to "/nix/store/n9hba031gjky8hpjgx9fnlaxhidyzxbz-bash-4.4-p23/bin/bash"
gzipping man pages under /nix/store/qvg9cdxd08a8ssl4kamca5x6mcdy46q7-tzdata-2018g-man/share/man/
strip is /nix/store/g5r4apl0za012ffs6ladinwa5w0m1l3k-cctools-binutils-darwin/bin/strip
patching script interpreter paths in /nix/store/qvg9cdxd08a8ssl4kamca5x6mcdy46q7-tzdata-2018g-man
strip is /nix/store/g5r4apl0za012ffs6ladinwa5w0m1l3k-cctools-binutils-darwin/bin/strip
stripping (with command strip and flags -S) in /nix/store/v4mbp0nafvqqjc7qdpch0scm10chfh6f-tzdata-2018g-dev/lib
patching script interpreter paths in /nix/store/v4mbp0nafvqqjc7qdpch0scm10chfh6f-tzdata-2018g-dev
/nix/store/qg0ilm9hwbp2aag673llrm4ix2ysx74v-tzdata-2018g

Staging is probably more appropriate.

~> #51590


Game crashed on load.

Minecraft 1.16.1
Forge 32.0.106
vanillaextension-1.16.1-<IP_ADDRESS>.jar
Game crashed on load. Received the following message
Vanilla Extension (vanillaextension) encountered an error during the load_registries phase
Here is a pastebin link to the latest log https://pastebin.com/ct6d6uea

So I found my error.
I forget to reobfuscate my code. I used the wrong gradle command.


Update ramble-setup module to be idempotent

This merge updates the ramble-setup module to be idempotent. It also adds a more complicated example of using ramble with a slurm cluster.
Submission Checklist
Please take the following actions before submitting this pull request.

Fork your PR branch from the Toolkit "develop" branch (not main)
Test all changes with pre-commit in a local branch #
Confirm that "make tests" passes all tests
Add or modify unit tests to cover code changes
Ensure that unit test coverage remains above 80%
Update all applicable documentation
Follow Cloud HPC Toolkit Contribution guidelines #

OK, everything should be resolved. I rebased it because it said (oddly) there was a merge conflict in one of template files, but that seems unlikey...


window module not showing title for floating windows

Looking at the code seems like getFocusedNode is not taking into account floating_nodes.

Fixed with dabe2bebbb9a66bf8be112ea56d5555c34e0c56a


[Suggestion] Compressed End Stone

Would be nice to compress stacks of end stone. We already have netherrack compression, after all. Thanks.

This has been added to the upcoming 1.21 release


Add PCRE build Dependency

This adds PCRE as a build dependency for GEEP since Apache 2.4 no longer packages PCRE

Looks like ubuntu14 didn't like one of the package names...

Looks like ubuntu14 didn't like one of the package names... See Travis log https://travis-ci.org/tst-eclamar/earthenterprise/jobs/570861050

Yup, I had the wrong names and had to change them

So CentOS 7 must have the PCRE 3 devel package already installed?

It seems so.


Fix multiplication overflow for function 1 and 2

The original code calculated required buffer space for decoded values by
mutiplying byte_count by 8. Since byte_count was given the type
u8, the multiplication result would overflowed if byte_count is
greater than 31. In other words, if more than 248 coils/discrete inputs
were requested.
This PR cast byte_count to u16 before it is used to calculate the
required buffer space, thus prevents the overflow.

You can ignore the clippy warnings. These will finally be fixed by #88.

@flosse Backport this fix and publish v0.4.1?

I'll stash the commits and fix the formatting issues while rebasing.

Merged.


VMS fix: link shared libs from objects files instead of from static libs

The simplifications that were made when Makefile.shared was removed
didn't work quite right.  Also, this is what we do on Unix and Windows
anyway, so this makes us more consistent across all platforms.

The VMS builds have failed for some time now.  This change finally fixes it.

Thanks!  Merged.  b78eb0b697f3ba680c5c6e8576ece82ee680068b


Feature: exclude architectures

#238 revealed a blind spot in the exclusion code: architectures. This PR refactors & reorganizes some code and fixes that. It replaces the config/distro-architectures subsystem with the more generalized exclusion mechanism.
The only slightly tricky part is that for our variant generation & exclusion code, it makes sense to have a separate variant for each architecture. However, when we generate the manifest file (that tells the Docker Official Image folks what images to build from which dirs in this repo), we need to combine variants that only vary by architecture. So that's what this PR does.
Fixes #238

I'm still working on this. I dove into spec-based generative testing, but I think I'm going to crawl back out of that rabbit hole for one of the fns I started implementing it for. I will have some generative testing coming up though. :)


Execution performance of OpenRAM

Hi,
I was using OpenRAM for the first time, trying to generate an SRAM of 256kb size with FreePDK45 technology. It's already been running for 40 hours and still has not finished yet. Does it always take this long? Or am I doing something wrong?
This long run time really surprises me because there is a tutorial https://cornell-ece5745.github.io/ece5745-tut8-sram/ claiming it only takes a few minutes to generate a 4kb memory.

It shouldn’t but there could be instances where the power routing is difficult or characterization takes a long time. 256kb is getting big too for a single array but it should be do-able. What settings and version are you using?
the hard multi banking doesn’t work right now so for real big memories you need to wrap them with verilog banks. We have a “soft banking” feature being tested now for this.

I'm using v1.1.19 (commit f66aac3).
This is what my config looks like, it's intended for GPU register banks which have very wide ports. But looks like it is compiling for only one bank.

Technology: freepdk45
Total size: 262144 bits
Word size: 2048
Words: 128
Banks: 1
Write size: None
RW ports: 0
R-only ports: 1
W-only ports: 1

I'm using v1.1.19 (commit f66aac3).
This is what my config looks like, looks like it is compiling for only one bank.

Technology: freepdk45
Total size: 262144 bits
Word size: 2048
Words: 128
Banks: 1
Write size: None
RW ports: 0
R-only ports: 1
W-only ports: 1

That’s an unusually large word size so I’ll have to check that out. It could be a runtime bug in our channel router.

Ok thanks. FYI here's what the tool output to the terminal, including 2 warning messages.

Technology: freepdk45
Total size: 262144 bits
Word size: 2048
Words: 128
Banks: 1
Write size: None
RW ports: 0
R-only ports: 1
W-only ports: 1
DRC/LVS/PEX is only run on the top-level design to save run-time (inline_lvsdrc=True to do inline checking).
DRC/LVS/PEX is disabled (check_lvsdrc=True to enable).
Characterization is disabled (using analytical delay models) (analytical_delay=False to simulate).
Only generating nominal corner timing.
Words per row: 1
Output files are:
...
** Submodules: 643.4 seconds
** Placement: 61.2 seconds
**** Retrieving pins: 0.3 seconds
**** Analyzing pins: 0.2 seconds
**** Finding blockages: 14374.0 seconds
**** Converting blockages: 77.8 seconds
WARNING: file pin_group.py: line 656:   Expanding conversion (addr1[5] layer=m3 ll=v[2583.52,-3.8975] ur=v[2583.655,-3.7625])
WARNING: file pin_group.py: line 656:   Expanding conversion (addr1[6] layer=m3 ll=v[2583.52,-6.1075] ur=v[2583.655,-5.9725])
**** Converting pins: 2417.9 seconds
**** Separating adjacent pins: 60.0 seconds
**** Enclosing pins: 3.0 seconds
*** Finding pins and blockages: 20003.0 seconds
[stuck here so far]

Adding on to this, openram seems to take a very long time. sky130_sram_1kbyte_1r1w_8x1024_8.py has been running for an hour for me now. A process called magicdnull has 45 minutes of CPU time. Routing only took 815 seconds, but it's stopped there.

This is extraction in magic. It is slow...


Suggestion: close terminal if task succesfully run and same task is executed again

It is a suggestion for a new "feature"
Run Task A, terminal opens and task runs successfully. Terminal is still opened with result of the task.
Run Task A again, could you close first terminal? Can we currently do this? I'm launching test again and again and I must press a key to close the terminal otherwise I would have 20 terminals opened.

@biboc the terminal should be getting reused when you trigger the same task?

It is what I would like, but instead, a new terminal is opened
I'm on Ubuntu 16.04

Version 1.22.2
Commit 3aeede733d9a3098f7b4bdc1f66b63b0f48c1ef9
Date 2018-04-12T16:34:44.222Z
Shell 1.7.12
Renderer 58.0.3029.110
Node 7.9.0
Architecture x64

How does the task look like. You can control this using the presentation.panel property. Set it to shared or dedicated and the terminal should be reused. Is the task configured that way ?

presentation.panel: "shared" works great
Thanks


feature request: pinia restore store place after reload

https://github.com/user-attachments/assets/eae79d66-9e42-4faa-b668-30f9509b77eb

@webfansplz
Months ago implemented this feature here: https://github.com/vuejs/devtools-next/pull/306 and It is staled now 😅.
Should I restart implementing this feature?


Can healpix_29/hipscat_index be non-unique

Investigate if there is anything that will break if healpix_29/hipscat_index is not a unique number, with a particular focus on pandas/DASK. One way to approach this would be to create a dataset with explicit healpix_29/hipscat_index that repeats and conduct a small analysis (e.g., periodogram) and see if there are failures.

We've now added the non-unique index in the hats branch. There are some issues with pandas having a non-unique index. A few functions we used such as filter, and some loc calls didn't work, but it wasn't too bad to work around them. Our catalog functions shouldn't be affected by this, but users may run into similar issues if they do their own functions in map_partitions or other similar functions.


Forge versions

I was wondering if you convert these to forge

I don't currently plan on doing forge version of this, once origins forge is caught up to the latest version, I'll look into making a forge version, it mainly just depends on how difficult it is.

Forge version would be revolutionary! Many people LOVE Origins, and your mod makes the experience insanely better!!! Have you checked how difficult it would be for you?

I don't currently plan on doing forge version of this, once origins forge is caught up to the latest version, I'll look into making a forge version, it mainly just depends on how difficult it is.

Exists now

Could we get a forge version for 1.19.2 as well possibly? Would be a lovely mod to have, and hopefully feasible since you've already ported to forge 1.20 and backported to fabric 1.19.2?


#185029197 :A user can upload image on cloudinary server

What does this PR do?
User should be able to add images of a product
Description of Task to be completed?

The minimum images for each product is 4 images and maximum of 8 images
Images are stored on cloud server and access using cloudinary links

How should this be manually tested?

Clone the repository using git clone link

Checkout to the branch using git checkout <branch-name>

Install node packages that the application depends on: npm i

Create a .env file in the root directory and add all environment variables required to run the application. The required variables are listed in the .env.example file available in root directory of the application.

Start the application development server: npm run dev

Test addProduct route  logged in as admin or a seller

Any background context you want to provide?

You can read more about uploading assets and image transformation on Cloudinary

What are the relevant pivotal tracker/Trello stories?
#185029197
Screenshots

Cloudinary configuration locally passes all tests, but over Circleci, it is not.


Write logger entries to ITestOutputHelper.

These changes take the log entries and write them to ITestOutputHelper so that the entries are in the test output. This will help diagnose test failures around components that log their state.

/backport to release/6.0

/backport to release/6.0


How should documents be uploaded at a clinic?

Would they have a scanner on hand? Would it be a pain to transfer images from the scanner to the web app?
Could a screener take pictures with their phone? If so, what would be the easiest way to transfer those images to the app? Should they log in on their phone? Would they rather just use a USB?
Would they want to be able to fax documents to a phone number in order to load them? How would we link the docs to the correct account?

This seems like a question that would be best answered by the screeners themselves. It sounds like a hassle to log into the application twice, once on desktop and once on phone, but that seems like the best way to handle the actual upload properly without requiring the screener to move files across devices.

Currently, Daily Planet has a scanner within arm's reach of front desk staff that is directly connected to the computer. I don't think this is an issue we need to address ourselves apart from simply providing fields that allow for file uploads which work on both mobile and desktop.


Colour DSRA epicentres on breakout

Faint grey dots hard to see. Can we colour these large and red similar to how they appear before breakout:

made the markers dark red by default, and added the pulsing icon to the scenario on the initial selection instead of on the detail view:

Complete.


llama's output contained part of prompt

System Info
pytorch 2.1
Information

[X] The official example scripts
[ ] My own modified scripts

🐛 Describe the bug
below is the llama2's result.
this task is to take a string as input and convert it to json format.
input:
text I gave ~~~~

output: ~~~~~
< desired output >
output: ~~~~~~
Error logs
nope
Expected behavior
I'd like the desired output to only contain JSON-formatted results, excluding any input. i used fine-tuned model trained my own dataset (using peft).

System Info
pytorch 2.1
Information

[x]  The official example scripts
[ ]  My own modified scripts

🐛 Describe the bug
below is the llama2's result.
this task is to take a string as input and convert it to json format. input: text I gave ~~~~
output: ~~~~~
< desired output > output: ~~~~~~
Error logs
nope
Expected behavior
I'd like the desired output to only contain JSON-formatted results, excluding any input. i used fine-tuned model trained my own dataset (using peft).


Add Open with Code on W11 context menu

Would like to have "Open with Code" here.

Its present in the extended menu but for convinence, add it in the first menu.

/duplicate of #183297

Thanks for creating this issue! We figured it's covering the same as another one we already have. Thus, we closed this one as a duplicate. You can search for similar existing issues. See also our issue reporting guidelines.
Happy Coding!


Remove redundant type checks

Q
A

QA
yes

Description

Due to the fact that this action validates the projects .laminas-ci.json with the laminas-ci.schema.json file, we do not have to verify types in some codepaths anymore.

@Ocramius Would eslint check would be suitable for this?
I could give this a try to provide at least a little CI pipeline for this repository. I've started in #62 but I wanted to use our current CI pipeline. Maybe that was the wrong way since testing a repository with the repository might lead to unexpected issues.
Could start adding eslint and then extend with integration tests which verify the return values for different project setups.

eslint would certainly be a first step, yes.
Overall, this codebase is growing, and I'm concerned that it could grow in an uncontrolled way, which would make it hard to manage. Anything that helps us keeping complexity in check will help, and types are a must, if we don't have tests.

#82 introduces ESLint and I am currently working on porting to typescript.
Closing this in favor of typescript.


feat(route_handler) Rework path design to support when goal is behind start pose

Refactor route_handler package: add new class LaneletPoint, LaneletSection, LaneletPath, LaneletRoute. All these new class act as safe wrapper over path related concepts.
Impl common query/transform utils on LaneletRoute and LaneletPath
With the new API, planning functions should no longer need to manipulate lanelets, indices, points, etc directly.
Use LaneletPath instead of ConstLanelets for path related logic
Add support for when goal pose is behind start on the same lanelet
Add documentation

Signed-off-by: Vincent Richard<EMAIL_ADDRESS>Description

See https://github.com/autowarefoundation/autoware.universe/issues/2354 for the original proposal.
The initial scope for this PR was to simply support the "goal is behind start pose on the same or neighbor lanelet" case. During my investigation, I realized this corner case is VERY difficult to implement and maintain if we keep the current way paths have been designed in Autoware planning modules.
In Autoware planning modules, a path is most of the time a lanelet::ConstLanelets (i.e. a list of lanelets). Because a list of lanelet is not adapted to describe paths (no start/goal point, not easy to manipulate, etc), if I where to keep the current design to fix the "goal is behind start" bug, I would basically need to add a lot of code in every single planning function, and most likely add a lot of bugs at the same time. It would also mean people maintaining or implementing planning functions would be required to think constantly about all possible corner cases (such as "goal is behind start") while working on the code. Such cognitive burden is not desirable.
Instead, I solve the "goal is behind start" issue (and hopefully many other planning bugs) by improving Autoware path design. The planning engineer will not have to do anything special: such corner case will be handled natively from now on. I introduce the following concepts:

LaneletPoint: a point located on lanelet centerline. Basically: {lanelet, arc_length}.
LaneletSection: a section of a lanelet centerline. Basically: {lanelet, start_arc_length, end_arc_length}
LaneletPath: a safe wrapper for std::vector<LaneletSection>. There are many constraints on LaneletPath (consistent with current Autoware path design). For example, except the first and last section, all inner section must cover the whole lanelet. For example, all section must be connected, either directly (next section lanelet follows the previous section one), or indirectly (next section alnelet follows a neighbor of the previous section). Loops and overlaps are not allowed (but first and last sections may be on the same lanelet).
LaneletRoute: a safe wrapper over route building and query functions. A route is essentially and list of reachable lanelets and a main/preferred path. Many of these functions existed already in route_handler and have just be moved/improved in LaneletRoute.

I have implemented a simple, yet safe and efficient API (hopefully) to manipulate each of them. A few examples:

LaneletPath has split, concatenate, truncate, getLeftBound, getRightBound, etc
LaneletRoute has getStraightPath(lanelet_point, forward_distance, backward_distance) function to query "straight" path within the route (i.e. no lane change), and extendPath(path, forward_distance, backward_distance) function to safely extend a path forward/backward. Optional within_route=false arguments can be used to query path beyond the route boundaries (typically use to extend path before/after start/goal point.)
LaneletRoute has getRemainingForwardLengthWithinRoute(lanelet_point) to measure the forward distance left before we leave the route (either reached dead end or reached the goal).
and many others...

With this new API, it is no longer required to manipulate lanelets, points or even indices by yourself! Do you need to query a point within a path/route? Do you need to extend the path 10 meters backward? Do you need to make sure there is enough distance forward to do a lane change? Do you need to generate drivable area? You can do everything now with just a couple lines of code. The new classes will do the heavy lifting for you and make sure you don't accidently break something.
Each of these functions is meant to be safe, in the sense they either succeed and produce a valid path, or fail and return an empty object. As a consequence, it is not possible to create "broken" paths using the provided functions (for example, a path that would loop).
In some special cases, the functions will also try to "repair" broken paths. For instance, if you try to concatenate two overlapping paths with concatenate, the function will detect and try fix the overlap (because paths are not allowed to overlap themselves). If the concatenation or overlap fixing fails, an empty path will be returned. Such path fixing functionality is only required in the following cases:

when optional argument within_route is set to false. For example in getStraightPath and extendPath.
with the concatenate function
In either case, an extra overlap_removal_strategy argument can be set to specify how overlaps should be fixed (keep everything at the beginning of the path, or at the end of the path, or split overlapped part and share it evenly, etc)

I have tried to reduce the API to the strict minimum. Still, I think the API provides all the bricks required to implement any complex planning function.
Much of the LaneletRoute code originates to route_handler. Because many functions within behavior_path_planner relies on the old route_handler, I also had to reimplement some of it with the new API. Migrating the old planning code to the new API is out of scope of the present PR (which is too big already), but there are many convoluted functions within behavior_path_planner modules which could be reduced in just a few (safe) lines, and I think it is definitely worth doing it in the future.
At the moment, the new types are all in route_handler package. There is no specific reason for that. The code could be moved to a better place in another PR.
All this for the route and path planner to support the "goal is begin pose" scenario natively.
Related links

Tests performed

On a 3-lane looped circuit:
Simple cases: goal is after start:

Complex cases: goal is behind start on the same lane ("looped" route):

Limitation: when goal behind and very close from the start, the global route is generated correctly, but behavior_path_planner fails to generate a "looped" path. This is because the behavior_path_planner modules extend the path a few meters behind the start pose and a few meters after the goal pose to make the driving smoother. When the goal is behind the start and too close, the extended path overlap on itself (and autoware is confused). This could be fixed later:

On the sample map (only 1 lane):

Same limitation when goal is too close to the start:

Notes for reviewers

Pre-review checklist for the PR author
The PR author must check the checkboxes below when creating the PR.

[x] I've confirmed the contribution guidelines.
[x] The PR follows the pull request guidelines.

In-review checklist for the PR reviewers
The PR reviewers must check the checkboxes below before approval.

[ ] The PR follows the pull request guidelines.
[ ] The PR has been properly tested.
[ ] The PR has been reviewed by the code owners.

Post-review checklist for the PR author
The PR author must check the checkboxes below before merging.

[ ] There are no open discussions or they are tracked via tickets.
[ ] The PR is ready for merge.

After all checkboxes are checked, anyone who has write access can merge the PR.

If anyone is checking this PR, I still want to modify the design a bit.
In current PR state, it is "too" easy to get a list of lanelets from a LaneletPath, which should be avoided (because a list of lanelets is not a good way to describe a path). Instead, I want LaneletPath to be a std::vector<LaneletSection>, where LaneletSection is a type that describe a section within a lanelet (i.e. {lanelet, start_arc_length, end_arc_length})
Although it requires slightly more changes to the behavior_path_planner code, I think it will make the code more robust. In particular, corner cases such as "the goal is behind start" would work without the need for the planning function engineer to think about it.

I think my path API has all the functionality the planning modules ever need. What is left is to use it so that corner cases such as "goal is behind start" is never a problem again. Unfortunately, there are maybe thousands LoC to change... I can't do it alone...
In particular, it is getting difficult to keep my work stable when other people are changing the planner modules at the same time.
Currently, there is a strange zigzag in near goal pose when a lane change is required:

Except that, I think it is working good. So I guess @mitsudome-r you could already review it.

Fixed:

@VRichardJP Thanks for creating the PR.
The description with images helps me a lot to understand the implementation.
Although we really appreciate your PR I have discussed with @TakaHoribe on this, and had several concerns:

refactoring of the package takes quite a lot of time for us to review.
We are also considering updating the behavior path planner on the background https://github.com/autowarefoundation/autoware/discussions/3097 which also makes us difficult to merge this at the moment.

Also, we were thinking of different approach to solve the issue by modifying mainly mission_planner rather than adding new Lanelet classes.

Whenever mission_planner detects a loop in a path, it will only send route to behavior planners until the lane just before the loop.
As vehicle drives along the route and no longer have a loop, it will update the route until the goal.

Although we have to check if the behavior planner can handle update of route while driving, it would make implementation much simpler. Also, we can also handle route with multiple loops, not only the route with goal point behind starting point.
What do you think about the approach.

Hi, I totally get it. I know to change the API may be tricky and cumbersome (and add many bugs).
I never thought about sending partial routes. It could be a thing, although changing the route while the vehicle is driving also comes with its own problems. I could poke this after the holidays.
Although I first started to work on this PR to fix the "goal behind start pose" issue, the proposed changes go way beyond that "simple" case. In particular, it is also a way to write behavior_path_planner functions in a simpler and (hopefully) safer way. The more I worked on the planning functions, the more I am convinced the modules would benefit from a better abstraction than just a list of lanelets.
Take it as a message in a bottle. The proposed classes could improve the route_handler, or some parts salvaged and reused for new planning functions, or just ignored and thrown in the bin 😅

@mitsudome-r
So if I understand your idea, this is how it could be implemented:

Modify route_handler:

Add support for "goal behind start" use case (like in https://github.com/autowarefoundation/autoware.universe/pull/2425 or https://github.com/autowarefoundation/autoware.universe/issues/1715#issuecomment-1318155064). This route may contains loops (e.g. 1->2->3->4->1).

Modify mission_planner:

Move the route publishing logic to a new timer callback function (from MissionPlanner::change_route. The new function will:

Check the position of the vehicle on the route
Remove from the route all sections before current lanelet.
If the route has been modified, publish trimmed route (e.g. 1->2->3->4).

Example:

In the situation above:

route_handler generates 1->2->3->4->1
timer callback in mission_planner first send 1->2->3->4
after the ego vehicle has reached 2, timer callback send 2->3->4->1
after the ego vehicle has reached 3, the timer callback send 3->4->1
...
after the ego vehicle has reached 1 again, the timer callback send 1

Although it should work, I have several concerns regarding this method:

At the end of the day, it is a hacky solution to cope with motion_planner not supporting looped lanelet ids.
This assumes the global route can be changed freely while driving. For example, if the ego vehicle is on lanelet 2, does the planner generates exactly the same path when the route is 1->2->3 and 2->3? Other modules may also react on a route change (e.g. new route = new mission).
Currently, Autoware requires a (remote) operator to validate the route and engage the vehicle. But with this change, the full route is not known anymore (even though its just 1 lanelet missing here). In other words, Autoware could then change the route without any human validation.
The "Check the position of the vehicle on the route" is actually tricky to implement correctly. For instance, on which route lanelet is the vehicle when several lanelets overlap within the route? For example in the situation below, the ego vehicle is slightly out of the route (e.g. because the operator moved the vehicle manually or autoware moved the vehicle off-road to avoid an obstacle), and lanelet 1 and 2 within the path are overlapped:

What if the (out of path) is a 3, and the route is something like 1->2->3? The ego vehicle is initially on 1, but while avoiding an obstacle, it gets close to 3 and the thinks it is on 3 so skips the 1->2 route entirely. There are countless corner cases like this.

For most lanelet maps, there should not be any problem. But if there is, Autoware will just break. What do you think?

@VRichardJP Thanks for the comment.

This assumes the global route can be changed freely while driving.

Currently, TIER IV is trying to support goal modification at run time due to other needs so I believe we will make the change to the other modules as needed.

Currently, Autoware requires a (remote) operator to validate the route and engage the vehicle.

At least, mission_planner should be aware of the whole route anyways so it can still publish visualization marker of the full route regardless of the route. It can also publish global route as a different topic if it is needed for debug purpose.

The "Check the position of the vehicle on the route" is actually tricky to implement correctly. For instance, on which route lanelet is the vehicle when several lanelets overlap within the route? For example in the situation below, the ego vehicle is slightly out of the route (e.g. because the operator moved the vehicle manually or autoware moved the vehicle off-road to avoid an obstacle), and lanelet 1 and 2 within the path are overlapped

I believe this issue already exists with the current implementation anyways regardless of the looped route issue(There could be overlapping lanes at intersections). Therefore, I think we should be handling this as a separate issue.

@mitsudome-r
Thank you for the details. Should I wait for the goal modification at runtime feature to be available or should I have a head start on this?

@TakaHoribe Do we have any timeline about when we support mission_planner goal modification at runtime?

We will wait for goal modification implementation to finish, discussed in Proposal for handling goal modification
It is in the final stage for the implementation. Then this PR will be reworked, hopefully it will be much simpler after the discussion above is resolved.

We should test if this issue still remains in the latest Autoware. (@mitsudome-r or any one from Planning team in TIER IV cc. @TakaHoribe @maxime-clem @takayuki5168 )

@VRichardJP
Currently, this PR has a lot of conflicts, but do you have any idea about how to proceed the PR?

@takayuki5168 This PR should have been split into multiple. I initially used the current route handle and planning function as dog food to design and test the new lanelet library.
The library part is pretty much standalone and could be moved to a new independent package. The integration is another beast and could be done step by step, for example by duplicating API (old/new) and converting between methods. But these could be smaller PRs.
Unfortunatelly I don't have much time to spend on Autoware recently so I would not be able to provide much help.

@VRichardJP
Thank you for the quick reply.
Now I read the PR's changes and found it very helpful to avoid the low-level lanelet operation in the nodes' implementation.
I (I mean, the Planning team at TIER IV) will try to take this PR and merge it to the main branch though it may take time.
Thank you very much for the cool PR, and I really appreciate all of your contributions to the Autoware. :pray:
@mitsudome-r
The Planning team at TIER IV will take this PR, so please make this still open and draft.


governance doc table update

Update table in GOVERNANCE.md to match MAINTAINERS.md.
@Nexucis are both of these tables with info about team members needed? Seems like the one in MAINTAINERS.md will be easier to remember to update

yeah both are mandatory.
That's because the Maintainers list can be different from the Core Team list.
In our case since we have only one important repo, it's not super useful. But it can change once we will have others repo.
Besides, the Maintainers list could explained the areas of the different maintainers. Like that: https://github.com/prometheus/prometheus/blob/main/MAINTAINERS.md
It doesn't list everybody from the Prometheus Team, just some key members on different areas. We could do the same if we think it is relevant and associate different team members on different areas.


Second prefix on a node cann't do aggregation of routes

Because the number of pods on a node is more than 64 or 128, then need allocate a new prefix, but calico cann't do route aggregation for the second prefix, so other node receive some detailed routing（such as  /32）!
node1 (<IP_ADDRESS>):   pod network(first-<IP_ADDRESS>/26, second-<IP_ADDRESS>/26 )
node2 (<IP_ADDRESS>):   pod network(<IP_ADDRESS>/26)
on the  node2 ：
<IP_ADDRESS> via <IP_ADDRESS> dev enp96s0f1 proto bird
<IP_ADDRESS> via <IP_ADDRESS> dev enp96s0f1 proto bird
<IP_ADDRESS> via <IP_ADDRESS> dev enp96s0f1 proto bird
<IP_ADDRESS> via <IP_ADDRESS> dev enp96s0f1 proto bird
<IP_ADDRESS>/26 via <IP_ADDRESS> dev enp96s0f1 proto bird

only the first  prefix done route aggregation ,  and  the second prefix is the detail routes !
Expected Behavior

Maybe the  the second prefix shoud be done route aggregation
such as on node2  :
<IP_ADDRESS>/26 via <IP_ADDRESS> dev enp96s0f1 proto bird
<IP_ADDRESS>/26 via <IP_ADDRESS> dev enp96s0f1 proto bird

Current Behavior

on the  node2 ：
<IP_ADDRESS> via <IP_ADDRESS> dev enp96s0f1 proto bird
<IP_ADDRESS> via <IP_ADDRESS> dev enp96s0f1 proto bird
<IP_ADDRESS> via <IP_ADDRESS> dev enp96s0f1 proto bird
<IP_ADDRESS> via <IP_ADDRESS> dev enp96s0f1 proto bird
<IP_ADDRESS>/26 via <IP_ADDRESS> dev enp96s0f1 proto bird

Possible Solution

Steps to Reproduce (for bugs)

Context

Your Environment

k8s version: v1.14.1
calico version:  v3.4.0
OS：centos 7.6

Is there any possibility that the block that isn't being aggregated is allocated to another node? It is possible for nodes to borrow IPs from other blocks when all the blocks for a cluster have been claimed.
You could try grabbing the calicoctl command from v3.8 and using calicoctl ipam show --show-blocks to see the allocated blocks, I'm not 100% sure that it will work with your cluster being v3.4.0 but you could try.

Is there any possibility that the block that isn't being aggregated is allocated to another node? It is possible for nodes to borrow IPs from other blocks when all the blocks for a cluster have been claimed.
You could try grabbing the calicoctl command from v3.8 and using calicoctl ipam show --show-blocks to see the allocated blocks, I'm not 100% sure that it will work with your cluster being v3.4.0 but you could try.

I  have checkout the output of   calicoctl ipam show --show-blocks ,  can't  find the prefix  second-<IP_ADDRESS>/26

Can you update your cluster to a more recent version of Calico? There have been several updates in the code that handles route distribution/aggregation and this may have been fixed already.


Modify Tzstamp to use Marigold nodes

Depends on

#14

Problem
At this moment TzSttamp depends on ECAD nodes which may cause unmanageable ops issues
Solution
Modify tzstamp to use marigold nodes when ready

Resolved


I have errors using pyproj in Spyder but not in Jupiter lab in the same conda environment

In the same conda environment, if a I run a function in Jupyter lab using pyproj module it runs correctly, but if I try in Syper it raises an error
OS Windows 10. Python 3.8, conda 4.9.2, spyder 4.2.0, pyproj 3.0.1. I also have QGIS 3.16.6
The complete function is:
def geographics2proyected(crsg, crsp, lat_lon):
    """
    Transforms a list of geographic coordinates xyg from geographic
    coordinate reference system crsg to a proyected crsp one
    Parameters
    ----------
    crsg : int
        geographic coordinate reference system
    crsp : int
        proyected coordinate reference system
    lat_lon : List of lists of str (latitude, longitude)
        latitude is a str with the format DDMMSSC
        longitude is a str with the format DDMMSSC
        where DD degres, MM minutes, SS seconds and C is a cardinal direction:
        N, S, E, W
    Returns
    -------
    xyp List of list of [x, y] in the projected crsp
    """
  import pyproj as proj
  import numpy as np

  if proj.crs.CRS(crsg).is_projected:
      raise ValueError(f'crs {crsg:d} is not geographic')
  if proj.crs.CRS(crsp).is_geographic:
      raise ValueError(f'crs {crsp:d} is not projected')
  transformer = proj.Transformer.from_crs(crsg, crsp)
  xyp = np.empty((len(lat_lon), 2), np.float32)
  for i, lat_lon1 in enumerate(lat_lon):
      for j, item in enumerate(lat_lon1):
          dg = float(item[0:2])
          mn = float(item[2:4])
          sc = float(item[4:6])
          d = item[6:7]
          if j == 0:
              if d not in 'NS':
                  raise ValueError (f'{item} is not a longiude')
              lat_deg = dg + (mn/60) + (sc/3600)
              if d == 'S':
                  lat_deg = -1. * lat_deg
          else:
              if d not in 'WE':
                  raise ValueError (f'{item} is not a latitude')
              lon_deg = dg + mn/60 + sc/3600
              if d == 'W':
                  lon_deg = -1. * lon_deg
              xp1, yp1 = transformer.transform(lat_deg, lon_deg)
              xyp[i,:] = [xp1, yp1]
  return xyp.tolist()

This is the first error, as you know, 4258 and 25830 are both valid epsg codes
File "C:\Users...\gis_utils\gis_utils.py", line 31, in geographics2proyected if proj.crs.CRS(crsg).is_projected: File "C:\Users\solis\miniconda3\envs\env01\lib\site-packages\pyproj\crs\crs.py", line 296, in init super().init(projstring) File "pyproj_crs.pyx", line 2309, in pyproj._crs._CRS.init pyproj.exceptions.CRSError: Invalid projection: epsg:4258: (Internal Proj Error: proj_create: cannot build geodeticCRS 4258: SQLite error on SELECT extent.description, extent.south_lat, extent.north_lat, extent.west_lon, extent.east_lon, scope.scope, (CASE WHEN scope.scope LIKE '%large scale%' THEN 0 ELSE 1 END) AS score FROM usage JOIN extent ON usage.extent_auth_name = extent.auth_name AND usage.extent_code = extent.code JOIN scope ON usage.scope_auth_name = scope.auth_name AND usage.scope_code = scope.code WHERE object_table_name = ? AND object_auth_name = ? AND object_code = ? ORDER BY score, usage.auth_name, usage.code: no such table: usage)
From a jupiter notebook I can run this function but not under Syper env.
def main
# -*- coding: utf-8 -*-
"""
Created on Sun Nov  1 13:08:40 2020
"""
  from time import time
  import traceback
  import gis_utils as gis

  if __name__ == "__main__":

      try:
          startTime = time()

          lat_lon = [['373604N', '005916W'],['374642N', '004821W']]
          xysp = gis.geographics2proyected(4258, 25830, lat_lon)
          print(xysp)

    except ValueError:
        msg = traceback.format_exc()
      except Exception:
          msg = traceback.format_exc()
      finally:
          xtime = time() - startTime
          print(f'El script tardó {xtime:0.1f} s')

I'd appreciate very much your help

Hey @solisgb, thanks for reporting. As far as I can see, the error you reported above has nothing to do with Spyder but with pyproj.
Unless you're able to better determine why Spyder is failing, I'm afraid we won't be able to help you, sorry.

I'm really sorry but we I have no idea what happens here. What you're asking us to do is to debug this problem for you, which doesn't seem to be located in Spyder (as I said).
Unfortunately, we don't have time for that.


[Project management] Subscribe to Polkadot releases

As a TPM I need to subscribe to Polkadot releases 36+ moving fwd so that I can make sure we have upgrades baked into out iteration process.
Acceptance Criteria

[ ] Create a maintenance epic and add business case
[ ] Research ways make new frequency issues for each Polkadot release (might need to be manual)
[ ] Update the agile process doc to make sure any upgrade issues made are part of the grooming process

closing as we have a automation issue for this


Add an option to 'test sending emails'.

We should make a small tool to send out e-mails, so users can easily test if Bolt is sending out e-mails OK.
See https://github.com/bolt/bolt/pull/2864 for reference.

Moved from https://github.com/bolt/bolt/issues/2909


Feature request: update Nuki Hub firmware via HA

I suppose one could go about multiple ways to implement this; off the top of my head: have an MQTT message listener that will send an update file payload (is that even possible?), make Nuki Hub be compatible with something like ESPHome, etc.
Also, could be nice to receive some notification on version update (like HACS does).

Hi,
Implementing such a feature is complicated and time-consuming. Considering this is a slight gain in convenience vs. a lot of time not spent on more important features, this is not on my to-do list.