Multiple contexts based on Card Selector

Hi All,
I'm fairly new to the BOT world and I haven't found much information out there for the new SDK v4 (I haven't worked with v3 before).
What I'm trying to accomplish is simple (I'm using AspNetCore-RichCards-Bot as seed project):
Once I select one of the available options, instead of returning the information right away, I want to start a new workflow/context.
public async Task OnTurn(ITurnContext context)	{
	GlobalState = context.GetConversationState<GlobalState>();
	switch (context.Activity.Type)
	{
		case ActivityTypes.Message:
			var dialogContext = _dialogs.CreateContext(context, GlobalState);
			if (!context.Responded) {
				await dialogContext.Continue();
				await dialogContext.Begin(PromptStep.CardSelector);
			}
	}
}

Once I select the option Update Profile, for example, I'm replacing the context
	case "Update Profile":
		await dialogContext.Replace(UpdateProfilePromptStep.GatherUserProfile, GlobalState);

and it start prompting based on the new context, however, it skips the first question and on the 2nd, the result object is null.

Could you guys give me some guidance on how to accomplish this?
Thanks in advance!

Hello @Stevenic, thank you very much! As I said, I'm learning through examples, I put a gist with some of the bot files  so you can have a better understanding. https://gist.github.com/vcardins/23a9f363ef1eeb7a3414790193148881.

Actually, the work flow shoild start with PromptStep.CardSelector and then when I select one of the available options (Create Project or Update Profile) it switches to the other workflow and only returns to the CardSelector after being completed. Basically, select an option from the menu and start a different workflow with different state.
Hope I'm making myself clear, it'd be similar to v3 FormFlow, wondering whether it has been implemented on v4.

The code I pasted was from your Gist... So I see that you're starting GatherUserProfile when the user first messages not CardSelector. I think what you want to do will work but it looks like you're starting the wrong dialog.

To better understand what's happening in your onTurn() routing code...
You're calling dc.continue() first to let any active dialog have a chance to run.  When that's done you need to know if anything ran and the easiest way to determine that is to see if anything responded to the user using context.responded. If nothing responded then most likely there wasn't an active dialog so you should either start a dialog (your card selector) or send a generic help message to the user.
This code does make an assumption that if you have an active dialog it will send some sort of message to the user so if you have code that may not reply you could extend your check after the continue call to be if (!context.Responded && dc.ActiveDialog == null)

Hey @Stevenic, I do appreciate your help. I'll try again tonight and see how it goes. For now, I can tell that if I have:
if (!context.Responded) {
	await dialogContext.Begin(PromptStep.CardSelector);
}

and then select UpdateProfile, the first UpdateProfile question/dialog is skipped and result is always null for the subsequente ones.
Also, is the following piece the correct way of changing the workflow? OnTurn will always be called anyways after the card selection and context.Responded will be false, which will make await dialogContext.Begin(PromptStep.CardSelector);  be called again and mess everything up. I might be missing a point here. (I could set up a small demo project if it's the case.)
switch (selectedCard) {
	case "Update Profile":
		await dialogContext.Replace(UpdateProfilePromptStep.GatherUserProfile);
		break;

@Stevenic, just tested, some more info
If at onTurn I have
if (!context.Responded && activeDialog == null) {
    await dialogContext.Begin(PromptStep.CardSelector);`
}

then select Update Profile,
case "Update Profile":
	await dialogContext.Replace(UpdateProfilePromptStep.GatherUserProfile);

The GatherUserProfile workflow breaks cause the result object is null, see screenshot below. Again, if I start with UpdateProfilePromptStep.GatherUserProfile it works just fine. Ideas?

Hello @Stevenic, thanks for your support. Yes, I recently figured it out.
The issue seemed to be by calling await dialogContext.End(); , this issue can be closed.
Thanks again!
`
...
private async Task ShowMenuOptions(DialogContext dialogContext, object result, SkipStepFunction next {
var selectedCard = (result as ChoiceResult).Value.Value;
var activity = dialogContext.Context.Activity;
switch (selectedCard)
{
	case "Update Profile":
		//var updateProfileDialogContext = _updateProfileDialogs.CreateContext(_globalContext, GlobalState.UpdateProfile);
		//await updateProfileDialogContext.Continue();
		await dialogContext.Replace(UpdateProfilePromptStep.GatherUserProfile);
		break;
	case "Help":
		await dialogContext.Context.SendActivity(CreateResponse(activity, await HandleHelp()));
		break;
	default:
		await dialogContext.Context.SendActivity(CreateResponse(activity, await HandleHelp()));
		break;
}
// await dialogContext.End(); After removing this line it worked fine

}
`


PSA Mention P4 Runtime API plans to use 64-bit type for several PSA q…

…uantities

@samar-abdi Please take a look at these few sentences to see if they look reasonable.

Note: Can close #518 when this is approved and merged in.

LGTM. Thanks!


Show warning if 'transacting' is misspelled or transacting object is empty when defined

I see #1469 but my problem might be easier to fix.
Occasionally I misspelled {transacting:t} to {transaction:t}, and sometimes I pass the transacting object to event listeners with params(model, attrs, options), and I will send {transacting:options.t} to next function, which is wrong and should be {transacting:options.transacting}. It's hard to find this typo.
Don't know if anyone else made this mistake before. I guess logs an error when debugging is enabled might help.

We can't be checking for typos and wont go to that route. If you are trying to use undefined variable knex can't help you with it.
However we could add check to .transacting() method which makes sure that passed object is valid.

It might be better if I rephrase?
My question is:
Is it possible to do a strict check on options in
bookshelf: model.save([key], [val], [attrs], [options])
and
knex: transacting(transactionObj)
When:

user defined a key shouldn't exist in the option object, like 'transaction'
2 .user defined null for a key that shouldn't be null, like "transacting:NOTDEFINED'

Maybe i should open this issue in bookshelf repo?
 Knex cannot do the thing you are asking for.


Enable vaapi, to support hardware acceleration

This PR adds the --enable-vaapi flag, and builds FFmpeg with support for (Intel) hardware acceleration.
The Ubuntu, CentOS and Alpine images have also been updated to include the build-time vaapi dependencies.

Thanks a lot for your contribution it was on my todo list for a while and was requested like on #27

@jrottenberg I've fixed the CentOS and Alpine builds by installing libva in the target container. Travis shows a couple of errors; that seems to be because of file download issues.

It looks great, thank you.
One more commit andI'll merge : https://github.com/jrottenberg/ffmpeg/pull/106/files#diff-c479c96df0fcf8f4474e645d4d473888

oh !
The following NEW packages will be installed:
  i965-va-driver libbsd0 libdrm-amdgpu1 libdrm-common libdrm-intel1
  libdrm-nouveau2 libdrm-radeon1 libdrm2 libedit2 libelf1 libffi6 libllvm5.0
  libpciaccess0 libsensors4 libva-drm1 libva1 libx11-xcb1 libxau6
  libxcb-dri2-0 libxcb-dri3-0 libxcb-present0 libxcb-sync1 libxcb-xfixes0
  libxcb1 libxdmcp6 libxshmfence1 mesa-va-drivers va-driver-all
0 upgraded, 28 newly installed, 0 to remove and 0 not upgraded.
Need to get 15.9 MB of archives.
After this operation, 74.5 MB of additional disk space will be used.

I wonder if we should make a variant for that build ...

@jrottenberg Using --no-install-recommends seems to fix this:
The following additional packages will be installed:
  libdrm-common libdrm2
Recommended packages:
  va-driver-all | va-driver
The following NEW packages will be installed:
  libdrm-common libdrm2 libva-drm1 libva1
0 upgraded, 4 newly installed, 0 to remove and 3 not upgraded.
Need to get 89.0 kB of archives.
After this operation, 356 kB of additional disk space will be used.

The recommended part contains the i695-va-driver, which needs to run on the host, not inside the Docker container, so I think this is a safe change to make.

ok I really want to merge it , but it touches too many images, would you be ok to create a new variant based on ubuntu named :

jrottenberg/ffmpeg:3.3-vaapi
jrottenberg/ffmpeg:4.0-vaapi
etc


[Chore] Bump CommunityToolkit.Mvvm to 8.2.0

Summary of the Pull Request

Upgraded CommunityToolkit.Mvvm to 8.2.0
Fixed warnings
QOL improvements of hosts view models using the newly introduced source generators

PR Checklist

[ ] Closes: #xxx
[ ] Communication: I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
[ ] Tests: Added/updated and all pass
[ ] Localization: All end user facing strings can be localized
[ ] Dev docs: Added/updated
[ ] New binaries: Added on the required places

[ ] JSON for signing for new binaries
[ ] WXS for installer for new binaries and localization folder
[ ] YML for CI pipeline for new test projects
[ ] YML for signed pipeline

[ ] Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed
Minimal test of the following utilities:

FileLocksmith
Peek
Hosts (test the show duplicates filter and entry validation on add/update)

This can be post .70. Correct?

Yes!


Update Set-SPProjectEventServiceSettings.md

Filled in placeholder text.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-server/Set-SPProjectEventServiceSettings.md
:white_check_mark:Succeeded
View (sharepoint-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

sharepoint/sharepoint-ps/sharepoint-server/Set-SPProjectEventServiceSettings.md
:white_check_mark:Succeeded
View (sharepoint-ps)

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Dropping Python 2.7 and 3.5

Over a year ago python 2 was deprecated. I think it's time to drop support for Python 2 in the next version. Only supporting Python 3 is nice because it allows us to integrate python-3 only features like coroutines and type-hinting without workarounds. It is also a bit useless to keep supporting something that less and less people are using. Python 2 software can keep on using the current version of the library. It is stable and won't break.
What do you think?

Python 3.5 is also EOL and could be dropped too (3.6 has f-strings!)
Here's the pip installs for schedule from PyPI for December 2020, showing very low numbers for 2.7 and 3.5:

category
percent
downloads

3.7
38.15%
193,357

3.6
31.53%
159,808

3.8
17.04%
86,365

3.5
4.31%
21,826

null
3.94%
19,986

2.7
2.90%
14,722

3.9
2.08%
10,520

3.4
0.05%
247

3.10
0.00%
18

2.6
0.00%
2

Total

506,851

Source: pip install -U pypistats && pypistats python_minor schedule --last-month

Python 3.5 is also EOL and could be dropped too (3.6 has f-strings!)
Here's the pip installs for schedule from PyPI for December 2020, showing very low numbers for 2.7 and 3.5:

category
percent
downloads

3.7
38.15%
193,357

3.6
31.53%
159,808

3.8
17.04%
86,365

3.5
4.31%
21,826

null
3.94%
19,986

2.7
2.90%
14,722

3.9
2.08%
10,520

3.4
0.05%
247

3.10
0.00%
18

2.6
0.00%
2

Total

506,851

Source: pip install -U pypistats && pypistats python_minor schedule --last-month

Thanks @hugovk for sharing up those stats.
36,548 downloads (for 2.7 and 3.5) is a lot of people :open_mouth:. We should document how to install an older version of this package for those users.
I didn't realize 3.5 has reached end of life as well, have updated the title to also drop 3.5

Thanks @hugovk for sharing up those stats.
36,548 downloads (for 2.7 and 3.5) is a lot of people :open_mouth:. We should document how to install an older version of this package for those users.
I didn't realize 3.5 has reached end of life as well, have updated the title to also drop 3.5

Not every download is a single person, CIs and mirrors and who knows what else are also counted.
And single digit percentages are really low. For comparison, 22% of the downloads of pip itself are for 2.7, about 14 million(!), but pip is dropping Python 2.7 (and 3.5) in this month's v21.0 release.
Anyway, it's good this project is using python_requires, updating this will also help pip install the last compatible version of schedule:
https://github.com/dbader/schedule/blob/705f3730e40fd1a4451dedcf28de510aa5c86212/setup.py#L55

Not every download is a single person, CIs and mirrors and who knows what else are also counted.
And single digit percentages are really low. For comparison, 22% of the downloads of pip itself are for 2.7, about 14 million(!), but pip is dropping Python 2.7 (and 3.5) in this month's v21.0 release.
Anyway, it's good this project is using python_requires, updating this will also help pip install the last compatible version of schedule:
https://github.com/dbader/schedule/blob/705f3730e40fd1a4451dedcf28de510aa5c86212/setup.py#L55


Add on-chain operation to derive address from private key using ecrecover

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.16;

import {Secp256k1Arithmetic, Point, ProjectivePoint} from "./Secp256k1Arithmetic.sol";

contract MyContract {
    using Secp256k1Arithmetic for Point;
    using Secp256k1Arithmetic for ProjectivePoint;

    uint256 private constant _ADDRESS_MASK = 2 ** 160 - 1;

    // ~500k gas
    function deriveAddressSlow(uint256 privateKey) public view returns(address) {
        ProjectivePoint memory g = Secp256k1Arithmetic.G().toProjectivePoint();
        Point memory point = Secp256k1Arithmetic.mul(g, privateKey).intoPoint();
        address addr;
        assembly ("memory-safe") {
            addr := and(keccak256(point, 0x40), _ADDRESS_MASK)
        }
        return addr;
    }

    // ~4000 gas
    function deriveAddressFast(uint256 privateKey) public pure returns(address) {
        uint256 r = 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798;
        uint256 m = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141;
        return ecrecover(0, 27, bytes32(r), bytes32(mulmod(privateKey, r, m)));
    }
}

This is a very interesting use-case and solution. Thanks for raising the issue!
Out of curiosity, could you provide a use-case for deriving an Ethereum address from a private key onchain? As you probably know for offchain we provide sk.toPublicKey().toAddress(), which uses the vm.createWallet() cheatcode.

Out of curiosity, could you provide a use-case for deriving an Ethereum address from a private key onchain?

Ransomware based on smart contracts. Someone makes deposit to public key, and the other party can withdraw funds if give the correct private key.

Ransomware based on smart contracts.

mmmhhh... Not sure what to answer on that tbh xD

and the other party can withdraw funds if give the correct private key

So its about proving ownership/knowledge of a private key? Why not just let the owner do a normal tx directly?
Note that moving funds based on public input to a contract can easily be frontrun by bots. As soon as the private key hits the mempool the funds are basically free for all. Using a very trusted relay or own block production is necessary.

As soon as the private key hits the mempool the funds are basically free for all.

This is easy to work around via commit-reveal schemes: https://solidity-by-example.org/hacks/front-running/


Feature Request: Allow permanently hiding Outline Pane, Status Bar, File Path bar and Minimap scrollbar in Editor while "Maximize Current Pane" mode is active

Problem Description
When working in a RStudio-style layout in a small screen, it is desirable to put the editor in maximized mode and work. Upon switching off the outline pane from main menu while on the maximized mode, it disappears. But after restore and maximizing a second time, the outline pane reappears. In a laptop screen it looks very cluttered.

How can I permanently disable Outline Pane in maximized mode? The Symbol Finder "Ctrl + Alt + P" does the exact same thing and it is sufficient for me.
How can I disable the Status bar only in maximized mode?
Is it possible to hide the file path section also over the editor?

What steps reproduce the problem?

Open Spyder and switch to a four-pane layout.
Focus on the Editor.
Press "Ctrl + Alt + Shift + M" or select View > Maximize Current Pane

What is the expected output? What do you see instead?
I have been able to achieve a "Zen Mode" by manually disabling the Outline Pane (which is temporary) and Status Bar (global setting). Was not able to hide the file path section at the top.

For reference, this is the Zen Mode of Sublime Text.

Currently, I see the layout as depicted above in description.
Versions

Spyder version: 4.2.1 None
Python version: 3.8.6 64-bit
Qt version: 5.12.5
PyQt5 version: 5.12.3
Operating System: Linux 5.4.0-45-generic
conda: 4.9.2

Dependencies

# Mandatory:
atomicwrites >=1.2.0            :  1.4.0 (OK)
chardet >=2.0.0                 :  4.0.0 (OK)
cloudpickle >=0.5.0             :  1.6.0 (OK)
diff_match_patch >=20181111     :  20200713 (OK)
intervaltree >=3.0.2            :  3.1.0 (OK)
IPython >=7.6.0                 :  7.19.0 (OK)
jedi =0.17.2                    :  0.17.2 (OK)
jsonschema >=3.2.0              :  3.2.0 (OK)
keyring >=17.0.0                :  21.2.1 (OK)
nbconvert >=4.0                 :  6.0.7 (OK)
numpydoc >=0.6.0                :  1.1.0 (OK)
parso =0.7.0                    :  0.7.0 (OK)
pexpect >=4.4.0                 :  4.8.0 (OK)
pickleshare >=0.4               :  0.7.5 (OK)
psutil >=5.3                    :  5.7.2 (OK)
pygments >=2.0                  :  2.7.3 (OK)
pylint >=1.0                    :  2.6.0 (OK)
pyls >=0.36.2;<1.0.0            :  0.36.2 (OK)
pyls_black >=0.4.6              :  0.4.6 (OK)
pyls_spyder >=0.3.0             :  0.3.0 (OK)
qdarkstyle >=2.8                :  2.8.1 (OK)
qtawesome >=0.5.7               :  1.0.1 (OK)
qtconsole >=5.0.1               :  5.0.1 (OK)
qtpy >=1.5.0                    :  1.9.0 (OK)
rtree >=0.8.3                   :  0.9.4 (OK)
setuptools >=39.0.0             :  51.0.0.post20201207 (OK)
sphinx >=0.6.6                  :  3.4.0 (OK)
spyder_kernels >=1.10.1;<1.11.0 :  1.10.1 (OK)
textdistance >=4.2.0            :  4.2.0 (OK)
three_merge >=0.1.1             :  0.1.1 (OK)
watchdog >=0.10.3               :  0.10.4 (OK)
xdg >=0.26                      :  0.27 (OK)
zmq >=17                        :  19.0.2 (OK)

# Optional:
cython >=0.21                   :  0.29.21 (OK)
matplotlib >=2.0.0              :  3.3.2 (OK)
numpy >=1.7                     :  1.19.2 (OK)
pandas >=1.1.1                  :  1.1.5 (OK)
scipy >=0.17.0                  :  1.5.2 (OK)
sympy >=0.7.3                   :  1.7.1 (OK)

# Spyder plugins:
spyder_terminal                 :  0.5.0 (OK)
spyder_unittest                 :  0.4.1 (OK)

Hi @manojbaishya,
We are currently working on making changes to the interface, so this is really valuable input. I'm going to answer your questions and if you have any further question please don't hesitate to ask.

How can I permanently disable Outline Pane in maximized mode? The Symbol Finder "Ctrl + Alt + P" does the exact same thing and it is sufficient for me.

I'm not sure if you already tried closing the outline pane when you are in maximized mode. If you close the pane, it will not reappear unless you show it again in View>Panes>Outline.

How can I disable the Status bar only in maximized mode?

This is not possible right now for Spyder, why would you prefer to disable the status bar in maximized mode?

Is it possible to hide the file path section also over the editor?

This is not possible right now for Spyder, but if we could, would you hide it only in the maximized/zen view?
For now, I could recommend to close the panes that you are not working and using while using the editor.

Hi @manojbaishya,
We are currently working on making changes to the interface, so this is really valuable input. I'm going to answer your questions and if you have any further question please don't hesitate to ask.

How can I permanently disable Outline Pane in maximized mode? The Symbol Finder "Ctrl + Alt + P" does the exact same thing and it is sufficient for me.

I'm not sure if you already tried closing the outline pane when you are in maximized mode. If you close the pane, it will not reappear unless you show it again in View>Panes>Outline.

How can I disable the Status bar only in maximized mode?

This is not possible right now for Spyder, why would you prefer to disable the status bar in maximized mode?

Is it possible to hide the file path section also over the editor?

This is not possible right now for Spyder, but if we could, would you hide it only in the maximized/zen view?
For now, I could recommend to close the panes that you are not working and using while using the editor.

Hello,
Great news on the interface! Regarding the points I raised:

I'm not sure if you already tried closing the outline pane when you are in maximized mode. If you close the pane, it will not reappear unless you show it again in View>Panes>Outline.

Yes, I have tried closing it and true that it won't appear unless I go back to the menu to turn it on again.. But this is all while the editor is still maximized. Suppose, I am done editing code and need to restore the window to the four-pane layout to run the code, inspect variables and see plots, etc., and then I discover some changes are required; once I go back to maximized mode, the outline pane reappears! Below is a small video demonstration of this flow... (I am wondering if this behaviour is just on my system or for others also.) Also, since I don't have the outline pane displayed in the four-pane layout, the tickbox View>Panes>Outline is unchecked. However, in max mode since the pane is displayed by default, that checkbox has to be clicked twice to get it to disappear, this is visible in the video..
https://user-images.githubusercontent.com/28330014/103621850-d9d27a00-4f5b-11eb-95e5-6bc6005886c4.mp4

This is not possible right now for Spyder, why would you prefer to disable the status bar in maximized mode?

The information on the Status Bar can be obtained in the four-panel mode and hence if we need to see Line #, Col #, etc., Restore Current Pane from max mode is just a keyboard shortcut away.. My thoughts are that when someone maximizes the editor, they want to think about a problem and focus on the code and nothing else.. Sublime Text's Zen Mode captures this best! (but I can't use it since it is neither free nor suits data-oriented workflow). I could achieve it in Spyder like below but only after hiding the status bar totally (which disables it in four pane view too..)

This is not possible right now for Spyder, but if we could, would you hide it only in the maximized/zen view?

True. To me, hiding the file path only makes sense in the maximized mode. In the normal view, path information is valuable to have at a glance.

For now, I could recommend to close the panes that you are not working and using while using the editor.

I have attempted to close all panes that I don't need. This is the bare minimum layout I could make. Are there quick shortcuts for toggling Console, Variable Explorer, and Plots? Then I could close all and just have the editor in view.. and summon those panes when needed!

I am trying to take cues from VS Code's design (which I use for normal scripting) and feed that back here.. I understand that aesthetics are naturally personal but if many users give feedback, I believe the interface and UX will evolve holistically.
Also, I encountered another problem yesterday. When I changed the keyboard shortcuts of "Toggle Comment", "Block Comment" and "Switch to IPython Console" to match that of VS Code, the entries in the Search menu greyed out and those shortcuts were lost. There are two shortcut entries per item (go to Tools > Preferences > Keyboard Shortcuts and search for find_replace context). Only if I go back and set the 2nd one for each of those, were those functions restored. The menu is still greyed out but available via my shortcuts.

PS: I don't know in which version you added SVG support in Plots pane (VSCode and Pycharm do not have a zoomable svg plot collector pane), but that and the Variable Explorer got me to fully switch from a university-issued MATLAB to Spyder..  Last I used it in 2016 v3, it didn't have much going but in 2021 Spyder (and Jupyter) is the de facto scientific environment for Python... So amazing work indeed!

Hello,
Great news on the interface! Regarding the points I raised:

I'm not sure if you already tried closing the outline pane when you are in maximized mode. If you close the pane, it will not reappear unless you show it again in View>Panes>Outline.

Yes, I have tried closing it and true that it won't appear unless I go back to the menu to turn it on again.. But this is all while the editor is still maximized. Suppose, I am done editing code and need to restore the window to the four-pane layout to run the code, inspect variables and see plots, etc., and then I discover some changes are required; once I go back to maximized mode, the outline pane reappears! Below is a small video demonstration of this flow... (I am wondering if this behaviour is just on my system or for others also.) Also, since I don't have the outline pane displayed in the four-pane layout, the tickbox View>Panes>Outline is unchecked. However, in max mode since the pane is displayed by default, that checkbox has to be clicked twice to get it to disappear, this is visible in the video..
https://user-images.githubusercontent.com/28330014/103621850-d9d27a00-4f5b-11eb-95e5-6bc6005886c4.mp4

This is not possible right now for Spyder, why would you prefer to disable the status bar in maximized mode?

The information on the Status Bar can be obtained in the four-panel mode and hence if we need to see Line #, Col #, etc., Restore Current Pane from max mode is just a keyboard shortcut away.. My thoughts are that when someone maximizes the editor, they want to think about a problem and focus on the code and nothing else.. Sublime Text's Zen Mode captures this best! (but I can't use it since it is neither free nor suits data-oriented workflow). I could achieve it in Spyder like below but only after hiding the status bar totally (which disables it in four pane view too..)

This is not possible right now for Spyder, but if we could, would you hide it only in the maximized/zen view?

True. To me, hiding the file path only makes sense in the maximized mode. In the normal view, path information is valuable to have at a glance.

For now, I could recommend to close the panes that you are not working and using while using the editor.

I have attempted to close all panes that I don't need. This is the bare minimum layout I could make. Are there quick shortcuts for toggling Console, Variable Explorer, and Plots? Then I could close all and just have the editor in view.. and summon those panes when needed!

I am trying to take cues from VS Code's design (which I use for normal scripting) and feed that back here.. I understand that aesthetics are naturally personal but if many users give feedback, I believe the interface and UX will evolve holistically.
Also, I encountered another problem yesterday. When I changed the keyboard shortcuts of "Toggle Comment", "Block Comment" and "Switch to IPython Console" to match that of VS Code, the entries in the Search menu greyed out and those shortcuts were lost. There are two shortcut entries per item (go to Tools > Preferences > Keyboard Shortcuts and search for find_replace context). Only if I go back and set the 2nd one for each of those, were those functions restored. The menu is still greyed out but available via my shortcuts.

PS: I don't know in which version you added SVG support in Plots pane (VSCode and Pycharm do not have a zoomable svg plot collector pane), but that and the Variable Explorer got me to fully switch from a university-issued MATLAB to Spyder..  Last I used it in 2016 v3, it didn't have much going but in 2021 Spyder (and Jupyter) is the de facto scientific environment for Python... So amazing work indeed!

Thanks for all this information @manojbaishya! This is going to be really helpful for a lot of the decisions we are creating that will be available to future releases of Spyder. Right now we are working really hard to make possible for users to make Spyder more extensible and make some of the things you'll like to do possible.

Thanks for all this information @manojbaishya! This is going to be really helpful for a lot of the decisions we are creating that will be available to future releases of Spyder. Right now we are working really hard to make possible for users to make Spyder more extensible and make some of the things you'll like to do possible.

How can I permanently disable Outline Pane in maximized mode? The Symbol Finder "Ctrl + Alt + P" does the exact same thing and it is sufficient for me.

Duplicate of issue #16265.

How can I disable the Status bar only in maximized mode?

It's not possible and we're not planning to implement that feature because we have more pressing things to do, sorry,

Is it possible to hide the file path section also over the editor?

No, it's not. and our reason for not planning to do it is the same as the above one.

Removing the "file path" above the tabs would be good to save screen space. The full path is already shown when the mouse is over the tab, so, this static "file path" info is unnecessary.


Internal Error

theorem blah : all x, y : bool. true
proof
  ?
end

When forgetting type annotations in forall, the parser doesn't complain, because of the var_list grammar rule not requiring type annotations. However, uniquify does complain, with the error 'NoneType' object has no attribute 'copy'
I can think of two solutions, I think the one I like more is just updating the grammar to require type annotations in forall.
(PS: Here is varlist)
?var_list:                                         -> empty_binding
    | ident ":" type                               -> single_binding
    | ident ":" type "," var_list                  -> push_binding
    | ident "," var_list                           -> push_var
    | ident

Adding this rule in Deduce.lark seems to fix the error for the lalr parser
?type_annot_list:                                  -> empty_binding
    | ident ":" type                               -> single_binding
    | ident ":" type "," var_list                  -> push_binding
    ```

Same problem exists for arbitrary x, y : bool
We could also say that the type distributes in, but I think that that is less clear, particularly if someone writes
all x, y : Nat, w, z : bool.

I like your fix with type_annot_list.

Hype, I'll add that and open a PR.
Adding tests as well and whatnot

Ok, I'll add that to the rec desc parser as well then. Might be hard to add a test for it since parser inputs won't agree unfortunately.


Implement REST GPT Connector

The REST GPT connector should be configured with a set of endpoints related to one subject, and have a business purpose (like query company customer relationship system). The endpoints must have defined input and output schemas (JSON) or OpenAPI definition.
Should be used as a Step-Connecto decisind to a description, how to call the API correctly...

After implementing this using OpenAPI, I found that langchain basically has exactly that functionality. I am now optimizing it a little and tailoring it for use in BPM.


POSIX implementation of ExpandPath

The function ExpandPath does not implement the tilde expansion as mandated by POSIX, i.e. a tilde-prefix could be followed by a valid login name; in that case, the tilde-prefix shall be replaced by the home directory associated with that login name.
See https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html for more information.

@jleni @bizk please review

@alessio sorry for the long wait. Could you please reopen the PR so that you can sign the CLA? Then I will merge your PR!! Thanks you a lot

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@alessio could you please sign the CLA so that I can merge the PR?

@alessio just pinging you again! I want to merge this, but I need the CLA signed. Could you please do it? Thanks!


Implement the HTTP gateway to facilitate OEV auctions

See https://github.com/api3dao/oev-litepaper/blob/main/fig/oev-relay/oev-relay.pdf
On step 1, the OEV relay uses the current signed HTTP gateway to collect signed data of Beacons for which there are auctions being held. No need to do build anything new here.
On step 4, we need a new HTTP gateway that can be called with the signed data from step 1 and additional OEV auction bid parameters such as the amount. The gateway verifies the signature, validates the bid parameters (in the current version there will be no validation, i.e., the Airnode will trust the OEV relay with determining the winning bid), then signs the same data with the bid parameters from the call.
Links:

This is how the signature should look like
This is the metadata hash that will be sent to Airnode as payload.

As a note, this will be affected by the updates after the audit

There will be some changes in requirements based on the results of the audit. Moving to Blocked. Should be back on track next week.


Handle un-pickleable exceptions

While attempting to resolve #18 I discovered that subprocess would raise an exception when invoked with a non-existant command, but that things would then fail when unpickling. Closer investigation showed that some custom python exceptions don't invoke the base class constructor and as a result they can't be unpickled. Now, pickling exceptions is a weird thing, so I guess I understand why this happens.
To resolve, when an exception is triggered, jobrunner.py tries to save it and then reload it. If this fails we then save string versions of the exception and do some cleanup on the client side. It's not ideal, but an exception still propagates, which is what matters.
Note this PR is a branch from  release-setup and should only be merged after.

Is this issue resolved? @ericmjonas
I'm asking because I'm running into this problem. I guess to make things simple, we can just stringfy all of these objects that have potential pickle problems? The only benefit of keeping them as objects seem to be that we can reraise the exception later?

Ha, it was supposed to be. I think this is always going to be a challenge. I had thought we had chased out all the edge cases here, but it's hard to test.
I really like the user experience of being able to reraise the exception and give a sane traceback, and have found it quite useful. For stability this might be something we ultimately have to abandon, but I hope not.
Is there any chance you have some captured output /  logs from when this happens, or better yet a reproducible test case? :)

Also Github won't let me reopen the issue because it was on a branch? I'm going to create a new issue for us to keep tracking this.


[FR]: How to integrate custom test rules with configure

What is the current behavior?
Hi,
I am using rules_ts with bazel, and by default it will create a ts_project rule for each .ts file found in a directory. The same applies to test files ending in .spec.ts..
This behavior can be modified to a limited extent using gazelle directives, but I don't see a way to get the behavior I want.
Describe the feature
I have a custom rule I want to use for tests. Nothing special, but it combines a ts_project for the test file with a vitest run from load("@npm//:vitest/package_json.bzl", vitest_bin = "bin").
So the idea is that I would be able to write
ts_test(
    name = 'mytest',
    srcs = ['my.test.ts'],
    deps = [...],
)

and that's all. I don't see how to get the behavior I want though.

I cannot use a simple aspect:map_kind directive, because I want the substitution ts_project -> ts_test to happen only for test files, not for every filetype (other ts files should still use the ts_project rule).
I looked into the Starlark Extension API (which seems really cool!) but I have found 2 issues:

The first is that the default ts_project behavior is not changes, so now I have both a ts_test rule and a ts_project rule, which is not what I want
The second is that I would have to write my own logic for ts_test dependencies. Here I just want to reuse the same logic from ts_project, just set in a different macro - but I don't want to rewrite the whole 'parse file import to add dependencies' logic.

So my question is - what can I do about this? I am very new to this space, so perhaps there's something obvious I am missing.
One thing that I think might work is to add a gazelle directive to specify which rule should be used for the .spec.ts targets,  so that I could set it to my own rule using the aspect:map_kind directive and have everything else work as it is, without having to write a custom starlark plugin
Another idea would be exporting the whole logic as a starlark extension so one could change it without having to fork / recompile the CLI, but directly adding a new plugin.
Any help would be appreciated. Thanks a lot!

Ideally all you should need is a starlark extension that generates the vitest target and takes the pre-compiled .spec.js files as inputs. Your vitest rule should not do anything typescript related.
See https://github.com/aspect-build/aspect-cli/issues/439 for the map_kind issue. I'm open to API suggestions there if you have some, and the more requests for a solution there the more likely I can put time into it 😅
As a workaround you can do for now... use map_kind to use a custom ts_project macro, then within that macro essentially do:
def ts_project(name, **kwargs):
   if kwargs.get("testonly", False): # or instead match on 'name' if you have multiple testonly targets
       ts_test_project_macro(name, **kwargs)
   else:
       ts_normal_project_macro(name, **kwargs)

Hi @jbedard ,
Thanks a lot for your answer! :)

Ideally all you should need is a starlark extension that generates the vitest target and takes the pre-compiled .spec.js files as inputs. Your vitest rule should not do anything typescript related.

I can do this, but then I end up with two ts_project in my build file, which tends to confuse aspect configure. For example, this is the end state I want:
ts_project(
    name = "sample",
    srcs = ["sample.ts"],
    deps = [
        "//:node_modules/@types/node"
    ],
)

ts_test(
    name = "sample_test",
    size = "small",
    srcs = ["sample.test.ts"],
    deps = [
        ":sample",
        "//:node_modules/@types/node",
    ],
)

and I want aspect configure to automatically add ts_test targets when they are missing, and update the deps automatically. The ts_test macro generates an internal ts_project and has a vitest_test target which depends on the internal ts_project rule.
Following your suggestion, I could add a custom plugin that only generates the vitest_test target, and leave the automatic ts_project alone, resulting in something like this:
ts_project(
    name = "sample",
    srcs = ["sample.ts"],
    deps = [
        "//:node_modules/@types/node"
    ],
)

# gazelle:js_project_naming_convention sample_test_lib
ts_project(
    name = "sample_test_lib",
    srcs = ["sample.test.ts"],
    deps = [
        "//:node_modules/@types/node"
    ],
)

vitest(
    name = "sample_test",
    size = "small",
    srcs = ["sample.test.ts"],
    data = [
        ":sample_test_lib",
    ],
)

But this doesn't seem a great solution, because

aspect configure by default expects a single ts_project per directory, so I need to add manually the directive  # gazelle:js_project_naming_convention sample_test_lib to avoid configure complaining that the target already exists.
If I import the sample library in other files, configure gets confused that there is more than one ts_project in the build. I get errors like " “Import “../../sample.js” from “xxx” resolved to multiple targets (//…:sample, //…:sample_lib_test)”". So how would I disambiguate between the two?
Having an extra ts_project adds boilerplate for no reason. Ideally we would have something like in python - there is a py_library, a py_binary, and a py_test. The less boilerplate we have in BUILD files the better.

Please let me know what you think! :)

See https://github.com/aspect-build/aspect-cli/issues/439 for the map_kind issue. I'm open to API suggestions there if you have some

yes that's exactly what I want :) I agree with the suggestion in the FR, you can add a different kind generated for .spec.ts files, which then would allow us to use map_kind and use our custom macros. This seems relatively low effort to support and would allow us to have our own macros used for testing, which is pretty cool.
Perhaps the best solution long term is to move away from pre-compiled binaries (removing the go lib entirely) but provide libraries for custom plugins to configure (https://docs.aspect.build/cli/starlark) - so one can have full control over the generated targets.
Because essentially, the real hard things that configure does is automatically adding the dependency. Then all the rest of it (naming, auto-creating the targets, etc.) is sort of useful but not that big of a deal - you can get by very easily just copy pasting.[0]  It's dependencies which are a pain and need configure to be updated. So just adding a starlark library that takes in input a file and returns a list of dependencies would be great, and then one can easily configure naming and target type generation just by changing the declare_targets function.
[0] In fact, I find configure to be too opinionated in the naming of the targets. I would argue that if I target already exists, it should not rename it or try to add extra targets. If I could only enable configure as a way to add dependencies and nothing else (build_cleaner style), I would - I don't really need automatic target generations.

aspect configure by default expects a single ts_project per directory, so I need to add manually the directive  # gazelle:js_project_naming_convention sample_test_lib to avoid configure complaining that the target already exists.

By default it actually has 2 ts_projects per directory: lib + tests. You can override the default names and globs for those targets, you can also add custom targets (such as e2e tests etc) with additional names + globs.

If I import the sample library in other files, configure gets confused that there is more than one ts_project in the build. I get errors like " “Import “../../sample.js” from “xxx” resolved to multiple targets (//…:sample, //…:sample_lib_test)”". So how would I disambiguate between the two?

A source file should only be in one ts_project target, otherwise it makes sense that it can't resolve to a single target.

Having an extra ts_project adds boilerplate for no reason. Ideally we would have something like in python - there is a py_library, a py_binary, and a py_test. The less boilerplate we have in BUILD files the better.

What do you consider to be "extra"? Each .ts should be in a single ts_project. If you're writing non-generated ts_projects then those sources should be excluded from the generated ones, but I'd hope you don't need anything non-generated.

[0] In fact, I find configure to be too opinionated in the naming of the targets. I would argue that if I target already exists, it should not rename it or try to add extra targets. If I could only enable configure as a way to add dependencies and nothing else (build_cleaner style), I would - I don't really need automatic target generations.

You can name the targets whatever you want and provide whatever source globs you want, see https://docs.aspect.build/cli/help/directives/#javascript
While configure can understand the outputs of any target, it can only generate attributes for targets it generates. So unfortunately if you want ts_project(deps) generated then the full ts_project needs to be generated.

This seems relatively low effort to support and would allow us to have our own macros used for testing, which is pretty cool.

I haven't looked at this in a long time but from what I can recall it wasn't that easy because map_kind is implemented within the gazelle core and was awkward to customize or patch. I think short term it would be easier for you to detect lib vs tests by name like I suggested, but ideally you wouldn't have to do this at all.

Thank you for your answer!! :)

By default it actually has 2 ts_projects per directory: lib + tests. You can override the default names and globs for those targets, you can also add custom targets (such as e2e tests etc) with additional names + globs.

Do you have pointers on how to do this? I have read https://docs.aspect.build/cli/help/directives/#javascript but I don't see the options you refer to. The # gazelle:js_project_naming_convention only documents the {dirname} attribute - I tried changing it to {filename}, but it did not seem to work. I can make it work if I add them to every BUILD file, but not as a global option in the root BUILD file.

A source file should only be in one ts_project target, otherwise it makes sense that it can't resolve to a single target.

It is - and gazelle is still confused. As you can see in my previous comment, the "sample.ts" file is in a single ts_project (as source), and configure still cannot disambiguate. It's possible I am doing something obviously wrong - is the following not a standard configuration? How would you improve it?
ts_project(
    name = "sample",
    srcs = ["sample.ts"],
    deps = [
        "//:node_modules/@types/node"
    ],
)

# gazelle:js_project_naming_convention sample_test_lib
ts_project(
    name = "sample_test_lib",
    srcs = ["sample.test.ts"],
    deps = [
        "//:node_modules/@types/node"
    ],
)

vitest(
    name = "sample_test",
    size = "small",
    srcs = ["sample.test.ts"],
    data = [
        ":sample_test_lib",
    ],
)

What do you consider to be "extra"? Each .ts should be in a single ts_project.

The ts_project for the test is 'extra', because I don't need to rely on this in other libraries - it's just there so I can run bazel test. So in this case I want to ensure the test itself is there (sample_test) but the sample_test_lib (in the code above) is superfluous, and it's only there to make configure happy. Does this make sense?

I think short term it would be easier for you to detect lib vs tests by name like I suggested, but ideally you wouldn't have to do this at all.

I see - this makes sense, if I can get configure to not complain about having conflicts between the sample project and the sample_test_lib project, this will work fine for me! :)
Again, thanks for all the support!

Do you have pointers on how to do this?

The js_files and js_test_files can be used to customize the globs, but I don't think you should even need that if you do what I'm suggesting.

The ts_project for the test is 'extra', because I don't need to rely on this in other libraries - it's just there so I can run bazel test. So in this case I want to ensure the test itself is there (sample_test) but the sample_test_lib (in the code above) is superfluous, and it's only there to make configure happy. Does this make sense?

Other libraries don't need that ts_project but your tests do. Your test runner should run tests, not compile typescript code. If you want you can add a visibility attribute to ensure nothing else depends on the test ts_project, or doing that automatically could be a reasonable feature request.
I think the only code you should write (or generate with a starlark plugin!) would be:
vitest(
    name = "sample_test",
    size = "small",
    srcs = ["sample.test.js"],
    data = [
        ":sample_test_lib",
    ],
)

Note the srcs includes the pre-compiled .js, not the .ts. The 2 ts_project targets should be fully generated with configure.

Ok thank you - I gave up on trying to customize the ts_projects then (I wanted to allow more than one ts_project per directory) but that looks like it's asking for trouble.
For posterity:
I have added the following directive to the root build file
# gazelle:js_tests_naming_convention {dirname}_test_lib
and created a custom starlark plugin that adds the vitest rule whenever a xx.test.ts file is encountered. This test rule depends on the {dirname}_test_lib project (generated by the standard bazel configure).
Thank you for all the help! That's very appreciated :)

I gave up on trying to customize the ts_projects then (I wanted to allow more than one ts_project per directory) but that looks like it's asking for trouble.

You should have 2 ts_projects per directory by default: lib + tests. Is that not what you're seeing?

and created a custom starlark plugin that adds the vitest rule whenever a xx.test.ts file is encountered. This test rule depends on the {dirname}_test_lib project (generated by the standard bazel configure).

Awesome. Any feedback or suggestions for the starlark API would be great 👍

You should have 2 ts_projects per directory by default: lib + tests. Is that not what you're seeing?

yes, thank you! But I don't like the idea of having a single ts_project (plus the test) for directory. I would like to be able to have e.g. 5 files in a directory, each file in a different ts_project (similarly to what I do with python - every python file is a py_library, and how many are in a directory is not important).
Anyway, since this confused bazel configure and seems to not be well supported, I will drop the idea.
Thanks!

Any feedback or suggestions for the starlark API would be great

I really like the plugin extensions so far. I think the only thing you're really missing is providing libraries for the 'hard jobs', which are the 'fixing dependencies' stuff. If we could call a function that takes a file in input and returns a list of dependencies for the ts_project / py_library etc, that would be super useful.
This would mean we can fully customize the ts_project structure just by writing some simple regexp and logic in the starlark file, and calling the lib function for the heavy lifting of analysing those files and adding the right dependencies. Right now you have the logic embedded in the go binary, would be cool to fully port it and make it available to the starlark API :)

I would like to be able to have e.g. 5 files in a directory, each file in a different ts_project

I've never seen anyone do that before. Is the intention to have 5 separate tsc invocations? Or 5 separate bazel test targets? (or both)

Right now you have the logic embedded in the go binary, would be cool to fully port it and make it available to the starlark API

You have custom logic in go that the js language (in aspect-cli) then picks up? What type of logic would that be and how does it effect a different gazelle language?

I've never seen anyone do that before. Is the intention to have 5 separate tsc invocations? Or 5 separate bazel test targets? (or both)

The intention is to be able to distnguish between libraries & folders. To make a python example - I might have 20 files in a directory (e.g. utils) and have each file be its own library, which is compiled and included only when needed.
In typescript, I have to either

Create 20 different folders, which is not what I want
Have a single ts project containing 20 files. Now all 20 files are compiled & included even when I use only one of them, since they are all part of the same ts_project.

You have custom logic in go that the js language (in aspect-cli) then picks up? What type of logic would that be and how does it effect a different gazelle language?

My idea was that instead of providing some custom gazelle directives for js (like you do in https://docs.aspect.build/cli/help/directives/#javascript) which can be used to customize only a small part of the generation logic, you could allow people to use whatever logic they want (in terms of organization of BUILD files, ts projects, etc.) by allowing them to write their own starlark plugin with whatever logic they want.
This is already possible now, but the problem is that the 'add dependency' logic cannot be replicated in the plugin system, unless you write it yourself. If there was a way to just call list_dependencies(file) from the starlak plugin, then writing such a plugin would be super easy.

I have never seen ts files individually compiled like that, only ever in groups such as library+tests and often additional groups such as "e2e tests", "storybook", "mocks" etc.
Note that when using a ts_project(transpiler) the files can still be individually compiled+cached (for example with rules_swc). It will still be one target with one ts_project(deps) so that doesn't do exactly what you're looking for, but does avoid running tsc on everything when you simply need a single .ts re-transpiled to .js such as running a test.
I'll have to think about the list_dependencies(file) thing but I can't promise anything. I think the existing js plugin fulfills the standard requirements and additional starlark plugins should depend on that instead of trying to re-implement it.

Thanks a lot for your answers, they are much appreciated!! :)
I think the current solution of having one ts_project per dir, + one ts_project for the test, + one vitest target (added with a custom starlark plugin) is good enough :) I guess I am too used to python's setup of having one py_library per file, and perhaps this is not the way to go with typescript.
Regardless, thank you for the support! :)


Cloudflare not redirect to https

I create letsencrypt and add load balancer with https, but Cloudflare not redirect from http to https

I'm sorry found in this issue


Test scrutiny

https://github.com/analogj/scrutiny

https://artifacthub.io/packages/helm/truecharts/scrutiny

Already implemented.


[WIP] prefer ipv4 over v6 if it is present

[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[X] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure

@ramaraochavali: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

unit-tests_istio
a585cb15dcefafb90f06e21a77973a0799586c59
link
true
/test unit-tests_istio

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.


TCA suggests Toolbar

TCA supports but doesn't require Toolbar. Here's metadata to reflect
that.

LGTM!


Add Nvidia RMs (and Nemo compatibility)

See below!
https://huggingface.co/models?library=nemo&search=RM
This involves converting to HF format or adding nemo compatibility, if anyone has time!

Closing because stale.

Hello @natolambert
Is there any update on this? Or do you know if anyone has used Nvidia nemo RMs in Reward-Bench or M-Reward-Bench for compatibility?

@Riashat no update. Thankfully Nvidia has been releasing more -hf checkpoints, so less of an issue now.


Feature Request Bind gateway & Datasources to Dataset

@maikvandergaag Am back to trouble you again 😉  But no worries, I will also contribute depending on my schedules 😄
Intention:

Get list of Gateways
Get GatewayID whose name is (in pipeline variable)
Get Datasources for that gatewayID
For each datasetID in a WorkSpace, the bind the datasource & gateway (generate a json body for post)

Challenge
The tricky thing here is, scenarios may differ; in my scenario, I have a same Gateway with 3 different data sources (database). I already have parameters to define the database in each dataset. In my case, I just need to lookup the database name in each dataset and then pick up the datasource for binding. I don't know which way it should be considered; what's your recommendation?
Is it okay if we have a JSON with- ServerURL, DatabaseName, GatewayName & DatasourceName AND lookup the Server & database mentioned in dataset and based on match with JSON bind the gateway. Is this approach fine?

Hi @nitin-AET-Tankers,
At the moment I have a lot of work on my plate. Will try to get back to you during the weekend. If I do not respond just ping me no problem.
Important thing for the extension is that it needs to be a generic situation that can be reused by others ass well.

@maikvandergaag  I think currently there is a limitation to use this with SPN; this require Master Account Auth I guess. Any idea?
I will continue my analysis with master account for the time being 😄

@maikvandergaag  An update:
One more function, I will be ready with Gateway as well. My scenario is applicable for SQL type only. To my understanding, I think SPN currently doesn't support; if possible please help to confirm on this.
New Functions added:

Get-PowerBIGateways
Get-PowerBIGatewayDataSources
Get-PowerBIDatasetDatasourcesInGroup
Get-PowerBIDatasetDatasourceInGroup

I am continuing my tests as Master Account for time being.

@maikvandergaag  Pull Req #217 FYA & Review 😄
I was not getting result if I use SPN; Please take a look at the comments I added in the Pull request. Also help to update the JSON task of DevOps task.

I have just pushed out a beta version. I changed the Update method where i removed to take ownership. This should be done in a seperate action.

Beta should be there in 5 minutes

Is there a conflict? Other tasks prior to this were using SPN; first time I was trying Master Account; I saw below error- Any idea?

Seems like a authentication issue, could you maybe share the log? And is the account using MFA?

tasklog_10.log
Please acknowledge i will be deleting this comment..
We use a user account thats marked as service account; So i dont think MFA.

Could you check the MFA part

Could you check the MFA part

When I login I get a screen to setup mailID etc. That could be a reason?

Maybe, just checked the authentication within the extension and that runs perfectly. It could also be something in your service connection configuration.

But I am able to login I powershell manually by using 'Connect-PowerBIServiceAccount'.. Let me try disabling other tasks

MFA isn't configured; maybe this screen is causign an issue?

Apologies, I think I missed the domain in username; I recreated the serviceConnectoin. It went through

@maikvandergaag  Please review and approve the pull request #220

Looks good, merged it to the beta branch will be deployed in 5 min. 5.2.7

@maikvandergaag When you merger to master, please add a ' (dataset name within a single quote); seems I have missed that for Dataset refresh. I think we are good to rollout; any issues will fix as we notice.
Meanwhile I will check with a single dataset as well instead of $updateAll

@maikvandergaag I tried to refresh a particular dataset

But ended up refreshing everything.. Did I mess up something? 😟

mhh that is strange do you have a log we fixed that yesterday

tasklog_9.log
@maikvandergaag  I will be removing this :D

@nitin-AET-Tankers I have changed the module code and that should be reflecting better in the task. The change also impacts the Gateway and Parameter action. If you could check those as well that would be great.

Sure will check @maikvandergaag ; Any idea about the issue?

Ownership: I think it skipped without processing. Rest I will Update

@maikvandergaag please let me know if you need my help

@nitmatgeo do you mean it didn't work. If yes could you share your logs again of the failed runs?

tasklog_10 (1).log
tasklog_8.log
Yes, it didn't work; seems it skipped executing
@maikvandergaag Please acknowledge; i will be deleting this

@nitin-AET-Tankers: made a change, due to the change the write-host function was removed

@maikvandergaag
I still do not see the logs.. same as in case of Ownership task.

Config:

@maikvandergaag I still do not see the logs across each dataset processing.. same issue for the Ownership task.
Slightly held up that's why couldn't analyse deeply...

Tested it again on my end and it seems to be fully working.

@maikvandergaag Are you able to see logs in Gateway task corresponding to each dataset?

@maikvandergaag  Fir updateAll it isn't working.. Line 103 { foreach ($dataset in $datasets) } of function {Update-PowerBIDatasetDatasourcesInGroup} $datasets is not defined; that's a reason. Will you be able to assist on this, please?
Similar fix needs for ownership as well...

The fixed should be in place. No idea what happened to that line

ok want me to test right?

if you can please

@maikvandergaag  Resolved for gateway.. but for Ownership the issue is there if I use UpdateAll. I can see you have included the line, I think I will have to locally run and debug...

@nitin-AET-Tankers the ownership issue was send later to the build and release pipeline. Just saw that it had a minor hiccup. Rebuilding at this moment give it a few minutes

@maikvandergaag  Cheers ✋
All success.. I was starting to break my head debugging and rightly saw your notification hehe..
So, we are ready for rollout right? 😆
Cuz of gateway, I need to switch to Master Auth from SPN... Will update my tasks after the rollout 👍

It's is in the release process

Many thanks, will update if any issues 👍


Mistype fix

@vmilosevic Can you take a look at this and see if we can merge the doc fix? I believe this should be good to go.


Animation is bugged on import

Tested versions
4.2.1 stable
System information
Godot v4.2.1.stable - Windows 10.0.19044 - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 6GB (NVIDIA; <IP_ADDRESS>44) - Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz (4 Threads)
Issue description
Importing animations in Godot batters them up - bones aren't being parented, or they are moved in another place for whatever reason. An example of one of them animations, in Blender (4.1) and Godot: (sorry for low fps)
https://github.com/user-attachments/assets/44747829-cb1c-4196-8433-bc274634c463
https://github.com/user-attachments/assets/228b92cb-39b6-4ed1-8726-46a13bb27f39
Tried disabling Optimizer - not working. I am also using the Dynamic Parent addon for Blender - could that be the issue?
Steps to reproduce
Just open the project and open v_hammer.tscn. All of the animations there are messed up in some way. In idle, the hammer is moved, in draw it moves on the last frame, in holster it doesn't move at all, and in attack_1 the head of the hammer is also moved slightly - might want to slow down animation speed to see it.
Minimal reproduction project (MRP)
AnimationBug.zip

I am testing on a branched version on godot 4.4. The hammer drifts away from the arm.
Can you try a animation bake with the Dynamic Parent addon

That seems to do the trick! I baked all of the animations, also using Dynamic Parent Addon "Bake and Clear" option.
But another problem stays - on the "attack_01" animation, you can see the hammer's head still moving below through handle for whatever reason, even in baked animations. In Blender, it's fine.
What can i do?

On one of your imports you are using dual quaternion skinning which is not supported (preserve volume)


Escape broken links for contoso.com

https://dev.azure.com/msft-skilling/Content/_workitems/edit/173987

@drewbatgit Could you please review this PR?


Add upside down triangle

@Dulyaaa hey...give your photo in the Photos section, not the octocat one😅😅😅...modify that and I'll merge that...and don't forget to fetch before making any changes

@Dulyaaa hey...give your photo in the Photos section, not the octocat one😅😅😅...modify that and I'll merge that...and don't forget to fetch before making any changes

@aritraroy24 Merged the code and open a new pull request  in #194

I think this branch is ok now. Then I will close #194 PR.

@aritraroy24 Hey..!! You keep me resolving conflicts😅. Plz be hurry and merge this😁

@Dulyaaa sorry dear!!! was a bit busy...I have merged

Heehee... thanks😊...
I think you should add hactoberfest-accepted label too...


[UI] -Running inspect on not tested project shows error

"It looks like an error occurred:"

@soninob Thanks, i'm able to replicate this issue. That said, how should we proceed?
Here are a couple of possible solutions:

Disable inspect button if the project is not yet built. We can even add a tool-tip with instructions on how to build the project.
Instead of the default error view, we can display one that explains why the error pops up and how to fix it. Possibly adding some steps and/or links.

@JonathanRosado I agree with the first point, disabling and a tool tip. @edagan - WDYT?

@JonathanRosado, @soninob - Agreed. Disabling the button with a tooltip info popup is great.
From: Barak Nisim Sonino<EMAIL_ADDRESS>Sent: Tuesday, May 03, 2016 10:56 AM
To: eedevops/shipyard<EMAIL_ADDRESS>Cc: edagan<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [eedevops/shipyard] [UI] -Running inspect on not tested project shows error (#55)
@JonathanRosadohttps://github.com/JonathanRosado I agree with the first point, disabling and a tool tip. @edaganhttps://github.com/edagan - WDYT?
—
You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHubhttps://github.com/eedevops/shipyard/issues/55#issuecomment-216461997


the default setting number

Hi there.
When I set the default number in the div tag,
111111111

it will show correctly.But when I set to 000000000,it only shows one zero at the beginning. How to fix  it with showing 000000000 correct? Thanks

try this https://github.com/wqzwh/ga-odometer


error

hi guys,
can anyone help me with this error:
Configuration file: /home/gilarb/fswdevs/nongit/windows-95/_config.yml
            Source: /home/gilarb/fswdevs/nongit/windows-95
       Destination: /home/gilarb/fswdevs/nongit/windows-95/_site
 Incremental build: disabled. Enable with --incremental
      Generating...
                    done in 0.158 seconds.
 Auto-regeneration: enabled for '/home/gilarb/fswdevs/nongit/windows-95'
    Server address: http://<IP_ADDRESS>:4000/windows-95/
  Server running... press ctrl-c to stop.
[2024-06-27 08:32:34] ERROR `/assets/js/highlight.pack.js' not found.
[2024-06-27 08:32:34] ERROR `/assets/img/mycomputer.png' not found.
[2024-06-27 08:32:34] ERROR `/assets/img/disk.png' not found.
[2024-06-27 08:32:34] ERROR `/assets/js/001.js' not found.
[2024-06-27 08:32:34] ERROR `/assets/js/002.js' not found.
[2024-06-27 08:32:34] ERROR `/assets/css/001.css' not found.
[2024-06-27 08:32:34] ERROR `/assets/css/atom-one-light.css' not found.
[2024-06-27 08:32:34] ERROR `/assets/css/font-awesome.min.css' not found.
[2024-06-27 08:32:34] ERROR `/assets/img/file.ico' not found.
[2024-06-27 08:32:34] ERROR `/assets/img/folder.ico' not found.
[2024-06-27 08:32:34] ERROR `/assets/img/disk.png' not found.
[2024-06-27 08:32:34] ERROR `/assets/img/mycomputer.png' not found.
[2024-06-27 08:32:34] ERROR `/assets/js/001.js' not found.
[2024-06-27 08:32:34] ERROR `/assets/js/002.js' not found.

even though I have changed the base url to windows-95 in _config.yml
url: # not yet
baseurl: /windows-95

# variables
name: Your Site Name
description: Your description here
google_verification: null

# File management
include: [".htaccess"]
exclude: ["README.md", "LICENSE"]

# Sass
sass:
  style: :compressed
  sass_dir: _sass

# Markdown
markdown: kramdown
kramdown:
  input: GFM
  syntax_highlighter_opts:
    disable : true

wait, i change it to this:
Configuration file: /home/gilarb/fswdevs/nongit/windows-95/_config.yml
            Source: /home/gilarb/fswdevs/nongit/windows-95
       Destination: /home/gilarb/fswdevs/nongit/windows-95/_site
 Incremental build: disabled. Enable with --incremental
      Generating...
                    done in 0.61 seconds.
 Auto-regeneration: enabled for '/home/gilarb/fswdevs/nongit/windows-95'
    Server address: http://<IP_ADDRESS>:4000//
  Server running... press ctrl-c to stop.```

and now it's work?? how?

![errorhow](https://github.com/h01000110/windows-95/assets/170164322/ad92ba02-3ef0-4e75-a15c-812fef6b2c32)


CAS v5.0.5 Hazelcast Ticket Registry Doesn't Work

We're currently testing with CAS 5.0.5 and the Hazelcast Ticket Registry, and the embedded Tomcat fails to start, giving the following error.
We're using the embedded Tomcat with Oracle Java 8 and running linux (Centos 7) and Docker.
Even going back to the default pom.xml and just adding the dependency and corresponding properties in "cas.properties", it still seems to give this error, so for now we will have to stick with 5.0.4 until this is resolved.
I've attached the files used for testing here.
cas505.zip
ERROR [org.springframework.boot.context.embedded.tomcat.TomcatStarter] - <Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'casLoggingConfiguration': Unsatisfied dependency expressed through field 'ticketRegistrySupport'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'casCoreTicketsConfiguration': Unsatisfied dependency expressed through field 'ticketRegistry'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hazelcastTicketRegistry' defined in class path resource [org/apereo/cas/config/HazelcastInstanceConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apereo.cas.ticket.registry.TicketRegistry]: Factory method 'hazelcastTicketRegistry' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hazelcast' defined in class path resource [org/apereo/cas/config/HazelcastInstanceConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.hazelcast.core.HazelcastInstance]: Factory method 'hazelcast' threw exception; nested exception is java.lang.IllegalArgumentException: PortableFactory[-1] is already registered! com.hazelcast.spi.impl.SpiPortableHook$1@61fb0572 -> com.hazelcast.spi.impl.SpiPortableHook$1@730dc907>
2017-04-24 15:44:03,682 WARN [org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext] - <Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat>

This problem is surfacing itself most likely due to multiple HZ versions jars/dependencies got their way into the classpath

Thanks for the logging the issue report. Please investigate the problem, and whenever reasonable, file a pull request to address this case. Thanks very much!

As a quick update, I tried manually changing the version used for cas-server-support-hazelcast-ticket-registry to 5.0.4, while using 5.0.5 for the CAS server and everything else, and it seems to work.  I wasn't able to find where the bean was already registered that was causing the bean in HazelcastInstanceConfiguration to fail, but if so, I'll create the pull request as requested.
Thanks!

Examine the changelog for 5.0.5: https://github.com/apereo/cas/milestone/53?closed=1
You'll find a number of hazelcast-related changes, at least two: one that fixes an issue with ticket encryption and the other that removes RefreshScope from the registry. My guess is the latter is causing you harm here, but please investigate and see if that fix applied to 5.0.5 is in fact the issue.

This specifically https://github.com/apereo/cas/pull/2541

Pinging @ravomavain: are you seeing the same issue reported here as well?

The RefreshScope annotation was already removed in the source as mentioned in that issue.  However, I tried modifying the Bean annotation on the hazelcastTicketRegistry function as mentioned in https://github.com/apereo/cas/pull/2565 and this seems to work, but I'm not sure if this modification will result in other issues.
Thanks!

Are you getting this error when you run java -jar? or are you also getting this error when you deploy into an external tomcat? I am trying to remove variables (docker, etc)

You should be able to test the fix in about an hour or so, by using the new SNAPSHOT. I am also going to open an issue with hazelcast to report this.

Thanks! And sorry for the delay, though it sounds like a fix was found!  It seemed to be with the embedded Tomcat only.  I tried an external Tomcat (8.5.8) and the issue does not seem to surface.
This was using java -jar with the embedded Tomcat (which seems to be version 8.5.13).  In either case (embedded or external Tomcat), this was using Docker.
I'll try the 5.0.6 version and see if the issue still arises.
Thanks!

Excellent. Thanks for the good news. See linked issue to learn more about why this is happening: https://github.com/hazelcast/hazelcast/issues/10438

@zimai switch to 5.0.6 SNAPSHOT and please retest.

5.0.6-SNAPSHOT seems to have resolved this issue.  Thanks!


⚠ Bofrost.at has degraded performance

In 7ad696e, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1390 ms

Resolved: Bofrost.at performance has improved in 191d2a2 after 11 minutes.


Calibration files

The calibration files aren't matching at the moment. Once we know which force sensors are used we need to match each force sensor with its unique calibration values.
See "aticalibration.py" file.

5 out of 6 of the force sensor's calibration files have been updated. As soon as we know the final sensor model number, I will also update the final one.

5 out of 6 of the force sensor's calibration files have been updated. As soon as we know the final sensor model number, I will also update the final one.


[TODO] Add a Search book method

There is currently no way to search the database using
the ap UI.
Add a method to the app to search through the app using
the library table and or a search modal.

#11 added a method to search and search box and button for the website.


I have the same issue


i18n(es): Updated frontmatter.md, components.mdx & configuration.md

What kind of changes does this PR include?

Changes or translations of Starlight docs site content

Description

What does this PR change? Give us a brief description.
Updated frontmatter.md, components.mdx & configuration.md

In configuration.md there were some sections missing which do not appear in any commit but I have added them to the update

frontmatter.md

048e948

components.mdx

faa70de

configuration.md

8102389
048e948

Thanks for the review @delucis & @dreyfus92 🤠


Updated isolated workloads formatting and info for local deployment

Added an info box about setting --expose-local=false when running vcluster create locally.
Also added a missing yaml annotation to the last code block.
Preview link: https://deploy-preview-187--vcluster-docs-site.netlify.app/docs/vcluster/deploy/topologies/isolated-workloads

@deniseschannon I can have it run through Grammarly if that helps.
This PR mainly includes lint fixes from markdownlint and that one added info box for a local setup.
I updated the PR with your fixes.

@ThomasK33 There are still notes about how it could be a security risk in the last paragraph that I would like updated. Since this is a default option, why would we have a default option that has security risks? Therefore I want it changed to not include the idea of security risks could exist.


auto-update preview

In #64, I had to remove and re-add the preview label to regenerate the netlify preview after pushing additional changes to the branch. @scottyhq @jomey, is that the intended behavior?

I say 'No'
Should probably look into updating the action, remove the 'types' and change to pull_request here:
https://github.com/uwhackweek/jupyterbook-template/blob/1e1936d9379dbee42f5aa472ff99023d4e0e7da4/.github/workflows/netlifypreview.yaml#L4
Then the if conditions for the step will ensure we only running this when labeled.

We just need to add 'synchronize' back into types. The workflow does run with pull_request_target because it needs access to the netlify secrets.


gfx_backend_vulkan error

I have just added env_logger::init(); to the simple.rs example and I'm getting the following message every frame:
[2021-10-04T09:17:50Z ERROR gfx_backend_vulkan]
    VALIDATION [UNASSIGNED-CoreValidation-DrawState-QueueForwardProgress (-400166253)] : Validation Error: [ UNASSIGNED-CoreValidation-DrawState-QueueForwardProgress ] Object 0: handle = 0xea7170000000031, type = VK_OBJECT_TYPE_SEMAPHORE; Object 1: handle = 0x1e5f980a668, type = VK_OBJECT_TYPE_QUEUE; Object 2: handle = 0x1e5f980a668, type = VK_OBJECT_TYPE_QUEUE; | MessageID = 0xe825f293 | vkQueueSubmit(): pSubmits[0].pSignalSemaphores[0] is signaling VkQueue 0x1e5f980a668[] (VkSemaphore 0xea7170000000031[]) that was previously signaled by VkQueue 0x1e5f980a668[] but has not since been waited on by any queue.
    object info: (type: SEMAPHORE, hndl:<PHONE_NUMBER>409109553), (type: QUEUE, hndl:<PHONE_NUMBER>552), (type: QUEUE, hndl:<PHONE_NUMBER>552)

Here's my setup.
Dependencies:
bevy = "0.5.0"
bevy_egui = "0.7.0"
env_logger = "0.9.0"

compiler: rustc 1.57.0-nightly (9dbb26efe 2021-10-03)
OS: Windows 10
GPU: GeForce GTX 1050 Ti
GPU driver: NVIDIA 472.12
Let me know if I can provide any further information to help reproduce.

When I last enabled logging in Bevy, I remember it throwing Vulkan errors as well, and if I'm not mistaken I even tried it without bevy_egui. Could you double-check that bevy_egui indeed causes it? If it does, I'll definitely look into it.

Oh, yes. I should have mentioned that. By itself, bevy doesn't show any of these errors.

Hmm, strange, I can't reproduce it. If I enable logging in the simple.rs example, I get only the following validation error:
[2021-10-04T17:26:42Z ERROR gfx_backend_vulkan]
    VALIDATION [VUID-VkRenderPassBeginInfo-framebuffer-04627<PHONE_NUMBER>)] : Validation Error: [ VUID-VkRenderPassBeginInfo-framebuffer-04627 ] Object 0: handle = 0xb991fa0000000024, type = VK_OBJECT_TYPE_RENDER_PASS; | MessageID = 0x45125641 | vkCmdBeginRenderPass(): Image view #0 created from an image with usage set as 0x11, but image info #0 used to create the framebuffer had usage set as 0x10 The Vulkan spec states: If framebuffer was created with a VkFramebufferCreateInfo::flags value that included VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, each element of the pAttachments member of a VkRenderPassAttachmentBeginInfo structure included in the pNext chain must be a VkImageView with an inherited usage equal to the usage member of the corresponding element of VkFramebufferAttachmentsCreateInfo::pAttachmentImageInfos used to create framebuffer (https://vulkan.lunarg.com/doc/view/<IP_ADDRESS>/windows/1.2-extensions/vkspec.html#VUID-VkRenderPassBeginInfo-framebuffer-04627)
    object info: (type: RENDER_PASS, hndl:<PHONE_NUMBER>6546657316)

And it's printed regardless of whether I add the EguiPlugin plugin or not.
Which version of Vulkan SDK do you use? (I have <IP_ADDRESS> installed, and I also test on Windows 10.)

I've got <IP_ADDRESS> as well. Is there anything I can do on my end to diagnose the issue closer?

Hey @RichMQ, sorry that it took me so long to actually answer your question. I don't know much about rendering and Vulkan, but after talking to other developers, we came up to a conclusion that it might be a problem on a lower level: either Bevy, WGPU or anything else. Unfortunately, no one else who I know could also reproduce the issue, so it's difficult to be confident here.
One of the things that I wanted to ask you to try is to run the example on the bevy_egui branch that is built on the new renderer (it also uses a newer version of WGPU): https://github.com/jakobhellermann/bevy_egui/tree/bevy-pipelined.
Could you please try the example on that one and check if you can see the same validation errors?

but maybe that example is no longer expected to work on this branch

Yeah, I haven't tried this branch myself yet, but I think you're right, only simple_pipelined.rs is supposed to work.

Does bevy-pipelined refer to the new renderer in bevy 0.6?

That's correct.
DirectX warnings seem like a WGPU issue as well. Btw, could you also try to switch the backend back to Vulkan, to see that those validation errors are gone indeed? I believe with the pipelined-rendering branch you can now do it by setting an environment variable: WGPU_BACKEND=vulkan.

Closing this as Bevy 0.6 is released now and we support it.


Replace PAF reviewer roles with function to assign actual user roles to approve a PAF

Staff who create the project selects one user from each of these user roles:

Staff + approver
Finance + approver
Contracting

Only staff + approver is required.
Should staff pick the contracting + approver user as well?

Done


lib: newlib: Fix macro call for memory alignment on ARC

s/Z_ARC_MPU_SIZE_ALIGN/Z_ARC_MPU_ALIGN
Signed-off-by: Tomasz Bursztyka<EMAIL_ADDRESS>

I need to wake up...


Link check

Testing automatic link check for https://github.com/nf-core/nf-co.re/issues/236
I am wondering if this will work by default.

Can you change a md file so that the test are actually triggered?

Thanks @MaxUlysse
I am closing this request, the action runs well. It surely will need a configuration file to set the options (replacementPatterns, ignorePatterns) based on the usage. I'll contribute on https://github.com/nf-core/nf-co.re/issues/236 to see if we can make this workable with markdown-link-check action.
🏁


Upgrade dockerimage

https://github.com/GoogleContainerTools/distroless/tree/main?tab=readme-ov-file#what-images-are-available

Any other tags are considered deprecated and are no longer updated

We are currently building all packages with "LTS" version of node
- uses: actions/setup-node@v4
        with:
          node-version: lts/*
          cache: yarn

LTS is currently v20, and v22 won't be LTS until October Should we update the workflow to build everything with latest version of v22? Or just use gcr.io/distroless/nodejs20-debian12?

Good question. On one hand, if we hard code the version in the workflows, we have more places to update. But then we assure consistent versions. On the other hand, if we keep lts we only need to ever update Dockerfile. Do you think there's a risk of errors by using different versions in workflows vs. Docker?


Conflict with SBJson

SumupSDK.framework uses SBJson internally. It conflicts when developer also uses SBJson in his project. SBJson framework usage should be prefixed to internal namespace like SMPJson to avoid conflicts. For example, DropboxSDK also uses SBJson as DBJson.

Hi Tomasz.
Thanks for your feedback. We will look into this in an upcoming release.
Regards,
Lukas

Hi Tomek.
Can you check if 1.2.1b1 fixes this issue?
Thanks,
Lukas

SBJson conflict is ok now, but now I've found another conflict on base64_encode with another lib which I use (fortunately I have source code for it and I change that function name). SDK is working now.

Hi Tomek.
Glad to hear. Which base64 method is in conflict? Should be easy to fix on our side and will probably be in conflict for other devs, too.

It's base64_encode() :)

We are using a copy of this category: https://github.com/l4u/NSData-Base64/blob/abeb10cfdbe5c2c3f16ed45f2a7f2b5094f097dd/NSData%2BBase64.m
Is this causing the conflict for you?

Yes, I used exactly same category, but this was very easy to fix at my side. Other conflict was with zbar and I had to recompile zbar.


tester.tap() cannot detect a tapping gesture on the previous/next child widgets on the PageView

Is there an existing issue for this?

[X] I have searched the existing issues
[X] I have read the guide to filing a bug

Steps to reproduce
I have a PageView widget with the viewportFraction set to 0.5, making 1/4 of the previous and next pages visible. Every child widget is wrapped inside the GestureDetector widget, and when tapped, the widget animates to the tapped page. This works as described on simulators/actual devices, but when I tried to create a test, the tester.tap() method fails saying that the widget is "actually off-screen, or another widget is obscuring it, or the widget cannot receive pointer events". What am I doing wrong here? How can I create a widget test that passes?
Expected results
tester.tap() can tap on the second child of the PageView and the test passes.
Actual results
tester.tap() cannot tap on the second child of the PageView for some reason and the test fails.
Code sample
Code sample
main.dart:
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: MyHomePage(
        pageController: PageController(
          initialPage: 0,
          viewportFraction: 0.5,
        ),
      ),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({
    required this.pageController,
    super.key,
  });

  final PageController pageController;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: PageView(
        controller: pageController,
        scrollDirection: Axis.horizontal,
        children: List.generate(
          3,
          (index) {
            return GestureDetector(
              key: ValueKey('page-$index'),
              behavior: HitTestBehavior.translucent,
              onTap: () => pageController.animateToPage(
                index,
                duration: const Duration(milliseconds: 300),
                curve: Curves.easeInOut,
              ),
              child: Placeholder(
                child: Center(
                  child: Text(
                    'Page $index',
                  ),
                ),
              ),
            );
          },
        ),
      ),
    );
  }
}

widget_test.dart:
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:test_page_view/main.dart';

void main() {
  late PageController pageController;

  setUp(() {
    pageController = PageController(
      initialPage: 0,
      viewportFraction: 0.5,
    );
  });

  tearDown(() {
    pageController.dispose();
  });

  testWidgets(
    'PageView should animate to the second page when tapped',
    (WidgetTester tester) async {
      await tester.pumpWidget(
        MaterialApp(
          home: MyHomePage(
            pageController: pageController,
          ),
        ),
      );
      await tester.pumpAndSettle();
      final firstPage = find.byKey(const ValueKey('page-0'));
      expect(firstPage, findsOneWidget);
      expect(pageController.page, 0);

      final secondPage = find.byKey(const ValueKey('page-1'));
      expect(secondPage, findsOneWidget);
      await tester.tap(secondPage);
      await tester.pumpAndSettle();
      expect(pageController.page, 1);
    },
  );
}

Screenshots or Video

Screenshots / Video demonstration
https://github.com/flutter/flutter/assets/32585133/90c2376f-2aa8-47e2-8014-cdf249958393

Logs
Logs
Warning: A call to tap() with finder "exactly one widget with key [<'page-1'>] (ignoring offstage widgets): GestureDetector-[<'page-1'>](startBehavior: start, dependencies: [MediaQuery])" derived an Offset (Offset(800.0, 300.0)) that would not hit test on the specified widget.
Maybe the widget is actually off-screen, or another widget is obscuring it, or the widget cannot receive pointer events.
Indeed, Offset(800.0, 300.0) is outside the bounds of the root of the render tree, Size(800.0, 600.0).
The finder corresponds to this RenderBox: RenderSemanticsGestureHandler#b2646
The hit test result at that offset is: HitTestResult(HitTestEntry<HitTestTarget>#9f955(RenderView#5fc98), HitTestEntry<HitTestTarget>#fe409(<AutomatedTestWidgetsFlutterBinding>))
#0      WidgetController._getElementPoint (package:flutter_test/src/controller.dart:1347:25)
#1      WidgetController.getCenter (package:flutter_test/src/controller.dart:1232:12)
#2      WidgetController.tap (package:flutter_test/src/controller.dart:554:18)
#3      main.<anonymous closure> (file:///Users/heeyunlee/Developer/test_page_view/test/widget_test.dart:44:20)
<asynchronous suspension>
#4      StackZoneSpecification._registerUnaryCallback.<anonymous closure> (package:stack_trace/src/stack_zone_specification.dart:124:15)
<asynchronous suspension>
To silence this warning, pass "warnIfMissed: false" to "tap()".
To make this warning fatal, set WidgetController.hitTestWarningShouldBeFatal to true.

══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════
The following TestFailure was thrown running a test:
Expected: <1>
  Actual: <0.0>

When the exception was thrown, this was the stack:
#4      main.<anonymous closure> (file:///Users/heeyunlee/Developer/test_page_view/test/widget_test.dart:46:7)
<asynchronous suspension>
<asynchronous suspension>
(elided one frame from package:stack_trace)

This was caught by the test expectation on the following line:
  file:///Users/heeyunlee/Developer/test_page_view/test/widget_test.dart line 46
The test description was:
  PageView should animate to the second page when tapped
════════════════════════════════════════════════════════════════════════════════════════════════════
Test failed. See exception logs above.
The test description was: PageView should animate to the second page when tapped

✖ PageView should animate to the second page when tapped
Exited (1)

Flutter Doctor output
Doctor output
[✓] Flutter (Channel stable, 3.10.5, on macOS 13.4.1 22F82 darwin-arm64, locale en-US)
    • Flutter version 3.10.5 on channel stable at /Users/heeyunlee/fvm/versions/3.10.5
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 796c8ef792 (11 days ago), 2023-06-13 15:51:02 -0700
    • Engine revision 45f6e00911
    • Dart version 3.0.5
    • DevTools version 2.23.1

[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
    • Android SDK at /Users/heeyunlee/Library/Android/sdk
    • Platform android-33, build-tools 33.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 14.3.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 14E300c
    • CocoaPods version 1.12.1

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 2022.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)

[✓] VS Code (version 1.79.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.66.0

[✓] Connected device (4 available)
    • John Doe’s iPhone (mobile) • 00008101-000A48C40251003A            • ios            • iOS 16.5.1 20F75
    • iPhone 14 Pro (mobile)     • B8250ED7-3D7D-421D-9A5C-D6AF4FD8E7B6 • ios            •
      com.apple.CoreSimulator.SimRuntime.iOS-16-4 (simulator)
    • macOS (desktop)            • macos                                • darwin-arm64   • macOS 13.4.1 22F82
      darwin-arm64
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome
      114.0.5735.133

[✓] Network resources
    • All expected network resources are available.

• No issues found!

Hi @heeyunlee
As I can see from your test, you only invoke a tap gesture that will not make the 2nd page becomes visible. You need a drag/swipe gesture to make it work.
Use await tester.drag(firstPage, const Offset(-300, 0)); instead of await tester.tap(secondPage).
And then you can do more gestures (tap) on the next pages.
Closing the issue since the error message is correct. If you disagree, please write in the comments and I will reopen it.


Experimental support for block expectations

So I decided to take a stab at https://github.com/allending/Kiwi/issues/383, and here's what I came up with. The functional test:
describe(@"block expectations", ^{

    describe(@"beCalled matcher", ^{
        let(handler, ^{ return block(); });
        let(robot,   ^{ return [Robot new]; });

        it(@"matches if the block is called", ^{
            [[handler shouldEventually] beCalled];
            [robot speak:@"xyzzy" afterDelay:0 whenDone:handler];
        });

        it(@"doesn't match if the block isn't called", ^{
            [[handler shouldNot] beCalled];
            [robot speak:@"yolo" afterDelay:0 whenDone:^{}];
        });
    });

});

A quick rundown of what's happending here:

The block() macro returns a new KWBlockProxy instance which is assigned to the handler variable. This class is basically Mike Ash's MAFakeBlock class, converted to ARC, with some minor API changes.
The block proxy behaves like the type of the real block you pass into it. In this example no block is passed in and the default void (^)(void) block is used.
It's basically the equivalent of KWMock, but for blocks. (I thought the name KWMockBlock would be a but much :stuck_out_tongue_winking_eye:.)

We use the beCalled expectation to create a KWBlockCallMatcher. Currently this just flips a BOOL when the block invocation is intercepted.

When the proxy is invoked, the regular Objective-C message forwarding behaviour is triggered, and we get the block invocation wrapped up nicely as an NSInvocation. The invocationProxy block provided by KWBlockCallMatcher is executed.

Just like a receive matcher, the block matcher is verified at the end of the example.

Rationale
Initially I went down the path of setting up an expect(...).to syntax so that I could implement the RSpec-style yield matcher, e.g.,:
specify(^{
    [expect(^(id b){
        [robot speak:@"howdy" afterDelay:0 whenDone:b];
    }).to invokeBlock];
});

However, this didn't really feel very "Kiwi" to me (at least not at the moment). It's not clear if Kiwi will go the expect(...) route, in any case. Open to your thoughts on this point. (FYI, I have my KWExpectation stuff stashed away, and am happy to push it somewhere if anybody wants to take a look.)
KWBlockCallMatcher looks a lot like KWReceiveMatcher, and it should be easy to extend it with support for capturing and verifying arguments, stubbing return values, etc..
Feedback
Given that this is experimental and a bit of a hack, I'd love to know everyone's thoughts on:

The KWBlockCallMatcher "receive"-style API (vs. the expect-style API)
The block() macro API for creating block proxies (Stack Overflow gets the credit for the cool struct initialisation trick)
Whether this should actually every be merged (!), given that it relies on a private method on NSInvocation and having intimate knowledge of the layout of a block in memory (i.e., if it ever changed and KWBlockProxy stopped working like a real block, I'm pretty sure I would be incapable of maintaining that code). MABlockForwarding appears to be unlicensed at the moment, so we'd need to get permission in any case AFAIK.

Thanks to @mikeash for sharing the very cool block proxying code!

This looks like an interesting experiment - but it's been inactive for over two years, I'm closing this as inactive. As ever - this PR can be re-opened if the idea is worth bringing back up, but it looks like discussion has petered out.