GH-11952 Adding option to convert public channel to private

Please make sure you've read the pull request section of our code contribution guidelines.
When filling in a section please remove the help text and the above text.
Summary
This PR adds the ability for admins to convert a (non default) public channel into a private channel
Ticket Link
https://github.com/mattermost/mattermost-server/issues/11952
Checklist
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[ ] Added or updated unit tests (required for all new features)
[x] Has UI changes
[x] Includes text changes and localization file updates

Device Information
This PR was tested on:

Google Pixel 3 Emulator (Android 9)

Screenshots

Channel info options

Confirmation alert

Things to note:

I noticed a lot of repetitive OK / Cancel  / Yes / No messages in the i18n files that are all being used for alerts. It may be interesting to just create a universal id that all separate alert components use for these sorts of repetitive messages (instead of creating a new one for every alert). If you like I can try to submit a new PR to address this
It looks like the channel_info_header component only has snapshot tests set up until now, do you want me to keep that as is or should I add unit tests to the new additions in this PR? (and hopefully more being added in the future)
I tried keeping the conditions to display this button aligned with the webapp's, where:

A user must be a system admin (I wonder if it would make more sense to have this be Team admin and above type thing though)
The channel cannot be a default one
The channel must be public

For the time being I used a lock icon to represent the Convert to Private Channel button, let me know if there is anything else you'd rather have as the icon though
I sort of arbitrarily decided on the line breaks and formatting of the alert's message. But if you'd like any changes to that (e.g. Making the channel's display name bold) feel free to let me know! :)

Andre thanks for the PR and your comments, we will look at it.

@andrewbrown00 can you please look at the icon being used, does it make sense to use that one or should we use a different icon for this?

@avasconcelos114 thanks for adding this feature!
@enahum @esethna @wiersgallak see my notes/feedback below.
Feedback

Label is good :white_check_mark:

Lock icon is good :white_check_mark:

Are all the icons are left aligned versus center aligned? I notice it more now with the addition of the lock icon.

We should be consistent (it's really close) between the web app and mobile for the message, formatting and line breaks:

Title

Convert {displayName} to a private channel?

Message

When you convert {displayName} to a private channel, history and membership are preserved. Publicly shared files remain accessible to anyone with the link. Membership in a private channel is by invitation only.
The change is permanent and cannot be undone.
Are you sure you want to convert {channelName} to a private channel?

Buttons

No / Yes

There is room for future improvements to the messaging, it's a bit wordy IMO.

Error Handling

I'm 5/5 we should not show the Convert to Private Channel option if the user doesn't have permission to make the change.

If the option is not visible, then we don't need an error state:

For a generic message, let's go with the following message:

We were unable to convert {displayName} to a private channel.

Buttons

Close / Try Again

Success

Thanks for taking a pass at the wording, always helpful and a great way to spark an idea! I did some word-smithing and propose:

Message

{displayName} is now a private channel.

Button

OK

Notes

I created a separate ticket to remove the chevron from rows that don't go to a new screen.

@esethna for me is not the same as the webapp, here the channel is in the screen below and I think we should not close this screen after that action is performed.
Example:

Convert channel to private
Success message
Add members to channel

Does it make sense? Without feedback I don’t know that it actually happened unless I infer it from the options on the screen

Ah, good point, thanks Elias. Makes sense since you are going to land on the channel info screen after converting

Thank you @andrewbrown00 :)
I'll go ahead and change the alert messages.
Also for the error handling, I probably should have mentioned that I had momentarily removed the permission check in order to force an error out of the server (so that I could share how that alert would look like when the server returns an error).
The button is already visible only to Team admins and above

Ah I forgot to mention in the previous comment that while I did look into the possibility of customizing text formatting inside a React Native Alert, It doesn't seem as though there is a way to bold text as seen in the webapp (I did make attempts with ** or <b> tags in the i18n file just in case, but those will only end up rendered as plain text instead).
So unless Mattermost migrates to using a separate Alert library, it may not be possible to customize alerts much farther than line breaks in text and set which buttons are available.
Do let me know if there are any workaround I may not be aware of though, would be happy to make sure the mobile app is as consistent with the webapp as possible

@andrewbrown00 I'm afraid @avasconcelos114 is right and you cannot add bolded text to an alert dialog.
I would say that we don't need to go about creating an alternate dialog just for this.

@avasconcelos114 and @enahum thanks for the feedback! We definitely don't need to create a custom alert for this. I'm good with it as it stands 👍

Build Apps for PR label detected. Will generate the app if build succeeds (checks pass and no conflicts with base branch).

Test server creation failed. See the logs for more information.

Build Apps for PR label detected. Will generate the app if build succeeds (checks pass and no conflicts with base branch).

Build the App failed. See the logs for more information.

Hmm It's odd that it would fail to build the app, I just ran all tests and ran the app locally and got no sign of errors
Let me know if there's anything I need to do to fix this

Build Apps for PR label detected. Will generate the app if build succeeds (checks pass and no conflicts with base branch).

Android build App: https://releases.mattermost.com/mattermost-mobile-pr/PR-3230/Mattermost_Beta.apk)
iOS build App: itms-services://?action=download-manifest&url=https://releases.mattermost.com/mattermost-mobile-pr/PR-3230/Mattermost_Beta.plist

Is it possible to ignore (accidental) empty spaces at the end of the channel name in the popups?
Example:
"Marketing ", the space at the end may not be apparent when looking at the channel name, but it becomes visible in "Convert..." warning popup and also in confirmation popup. See images.

Went ahead and used trim on the display_name variables to remove any spaces either in front/back of the display name, it should be working as you mentioned now :)
In similar light, it may be interesting to do the same on other alerts that function similarly to this one, such as the Leave Channel one (where we end up with an empty space between the display name and the question mark).

I didn't make any changes to that as I felt it would have been out of the scope of this PR and may make things messy with git history, but if you like I could work on a separate PR that would handle empty spaces on other alerts through the app

Thank you @avasconcelos114 - great catch on additional instances
I'll create a separate issue to handle and track trimming empty spaces in front/back of the names on Leave Public Channel and also on Archive Channel alerts.

@avasconcelos114 Just letting you know that this is the ticket that was opened for the issue above: https://mattermost.atlassian.net/browse/MM-18662. It is assigned to one of our dev teams, but please feel free to work on it if you want to.

Ah thanks :)
Sounds like a simple one, I'll just go ahead and take care of that
Also the issue's been equally reproduced on Android, so it may be more accurate to call it a RN issue instead of RN: iOS

Build Apps for PR label detected. Will generate the app if build succeeds (checks pass and no conflicts with base branch).

Build the App failed. See the logs for more information.

The build logs don't make it so clear to me about what the problem may have been this time around (the only thing I found so far is the fact that a similar build error happened recently)
Is there anything that needs to be done on my end to fix that? (perhaps rebasing to the latest master branch?)

@migbot, in order to fix it you need to ssh to the build machine change directory to the mobile-build-app-pr directory and run rm -rf node_modules && npm cache —force clean && npm i

Build Apps for PR label detected. Will generate the app if build succeeds (checks pass and no conflicts with base branch).

Android build App: https://releases.mattermost.com/mattermost-mobile-pr/PR-3230/Mattermost_Beta.apk)
iOS build App: itms-services://?action=download-manifest&url=https://releases.mattermost.com/mattermost-mobile-pr/PR-3230/Mattermost_Beta.plist

Tested on Android, no issues


[BUG] PlayTime

Turns out that it only works when showPlayTime is set to On in both XMB and GAME but the playtime will display the time since the system was booted.
Also when this feature is enabled on the XMB environment it could say Startup Time (actually enabling it on XMB environment does nothing) and when in game Play Time.
webMAN MOD does something similar to it.
EDIT; Seems like the PlayTime (Startup time) does not reset after a system reboot unlike webMAN MOD

Can confirm. Same issue here. Other users also reported issue;
https://www.psx-place.com/threads/webman-mod-not-showing-playtime-in-vshfpscounter.41420/#post-370279


Something about the pretrained_changeformer.pt file.

Dear Bandara:
Regarding the context of #96's Q&A, there are some lingering confusions about pre-trained models that I would appreciate your clarification on.
In regards to the training of Changeformer on the LEVIR dataset, you mentioned in the readme that the model was initially pre-trained on the ADE 160k dataset. However, the pretrained weights provided in your GitHub repository are the weights obtained after training specifically on the LEVIR dataset itself. The expired file at the wget link
https://www.dropbox.com/s/undtrlxiz7bkag5/pretrained_changeformer.pt
appears to have been intended for the weights resulting from the pretraining phase on the ADE 160k dataset. If this is indeed the case, could you please provide an alternative channel or updated link to download the pre-trained weights for Changeformer on the ADE 160k dataset?
Furthermore, in the text file provided for the training process on the LEVIR dataset, it is mentioned that:
pretrain: /media/lidan/ssd2/ChangeFormer/pretrained_segformer/segformer.b2.512x512.ade.160k.pth
Does this indicate that during training on the LEVIR dataset, the pre-trained weights from SegFormer's mit-B2 model were directly utilized? Please advise.
Thank you very much.

Hi @liberty-MCYE Thanks for your question. No, we didn't utilize the segformer weights, but used model trained on DSIFN as pre-trained weights for LEVIR.

Dear Bandara:
Thank you for your response. Regarding your response, I have further inquiries that I would appreciate having addressed.
1.If training LEVIR involves the use of pre-trained weights derived from a model trained on the DSIFN dataset. When initially training on the DSIFN dataset, were pre-trained weights used?
2.Furthermore, in the readme, it is mentioned that "When we initially train our ChangeFormer, we initialize certain parameters of the network using a model pre-trained on RGB segmentation (the ADE 160k dataset) to attain faster convergence." Could you please advise on how to obtain the pre-trained weights trained on the ADE 160k dataset?
Thank you very much.

@liberty-MCYE thanks for your question. Our initial experiments utilized pre-trained weights on ADE160K. However, I misplaced the pre-trained model and cannot find it now. That's why I mentioned previously to use pre-trained weights on an another dataset. This is just to make sure model converges after -- so you don't have to run all the epochs to get the results. However, it is not necessary, you can train from scratch -- in this case you need to train the model all the training epochs (120) get the results.  Thanks.


Does changing owner make any impacts?

Reading this document, I understand the scenario when we need to change the owner, which fits my organization's situation.
However, are there any underlying changes? This document didn't mention it. Or am I changing the surface look only?

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

ID: df27392f-aec0-41d9-726c-88abc12468e0
Version Independent ID: f21e6a50-99f5-819b-4e09-99a84253bf9d
Content: Change the owner of an organization - Azure DevOps Services
Content Source: docs/organizations/accounts/change-organization-ownership.md
Product: devops
Technology: devops-accounts
GitHub Login: @chcomley
Microsoft Alias: chcomley

Hi @nguyenlamlll, Changing the owner doesn't cause any underlying changes. Thanks so much for reaching out!


[UI] [User Can] Pan & Zoom preview page

Given: A rendered screen of logos
When: Scrolling mouse wheel up/down
Then: Image zooms in/out
When: Clicking dragging a zoomed-in image
Then: Image pans around

Consider Canvas Virtual Control


Analyze PCR: interval, max and min

Hi @lelegard ,
I apologize first of all for reporting so many issues, but I do so with the intention of collaborating. I don't expect everything to be implemented, I just want to contribute with some ideas.
With regard to the analysis of PCR values, I suggest to improve the tsanalyze tool or improve the pcrextract plugin. What I request is to print the "repetition rate", plus the min. and max. intervals. More or less what you print with the PSI tables. Example:
...
|============================================================================================|
|  PID: 0x0065 (101)                                                              AVC video  |
|  PES stream id: 0xE0 (Video 0)                                                             |
|  1920x1080, high profile, level 4.1, 4:2:0                                                 |
|  Service: 0x0064 (100) PROGRAM-01                                                          |
|--------------------------------------------------------------------------------------------|
|  Single Service PID             Transport:                     Discontinuities:            |
|  Bitrate: ...... 3,370,365 b/s  Packets: .......... 1,407,290  Expected: .............. 0  |
|  Access: ............... Clear  Adapt.F.: ............ 49,326  Unexpect: .............. 0  |
|                                 Duplicated: ............... 0  PES:                        |
|                                 PCR: ................. 18,318  Packets: .......... 31,412  |
|                                 TSrate: ...... 31,668,464 b/s  Inv.Start: ............. 0  |
|============================================================================================|
...
|============================================================================================|
|  PID: 0x0190 (400)                                                                    PMT  |
|  Service: 0x0064 (100) PROGRAM-01                                                          |
|--------------------------------------------------------------------------------------------|
|  0x02 (2, PMT), TID ext: 0x0098 (152)                                                      |
|         Repetition: ......... 119  ms  Section cnt: ........ 5,235                         |
|         Min repet.: ......... 106  ms  Table cnt: .......... 5,235                         |
|         Max repet.: ......... 320  ms  Version: ............... 12                         |
|============================================================================================|
...

So, what I want is a subsection (similar to the PMT) for PCR streams. With values like "Repetition", "Min repet.", "Max. repet.", and similar. You can put this info in the Video Stream subsection, or you can add a sumary section to the pcrextract plugin.
What you think about this idea?
Thank you for listening to us!
Regards.

Hi @lelegard ,
Another similar request is to enhance the pcrextract with the "expected drift" value. At time we obtain:
* pcrextract: PID: 0x0065 (101), PCR: 0x09A024F685E, (0x000A74B1F43, 103,952 ms from start of PID, 34 ms from previous)
And it would be preferable to have as well:
* pcrextract: PID: 0x0065 (101), PCR: 0x09A024F685E, (0x000A74B1F43, 103,952 ms from start of PID, 34 ms from previous, -16 ns drift)
This would be very useful for detecting problems with PCR timestamps.
What do you think about the idea?
Regards.


OnCall/Debugging guide: Non-Technical

Problem
What problem are we solving?
The on-call procedure should be well defined, so anyone can jump on debugging even without technical experience.
Solution
Populate, a notion doc with processes that needed to be followed step-by-step:

starting with monitoring relayer funds.
How to read logs on DD?
how to query the pending fast path transfer.
how to query the pending slow path transfer.
Monitoring tools, and how to use them?
Process to be followed for the status announcement?
The best way to communicate to stakeholders?
select categories of the issue, and contact the code owners.
...

Acceptance criteria
[ ] For starters, core contributors and the team are able to identify and propose solutions or summarize the issue to the code owner.

WIP


Fix management plane tests

This PR includes:

Remove the Manually attribute in mgmt plane test project so we will not miss the test failure in pipeline.
Fix some test records that are failed due to the tags change
For AppConfiguration, Communication and WebPubSub, skip the tests in live mode to ensure these tests will not block the test pipeline.

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

API change check
API changes are not detected in this pull request.


Neovim 8 changes

Hi there! Wanted to create a pull request to change the README but seems like I can't.
There have been changes in neovim 8 see: https://github.com/neovim/nvim-lspconfig/issues/1891#issuecomment-1157964108
And part of this snippet is deprecated:
require'lspconfig'.cssmodules_ls.setup {
    on_attach = function (client)
        -- avoid accepting `go-to-definition` responses from this LSP
        client.resolved_capabilities.goto_definition = false
        custom_on_attach(client)
    end,
}

resolved_capabilities is now server_capabilities

Hi, thank you for flagging this. I would be happy to merge your pull request.
Can you share why you could not create a PR?
Should be the usual workflow: fork this repository -> make a change in your fork -> push to your fork -> create a PR in this repository

@antonk52 Sorry about that at the end It was an issue on my side. All good now, created a PR here: https://github.com/antonk52/cssmodules-language-server/pull/12


[bazel] Support for non-standard location of srec_cat

In sw/rules/opentitan.bzl it seems that srec_cat is invoked directly without checking where it may be in the PATH.   This is not working when this application is in not in some standard path location.   Is there any way in bazel to search the user's PATH to find the correct location?  Passing PATH to bazel via the --action_env option does not fix this problem (nevermind that this is probably not a good idea anyway..,)
Interestingly enough this is not a problem when bazel is looking for the external native toolchains, which we also have in a non-standard path.
For now I have a workaround where I've added a complete path for this in opentitan.bzl, but this is not sustainable, as it only fixes my environment.

This should be fixable by bringing the srec_cat tool under bazel management.

Admittedly this might be easier said than done as we would be making assumptions about your system to do so, or building the tool from source after having Bazel pull it down, which might have a significant impact on overall build times.
@martin-lueker  To help me better understand what is not working here, can you share the env vars you plan on passing with --action_env using the site-specific .bazelrc in #14775 ?

Hi @timothytrippel, I am currently passing --action_env=PKG_CONFIG_PATH=/path/to/some:/various/pkg-config/directories. Coincidentally, these directories hold all of the usb/ftdi libraries that we've needed for building srec_cat.   So I think odds are good that if you can add srec_cat to the bazel externals, we may be able to link it.

Hi @timothytrippel, I am currently passing --action_env=PKG_CONFIG_PATH=/path/to/some:/various/pkg-config/directories. Coincidentally, these directories hold all of the usb/ftdi libraries that we've needed for building srec_cat. So I think odds are good that if you can add srec_cat to the bazel externals, we may be able to link it.

Sorry I'm not sure I follow the last bit, are you suggesting we instruct Bazel to pull down the srec_cat source code as an external dep and then have Bazel build the srec_cat tool from src?

Sorry I'm not sure I follow the last bit, are you suggesting we instruct Bazel to pull down the srec_cat source code as an external dep and then have Bazel build the srec_cat tool from src?

Ah, I thought this is what you meant by bringing srec_cat under bazel management.  What else did you have in mind?

No worries at all! Sorry I wasn't very clear above.
There were two meanings to "bring this under bazel management" that I was thinking of (the second is the one you pointed out) I just was confused when you said "we may be able to link it":

If the dependency is pre-built, as is the case with lowRISC toolchain, then bazel can simply download and unpack the tarball, which looks like what we do; however whatever we download and unpack, we assume has been built for the target system we are running on, otherwise this doesn't work.

If the dependency is some source code that we either want to pull in directly (e.g., maybe we just want to use a filegroup or some bazel rules) to another target, or we want to build as part of building the dependency chain of another target (the scenario you described), then we can do so too. However, to build a target dependency would require the dependency itself be a bazel project, or have a way to easily generate the BUILD rules for such (as is the case with rust crates and the cargo raze tool, though rules_foreign_cc usually gives us a way around this too).

From the looks of things, both the srecord source code and prebuilt Linux binaries are available to download, so we could take either approach:

have bazel just pull down the prebuilt Linux binaries

should yield fastest build time as we aren't building anything
will only work on a Linux system, which is all we support now anyway

have bazel pull down the source code and build the tool as part of the dependency chain of another target
3. might increase build times, won't know magnitude of impact until we try
4. the srecord tools are built with a configure-make build setup, so we will need to make use of rules_foreign_cc to build the tools
5. building also requires the following deps: libboost-dev libgcrypt-dev

I am leaning towards option 2 since it is more portable in the long term, and the tool looks relatively small, only took 8 seconds to build on my (albeit quite powerful: 72 core) workstation. 28 seconds if I only build using 8 cores.

Hi @timothytrippel,
A potentially much simpler solution: Would it be okay to just set use_default_shell_env=True for _bin_to_vmem_impl?
This works on our system

yep I think that should be ok, provided it passes CI (which it looks like it is). Glad that works!
I think in the long term, for the sake of hermiticity, we probably still want to do one of the two options above, and since this this issue will close when your linked PR merges I will break my above comment out into an issue with lower priority.


Beta

Codecov Report

Merging #19 (4e14dec) into main (ba3e5d7) will decrease coverage by 2.54%.
The diff coverage is 79.72%.

@@            Coverage Diff             @@
##             main      #19      +/-   ##
==========================================
- Coverage   96.75%   94.21%   -2.55%
==========================================
  Files         102      111       +9
  Lines        1724     2004     +280
  Branches       89      123      +34
==========================================
+ Hits         1668     1888     +220
- Misses         50      108      +58
- Partials        6        8       +2

Impacted Files
Coverage Δ

expect/_utils.ts
75.47% <ø> (ø)

report/assertion.ts
11.76% <11.76%> (ø)

test/mod.ts
45.31% <19.35%> (-29.69%)
:arrow_down:

expect/array_containing.ts
77.77% <77.77%> (ø)

expect/object_containing.ts
84.84% <84.84%> (ø)

helper/equal.ts
85.00% <85.00%> (ø)

expect/anything.ts
85.71% <85.71%> (ø)

expect/any_number.ts
88.23% <88.23%> (ø)

expect/any_string.ts
88.23% <88.23%> (ø)

expect/any.ts
97.05% <97.05%> (ø)

... and 18 more

Continue to review full report at Codecov.

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


object_detector issue: RuntimeError: Cannot evaluate lambda...

Hi,
I encounter an error: "RuntimeError: Cannot evaluate lambda. No Lambda workers have been successfully started."  when I try to use object_detector.create(..)
I'm using Turi 5.6 with Python 2.7.16.
I don't understand the issue. The only thing different done from the example, is setting up the temp directory of Turi to a NAS directory because I work on a heavy model (sFrame size: ~60Go) and I don't have enough space left on my internal drive. I run the following code into a Jupiter notebook pointing to a NAS directory.
I'm using a 2016 MacBook Pro with 16Go of RAM, and  an AMD Radeon Pro 450 GPUs with 2Go of RAM. Operating system is Mac OS X 10.14.5 (Mojave).
Here is my code:
import turicreate as tc

tc.config.set_runtime_config('TURI_CACHE_FILE_LOCATIONS', '/Volumes/AI/temp')

# Load the data
data =  tc.SFrame('scenes.sframe')

data.explore()

# Make a train-test split
train_data, test_data = data.random_split(0.8)

# Create a model
model = tc.object_detector.create(train_data, feature = 'image', verbose = True)

Here is the log:
Materializing SFrame
Using 'annotations' as annotations column
Setting 'batch_size' to 16
Using GPU to create model (AMD Radeon Pro 450)
Setting 'max_iterations' to 2000
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-3-74863a659a2a> in <module>()
     17
     18 # Create a model
---> 19 model = tc.object_detector.create(train_data, feature = 'image', verbose = True) #, max_iterations=15000
     20
     21

/anaconda3/envs/turi2.7/lib/python2.7/site-packages/turicreate/toolkits/object_detector/object_detector.pyc in create(dataset, annotations, feature, model, classes, batch_size, max_iterations, verbose, **kwargs)
    348                                   annotations_column=annotations,
    349                                   io_thread_buffer_size=io_thread_buffer_size,
--> 350                                   iterations=num_iterations)
    351
    352     # Predictions per anchor box: x/y + w/h + object confidence + class probs

/anaconda3/envs/turi2.7/lib/python2.7/site-packages/turicreate/toolkits/object_detector/_sframe_loader.pyc in __init__(self, sframe, batch_size, input_shape, output_shape, anchors, feature_column, annotations_column, class_to_index, aug_params, loader_type, load_labels, shuffle, io_thread_buffer_size, epochs, iterations)
    263             # Check that all annotations are valid
    264             if is_annotations_list:
--> 265                 valids = sframe[annotations_column].apply(_is_valid_annotations_list)
    266             else:
    267                 valids = sframe[annotations_column].apply(_is_valid_annotation)

/anaconda3/envs/turi2.7/lib/python2.7/site-packages/turicreate/data_structures/sarray.pyc in apply(self, fn, dtype, skip_na, seed)
   1918
   1919         with cython_context():
-> 1920             return SArray(_proxy=self.__proxy__.transform(fn, dtype, skip_na, seed))
   1921
   1922

/anaconda3/envs/turi2.7/lib/python2.7/site-packages/turicreate/_cython/context.pyc in __exit__(self, exc_type, exc_value, traceback)
     47             if not self.show_cython_trace:
     48                 # To hide cython trace, we re-raise from here
---> 49                 raise exc_type(exc_value)
     50             else:
     51                 # To show the full trace, we do nothing and let exception propagate

RuntimeError: Cannot evaluate lambda. No Lambda workers have been successfully started.

@pboudoin - I'm sorry you are having this issue. I'm not sure what is happening but I suspect it's related to the config change you've made.
Please try running the following:
import turicreate as tc

test_data = tc.SArray(range(10))

test_data = test_data.apply(lambda x: x)

tc.config.set_runtime_config('TURI_CACHE_FILE_LOCATIONS', '/Volumes/AI/temp')

test_data = test_data.apply(lambda x: x)

Let us know if that code works. If it fails, please let us know if it fails on the first apply call or the second.

@TobyRoseman Thanks,
Running your code, crash at the first call of .apply. Here is the log:
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-4-ad83205d4dcb> in <module>()
      3 test_data = tc.SArray(range(10))
      4
----> 5 test_data = test_data.apply(lambda x: x)
      6
      7 tc.config.set_runtime_config('TURI_CACHE_FILE_LOCATIONS', '/Volumes/AI/temp')

/anaconda3/envs/turi2.7/lib/python2.7/site-packages/turicreate/data_structures/sarray.pyc in apply(self, fn, dtype, skip_na, seed)
   1918
   1919         with cython_context():
-> 1920             return SArray(_proxy=self.__proxy__.transform(fn, dtype, skip_na, seed))
   1921
   1922

/anaconda3/envs/turi2.7/lib/python2.7/site-packages/turicreate/_cython/context.pyc in __exit__(self, exc_type, exc_value, traceback)
     47             if not self.show_cython_trace:
     48                 # To hide cython trace, we re-raise from here
---> 49                 raise exc_type(exc_value)
     50             else:
     51                 # To show the full trace, we do nothing and let exception propagate

RuntimeError: Cannot evaluate lambda. No Lambda workers have been successfully started.

Hey @pboudoin,
Could you run:
turicreate._sys_util.test_pylambda_worker()
and send us the log file?
Thanks!
-- Hoyt

After many reboots, I'm not able to reproduce.


Feat/raster utils

I started a new module eolearn.core.utils.raster with utilities for raster features. I put in:

fast_nanpercentile implementation + I wrote a detailed parametrized test for it.
I moved constant_pad from general utils into this module (this one still doesn't have any tests and I think we never use it in our codebase).

Btw, tests are failing only because of an unrelated rasterio issue. You can ignore that.


OptimizeResult from minimize_scalar (Brent's method) missing attributes or incorrectly documented

From the mimize_scalar docstring:
Returns
-------
res : OptimizeResult
    The optimization result represented as a ``OptimizeResult`` object.
    Important attributes are: ``x`` the solution array, ``success`` a
    Boolean flag indicating if the optimizer exited successfully and
    ``message`` which describes the cause of the termination. See
    `OptimizeResult` for a description of other attributes.

But the result does not have success or message attributes.  From the source for optimize._minimize_scalar_brent():
return OptimizeResult(fun=fval, x=x, nit=nit, nfev=nfev)

So the returned value is indeed an OptimizeResult object, but it does not have all of the "important attributes" defined.
A quick fix would be to modify the minimize_scalar docstring to correctly identify the OptimizeResults attributes that are guaranteed to be defined.  But it appears that throughout optimize, a minimal set of attributes is presumed to be defined for all optimization results, so a better fix may be to make sure that minimize_scalar always defines the "important attributes" specified in the docstring.

It should be possible to detect that the maximum number of iterations has been exceeded in Brent.optimize(). For instance, just add an else clause to the while loop setting a dedicated attribute, and retrieve it from the caller which builds the OptimizeResult.

With the last patch, this issue seems to have been fixed. If not, is it ok to take it and work on?

message is present only in output from bounded:
import scipy.optimize
for method in ["brent", "golden", "bounded"]:
  print(method + ":")
  print(scipy.optimize.minimize_scalar(lambda x: x**2, method = method, bounds = [-10, 10]))

Solution should be to add message, since OptimizeResult documentation specifies that it will be an attribute of an OptimizeResult.

@MiroFurtado
I'm not seeing a problem with basinhopping:
print(scipy.optimize.basinhopping(lambda x: x**2, x0 = [1]))

It has:
  message: 'Optimization terminated successfully.'

@mdhaber, the problem with the return value from basinhopping is that it doesn't have the success attribute.  This was just reported in a question on stackoverflow: https://stackoverflow.com/questions/59598917/how-to-access-success-attribute-of-optimizeresult-instance-returned-from-scipy
E.g.
In [2]: res = basinhopping(lambda x: x**2, x0=1)

In [3]: res.success
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~/mc37scipy/lib/python3.7/site-packages/scipy-1.5.0.dev0+1984f97-py3.7-macosx-10.7-x86_64.egg/scipy/optimize/optimize.py in __getattr__(self, name)
    117         try:
--> 118             return self[name]
    119         except KeyError:

KeyError: 'success'

During handling of the above exception, another exception occurred:

AttributeError                            Traceback (most recent call last)
<ipython-input-3-1c23ad034239> in <module>
----> 1 res.success

~/mc37scipy/lib/python3.7/site-packages/scipy-1.5.0.dev0+1984f97-py3.7-macosx-10.7-x86_64.egg/scipy/optimize/optimize.py in __getattr__(self, name)
    118             return self[name]
    119         except KeyError:
--> 120             raise AttributeError(name)
    121
    122     __setattr__ = dict.__setitem__

AttributeError: success

And, as in the initial report in this issue, minimize_scalar still does not set the message attribute`
In [4]: res = minimize_scalar(lambda x: x**2, [-1, 3])

In [5]: res.message
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
~/mc37scipy/lib/python3.7/site-packages/scipy-1.5.0.dev0+1984f97-py3.7-macosx-10.7-x86_64.egg/scipy/optimize/optimize.py in __getattr__(self, name)
    117         try:
--> 118             return self[name]
    119         except KeyError:

KeyError: 'message'

During handling of the above exception, another exception occurred:

AttributeError                            Traceback (most recent call last)
<ipython-input-5-ffaa636607ae> in <module>
----> 1 res.message

~/mc37scipy/lib/python3.7/site-packages/scipy-1.5.0.dev0+1984f97-py3.7-macosx-10.7-x86_64.egg/scipy/optimize/optimize.py in __getattr__(self, name)
    118             return self[name]
    119         except KeyError:
--> 120             raise AttributeError(name)
    121
    122     __setattr__ = dict.__setitem__

AttributeError: message

This is with the development version of scipy:
In [6]: import scipy

In [7]: scipy.__version__
Out[7]: '1.5.0.dev0+1984f97'

Ah ok.

I'm not sure what an OptimizeResult.success attribute means in the context of basinhopping; it's not clear what a fail consists of.

most of the fault conditions in setup are done by raising Exceptions rather than a success flag being set.
if there are local minimisation failures they are noted in BasinHoppingRunner, but they don't necessarily mean that the entire run is a failure as other local minimisations may have worked.

Still, I would expect that attribute to be set.

Just setting it to true might be ok? Just so that the return object fulfills the OptimizeResult.

I think adding this line maybe useful


if field of current language is null or empty, can this package choose default language field value  automatically?

if field of current language is null or empty, can this package choose default language field value  automatically?

Please read the docs under fallback locales


About NIGHTMARE auto-mode

Do you have any plan to add the NIGHTMARE mode when it`s available?
And thanks for the autopilot~

Automatically switching to nightmare battle when it's available? It's been possible to do so from the beginning but it requires a bit more sophisticated scenario writing. I'll create a repository for the scenario examples some time later.

Check out this example for Cerberus farming. It automatically switches context based on whether the Nightmare stage appears on the event page or not.
For a more sophisticated example during Rise of the Beasts event where the bot only farms beast that is on cardinal bonus, you can check here.


Doesn't work with Deno v1.26 or beyind

Title. Current version as of writing is v1.35.3, but there were breaking changes in v1.26.0
Workaround for anyone else who may encounter this:
Install Deno as per instructions on Deno website:
curl -fsSL https://deno.land/x/install/install.sh | sh
Then downgrade to v1.25.4:
deno upgrade --version 1.25.4

Sorry it took me so long to notice this issue. Should be fixed in the most recent version 1.0.1 just published.


flutter/dart popup tooltips poorly positioned

I am using flutter/dart in VS Code on Windows 7 SP1
flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel beta, v0.8.2, on Microsoft Windows [Version 6.1.7601], locale en-US)
[√] Android toolchain - develop for Android devices (Android SDK 27.0.3)
[√] Android Studio (version 3.1)
[√] VS Code, 64-bit edition (version 1.28.0)
[√] Connected devices (1 available)

• No issues found!

When I hover over a recognized object, a tooltip popup appears. A problem is that if the object over which I hover is close to the top of the screen, the tooltip appears too far up; its top contents are hidden; and I have to reposition the object lower on the screen.
The first image displays the tooltip positioning problem. I have hovered over Column (line 78) where Column is near the top of the screen.

The second image displays the tooltip when Column has been scrolled downward towards the center of the screen.

It appears that tooltips require 9 lines. So through simple computations, the tooltip could be placed so that all 9 lines of the tooltip appear near the object it is discussing without clipping.

Since I am using VS Code 1.28, the vscodebot once again provides worthless information. The suggested issue has absolutely nothing to do with the issue I raise!!

The bot can be understood since this issue is about the flutter extension, please file the issue against this repository.

@egamma I'm the author of the extension and advised @gggustafson to post here. I don't know how the extension can control this (I actually raised a similar bug years ago -> https://github.com/Microsoft/vscode/issues/10051).
If you believe I can fix this, please give me a pointer.

@DanTup I´m deeply sorry you are absolutely right.

/duplicate #57088

This issue is not a duplicate of #57088. That issue was concerned with the size of the popup. This issue regards the positioning of the popup. This issue is the same as #10051. But that was reported on Aug 2, 2016 by the extension author. It has not been fixed!!!

@gggustafson Thanks for the heads up.


WIP: Implement CODEOWNERS detection policy

Depends on https://github.com/ossf/allstar/pull/382 for the version bump first
This will create issues if:

A CODEOWNERS is not present (404)
A CODEOWNERS is present but has errors (this is shown in the Github web UI but it doesn't create issues)

If you want an example of what it looks like:  https://github.com/Talend/tesb-studio-se/issues/1937

@jeffmendoza after the PR to bump https://github.com/ossf/allstar/pull/382 could you run checks here too ?
Thanks :)

Ok I messed up again I think, I merged my github client version bump into the branch, it created a conflict


Re-add support for python 3.8

After some discussion, I think we settled on trying a little bit harder to support more versions of python.

P.S. After this is merged, I'll re-add the 3.8 workflow to the main branch protection rules.


Consolidate db create/populate scripts

Currently there are separate scripts for creating a production DB vs devel database.  Would be preferred to only have one set of scripts that automatically adjust behavior based on an environment variable.

refactor finished will pull #37


Reload config on update

This PR adds automatic reloading of the configuration file when the file is written. It mostly focuses on updates to the repository list. Resolves #287

Thank you for this PR! I'll look it over this weekend. Very excited about this one.
Just as a heads up, there's a pending PR to set up go modules in this repo, which might have implications for how you add fsnotify:
https://github.com/hound-search/hound/pull/353
I'll prioritize merging that PR in so that it unblocks this PR, but you'll probably need to move fsnotify once it's merged.

Hey @elliotpeele, thanks for being patient with us. #353 has been merged. Do you mind updating this PR to use go modules instead?

I don't mind updating to use modules. BTW, I found an issue with the PR where over time, as the config gets updated, the indexes get removed. I haven't had time to work on a resolution yet though.

Got it. I'll hold off on reviewing this until I hear more, just so I can prioritize clearing out some of the outstanding backlog.

@salemhilal, I finally got back to this. Found why the indexes were getting deleted when the config updated and updated the PR.

Thank you @elliotpeele! I'm a little swamped at the moment, but I haven't forgotten about this PR. I appreciate the update and will give it a closer look shortly.

Hey! Is there any way in which I can help getting this merged? I know now a little Go and I'm not at all familiar with Hound's codebase, but if it was rebased on top of head I can run this on our test deployment and report any issues!

hey @kkom, I'm going to try and set aside some time to day to validate this PR. Thanks again (to everyone on this PR) for being patient.

Thanks @salemhilal – let me know if any prolonged testing would help, happy to do it, as I'm just about to set up a POC deployment of Hound!

I'm interested in picking this up if @elliotpeele does not.

@jrarmstro I haven't had time to get back around to this. Feel free to pick it up.

Are there any plans to revive this PR?


card page

the cards look like this at first-time page loaded, it seems no cards selected

the last pull request fixed this problem.
if you can take a look.
thanks a lot.

I know this bug, it seems to be just there for a split second.
It only happens if we specify initialPage
I will look into it.

Let me know if this fixes.
According to me its fixed.


[QUESTION] Critical worker timeout appearing once in a while in production

First check

[x] I added a very descriptive title to this issue.
[x] I used the GitHub search to find a similar issue and didn't find it.
[x] I searched the FastAPI documentation, with the integrated search.
[x] I already searched in Google "How to X in FastAPI" and didn't find any information.
[x] I already read and followed all the tutorial in the docs and didn't find an answer.
[x] I already checked if it is not related to FastAPI but to Pydantic.
[x] I already checked if it is not related to FastAPI but to Swagger UI.
[x] I already checked if it is not related to FastAPI but to ReDoc.
[x] After submitting this, I commit to one of:

Read open issues with questions until I find 2 issues where I can help someone and add a comment to help there.
I already hit the "watch" button in this repository to receive notifications and I commit to help at least 2 people that ask questions in the future.
Implement a Pull Request for a confirmed bug.

Example
I am not sure if I am able to create a minimal example, see description below.
Description
I have been using FastAPI for almost a year now without almost any issues, but I met one issue which is quite hard to reproduce and I might need your help.
My backend (simplified), consists of two parts: the API, and the worker. The API is run by gunicorn, and the worker is run separately, to avoid creating duplicate instances of background tasks. They are communicating between each other via redis.
What I have is, a background task that should mark an object (invoice) as expired after certain time.
What I did is an async function, that just does asyncio.sleep, and after that it marks invoice as expired in the database.
When invoice is created (from the API, via one of the workers gunicorn is serving), an asyncio task is created to mark invoice expired later.
Also, the background worker on startup checks pending invoices if they have expired.
Seems to be working fine even after server restarts.
But in very cases it doesn't work, I have checked server logs, and saw a few entries with "[CRITICAL] Worker timeout"
So as far as I understand, from time to time the workers time out and get restarted, so all started async tasks are lost.
It happens quite rarely, for now 3 times: on January 4th, 10th and 17th, and every time multiple workers get restarted or get restarted multiple times.
All my functions are async, and I am not sure what exactly might cause the timeout if all the long-running functions are delegated to the worker.
Attaching screenshots, and all the code is available at github too.
I am sorry that I am unable to provide a simple example, because the project is complex, and I think that I don't have any long-running tasks in the gunicorn process (proper distribution of tasks, this system has been working great on many systems, including the demo which is running without any issues except for this for 1 month already).
I think that the issue might be just my gunicorn configuration, which is the default one almost.
I understand that it might be hard to investigate the issue, so I am ready to provide all needed details and answer all the following questions in detail. I was directed here from discord.
Environment

OS: Linux; Docker environment with docker-compose; Custom setup:
backend component
worker component
Dockerfile
FastAPI Version: 0.63.0
Python version: 3.6.12

Additional context
The function running as an async task:

Server logs:

How the task is started:

Gunicorn config:
import multiprocessing

bind = "<IP_ADDRESS>:8000"
workers = multiprocessing.cpu_count() * 2 + 1
worker_class = "uvicorn.workers.UvicornWorker"

Backend startup script:
#!/usr/bin/env sh
set -ex
alembic upgrade head
gunicorn -c gunicorn.conf.py main:app

Entrypoint
Repository

if you don't have a fastAPI question or BUG report , then I don't see the purpose of your issue
also I see that you do an asyncio.sleep in your code
It do not sleep for exactly the time you ask , it sleep at minimum the time you ask
so it's not surprising that you could sleep more than the timeout of gunicorn
If you have a lot of task and taking an amout of time , the task that is doing an asyncio.sleep can wait a long time before getting back the exection from the loop
example :
import asyncio

async def long_sleep():
    async def a():
        while True:
            import time

            start = time.time()
            print("sleep sync")
            time.sleep(20)
            end = time.time()
            print("sync time =" + str(end - start))
            await asyncio.sleep(1)  # to release to loop

    async def b():
        while True:
            import time

            start = time.time()
            print("sleep async")
            await asyncio.sleep(10)
            end = time.time()
            print("async time =" + str(end - start))

    rst_a = asyncio.create_task(b())
    rst_b = await asyncio.create_task(a())

async def main():
    await long_sleep()

if __name__ == '__main__':
    asyncio.run(main())

give :
sleep async
sleep sync
sync time =20.018694400787354
async time =20.01886749267578
....

Hi! Thank you for your reply.
I also think that this issue is not for github, that's why I asked in discord, but I was directed there so that fastapi experts could help, but noone could (:
Hmm, maybe it is indeed the asyncio.sleep, but if it is created as an async task (create_task or ensure_future), will gunicorn still think that the worker is processing a request?
Anyway, recently I've moved all the event handling, even those long-running asyncio.sleeps to a separate process, and the gunicorn workers just send a command to redis (pub/sub).
Why was I asking is, maybe there is something in my gunicorn configuration, which is fairly simple.
There aren't many guides on how to deploy properly in production (the general advice is to use gunicorn with uvicorn worker, which I use). I am building custom docker images instead of the fastapi-gunicorn-docker, as my project is complex and we are aiming for minimal docker image size.
I will probably leave this issue open for some time, as maybe this issue arises once again, and maybe someone could suggest some improvements to the default gunicorn config.
(By the way, the issue is labeled with special question label, so it is indeed a question)

"will gunicorn still think that the worker is processing a request?"

But then why is creating such tasks a problem? I remember before, I was needed to execute some long-running action, so I used BackgroundTasks. Now all the background actions are all in a separate process. But I though that if I asyncio.ensure_future the coroutine, it will not make the gunicorn think a timeout has happened. Should BackgroundTasks or a separate process be used for that too? (What I thought is, when creating the async task, it's scheduled somewhere in the event loop, and the request processing function returns a response and finishes, and the asyncio task runs somewhere later, so not interrupting anything)
My action I need to execute is not long-running, it is more like long-sleeping. It just needs to be executed some time after the task was created, so it sleeps till the actual time it needs to execute.

Wrong -> the doc https://www.uvicorn.org/deployment/ and https://docs.gunicorn.org/en/stable/settings.html#timeout

Well, actually right. I've seen this documentation a lot of times. It only documents possible options, which is good too. But what I mean is, the recommended settings for gunicorn+uvicorn+fastapi app. For example, the docs says that timeout of 30 seconds is enough, but in general gunicorn documentation is mostly related to it's sync workers and not ASGI in general.

@MrNaif2018 can you add threads = workers to your gunicorn config and test it again?

I can. But the problem is, this issue arises once in a while (5 days, a week, or even more sometimes, etc.). I haven't found any way to reproduce it faster (might it be the memory leak?)
Should I deploy this modified version, or it might indeed be the memory leak?
For now it uses an evenly-spreaded amount of RAM (1.1%, which is 87,736 MB per each worker)

I have been checking servers logs for 20 days, and no issues so far.
Looks like that by delegating all tasks (not only background tasks which could hang on network request or something, but even sleeping asyncio tasks) to another process (worker), timeouts aren't happening anymore. Closing this, will re-open if the issue appears again. Thanks everyone for your help!
For those wondering how is the delegation event system done (via redis pub/sub), you can check it there.

Thanks for the help here @raphaelauv and @ycd ! 👏  🙇
I think there's a chance that you're deploying behind Kubernetes or something like that, in that case you probably shouldn't use Gunicorn and instead just use Uvicorn with multiple containers: https://fastapi.tiangolo.com/deployment/docker/
If you are running background tasks that need to do something even slightly complex, that would probably be better run outside, in a background job queue system like RQ, Celery, etc. (not sure if that's what you're doing or not).
Anyway, I imagine you already solved it but wanted to comment for completeness.
Thanks for reporting back and closing the issue @MrNaif2018  👍

Sorry for the long delay! 🙈  I wanted to personally address each issue/PR and they piled up through time, but now I'm checking each one in order.

Hmm, why shouldn't gunicorn with uvicorn workers be used?
And yeah, I solved it by a separate worker process which follows pub/sub model via redis


cigien: Watch xdarom.com

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

xdarom\.com has been seen in 0 true positives, 0 false positives, and 0 NAAs.

Approved by Mast in Charcoal HQ


Update CSS

I updated css for tableview. See if it is good @liushiru
I also modified Product Page a bit (Cleared the structure). Can you modify it @liushiru to reclaim the code otherwise RepoSense might give the credit to me...

I can't really see where's the change tho. May I ask where did you update css for table view? Cos so far both css file seems unmodified.

I can't really see where's the change tho. May I ask where did you update css for table view? Cos so far both css file seems unmodified.

Sorry that was a mistake. Check the new PR.


docs: implement enum type inside and outside of message

This PR implements the enum type, which can reside either inside a message block or outside of it. Cases tested:

Enum inside message
Enum outside message
Enum without alias
Enum with alias

Some of other changes:

Remove the redundant protosaurus keyword in the package names
Always have double new lines after every field
Refactor some of the typings to better accommodate the enum typing, e.g. MessageData to ObjectData.

Signed-off-by: Try Ajitiono<EMAIL_ADDRESS>

Hm, that's weird. Why do I get this error @dio?
testdata/booking/v1/booking.proto:88:5:Enum option "allow_alias" on enum "JourneyStatus" must be false.
make: *** [Makefile:149: /home/runner/work/protosaurus/protosaurus/.cache/buf/v1/module/data/buf.build] Error 100

Doing make gen in my local seems fine...

If I do this:
enum JourneyStatus {
  option allow_alias = false;
  UNKNOWN = 0;
  STARTED = 1;
  DEPARTED = 1;
  ARRIVED = 2;
}

I get this error instead:
testdata/booking/v1/booking.proto:81:16:enum Booking.JourneyStatus: values STARTED and DEPARTED both have the same numeric value 1; use allow_alias option if intentional

What might be the issue here?

OK, I figured out that it's because of the buf.build linter: https://docs.buf.build/lint/configuration. I disabled the ENUM_NO_ALLOW_ALIAS linter and it would seem to work, at least in my local.
It's interesting because https://developers.google.com/protocol-buffers/docs/proto3#enum has no mentions of "legacy" for allow_alias but buf.build does: https://docs.buf.build/lint/configuration#allow_comment_ignores

"For example, say we have a legacy enum that uses allow_alias."

Ah sorry just saw this. Glad that you work on allow_alias. Need to put this in a note.

Do we have an enum example when it is not nested, but being used in a message?

Yes, it's this one: https://imballinst.github.io/protosaurus/pr-25/docs/booking.v1#testenumoutside

I put it below the "Messages". So, if there are services, messages, and enums, then there will be 3 sections in total. Are we OK with this?

Thanks @dio for the review!


when switching networks, loading indicator appears late

when you click the menu in the top right and switch networks, it takes a few seconds before the loading spinner modal appears

this still happens but we have no interest in changing it

I am informed that I do not have to close the issue for that reason


AMBARI-23490. NN Federation Wizard: Bootstrap NameNode failed

Bootstrap NameNode command fails due to stopped NameNode. Actually NameNode should be started and command to start it was sent correctly from UI, but was ignored by BE due to:
Ignoring ServiceComponentHost as the current state matches the new desired state, clusterName=c, serviceName=HDFS, componentName=NAMENODE, hostname=c7404.ambari.apache.org, currentState=STARTED, newDesiredState=STARTED
This is because Format NameNode command starts NameNode for a little period of time and then stops it back, but component's current state is not updated immediately and BE thinks that NameNode is still started.
From Format NameNode log:
18/04/04 11:44:31 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
...
18/04/04 11:44:35 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at c7404.ambari.apache.org/<IP_ADDRESS>

Jenkins tests are failing constantly. Committing this without test results. Ran them manually.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/1675/
Test FAILed.
Test FAILured.


the flickering is a bit too Obvious

Is there any way to reduce the flicker?https://github.com/user-attachments/assets/cb877c85-b858-4856-ad98-d1ed853c3dd4

Working on it. Stay tuned for updates.
You can also use Frame Interpolation node to smooth the movement.

There is a new version


[ComputerVision] Add Brand Analysis test case

Test update for https://github.com/Azure/azure-rest-api-specs/pull/5141
Also fix RecognizeText test fix; output changed due to model upgrade.

@azuresdkci Test this please

@cthrash master is our default branch now, please resolve conflicts and update the pr


[Bug]: multigpu - deprecated -- new pytorch multinode multigpu setup

deprecated multigpu
In documentation about multigpu they suggest to use torch.distributed.launch. However, when I use it I receive error message: torch.distributed.launch is deprecated furthermore,
Expected behaviour
at the end I should have a pretrained model on multi node multi gpu on SLURM cluster
To Reproduce
Error 1
I am pretraining wav2vec with librispeech following the steps:
I don't have 16GPUs, so I use 2 nodes each with 4 gpus so that training is not taking forever. My resource set up:
#SBATCH --job-name=ol            # Job name
#SBATCH --output=/home/flck/output.%A_.txt   # Standard output and error log
#SBATCH --nodes=2                   # Run all processes on a single node   2
#SBATCH --ntasks=4                 # Run on a single CPU   4
#SBATCH --mem=128G                   # Total RAM to be used  128
#SBATCH --cpus-per-task=8          # Number of CPU cores #--cpus-per-task=8
#SBATCH --gres=gpu:4                # Number of GPUs (per node) #151966: 4
#SBATCH -p gpu                      # Use the gpu partition
#SBATCH --time=12:00:00             # Specify the time needed for your experiment
#SBATCH --qos=gpu-8                 # To enable the use of up to 8 GPUs

LISTNODES=scontrol show hostname $SLURM_JOB_NODELIST
MASTER=echo $LISTNODES | cut -d" " -f1
torchrun (new version for distributed learning)
torch.distributed.launch (old)
python -m torch.distributed.launch --nproc_per_node=4 --nnodes=2 --node_rank=${SLURM_NODEID} --master_addr=${MASTER} --master_port=5555 /home/flck/speechbrain/recipes/LibriSpeech/self-supervised-learning/wav2vec2/train_sb_wav2vec2.py /home/flck/speechbrain/recipes/LibriSpeech/self-supervised-learning/wav2vec2/hparams/wav2vec2_base.yaml --skip_prep=True --find_unused_parameters --max_grad_norm 0.0 --data_folder=/l/users/flck/librispeech/train/datasets/LibriSpeech/LibriSpeech --train_splits=["train-clean-100"]
slurm command args are from here
However, I receive an error message:
".conda/envs/my_conda_113/lib/python3.9/site-packages/torch/distributed/launch.py:178: FutureWarning: The module torch.distributed.launch is deprecated
and will be removed in future. Use torchrun.
Note that --use_env is set by default in torchrun.
If your script expects --local_rank argument to be set, please
change it to read from os.environ['LOCAL_RANK'] instead. See
https://pytorch.org/docs/stable/distributed.html#launch-utility for
further instructions"

Error 2:
To solve the above I use torchrun and look at pytorch doc:
I modified the speechbrain command based on how Pytorch do multi node multi GPU training.
SLURM bash script to run the example wav2vec pretraining on librispeech by speechbrain :
#!/bin/bash
#SBATCH --job-name=ol            # Job name
#SBATCH --output=/home/flck/output.%A_.txt   # Standard output and error log
#SBATCH --nodes=2                   # Run all processes on a single node   2
#SBATCH --ntasks=4                 # Run on a single CPU   4
#SBATCH --mem=20G                   # Total RAM to be used  128
#SBATCH --cpus-per-task=8          # Number of CPU cores #--cpus-per-task=8
#SBATCH --gres=gpu:2                # Number of GPUs (per node) #151966: 4
#SBATCH -p gpu                      # Use the gpu partition
#SBATCH --exclusive
#SBATCH --time=12:00:00             # Specify the time needed for your experiment
#SBATCH --qos=gpu-8                 # To enable the use of up to 8 GPUs

nodes=( $( scontrol show hostnames $SLURM_JOB_NODELIST ) )
nodes_array=($nodes)
head_node=${nodes_array[0]}
head_node_ip=$(srun --nodes=1 --ntasks=1 -w "$head_node" hostname --ip-address)

echo Node IP: $head_node_ip
export LOGLEVEL=INFO

CUDA_LAUNCH_BLOCKING=1 added because of issue
based on: https://github.com/pytorch/examples/blob/main/distributed/ddp-tutorial-series/slurm/sbatch_run.sh I modified the speechbrain example command for multigpu to:
srun torchrun --nnodes=2 --nproc_per_node=2 --rdzv_id $RANDOM`` --rdzv_backend c10d --rdzv_endpoint $head_node_ip:56678 /home/flck/speechbrain/recipes/LibriSpeech/self-supervised-learning/wav2vec2/train_sb_wav2vec2.py /home/flck/speechbrain/recipes/LibriSpeech/self-supervised-learning/wav2vec2/hparams/wav2vec2_base.yaml --skip_prep=True --find_unused_parameters --max_grad_norm 0.0 --data_folder=/l/users/flck/librispeech/train/datasets/LibriSpeech/LibriSpeech --train_splits=["train-clean-100"]
However, I receive error message from speechbrain:
speechbrain.core - Beginning experiment!
speechbrain.core - Experiment folder: wav2vec2-base
Traceback (most recent call last):
File "/home/flck/speechbrain/recipes/LibriSpeech/self-supervised-learning/wav2vec2/train_sb_wav2vec2.py", line 384, in
main()
File "/home/flck/speechbrain/recipes/LibriSpeech/self-supervised-learning/wav2vec2/train_sb_wav2vec2.py", line 366, in main
brain = W2V2Brain(
File "/home/flck/speechbrain/speechbrain/core.py", line 546, in init
torch.cuda.set_device(int(self.device[-1]))
File "/home/flck/.conda/envs/vcheckworthy/lib/python3.9/site-packages/torch/cuda/init.py", line 350, in set_device
torch._C._cuda_setDevice(device)
AttributeError: module 'torch._C' has no attribute '_cuda_setDevice'
based on this issue I reinstalled pytorch to have cuda
Versions

transformers version: 4.29.2
Platform: Linux-5.4.204-ql-generic-12.0-19-x86_64-with-glibc2.31
Python version: 3.9.7
Huggingface_hub version: 0.14.1
Safetensors version: not installed
PyTorch version (GPU?): 1.11.0 (False)

Hello,
Please stay with torch.distributed.launch (see: https://speechbrain.readthedocs.io/en/latest/multigpu.html). We will not upgrade to torch.run until this is stable and that torch.distributed.launch is up in new PyTorch versions.
Best.


[BUG] priv error

buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240717164558-a6c49f84cc0f.2 is ok
but
buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.34.2-20240920164238-5a7b106cbb87.2
in this version raise not found "priv.."  (i dont know the detail) error
buf.yaml
version: v2
modules:
  - path: proto
lint:
  use:
    - STANDARD
breaking:
  use:
    - FILE
deps:
  - buf.build/bufbuild/protovalidate

buf,gen.yaml
version: v2
managed:
  enabled: true
  override:
    - file_option: go_package_prefix
      value: github.com/vet1ments/grpcoauth/go
  disable:
    - file_option: go_package_prefix
      module: buf.build/bufbuild/protovalidate
plugins:
  - local: protoc-gen-grpclib_python # async stub
    out: python
  - remote: buf.build/protocolbuffers/python:v28.2
    out: python
  - remote: buf.build/protocolbuffers/pyi:v28.2
    out: python
  - remote: buf.build/grpc/python
    out: python
  - remote: buf.build/protocolbuffers/go:v1.34.2
    out: go
    opt: paths=source_relative
  - remote: buf.build/connectrpc/go:latest
    out: go
    opt: paths=source_relative
  - remote: buf.build/grpc/go
    out: go
    opt: paths=source_relative
inputs:
  - directory: proto

Sorry about this: it is an unintended consequence of a breaking change that occurred in protovalidate. It's my own oversight, I didn't realize Go would start pulling the latest protovalidate changes before we updated the module in protovalidate-go.
Please stick to using version v1.34.2-20240717164558-a6c49f84cc0f.2 of the gencode for now. We will work on shipping the changes that fix this in https://github.com/bufbuild/protovalidate-go/pull/144 ASAP.

thank you so much for comfirming


Fix content field validation

Fixes #1268

Codecov Report

Merging #1269 (5b72346) into master (e01adf2) will increase coverage by 10.26%.
The diff coverage is n/a.

@@              Coverage Diff              @@
##             master    #1269       +/-   ##
=============================================
+ Coverage     76.01%   86.27%   +10.26%
+ Complexity      985       85      -900
=============================================
  Files           187       20      -167
  Lines          2885      255     -2630
  Branches        505       16      -489
=============================================
- Hits           2193      220     -1973
+ Misses          429       25      -404
+ Partials        263       10      -253

Impacted Files
Coverage Δ

.../main/java/org/zalando/zally/dto/SeverityBinder.kt

...eb-ui/src/client/app/containers/violations-tab.jsx

web-ui/src/client/app/components/msg.jsx

web-ui/src/client/app/components/user-info.jsx

...do/zally/configuration/RulesPolicyConfiguration.kt

...ver/src/main/java/org/zalando/zally/dto/RuleDTO.kt

...alando/zally/ruleset/zalando/NoVersionInUriRule.kt

...do/zally/ruleset/zalando/ApiMetaInformationRule.kt

web-ui/src/client/app/index.jsx

...y/exception/TimeParameterIsInTheFutureException.kt

... and 156 more

Continue to review full report at Codecov.

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

:+1:

👍


[Feature Request] Joe's Mom

Feature Request Description
I would like for us to primarily focusing on adding joes mom to alumina. this is a top tier priority
Code Example or Use-Case
JoesMom mom = new JoesMom();
mom.doing().add(Eric.getInstance());

noooooooooooooooooooo


Feature: new worker thread pool model

I have basically finished adapting to the new network module of Pika 4.0, and the new thread model "dispatcher-worker" is currently working in smoke testing.

之前说的那个 不同平台对 LEV_OPT_REUSEABLE_PORT 支持的问题现在是怎么处理的, 我没找到相关的代码


#[serde(flatten)] doesn't work with #[serde(default)] for externally tagged enums

Given this:
#[derive(Deserialize, Debug)]
enum SomeEnum {
    A(u32),
    B(u32),
}

impl Default for SomeEnum {
    fn default() -> Self {
        SomeEnum::B(1)
    }
}

#[derive(Deserialize, Debug)]
struct SomeStruct {
    filler: u32,
    #[serde(default)]
    #[serde(flatten)]
    some_enum: SomeEnum,
}

trying to deserialize this yaml:
filler: 1

into SomeStruct panics with a message:
no variant of enum SomeEnum found in flattened data

I hoped it would pick up the default value specified for SomeEnum instead...
Playground example.
Is this a bug or is this not supported?
Docs don't cover this, I tried searching issues, but couldn't find anything quite like this.

Thanks, I would accept a PR to make this work.

Happy to give it a try, but I haven't dug too much into Serde's internals. Any pointers on where to start?

I need the same behaviour, but with internal tagging. My example: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=79a52563e681076d5e8ee5fcbee7da81

FTR, the issue isn't restricted to external tagging; other forms of tagging don't make it work, either.

I also ran into this problem and just tried to solve it. Unfortunately, this is not just a little bugfix.
The bug is caused in serde_derive::de::deserialize_map. This function handles flattened fields completely different than 'normal' fields.
Normal fields
For normal fields, deserialize_map creates a variable let mut __fieldN: Option<T> = None where N is the field index (also for maps) and T is the Field type [serde_derive::de.rs lines 2381-2389].
Then it creates a while let loop [serde_derive::de.rs lines 2470-2477]. This loop will, at runtime, iterate over the keys in the map that gets deserialized.  If a known key is detected, an if statement checks if the variable __fieldN is Some and returns a duplicate_field error if so  [serde_derive::de.rs lines 2435-2437]. If __fieldN is still None, the corresponding map value will get deserialized and assigned to __fieldN.
When all keys are consumed or ignored, a match statement for each struct field will check that each __fieldN is Some, or execute a 'missing_expr' action [serde_derive::de.rs lines 2487-2490]. This action will typically return an error, but assign the default value if one is given.
Flattened fields
But when it comes to flattened fields, the process is entirely different. These fields are always filtered out [serde_derive::de.rs lines 2383, 2406, 2482] and handled separate [serde_derive::de.rs lines 2494-2512].
Also, flattened fields don't get a let mut __fieldN = None (The reason why you cannot simply assign a default value), but a let mut __collect: Vec<Option<(serde::private::de::Content, serde::private::de::Content)> = Vec::new()
In structs that have any flattened field, when iterating over the map keys, no key is ignored. Unknown keys are simply stored in the __collect vec (first Content = key, second Content = value) [[serde_derive::de.rs lines 2445-2451].
Then after the while let loop has finished, this vec is given to the serde::private::FlatMapDeserializer. I didn't totally understand how the deserialization process works inside FlatMapDeserializer. Never the less, this is the current problem.
Problem
The reason why it's not just a simple bug fix is that:

You currently don't know the field names of the flattened field type
FlatMapDeserializer is in the serde crate so that the fix will affect two crates at once
FlatMapDeserializer currently does not allow to check, why it could not deserialize the type (or maybe it does, and I did not understand it) (the problem here is that you cannot detect if no field was present (use default) or something else went wrong)

My first idea was to use FlatMapDeserializer to deserialize an Option<T>, where T is the flattened field type, instead of the Value itself. Unfortunately, I did not get it running this way.

My attemt [replaces `serde_derive::de.rs` lines 2494-2518]
let extract_collected = fields_names
    .iter()
    .filter(|&&(field, _)| field.attrs.flatten() && !field.attrs.skip_deserializing())
    .map(|(field, name)| {
        let field_ty = field.ty;
        let missing_expr = Match(expr_is_missing(field, cattrs));
        let (func, wrapper, wrapper_ty, result_field) = match field.attrs.deserialize_with() {
            None => {
                let span = field.original.span();
                (quote_spanned!(span=> _serde::de::Deserialize::deserialize), quote!{}, quote!{ #field_ty }, quote!{})
            }
            Some(path) => {
                let (wrapper, wrapper_ty) = wrap_deserialize_field_with(params, field_ty, path);
                (quote!(#path), quote!{ #wrapper }, quote!{ #wrapper_ty }, quote!{ .value })
            }
        };

        quote! {
            let #name: #field_ty = {
                #wrapper

                let #name: _serde::export::Option<#wrapper_ty> = try!(#func(
                    _serde::private::de::FlatMapDeserializer(
                        &mut __collect,
                        _serde::export::PhantomData
                    )
                ));
                match #name {
                    _serde::export::Some(#name) => #name #result_field,
                    _serde::export::None => #missing_expr
                }
            };
        }
        // quote! {
        //     let #name: #field_ty = try!(#func(
        //         _serde::private::de::FlatMapDeserializer(
        //             &mut __collect,
        //             _serde::export::PhantomData)));
        // }
    });

serde/serde_test_suite>cargo test throws:
error[E0308]: mismatched types
   --> test_suite\tests\test_gen.rs:522:25
    |
522 |     #[derive(Serialize, Deserialize)]
    |                         ^^^^^^^^^^^ expected enum `std::option::Option`, found struct `X`
    |
    = note: expected enum `std::option::Option<<test_gen::_::<impl test_gen::_::_serde::Deserialize<'de> for test_gen::FlattenWith>::deserialize::__Visitor<'de> as test_gen::_::_serde::de::Visitor<'de>>::visit_map::__DeserializeWith<'de>>`
             found struct `X`
    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error: aborting due to previous error

For more information about this error, try `rustc --explain E0308`.
error: could not compile `serde_test_suite`.

The code that causes the problem expands to this:
let __field0: X = {
                            struct __DeserializeWith<'de> {
                                value: X,
                                phantom: _serde::export::PhantomData<FlattenWith>,
                                lifetime: _serde::export::PhantomData<&'de ()>,
                            }
                            impl<'de> _serde::Deserialize<'de> for __DeserializeWith<'de> {
                                fn deserialize<__D>(
                                    __deserializer: __D,
                                ) -> _serde::export::Result<Self, __D::Error>
                                where
                                    __D: _serde::Deserializer<'de>,
                                {
                                    _serde::export::Ok(__DeserializeWith {
                                        value: match de_x(__deserializer) {
                                            _serde::export::Ok(__val) => __val,
                                            _serde::export::Err(__err) => {
                                                return _serde::export::Err(__err);
                                            }
                                        },
                                        phantom: _serde::export::PhantomData,
                                        lifetime: _serde::export::PhantomData,
                                    })
                                }
                            }
                            let __field0: _serde::export::Option<__DeserializeWith<'de>> =
                                match de_x(_serde::private::de::FlatMapDeserializer(
                                    &mut __collect,
                                    _serde::export::PhantomData,
                                )) {
                                    _serde::export::Ok(__val) => __val,
                                    _serde::export::Err(__err) => {
                                        return _serde::export::Err(__err);
                                    }
                                };
                            match __field0 {
                                _serde::export::Some(__field0) => __field0.value,
                                _serde::export::None => {
                                    return _serde::export::Err(
                                        <__A::Error as _serde::de::Error>::missing_field("x"),
                                    )
                                }
                            }
                        };

Maybe one of you has an idea, how to fix it simpler.
Otherwise, I will probably try to reimplement the deserialization process for flattened fields and get rid of FlatMapDeserializer (if that's ok @dtolnay?).
Also, it would of helpful if there would be a way to access the field names of the flattened field type. Is there any way to do this?

I encounter the same issue when using #[serde(other)] for the externally tagged enum, e.g.,:
#[derive(Deserialize, Debug)]
enum SomeEnum {
    A(u32),
    B(u32),
    #[serde(other)]
    C,
}

#[derive(Deserialize, Debug)]
struct SomeStruct {
    filler: u32,
    #[serde(flatten)]
    some_enum: SomeEnum,
}

My use-case specifically is to still be able to deserialize a collection of SomeStruct after the sender may have added another SomeEnum variant. I am interested in the SomeStructs existence, and shared metadata, without necessarily knowing all variants and details of SomeEnum that exist.

Is there any progress on this issue.

any solution so far?


Make an optional switch to prevent couchapp from adding a couchapp-field in uploaded-docs

Using the document-upload-feature from couchapp by throwing .json files in _docs makes couchapp adding a "couchapp: {}" field to each doc. It would be nice, if this behavior could be disabled.

the point of couchapp propery is to maintain coherence between apps. See it like a MANIFEST that you find in most of applications.


drivers: bbram: Place API into iterable section

Add wrapper DEVICE_API macro to all bbram_driver_api instances.

@yperess PTAL


How my DAO changed my life

Description
I want to share my story of going from being completely new to web3 in September '21 to joining Ankr as a devrel recently. None of this would have been possible without my DAO - Developer DAO. Some points I'm thinking of for the talk:

How I joined a DAO and made new friends
How I figured out a way to learn and build in web3 at the same time
How working in public with the constant support of my DAO changed the game for me
How my DAO provided me with mentors that became friends
How I got to travel outside of India for the first time because of my DAO!
How I got my first job in web3
How meeting people from around the world in Developer DAO changed me as a person

I have already written a similar article here: https://twitter.com/dhaiwat10/status/1513664267387805697?s=20&t=3aZbr1lKpKyD2XkZ_WZqFw
This talk might very well be similar to this article in terms of the overall feel, but not just limited to my trip to Dubai. It will be about my entire journey in web3.

What Is Your Target Audience? Anyone in web3 regardless of their skill level.
How Much Time Would You Like To Commit? I'm assuming this means how much time I want to give to the preparation for this talk. I am honestly prepared to give as much as needed lol
What Is The Style of Your Session? 30 min regular talk
Are You Submitting Alone or With A Team? Alone

My Twitter: https://twitter.com/dhaiwat10 (you can DM me here)
My website: https://dhaiwat.xyz

I don't think I have the permissions to add labels :3


Update chain integration

@MichaelMacaulay – Looks like you have some lint errors.

Scrapped to work on this here:
https://github.com/graphprotocol/docs/pull/492


migrate dev --create-only errors with [migration-engine/connectors/sql-migration-connector/src/sql_schema_calculator.rs:197:32] no entry found for key

Hi Prisma Team! The following command just crashed.
Command
migrate dev --create-only
Versions

Name
Version

Platform
darwin-arm64

Node
v18.12.1

Prisma CLI
4.9.0

Engine
ceb5c99003b99c9ee2c1d2e618e359c14aef2ea5

Error
Error: Error in migration engine.
Reason: [migration-engine/connectors/sql-migration-connector/src/sql_schema_calculator.rs:197:32] no entry found for key

Please create an issue with your `schema.prisma` at
https://github.com/prisma/prisma/issues/new

looks like this issue is generated when we are making many to many relationship between view and the model
this is my schema file
generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["views"]
}

datasource db {
  provider = "postgres"
  url      = env("DATABASE_URL")
}

generator typegraphql {
  provider        = "typegraphql-prisma"
  simpleResolvers = true
}

model Tag {
  id                Int                 @id @default(autoincrement())
  name              String              @unique @db.VarChar(45)
  //ConnectedCallView ConnectedCallViewToTag[]
  connectedCall     ConnectedCall[]
  connectedCallView ConnectedCallView[]
}

model ConnectedCall {
  callSid String @id
  homeId  Int?
  tags    Tag[]
}

view ConnectedCallView {
  callSid String @id
  homeId  Int?
  tag     Tag[]
  //tags    ConnectedCallViewToTag[]
}

// view ConnectedCallViewToTag {
//   A                 String
//   B                 Int
//   createdAt         DateTime          @default(now())
//   ConnectedCallView ConnectedCallView @relation(fields: [A], references: [callSid])
//   tag               Tag               @relation(fields: [B], references: [id])

//   @@id([A, B])
// }

Hi @mayur2345, it looks like you are using the version 4.9.0 with the views preview feature, we're open to any feedback you might have 🙌🏼
I would recommend upgrading to version 4.13.0, as the views preview feature evolved a lot since.
(Small recap: in 4.10, introspection for PostgreSQL was added, in 4.11 it was for MySQL, SQL Server, and CockroachDB. in 4.12 the views SQL are now saved in a views directory)
Could you let us know if that fixes your issue?

Hi Prisma Team! The following command just crashed.
Command
migrate dev --create-only
Versions

Name
Version

Platform
darwin-arm64

Node
v18.12.1

Prisma CLI
4.16.1

Engine
b20ead4d3ab9e78ac112966e242ded703f4a052c

Error
RustPanic: Error in migration engine.
Reason: [schema-engine/connectors/sql-schema-connector/src/sql_schema_calculator.rs:196:32] no entry found for key

still the same error

https://github.com/prisma/prisma/issues/19951

https://github.com/prisma/prisma/issues/19249


Fix #144: Emit warnings for unneeded ignores

Fix #144: Emit warnings for unneeded ignores.
The output looks like this…

@paulo-ferraz-oliveira let me know if that's enough.
One thing that it does not do is tell you where exactly have you written that spec. It can be either on the actual file (-hank(…).) or rebar.config.
Adding that info is not impossible but a bit cumbersome, so I decided to release the first iteration without that.

Sure, this seems cool, even if you consider it just a first step. Thanks.

Nice! I'd expect a test_app emitting warnings with unneeded ignores


Prepare for 44.0.0 release: version and changelog

Which issue does this PR close?

Part of https://github.com/apache/datafusion/issues/13334

Rationale for this change
Prepare for the release
What changes are included in this PR?

Update version
add changelog

Are these changes tested?

Are there any user-facing changes?

Thank you @phillipleblanc  and @goldmedal
I am waiting on the final ticket required for the 44 release:

https://github.com/apache/datafusion/issues/13334#issuecomment-2561104600

Then I will update the changelog with the most recent commits, merge this PR and make a release candidate


The version on the titles doesn't match the version on the URL

Informations
It's a bug related with the documentation so the qiskit and python versions and the operating system are not relevant
Steps to reproduce the problem
Go to https://qiskit.org/documentation/stable/0.33/index.html and compare the version on the URL with the version on the titles
What is the current behavior?
Although we are on the 0.33 version page, all the titles has the 0.34 version

What is the expected behavior?
The version on the titles should match the version on the URL

I've tried to add the documentation label too, but I don't have access for that

This is likely a failure in the script that deploys tags to the stable branch - it finds the tag using git describe, which sometimes seems to be slightly out of sync on GitHub Actions.  It'll be more robust if we just get the triggering tag information from the github object in the workflow and pass it in.

I've checked if we are still having this bug, but it's fixed now!! I close the issue :)


allow setting of local user config

local user config injection,
had to rush, daughter got a surprise promotion in kung fu today and I have to leave right now for that, but it seems to be working.

(Also, congrats to your daughter! :tada:)

and Thanks!


Avoid extra spaces from nil/false switches in Options.to_switches

I don't know why this is only decreasing coverage on the one ruby version, given I added tests for the lines I touched

Thanks!


[catloop] Unify Table of Queue Tokens

Context
Queue tokens are registered in two tables in Catloop LibOS:

catmem_qts queue tokens that are driven by the underlying Catmem LibOS (push() and pop() operations)
catloop_qts queue tokens that are driven by Catloop LibOS itself (accept() and connection() operations)

If the queue token space of these operations do not collide, we should be able to use a single table for registering both types of queue tokens.

PR #891 closes this issue


Disallow almost duplicate group and project names in the config

Disallow almost duplicate group and project names in the config
Ignore project and group paths case when looking for their configs (TODO)

This will fix #160

Moved to v2, release in v2.0.0 RC2 and later.


Issue 187 - change parameters from camelCase to hyphen-names

Fixes #187.
@bparees @mfojtik PTAL

LGTM \o/ (one small naming suggestion as 'dockercfg' is the name of the file ;-)

@mfojtik done.

@soltysh will wait for Ben to see this before merge ;-)

lgtm [merge]


Drop .txt extension from NO_FILE.txt

From https://github.com/AlexsLemonade/scpca-nf/pull/471#discussion_r1341572256, do what it says

closed by #475


[DeviceEventEmitter] How to use keyboard easing

DeviceEventEmitter.addListener('keyboardWillShow', this._keyboardWillShow.bind(this));

when keyboardWillShow event fired.It will pass an argument with an easing attribute inside.
just like
_keyboardWillShow = (e) => {
    // e.easing === 'keyboard';
}

so.How to do animtion with keyboard easing,or this easing attribute has no usage at all?
If this easing attribute has nothing to do with Animated easing,what`s the point of passing it.

:+1:

finally.
I found out how to use keyboard easing.
It`s not for js animation: Animated
It`s used for native animation: LayoutAnimation
for example
DeviceEventEmitter.addListener('keyboardWillShow', e => {
        LayoutAnimation.configureNext(LayoutAnimation.create(
            e.duration,
            LayoutAnimation.Types[e.easing]
        ));
        this.setState({
            bottom: e.endCoordinates.height
        });
});

This works fine on IOS, haven`t have it tested on Android yet.
There should be a document about this.

This works. But I have a listview above the keboard and listview does not respect layoutanimation.
#677
So I need to know what must be done to mimic to easing of the keyboard in the animated api.


Bump containers/image to v5.4.3

Signed-off-by: Daniel J Walsh<EMAIL_ADDRESS>

F30 failures look legitimate

LGTM

LGTM

/lgtm


feat: Update CGU to match server changes

:tada: This PR is included in version 1.0.0-alpha.1 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


[DCOS-52239] Replace the spec section with a quickstart one

Remove the short section on the service spec - there is a very similar but
better one in the developer guide already, and it's not really appropriate
to attack a complete newcomer with such details.
Instead, re-add the quick-start section that should be more useful to
someone who wants to start using the SDK. In there, point them at the
dcosdev tool and the helloworld example for the lack of a better HOWTO
guide.

I'll be away for a week starting tomorrow, but it would be great if someone could merge this in time for 0.56.1 release if this LGTY.


MB-14409 - Remove update move task order endpoint

Jira ticket for this change
Summary
Initially, this story was intended to refactor the updateMoveTaskOrder move history template. After further inspection, it seems the endpoint related to this template is not used, so the template and anything related to the endpoint defined by swagger have been removed.
Setup to Run Your Code

💻 You will need to use three separate terminals to test this locally.
Terminal 1
Start the Storybook locally.
make storybook

Terminal 2
Start the UI locally.
make client_run

Terminal 3
Start the Go server locally.
make server_run

Additional steps
Verification Steps for Author
These are to be checked by the author.

[ ] Tested in the Experimental environment (for changes to containers, app startup, or connection to data stores)
[ ] Request review from a member of a different team.
[ ] Have the Jira acceptance criteria been met for this change?

Verification Steps for Reviewers
These are to be checked by a reviewer.

Frontend

[ ] User facing changes have been reviewed by design.
[ ] There are no aXe warnings for UI.
[ ] This works in Supported Browsers and their phone views (Chrome, Firefox, IE, Edge).
[ ] There are no new console errors in the browser devtools
[ ] There are no new console errors in the test output
[ ] If this PR adds a new component to Storybook, it ensures the component is fully responsive, OR if it is intentionally not, a wrapping div using the officeApp class or custom min-width styling is used to hide any states the would not be visible to the user.

Backend

[ ] Code follows the guidelines for Logging
[ ] The requirements listed in Querying the Database Safely have been satisfied.

Screenshots

Messages

:book:
:link: MB-14409

  Generated by :no_entry_sign: dangerJS against 8f2567c475c9b577a08efdd7863d22b62f835f71


COMPOSE-338 Remove uikit experimental flag in gradle.properties

Issue https://youtrack.jetbrains.com/issue/COMPOSE-338/remove-iOS-experimental-flag
No more need this line:
org.jetbrains.compose.experimental.uikit.enabled=true

We should remove it from other places as well:
https://github.com/search?q=repo%3AJetBrains%2Fcompose-multiplatform org.jetbrains.compose.experimental.uikit.enabled&type=code

We should remove it from other places as well: https://github.com/search?q=repo%3AJetBrains%2Fcompose-multiplatform org.jetbrains.compose.experimental.uikit.enabled&type=code
(in support/1.5.10 branch)

Done in this commit: https://github.com/JetBrains/compose-multiplatform/commit/c642f7f843f994812f9ac6f18a285f9c301c3bc3

Done in this commit: https://github.com/JetBrains/compose-multiplatform/commit/c642f7f843f994812f9ac6f18a285f9c301c3bc3

It was my mistake, because now branch fails to compile.
Reverted it in support/1.5.10 branch
First we need to wait existing versions on maven with completed Issue.
And after that - merge PR: https://github.com/JetBrains/compose-multiplatform/pull/3752


License

Please add a license to this package. MIT would be ideal for everyone's use.

Correct. Didn't get to that part yet.


chore: enable strictPropertyInitialization check in TS.

This is generally a recommended check for all TS projects and part of
--strict checks. Properly fixing all instances is a hard task and there
are 200+ failures with this check.
Luckily, there is a suppression - putting ! on the property name, and I
had an auto-fixer handy, so this PR suppresses all old instances.
This will allow new code to be written to be conforming while the old
code will continue to work as expected.
Each suppression has a comment added to remind the owners to revisit the
decision to use ! (as it is unsafe). This separates the intentional
usage of !, from the auto-inserted ones.
see issue #13329

In framework, quite a few of these comments ended up in the API documentation or examples on AIO. They are quite confusing to doc users. We should verify that these don't show up in our docs or examples.

@rkirov is this blocking anything in Google? I would rather schedule some time to do this incrementally if it's necessary. Now is also a sub-optimal time for landing this change (feature-frozen for v10).

Nothing urgent here, just tying up some special cases angular2_material has. It can wait an year.
But note that if this type of quick fix was accepted last year, all the new cdk_experimental code wouldn't have to be included in this PR. The task only becomes harder the longer you wait.

Ack- I added the work to our queue, so it's at least scheduled now

Closing since we failed to land this - this PR is added as a reference to our backlog item for this. Sorry Rado


⚠ Bofrost.lu has degraded performance

In 2c478b1, Bofrost.lu (https://www.bofrost.lu) experienced degraded performance:

HTTP code: 200
Response time: 822 ms

Resolved: Bofrost.lu performance has improved in 0757a63 after 9 minutes.


Warn if newer versions of Bolt exist

Description
We should output a warning if newer versions of Bolt exist. Hopefully it would encourage folks to update sooner.
What type of issue is this? (place an x in one of the [ ])

[x] enhancement (feature request)

Requirements (place an x in each of the [ ])

[x] I've read and understood the Contributing guidelines and have done my best effort to follow them.
[x] I've read and agree to the Code of Conduct.
[x] I've searched for any related issues and avoided creating a duplicate issue.


feat: add database transactions

I think this is a wonderful and unique example for using clean(ish) architecture in nextjs. Especially with the uses-cases. Although multiple writes in a single use-case is dangerous without using transactions. For example, in your registerUserUseCase there are multiple reads/writes going on in different tables.
Here are some comments pointing out the points of failure:
export async function registerUserUseCase(email: string, password: string) {
  const existingUser = await getUserByEmail(email); // read
  if (existingUser) {
    throw new Error("An user with that email already exists.");
  }
  const user = await createUser(email); // write
  await createAccount(user.id, password);

  const displayName = uniqueNamesGenerator({
    dictionaries: [colors, animals],
    separator: " ",
    style: "capital",
  });
  await createProfile(user.id, displayName); // write

  const token = await createVerifyEmailToken(user.id); // write
  await sendEmail(
    email,
    `Verify your email for ${applicationName}`,
    <VerifyEmail token={token} />
  ); // possible failure without any rollback to the previous writes

  return { id: user.id };
}

If any of those writes fail for whatever reason, none of the previous writes would be rolled back without a transaction. This can also happen with the sendEmail side-effect, if it fails, those previous writes will stay persisted without a rollback.
Perhaps a TransactionManager should be created that can be used in your use cases, where a scoped transaction context can be provided to your db-access functions.  Although this would be a big change, as all your db-access functions would have an optional parameter that accepts the scope.
Something like this.
// transaction-manager.ts

import { database } from "@/db";
import { PgTransaction, PgQueryResultHKT } from 'drizzle-orm/pg-core';
import * as schema from '@/db/schema';
import { ExtractTablesWithRelations } from 'drizzle-orm';

export type TransactionScope = PgTransaction<
  PgQueryResultHKT,
  typeof schema,
  ExtractTablesWithRelations<typeof schema>
>;

export type TransactionCallback<T> = (trx: TransactionScope) => Promise<T>;

export class TransactionManager {
  async runInTransaction<T>(operation: TransactionCallback<T>): Promise<T> {
    return await db.transaction(async (trx) => {
      return await operation(trx);
    });
  }
}

// export the singleton since this class is stateless
export const transactionManager = new TransactionManager();

And your revised registerUserUseCase:
export async function registerUserUseCase(email: string, password: string) {
  return await transactionManager.runInTransaction(async (trx) => {
    const existingUser = await getUserByEmail(email, trx); // Pass the transaction context
    if (existingUser) {
      throw new Error("A user with that email already exists.");
    }

    const user = await createUser(email, trx); // Pass the transaction context
    await createAccount(user.id, password, trx); // Pass the transaction context

    const displayName = uniqueNamesGenerator({
      dictionaries: [colors, animals],
      separator: " ",
      style: "capital",
    });

    await createProfile(user.id, displayName, trx); // Pass the transaction context

    const token = await createVerifyEmailToken(user.id, trx); // Pass the transaction context

    await sendEmail(
      email,
      `Verify your email for ${applicationName}`,
      <VerifyEmail token={token} />
    );

    return { id: user.id };
  });
}

An example db-access function with the new api change
import { TransactionScope } from '../transaction-manager';

export async function createUser(
  email: string,
  trx?: TransactionScope
) {
  // Use the provided transaction context if available, otherwise fallback to the regular db client
  const dbClient = trx || database;

  const [user] = await dbClient
    .insert(users)
    .values({
      email,
    })
    .returning();

  return user;
}

Now, any db-access function can optionally be used in a transaction or with the default global database client.
This is something I'm building in my personal projects but if you're interested I'd be willing to make a pull request, or maybe you have a better implementation in mind.

Actually, I do see that you have a createTransaction function that already does this for updating the password, so no need for this.


improve test coverage

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

14 of 14 (100.0%)  changed or added relevant lines in 2 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.2%) to 93.857%

Totals

Change from base Build<PHONE_NUMBER>:
0.2%

Covered Lines:
4660

Relevant Lines:
4965

💛  - Coveralls