[$500] Chat - Emoji suggestion list can not be dismissed when tap outside

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

**Version Number:**1.3.96-0
Reproducible in staging?: Y
Reproducible in production?: Y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
Action Performed:

Open New Dot app
Navigate to any chat
Type :sm
Tap outside the opened dropdown to dismiss

Expected Result:
When user tap outside the dropdown - emoji suggestion page should close
Actual Result:
Emoji suggestion list can not be dismissed when tap outside
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android: Native
[ ] Android: mWeb Chrome
[x] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

Screenshots/Videos
Add any screenshot/video evidence

https://github.com/Expensify/App/assets/78819774/2e10ee9f-1701-463f-8b6b-17fba1954524
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01dbf05e8d1e6a1b24
Upwork Job ID:<PHONE_NUMBER>078456320
Last Price Increase: 2023-11-21

Proposal
Please re-state the problem that we are trying to solve in this issue.
Emoji suggestions list can't be dismissed by tapping outside in native platforms
What is the root cause of that problem?
In web and desktop platforms, when tapping outside, the composer gets blurred and suggestions list is reset
https://github.com/Expensify/App/blob/24184e4a987aba011b5231680da66dcef11f6a24/src/pages/home/report/ReportActionCompose/ReportActionCompose.js#L286-L288
But this isn't the case for native platforms, that is, the composer doesn't get blurred when tapping outside.
This is the root cause
What changes do you think we should make in order to solve the problem?
We need to implement the outside press listener like https://www.npmjs.com/package/react-native-outside-press to blur the composer when tapping outside. We should blur the composer when tapping outside of the suggestions list and the composer because we shouldn't blur the composer when we click the composer.
It looks like the above package can't set multiple target(suggestions list and the composer) so we need to customize the outside press listener
The skeleton code would look like
In App.js: This provider would be added to here
    <OutsidePressTargetProvider>
        <Expensify />
    </OutsidePressTargetProvider>

In ReportActionCompose.js:
    const {addTarget, removeTarget} = useOutsidePressTargets();
    useEffect(() => {
        addTarget(containerRef);
        return () => removeTarget(containerRef);
    }, []);

    ...

    <OutsidePressHandler onPressOutside={() => composerRef.current && composerRef.current.blur()} />

In index.native.js
    const {addTarget, removeTarget} = useOutsidePressTargets();
    useEffect(() => {
        addTarget(autocompleteRef);
        return () => removeTarget(autocompleteRef);
    }, []);

What alternative solutions did you explore? (Optional)

@thesahindia can you take a look at the proposals?

Taking this as C+

@dukenv0307 Thanks for the proposal. I don't think your RCA is correct. keyboardShouldPersistTaps is only related to the keyboard. If we happen to have the keyboard closed already then clicking outside will still not dismiss the suggestion list.
https://github.com/Expensify/App/assets/16493223/be2906d6-9a7b-49aa-8c80-9d6ed602014e

@s77rt
Yes, we can avoid global listener. I just suggested that for its use in other places.

Can we maybe as an alternative use the remaining space above the suggestion list to render a pressable (kinda backdrop) that hides the suggestion list?

Here is my opinion.
If we need to consider the suggestions list only, we can fix the issue simply by using the outside press handler. But I think we need to consider the composer as well. When tapping outside the suggestions list but inside the composer, the suggestions list should not be dismissed, I think
Please let me know your thoughts

@s-alves10 Let's not use that outside press handler. It seems an overkill to add a new package to solve this. Did you get a chance to explore the suggested alternative? (i.e. render a pressable above the suggestion list)

@dukenv0307 I disabled the software keyboard on purpose to show that keyboardShouldPersistTaps is not the root cause.    You can experience same bug on Android (on Android the keyboard can actually be closed)
https://github.com/Expensify/App/assets/16493223/3ceed674-dd57-490c-b2db-4aec7b4a88e0

@s-alves10 Thanks for the update. Why is the rectangle covering the suggestion list? What would happen if we click on the suggestion list in this case?

@s77rt Tapping on the suggestion list works as is now

But will it register as a press on the other pressable?

The suggestion list is placed above the Pressable and onPress isn't called when tapping on the list

Okay I see. Can you please explain how/where the pressable is added?

In AutoCompleteSuggestions component
function AutoCompleteSuggestions({measureParentContainer, onClose, ...props}) {
    const {windowHeight} = useWindowDimensions();
    const styles = useThemeStyles();
    return (
        <Portal hostName="suggestions">
            {props.suggestions?.length > 0 && (
                <PressableWithoutFeedback
                    style={[styles.autoCompleteOutsideContainer, {top: -windowHeight, height: windowHeight}]}
                    onPress={onClose}
                />
            )}
            {/* eslint-disable-next-line react/jsx-props-no-spreading */}
            <BaseAutoCompleteSuggestions {...props} />
        </Portal>
    );
}

In styles.ts
        autoCompleteOutsideContainer: {
            left: -20,
            right: -20,
            position: 'absolute',
        },

@s-alves10 This is looking good so far but there is an inconsistency between Android an iOS. On Android we can scroll the messages but on iOS we can't. It would be better if we keep the scroll functionality on iOS too. Also how are we going to call resetSuggestions?
https://github.com/Expensify/App/assets/16493223/0f0b80db-607a-423c-88a4-eddcf031b477

@s77rt
I'm going to pass props onClose to Suggestions component in ComposerWithSuggestions

It would be better if we keep the scroll functionality on iOS too
It looks tricky to pass touch events through a view without blocking onPress. How about to prevent background scrolling?

@dukenv0307

Meanwhile if you remove keyboardShouldPersistTaps="handled", tapping on a report action will blur the composer.

It won't. In this case tapping outside will dismiss the keyboard. The keyboard dismissal action is what blurs the input and not the outside press.

if you think this root cause is correct ... Then why if keyboardShouldPersistTaps="handled" is removed, the composer now gets blurred when tapping outside?

As explained above, it's not the root cause because it's not the main action that blurs the input. Tapping outside will not blur the input. Tapping outside will dismiss the keyboard. If the keyboard got dismissed the input will get blurred. It's a chain reaction. If keyboard is closed then the input will stay focused.
https://github.com/Expensify/App/assets/16493223/5d4be113-7848-44ab-acb8-3bf539187a90

why do we need to render a Pressable when we already have all the report actions which are Pressables

Because components shouldn't be coupled. We should be able to close the suggestion box no matter what is rendered underneath.

@s-alves10

How about to prevent background scrolling?

Scrolling looks like a feature here. I think it would be better to keep it.

Still looking for proposals

@puneetlath Please assign me here

Still looking for proposals

@s77rt
We can solve this issue by simply changing this line to
                    keyboardShouldPersistTaps="never"

The drawback of this solution is that it won't work if hardware keyboard is connected and so keyboard isn't opened when the composer input is focused. I'd like to know we should consider this case as well

Still looking for proposals

Same ^

Still looking for proposals

Still looking for proposals

Not overdue. Still looking for proposals

@dukenv0307 Thanks for the update. I don't think we should involve ScreenWrapper here as this issue is limited to the suggestion list it's better to keep the changes only to the suggestion list related components. I'm pretty much inclined into following this approach https://github.com/Expensify/App/issues/31018#issuecomment-1824719558 and fix the scroll issue on iOS.

@dukenv0307 The ScreenWrapper could be the last resort here. Let's try to avoid it for now. Did you find reasons why we are having the scroll issue on iOS?

Proposal
Please re-state the problem that we are trying to solve in this issue.
Emoji suggestions should dismiss when tapping outside, while still supporting scrollable chat in the background.
What is the root cause of that problem?
The scenario is not handled natively. Also for iOS it isn't the default behaviour to scroll while a similar popover component is opened.
For example, compare Slack iOS to Slack Android, the issue is here as well. On Slack Android after typing ":sm" you can click outside to dismiss, but on iOS you aren't able to click outside to dismiss.
What changes do you think we should make in order to solve the problem?
Wrap ReportActionsList with a non-conflicting GestureDetector, and emit a tap event tap event. Listen to the event in the emoji suggestion component (or similar component) then handle the close event there.

See this commit: https://github.com/Expensify/App/compare/main...augustmuir:ExpensifyApp:main
cc @s77rt
Videos of fix:
https://github.com/Expensify/App/assets/72067396/5e72d5e1-7ebd-4f8f-9cd4-6d73cab7b39f
https://github.com/Expensify/App/assets/72067396/cb135177-9a98-4233-b32a-bd4f1d478ca0

@augustmuir Thanks for the proposal. Using ReportActionsList to detect clicks would work but I would prefer not to couple unrelated components. The suggestion list should be closed no matter the underlaying component.

Still looking for proposals

Same ^

Still looking for proposals

Still waiting to see if we can get a viable proposal.

Still looking for proposals

The root issue is not in the Expensify App. The issue is a popular react-native issue/limitation.

Hi! It's Agata from Callstack, I can take a look 🙂

@puneetlath @s77rt just to make sure on expected results: we want to dismiss the emoji modal but keep the input focused and keyboard opened is that right?

The react-native issues are https://github.com/facebook/react-native/issues/12360, https://github.com/facebook/react-native/issues/27333 and https://github.com/facebook/react-native/issues/28894#issuecomment-738150834. There are also relevant discussions in the gesture-handler

react-native iOS and Android, we can not press on two overlay views (for ex. the two views have position absolute and are on top of each other, we can press only one of them using pointerEvents)
gesture-handler, works on Android, but not on iOS

Can not scroll ScrollView on Android when Pressable is overlayed on top of it
Using react-native-gesture-handler ScrollView fixes the issue on Android.
The issue is fixed with Gesture Handler, which delivers the event to the ReactScrollView (onInterceptTouchEvent) handler with GestureHandlerOrchestrator  deliverEventToGestureHandlers.
CLICK TO OPEN SOURCECODE EXAMPLE

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 *
 * @format
 */
import * as React from 'react';
import {
  View,
  Text,
  TextInput,
  StyleSheet,
  SafeAreaView,
  Pressable,
  // ScrollView does not work
  ScrollView,
} from 'react-native';
import {
  // Gesture Handler ScrollView works
  // ScrollView,
  GestureHandlerRootView,
} from 'react-native-gesture-handler';

const SUGGESTIONS = [
  { text: ':heart' },
  { text: ':love' },
  { text: ':kiss' },
  { text: ':lol' },
  { text: ':-)' },
];

function PopUp(props) {
  const suggestions = props.rows.map((row, index) => {
    return (
      <Text key={index} style={styles.popupText}>
        {row.text}
      </Text>
    );
  });
  return <View style={styles.popup}>{suggestions}</View>;
}

function Footer() {
  const [visible, setVisible] = React.useState(true);
  return (
    <View>
      <TextInput style={styles.input} />
      <Pressable
        style={styles.touchable}
        onPress={(e) => {
          setVisible((prevState) => !prevState);
        }}>
        {visible && <PopUp rows={SUGGESTIONS} />}
      </Pressable>
    </View>
  );
}

const App = () => {
  const content = SCROLLVIEW_DATA.map((row, index) => {
    return (
      <Text key={index} style={styles.scrollViewText}>
        {row.title}
      </Text>
    );
  });
  return (
    <GestureHandlerRootView style={{ flex: 1 }}>
      <SafeAreaView style={styles.container}>
        <ScrollView style={styles.scrollView}>{content}</ScrollView>
        <Footer />
      </SafeAreaView>
    </GestureHandlerRootView>
  );
};

export default App;

const styles = StyleSheet.create({
  scrollView: {
    height: 500,
  },
  touchable: {
    position: 'relative',
    top: -550,
    height: 700,
    left: 0,
    right: 0,
    zIndex: 200,
    // backgroundColor: 'rgba(255, 255, 230, 0.9)',
    // backgroundColor: 'yellow',
  },
  scrollViewText: {
    borderWidth: 1,
    height: 40,
    fontSize: 20,
  },
  popup: {
    backgroundColor: 'gray',
    position: 'absolute',
    bottom: 100,
    left: 40,
    right: 40,
  },
  popupText: {
    fontSize: 20,
  },
  input: {
    backgroundColor: 'black',
    color: 'white',
    height: 50,
  },
});

function createScrollViewData(numberOfRows) {
  let data = [];
  for (let index = 0; index < numberOfRows; index++) {
    const element = numberOfRows[index];
    data.push({ title: `Item number ${index}` });
  }
  return data;
}
const SCROLLVIEW_DATA = createScrollViewData(50);

Before
After

Raised this to Slack https://expensify.slack.com/archives/C01GTK53T8Q/p1705601299388139 for confirmation if this is worth fixing

Personally I don't think it's a bug - if we don't want to blur the composer why would we need to dismiss only the suggestion modal. I was curious how it works in other apps - in Slack the suggestion modal is not dismissed either https://github.com/Expensify/App/assets/28020445/7869d6ec-aaad-4f55-ab42-a4bc9ca8082e

I'm not able to reproduce this bug; it seems like this is working for me.

@puneetlath Should we just close this?

Yes, let's close. Thanks everyone.

I verified. The issue was fixed with https://github.com/Expensify/App/pull/45076/files.


ensure xcode-install gem is there

Fixes: https://github.com/fastlane/fastlane/issues/7965

Cool. I wasn't aware of that feature.
Some questions:

would it be useful to standardize on the required dependencies declaratively, e.g. having a def required_gems or similar on the plugin interface?
if yes would it be useful to run the dependency check earlier (before run)? E.g. at Fastfile parsing. This would cause early installation/failures. Easy if first point implemented.

@lacostej i like the idea of having a required_gems not sure how much work has to be done, and how to scan current codebase for places and gems.


Prevent the user from requiring tags when there is no active tag

…gs in the workspace

Details
$ https://github.com/Expensify/App/issues/41309
PROPOSAL: N/A
Tests / QA Steps

Create a workspace
Enable the tags feature on the More Features page of the workspace editor
Create several tags manually on the Tags page
Click the Settings button on the Tags page and confirm that you can toggle on and off the Members must tag all spend toggle button
Disable all tags
Click the Settings button on the Tags page and confirm that the Members must tag all spend toggle button is off and locked.
Go back to More Features page and enable the Accounting feature
On the Accounting page, connect to QBO.
Go to the Tags page again
Check that classes and customers/projects are imported from QBO as tags and there are enabled
Click the Settings button on the Tags page and confirm that you can toggle on and off the Members must tag all spend toggle button
Disable all tags
Click the Settings button on the Tags page and confirm that the Members must tag all spend toggle button is off and locked.

Offline tests
N/A
PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

To disable all tags, this App PR might be needed

Reviewer Checklist

[ ] I have verified the author checklist is complete (all boxes are checked off).
[ ] I verified the correct issue is linked in the ### Fixed Issues section above
[ ] I verified testing steps are clear and they cover the changes made in this PR

[ ] I verified the steps for local testing are in the Tests section
[ ] I verified the steps for Staging and/or Production testing are in the QA steps section
[ ] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[ ] I checked that screenshots or videos are included for tests on all platforms
[ ] I included screenshots or videos for tests on all platforms
[ ] I verified tests pass on all platforms & I tested again on:

[ ] Android: Native
[ ] Android: mWeb Chrome
[ ] iOS: Native
[ ] iOS: mWeb Safari
[ ] MacOS: Chrome / Safari
[ ] MacOS: Desktop

[ ] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[ ] I verified proper code patterns were followed (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I verified that this PR follows the guidelines as stated in the Review Guidelines
[ ] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[ ] I verified that all the inputs inside a form are aligned with each other.
[ ] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native

iOS: mWeb Safari

MacOS: Chrome / Safari

MacOS: Desktop

Hold can be removed #41351 merged

Because there was a recent change to support multi-level tags on New Expensify and we don't yet support disabling tags when the tags are imported as multi-level, we need to wait for that work to be done to test changes in this PR.

sure thing!

I changed the base branch to use the branch for testing all QBO related changes while we have merge freeze against the main branch.

@hayata-suenaga it doesn't test well

Disable all tags
On the Accounting page, connect to QBO.
Go to the Tags page again
The tags are still disabled
Click the Settings button on the Tags page
I cannot toggle on and off the Members must tag all spend toggle button

https://github.com/Expensify/App/assets/29673073/a3b7b524-945f-4510-87bb-f0495b61fc6f

This should be a multi-level tags list. I can test this locally to see what's going on or if I'm forgetting something 🤔

@rushatgabhane, I tested this locally but I couldn't reproduce the issue you're facing
https://github.com/Expensify/App/assets/98560306/05541502-08bf-46ac-a693-d8895e39c37c
Also, I have a question about the screen recordings you provided. Where did you get the tags being shown? 🤔 If you're importing Classes and Customers/Projects from QBO, you should be seeing the multi-level tags as captured in the screenshot -> https://github.com/Expensify/App/pull/42004#issuecomment-2123426952

@rushatgabhane, please retest this when you have time 🙇 This has an external deadline

Shall we remove the hold from this PR as we'll merge it into the freeze branch?

🚀 Deployed to production by https://github.com/Julesssss in version: 1.4.79-11 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Move Renovate config to .github

Renovate looks in .github for its configuration, so move the
config file there to keep the repo root slightly tidier.

#3472  👈 (View in Graphite)
main

This stack of pull requests is managed by Graphite. Learn more about stacking.


Restore server-side playlist on reconnect (#567)

Address the issue raised in #567 where, if you were the only one in the room when you were disconnected, the shared playlist is empty for everyone else after reconnection until something is added/removed from the playlist.

This tweak is now included in Syncplay 1.7.0 RC 1: https://syncplay.pl/syncplay-1-7-0-release-candidate-1/


error:  with prompt: 介绍下大熊猫

Generating with prompt: <|system|>
User will provide you with a text instruction. Do it step by step. First, think about the instruction and respond in a interleaved manner, with 13 text token followed by 26 audio tokens.<|user|>
介绍下大熊猫<|assistant|>streaming_transcription
thread '' panicked at 'index out of bounds: the len is 187 but the index is 187', /root/.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.8.1/src/dfa.rs:1415:45
stack backtrace:
0: rust_begin_unwind
at /rustc/84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc/library/std/src/panicking.rs:579:5
1: core::panicking::panic_fmt
at /rustc/84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc/library/core/src/panicking.rs:64:14
2: core::panicking::panic_bounds_check
at /rustc/84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc/library/core/src/panicking.rs:159:5
3: regex::re_unicode::Regex::find_at
4: fancy_regex::Regex::find_from_pos_with_option_flags
5: fancy_regex::Regex::find_from_pos
6: _tiktoken::CoreBPE::_encode_native
7: pyo3::marker::Python::allow_threads
8: _tiktoken::CoreBPE::encode
9: std::panicking::try
10: tiktoken::::::pymethod_encode
11:
12: _PyEval_EvalFrameDefault
13: _PyFunction_Vectorcall
14: _PyEval_EvalFrameDefault
15: _PyFunction_Vectorcall
16: _PyEval_EvalFrameDefault
17:
18: _PyEval_EvalFrameDefault
19: _PyFunction_Vectorcall
20: _PyEval_EvalFrameDefault
21:
22: PyObject_Call
23: _PyEval_EvalFrameDefault
24:
25: PyObject_Call
26: _PyEval_EvalFrameDefault
27:
28: PyObject_Call
29: _PyEval_EvalFrameDefault
30: _PyFunction_Vectorcall
31: _PyObject_FastCallDictTstate
32: _PyObject_Call_Prepend
33:
34: _PyObject_MakeTpCall
35: _PyEval_EvalFrameDefault
36:
37:
38:
39: _PyEval_EvalFrameDefault
40:
41: _PyEval_EvalFrameDefault
42:
43:
44: _PyEval_EvalFrameDefault
45: _PyFunction_Vectorcall
46:
47:
48:
49: _PyEval_EvalFrameDefault
50: _PyFunction_Vectorcall
51: _PyEval_EvalFrameDefault
52: _PyFunction_Vectorcall
53: _PyEval_EvalFrameDefault
54:
55:
56:
57:
58: __clone
note: Some details are omitted, run with RUST_BACKTRACE=full for a verbose backtrace.
ERROR:    Exception in ASGI application
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/starlette/responses.py", line 259, in call
await wrap(partial(self.listen_for_disconnect, receive))
File "/usr/local/lib/python3.10/dist-packages/starlette/responses.py", line 255, in wrap
await func()
File "/usr/local/lib/python3.10/dist-packages/starlette/responses.py", line 232, in listen_for_disconnect
message = await receive()
File "/usr/local/lib/python3.10/dist-packages/uvicorn/protocols/http/h11_impl.py", line 534, in receive
await self.message_event.wait()
File "/usr/lib/python3.10/asyncio/locks.py", line 214, in wait
await fut
asyncio.exceptions.CancelledError: Cancelled by cancel scope 7f5b146d2320
During handling of the above exception, another exception occurred:

Exception Group Traceback (most recent call last):
|   File "/usr/local/lib/python3.10/dist-packages/uvicorn/protocols/http/h11_impl.py", line 406, in run_asgi
|     result = await app(  # type: ignore[func-returns-value]
|   File "/usr/local/lib/python3.10/dist-packages/uvicorn/middleware/proxy_headers.py", line 60, in call
|     return await self.app(scope, receive, send)
|   File "/usr/local/lib/python3.10/dist-packages/fastapi/applications.py", line 1054, in call
|     await super().call(scope, receive, send)
|   File "/usr/local/lib/python3.10/dist-packages/starlette/applications.py", line 113, in call
|     await self.middleware_stack(scope, receive, send)
|   File "/usr/local/lib/python3.10/dist-packages/starlette/middleware/errors.py", line 165, in call
|     await self.app(scope, receive, _send)
|   File "/usr/local/lib/python3.10/dist-packages/starlette/middleware/exceptions.py", line 62, in call
|     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
|   File "/usr/local/lib/python3.10/dist-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|     await app(scope, receive, sender)
|   File "/usr/local/lib/python3.10/dist-packages/starlette/routing.py", line 715, in call
|     await self.middleware_stack(scope, receive, send)
|   File "/usr/local/lib/python3.10/dist-packages/starlette/routing.py", line 735, in app
|     await route.handle(scope, receive, send)
|   File "/usr/local/lib/python3.10/dist-packages/starlette/routing.py", line 288, in handle
|     await self.app(scope, receive, send)
|   File "/usr/local/lib/python3.10/dist-packages/starlette/routing.py", line 76, in app
|     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
|   File "/usr/local/lib/python3.10/dist-packages/starlette/_exception_handler.py", line 42, in wrapped_app
|     await app(scope, receive, sender)
|   File "/usr/local/lib/python3.10/dist-packages/starlette/routing.py", line 74, in app
|     await response(scope, receive, send)
|   File "/usr/local/lib/python3.10/dist-packages/starlette/responses.py", line 252, in call
|     async with anyio.create_task_group() as task_group:
|   File "/usr/local/lib/python3.10/dist-packages/anyio/_backends/_asyncio.py", line 763, in aexit
|     raise BaseExceptionGroup(
| exceptiongroup.BaseExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
+-+---------------- 1 ----------------
| Traceback (most recent call last):
|   File "/usr/local/lib/python3.10/dist-packages/starlette/responses.py", line 255, in wrap
|     await func()
|   File "/usr/local/lib/python3.10/dist-packages/starlette/responses.py", line 244, in stream_response
|     async for chunk in self.body_iterator:
|   File "/usr/local/lib/python3.10/dist-packages/starlette/concurrency.py", line 62, in iterate_in_threadpool
|     yield await anyio.to_thread.run_sync(_next, as_iterator)
|   File "/usr/local/lib/python3.10/dist-packages/anyio/to_thread.py", line 56, in run_sync
|     return await get_async_backend().run_sync_in_worker_thread(
|   File "/usr/local/lib/python3.10/dist-packages/anyio/_backends/_asyncio.py", line 2441, in run_sync_in_worker_thread
|     return await future
|   File "/usr/local/lib/python3.10/dist-packages/anyio/_backends/_asyncio.py", line 943, in run
|     result = context.run(func, *args)
|   File "/usr/local/lib/python3.10/dist-packages/starlette/concurrency.py", line 51, in _next
|     return next(iterator)
|   File "/mnt/data/hectorgao/workspace/GLM-4-Voice/model_server.py", line 87, in generate_stream_gate
|     for x in self.generate_stream(params):
|   File "/usr/local/lib/python3.10/dist-packages/torch/utils/_contextlib.py", line 35, in generator_context
|     response = gen.send(None)
|   File "/mnt/data/hectorgao/workspace/GLM-4-Voice/model_server.py", line 74, in generate_stream
|     inputs = tokenizer([prompt], return_tensors="pt")
|   File "/usr/local/lib/python3.10/dist-packages/transformers/tokenization_utils_base.py", line 3055, in call
|     encodings = self._call_one(text=text, text_pair=text_pair, **all_kwargs)
|   File "/usr/local/lib/python3.10/dist-packages/transformers/tokenization_utils_base.py", line 3142, in _call_one
|     return self.batch_encode_plus(
|   File "/usr/local/lib/python3.10/dist-packages/transformers/tokenization_utils_base.py", line 3338, in batch_encode_plus
|     return self._batch_encode_plus(
|   File "/usr/local/lib/python3.10/dist-packages/transformers/tokenization_utils.py", line 882, in _batch_encode_plus
|     first_ids = get_input_ids(ids)
|   File "/usr/local/lib/python3.10/dist-packages/transformers/tokenization_utils.py", line 849, in get_input_ids
|     tokens = self.tokenize(text, **kwargs)
|   File "/usr/local/lib/python3.10/dist-packages/transformers/tokenization_utils.py", line 695, in tokenize
|     tokenized_text.extend(self._tokenize(token))
|   File "/root/.cache/huggingface/modules/transformers_modules/tokenization_chatglm.py", line 82, in _tokenize
|     ids = self.tokenizer.encode(text)
|   File "/usr/local/lib/python3.10/dist-packages/tiktoken/core.py", line 120, in encode
|     return self._core_bpe.encode(text, allowed_special)
| pyo3_runtime.PanicException: index out of bounds: the len is 187 but the index is 187

tiktoken package version is too old,  update it


Move a devDep

event-stream is used, so the install from npm fails

@mehdishojaei ping. This package won't work when installed from npm

Hi, thanks for your attention. event-stream is not required at all. Yo can remove it from index.js and json.config files in another PR.


Save codegen output as CI artifact

Looks like the order of types in the generated output is unpredictable, so we need the actual file Scope was built with for debugging or profiling.
Also drive-by optimisation to stop saving the tarfile - we started in 441b71884b1d434221b8866e6719191eb975eff2, which offers no explanation as to why.

@bboreham what's happening with this?

Waiting for review?
I've restarted the CI build which failed for a reason that looks unrelated


[WIP] System visualization first draft. DO NOT MERGE!

This PR can be closed, superseded by https://github.com/ipa320/ros-model/pull/127


az redis update failing on upgrade command to 6.0 with send seperate request to update 'properties.redisVersion,properties.publicNetworkAccess'

This is autogenerated. Please review and update as needed.
Describe the bug
Unable to upgrade Redis Cache (with privateEndPoint) version from 4.0 to 6.0.
Command Name
az redis update --name foo-redis --resource-group foo-rg --set redisVersion="6"
Errors:
(BadRequest) The following updates can't be processed in one single request, please send seperate request to update them: 'properties.redisVersion,properties.publicNetworkAccess'.
RequestID=*****
Code: BadRequest
Message: The following updates can't be processed in one single request, please send seperate request to update them: 'properties.redisVersion,properties.publicNetworkAccess'.
RequestID=******

To Reproduce:

Setup Redis Cache version 4.0 with privateEndPoint & DNS Configuration (private DNS zone & DNS zone group).
Try upgrading Redis Cache version 6.0

Put any pre-requisite steps here...
az redis update --name {} --resource-group {} --set {}

Expected Behavior
Environment Summary
Linux-<IP_ADDRESS>-microsoft-standard-WSL2-x86_64-with-glibc2.27, Ubuntu 18.04.6 LTS
Python 3.10.10
Installer: DEB

azure-cli 2.47.0

Extensions:
azure-devops 0.26.0

Dependencies:
msal 1.20.0
azure-mgmt-resource 22.0.0

Additional Context

Thank you for opening this issue, we will look into it.

I encountered the same issue while updating a different property via az cli. The root cause is your publicNetworkAccess is disabled at the time of the redis upgrade. You need to temporarily enable publicNetworkAccess in order to proceed.


Docusaurus? 🦕

Hey! I'm creating a website and docs for the Coop DAO. Part of that involves creating documentation around the Aragon apps used to build the DAO so that people know how it works, why it works, and how they can build similar things.
I don't want to reinvent the wheel or do unnecessary work so I'm trying to learn about and link to all dev tools and tutorials in the Aragon ecosystem. Browsing through hack.aragon, the website UI and repo file structure is remarkably similar to the Coop DAO Docs... Did you guys use Docusaurus? I did! lol. This isn't an actual issue or anything I'm just curious.
Also, do you guys have plans to build tutorials and education resources around Auturk's new TPS apps? If so, that would be great to know so that we don't duplicate our efforts :)

Hey @burrrata, yes we use a modified version of Docusaurus.
There is no plan to build education around TPS yet that I'm aware. Is going to be a must on the near term future. I'm not sure the place where to put Aragon apps related documentation, maybe we should have a special section or even a hole new page.
As TPS are several apps in one you might need some help, I'll ping @hackingclimate he is really exited to help with documentation

Hi, @docusaurus maintainer here.
I see what you did here. Great job 😉

Thanks for pinging me @0xGabi!  @burrrata I'd be more than happy to work with you on tutorials and resources around TPS :)

@burrrata Most of the user-land documentation for the "core" apps (aragon-apps) is provided in the form of a user guide: https://wiki.aragon.org/tutorials/Aragon_User_Guide/.
We could think about how to scale this into potentially its own site where other applications could be listed, if we wanted to unify the documentation that way. Otherwise, I'd expect each flock team to provide some measure of documentation for their own applications, similar to a typical app store where the onus is on the developers.

@hackingclimate Awesome :) I think the most interesting thing would be to document the apps in the context of an actual DAO. Then in addition to explaining what the apps are and what they do, you can provide an example people can interact with. Then there's context that makes various design decisions or functionalities come to life. Not sure if the best way to do that would be an existing DAO that people use or a demo DAO/Template? Maybe it would be worth creating a DAO specifically to be used along-side the docs? I dunno, what do you think?

@burrrata I think documenting the apps in the context of an DAO is a great idea. I'm also not sure what the best approach is.. will have a think. When do you want to get started on this?

@hackingclimate It looks like we're launching a DAO called 1Hive that uses TPS apps. Part of the MVP is going to be creating user guides so that people can actually use the DAO comfortably and engage with the community. These docs will explain the TPS apps that are used in 1Hive, why they were chosen, and how they work. Currently we're using the the Dot Voting, Projects, and Allocations apps from TPS so we'll start there, but there's plans to upgrade to a V2 model in the next few months. Just opened an Issue to work on that and if you wanted to help us that would be awesome! 🐝

Not sure if the best way to do that would be an existing DAO that people use or a demo DAO/Template?

I like this idea, we may guide people to use create-aragon-app and give them a new Template file which deploy a DAO with all the apps we decide to include (similar to this or this)

Yeah that would be great! Maybe we could add that to the Ideas repo for V2, and then on V1 just do general explanations with text and pictures?

@0xGabi @hackingclimate
Just updated the 1HIve docs for the TPS apps used (allocations, dot-voting, projects). Turns out Autark already created a demo DAO with TPS enabled. Also anyone who wants can set up a new TPS enabled DAO on Rinkeby to explore the process themselves. Furthermore, Autark has integration guides for adding TPS to currently existing DAOs. There's also this walk through and brief descriptions with screenshots on the website. All that being said, TPS apps are still in testing and have not been deployed to mainnet yet and new bugs/changes are still possible.
For the purposes of 1Hive linking to the current resources/info makes the most sense because then as things change or the apps get upgraded we can just change a few links rather than having the overhead of writing all new docs. If you guys have any other ideas on how to make the material more interesting/engaging though I'm all for it :)

Started a project to make Hack.Aragon style developer hubs and documentation easy to build and maintain for every Aragon project.

https://github.com/burrrata/hack.aragon4all

To test out the idea I'm creating a demo dev-hub with docs for Autark's TPS. It's currently a WIP with placeholder content, but you can watch it iteratively being built here.

https://www.burrrata.ch/hack.aragon4all/

To refine the model I'm reaching out to everyone I can in the Aragon ecosystem to understand their desires and pain points around documentation and dev ux. This includes devs who build Aragon apps, but also devs who want to learn about and use Aragon apps. If anyone wants provide feedback on those things, or knows anyone who would that would be awesome! The best way to reach me is @burrrata on Keybase :)

Anyways, thought that might be interesting to you guys, but also, it's probably safe to close this Issue as I've answered/solved my own problem lol.


[SPARK-11829] [ML] Add read/write to estimators under ml.feature (II)

Add read/write support to the following estimators under spark.ml:

ChiSqSelector
PCA
VectorIndexer
Word2Vec

Test build #46323 has started for PR 9838 at commit 5e79781.

Test build #46323 has finished for PR 9838 at commit 5e79781.

This patch fails to build.
This patch merges cleanly.
This patch adds the following public classes (experimental):\n  *   class LogisticRegressionModelWriter(instance: LogisticRegressionModel)\n  *  class ChiSqSelectorModelWriter(instance: ChiSqSelectorModel) extends MLWriter\n  * class PCA (override val uid: String) extends Estimator[PCAModel] with PCAParams\n  *  class VectorIndexerModelWriter(instance: VectorIndexerModel) extends MLWriter\n  * final class Word2Vec(override val uid: String) extends Estimator[Word2VecModel] with Word2VecBase\n  *  class Word2VecModelWriter(instance: Word2VecModel) extends MLWriter\n

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/46323/
Test FAILed.

Merged build finished. Test FAILed.

Test build #46326 has started for PR 9838 at commit e3d5fc6.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/46325/
Test FAILed.

Jenkins, test this please.

Test build #46327 has started for PR 9838 at commit e3d5fc6.

Test build #46326 has finished for PR 9838 at commit e3d5fc6.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):\n  *  class ChiSqSelectorModelWriter(instance: ChiSqSelectorModel) extends MLWriter\n  * class PCA (override val uid: String) extends Estimator[PCAModel] with PCAParams\n  *  class VectorIndexerModelWriter(instance: VectorIndexerModel) extends MLWriter\n  * final class Word2Vec(override val uid: String) extends Estimator[Word2VecModel] with Word2VecBase\n  *  class Word2VecModelWriter(instance: Word2VecModel) extends MLWriter\n

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/46326/
Test PASSed.

Test build #46327 has finished for PR 9838 at commit e3d5fc6.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):\n  *  class ChiSqSelectorModelWriter(instance: ChiSqSelectorModel) extends MLWriter\n  * class PCA (override val uid: String) extends Estimator[PCAModel] with PCAParams\n  *  class VectorIndexerModelWriter(instance: VectorIndexerModel) extends MLWriter\n  * final class Word2Vec(override val uid: String) extends Estimator[Word2VecModel] with Word2VecBase\n  *  class Word2VecModelWriter(instance: Word2VecModel) extends MLWriter\n

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/46327/
Test PASSed.

Test build #46332 has started for PR 9838 at commit ec969de.

Test build #46332 has finished for PR 9838 at commit ec969de.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):\n  *  class ChiSqSelectorModelWriter(instance: ChiSqSelectorModel) extends MLWriter\n  * class PCA (override val uid: String) extends Estimator[PCAModel] with PCAParams\n  *  class VectorIndexerModelWriter(instance: VectorIndexerModel) extends MLWriter\n  * final class Word2Vec(override val uid: String) extends Estimator[Word2VecModel] with Word2VecBase\n  *  class Word2VecModelWriter(instance: Word2VecModel) extends MLWriter\n

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/46332/
Test PASSed.

LGTM except two minor issues commented inline.

Test build #46384 has started for PR 9838 at commit 0cb01a3.

Test build #46384 has finished for PR 9838 at commit 0cb01a3.

This patch passes all tests.
This patch merges cleanly.
This patch adds the following public classes (experimental):\n  *  class ChiSqSelectorModelWriter(instance: ChiSqSelectorModel) extends MLWriter\n  * class PCA (override val uid: String) extends Estimator[PCAModel] with PCAParams\n  *  class VectorIndexerModelWriter(instance: VectorIndexerModel) extends MLWriter\n  * final class Word2Vec(override val uid: String) extends Estimator[Word2VecModel] with Word2VecBase\n  *  class Word2VecModelWriter(instance: Word2VecModel) extends MLWriter\n

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/46384/
Test PASSed.

Merged into master and branch-1.6. Thanks!


Added trip planning endpoint

Cleaned up the readme a bit and added trip planning endpoints for direct and indirect trip planning

Thanks, Can you please remove irrelevant commits and rebase with master ?

Sorry about that, I fixed it now.

Thanks :heart:


onDataChange called receiving warning

I've tried the readValue method and managed to retrieved the records on Firebase realtime database.
Then I try to implement onDataChange with (MyClass.class, new DataChangeListener()) and override the onChange method.
When running my app, I saw below in Logcat:
W/ClassMapper: No setter/field for xxxx found on class ...MyClass
and onChange is not called.
Please find the definition of MyClass as below:
public class MyClass {
public String initials;
public String dateTime;
public String remarks;
public MyClass() {}
public MyClass(String initials, String dateTime, String remarks) {
    this.initials = initials;
    this.dateTime = dateTime;
    this.remarks = remarks;
}

public String getInitials() {
    return initials;
}

public void setInitials(String initials) {
    this.initials = initials;
}

public String getDateTime() {
    return dateTime;
}

public void setDateTime(String dateTime) {
    this.dateTime = dateTime;
}

public String getRemarks() {
    return remarks;
}

public void setRemarks(String remarks) {
    this.remarks = remarks;
}

}
What have I done wrong or missing?
Also, what I really want to do is to maintain some sort of hall of fame records in Firebase database and display. How should I code to retrieve the 10 latest records from the database? or I need to wait for the next release for filtering/query feature?
Thanks in advance.
Herman

Hi!
Unfortunately at this point is no way to get limited number of rows. You can try limit records by structure.
Yes, support for filtering/querying will be here in next release - but at this moment i don't know when it will be.
Can you put some sample code, how do you call GdxFireapp API?

Please refer to the sample code I mentioned in #4. Thanks.

W/ClassMapper: No setter/field for xxxx found on class ... is throwing when there are some fields inside DB which your POJO does not cover by setters. Look here: https://firebase.google.com/support/guides/firebase-android#update_your_java_model_objects .
GdxFireapp Api ignore unknown fields on ios, but i still working on it at android platform.
I'll let you know here when I'm done - very soon

Thanks for the reference link. I'll study it. Thanks.

Recently used v1.3.1. The warning is gone on both Android and ios! Thanks anyway!


"bdf" directory and general directory structure

Inside the "bdf" dir there's boatd definition files and a MIO.tcl which are the presets for the PS7 for some base configuration.
readme says to copy to */board_files in VIvado, but not what MIO is.
Personally I like the idea of placing all support files in a directory as sub-dirs of a "etc", or "support" or whatever directory.
In addition to the actual bdf and MIO presets I would add to the project:  BDFs, presets for different PS configurations, constraint files, base block diagrams that can be used to start out designs...

Under linux, seeing what we hae there maybe we can have sub-dirs for buildroot, petalinux, and then different versions. For example, for the new buildroot and xilinx kernel and u-boot branches for example. I would keep the on ethat's there and works but place it in a subdir of some sort...
Maybe linux/buildroot/xxx where xxx might refer to... something  :-)


Can't find the python path with python3

Issue Description:
When I attempt to call pipenv shell, it does not create the virtual env and fails with an error.
Pretty sure this is related to closed issue 3363.
Steps to replicate
I've got a fresh install of Windows 10, with the windows Ubuntu utility.
The python version on my Windows install is 3.7.3. The python version on Ubuntu is 3.6.8, and there is no alias for python --
kate@orion:/mnt/c/Users/kate$ python --version

Command 'python' not found, but can be installed with:

sudo apt install python3
sudo apt install python
sudo apt install python-minimal

You also have python3 installed, you can run 'python3' instead.

I'm going to go attempt to fix this by adjusting my PATH variable, but I figured it was worth mentioning as this is my experience with freshly installed, out of the box a) windows, b) the linux on windows supported experience c) python on windows.
pipenv --support output from the bash shell (ubuntu)
$ pipenv --support
Pipenv version: '2018.11.26'
Pipenv location: '/home/kate/.local/lib/python3.6/site-packages/pipenv'
Python location: '/usr/bin/python3'
Python installations found:
['Traceback (most recent call last):\n', '  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 160, in _create_subprocess\n    combine_stderr=combine_stderr)\n', '  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 134, in _spawn_subprocess\n    return subprocess.Popen(cmd, **options)\n', '  File "/usr/lib/python3.6/subprocess.py", line 729, in __init__\n    restore_signals, start_new_session)\n', '  File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child\n    raise child_exception_type(errno_num, err_msg, err_filename)\n', "OSError: [Errno 8] Exec format error: '/mnt/c/Users/kate/AppData/Local/Microsoft/WindowsApps/python.exe'\n", '\nDuring handling of the above exception, another exception occurred:\n\n', 'Traceback (most recent call last):\n', '  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/vistir/contextmanagers.py", line 150, in spinner\n    yield _spinner\n', '  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 314, in run\n    write_to_stdout=True\n', '  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 162, in _create_subprocess\n    sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))\n', 'TypeError: write() takes exactly one argument (3 given)\n']
Traceback (most recent call last):
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 160, in _create_subprocess
    combine_stderr=combine_stderr)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 134, in _spawn_subprocess
    return subprocess.Popen(cmd, **options)
  File "/usr/lib/python3.6/subprocess.py", line 729, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.6/subprocess.py", line 1364, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
OSError: [Errno 8] Exec format error: '/mnt/c/Users/kate/AppData/Local/Microsoft/WindowsApps/python.exe'

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/home/kate/.local/bin/pipenv", line 11, in <module>
    sys.exit(cli())
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 764, in __call__
    return self.main(*args, **kwargs)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 717, in main
    rv = self.invoke(ctx)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 1114, in invoke
    return Command.invoke(self, ctx)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 956, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/click/decorators.py", line 64, in new_func
    return ctx.invoke(f, obj, *args, **kwargs)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/click/core.py", line 555, in invoke
    return callback(*args, **kwargs)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/cli/command.py", line 146, in cli
    get_pipenv_diagnostics()
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/help.py", line 33, in get_pipenv_diagnostics
    python_paths = finder.find_all_python_versions()
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/pythonfinder.py", line 136, in find_all_python_versions
    major=major, minor=minor, patch=patch, pre=pre, dev=dev, arch=arch, name=name
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 328, in find_all_python_versions
    values = list(self.get_pythons(sub_finder))
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 279, in get_pythons
    reverse=True
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 277, in <genexpr>
    (p for p in self._filter_paths(finder) if p.is_python),
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 264, in <genexpr>
    pth for pth in unnest(finder(p) for p in self.path_entries if p is not None)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/utils.py", line 251, in unnest
    for el in target:
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 264, in <genexpr>
    pth for pth in unnest(finder(p) for p in self.path_entries if p is not None)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/mixins.py", line 76, in find_all_python_versions
    path_filter = filter(None, (sub_finder(p) for p in self.children.values()))
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/cached_property.py", line 35, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 501, in children
    for child_key, child_val in self._gen_children():
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 493, in _gen_children
    entry = PathEntry.create(path=child, **pass_args)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 575, in create
    _new = cls(**creation_args)
  File "<attrs generated init c86539da5486ad599344bbea207791652ee09597>", line 16, in __init__
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/path.py", line 518, in get_py_version
    py_version = PythonVersion.from_path(path=self, name=self.name)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/models/python.py", line 395, in from_path
    py_version = get_python_version(path.path.absolute().as_posix())
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/pythonfinder/utils.py", line 68, in get_python_version
    combine_stderr=False, write_to_stdout=False)
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 314, in run
    write_to_stdout=True
  File "/home/kate/.local/lib/python3.6/site-packages/pipenv/vendor/vistir/misc.py", line 162, in _create_subprocess
    sys.stderr.write("Error %s while executing command %s", exc, " ".join(cmd._parts))
TypeError: write() takes exactly one argument (3 given)

Adding an alias in my bash profile for python = python3 worked to allow correct pipenv shell creation, but I'm still getting the write error with pipenv --support.

Related: #3488

I will add this comment here as well, taken from https://github.com/pypa/pipenv/issues/3488
In the Windows 10, May 2019 update (19.03) python.exe and python3.exe are found by default, but they do not point to a real Python executable. I.e. a user have these without having installed Python in Windows. Read this announcement https://devblogs.microsoft.com/python/python-in-the-windows-10-may-2019-update/ and more specifically this quote:

Finally, with the May 2019 Windows Update, we are completing the picture. While Python continues to remain completely independent from the operating system, every install of Windows will include python and python3 commands that take you directly to the Python store page.

I get this failure even though I have only installed python into the WSL distribution, and my project resides in the /home/username/ dir.
11:56:55 computer1 ~/code/scrapy (master)$ which python
/usr/bin/python
11:57:01 computer1 ~/code/scrapy (master)$ which python3
/usr/bin/python3
11:57:04 computer1 ~/code/scrapy (master)$ printenv PATH
/home/username/code/scrapy/.venv/bin:/home/username/.pyenv/shims:/home/username/.pyenv/bin:/home/username/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/mnt/c/Program Files/WindowsApps/CanonicalGroupLimited.UbuntuonWindows_1804.2019.521.0_x64__79rhkp1fndgsc:/mnt/c/WINDOWS/system32:/mnt/c/WINDOWS:/mnt/c/WINDOWS/System32/Wbem:/mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/:/mnt/c/WINDOWS/System32/OpenSSH/:/mnt/c/Users/username/AppData/Local/Microsoft/WindowsApps:/snap/bin

This completely breaks working in WSL and automatic installing like with pyenv, or using direnv with  layout_pipenv. And the user on the 2019 May update has not even installed in Windows.

@frostming Do you know if there was an issue opened in pythonfinder? I could not find one.

The fix in #3853 has not been released on Pypi. The latest release on Pypi is a year old. (I wish GitHub issues were kept open until the fix was released.)

The fix is now available in a prerelease; see #3369 to track when the maintainers will publish the next release.


trigger resize on update if needed

Fixes #5641 and #5609
I didnt test it yet.
I'd like to add deprecation for BaseTexture.source.

Haha, my wife computer has different credentials for git

@ivanpopelyshev moving this to master

Now it works : https://www.pixiplayground.com/#/edit/nptPNFqJj~s3y3rv3oSIi

In v4 noFrame option never was true after constructor and texture auto resize worked only because onBaseTextureUpdate worked for all textures, which is wrong.
Now I preserve noFrame flag. We can tidy the code later.


How to include stats.h5 of PWG Vocoder during ONXX conversion for TTS

Hi..
I am trying to convert pretrained LJSpeech TTS model based on kan-bayashi/ljspeech_fastspeech2 and parallel_wavegan/ljspeech_parallel_wavegan.v1 using the below code:
########################### ONNX Conversion ############################
from espnet2.bin.tts_inference import Text2Speech
from espnet_onnx.export import TTSModelExport
m = TTSModelExport()
tag_exp = "exp/tts_train_fastspeech2_raw_phn_tacotron_g2p_en_no_space/train.loss.ave_5best.pth"
train_config="exp/tts_train_fastspeech2_raw_phn_tacotron_g2p_en_no_space/config.yaml"
vocoder_tag = 'parallel_wavegan.v1/checkpoint-400000steps.pkl'
vocoder_config= 'parallel_wavegan.v1/config.yml'
text2speech = Text2Speech.from_pretrained(
train_config=train_config,
model_file=tag_exp,
vocoder_file=vocoder_tag,
vocoder_config=vocoder_config,
speed_control_alpha=1.0,
always_fix_seed=False
)
tag_name = 'ljspeech_pretrained'
m.export(text2speech, tag_name, quantize=True)
########################### Inference ############################
from espnet_onnx import Text2Speech
import soundfile
import numpy as np
import time
text2speech = Text2Speech(tag_name)
text = 'hello world!'
wav = wav['wav']
soundfile.write("ljspeech_pretrained_test.wav", wav, 22050, "PCM_16")
######################################################################
On synthesizing, the audio quality is very low.
I realized that the converted ONNX folder did not have stats.h5 file from the pwg vocoder folder.
~/.cache/espnet_onnx/ljspeesch_pretrained/: config.yaml  feats_stats.npz  full  quantize
Can anyone please help how to include the stats.h5 during inference using espnet_onnx

Hi @anirpipi, sorry for the late reply, and thank you for reporting the issue.
It may be a bug, so I would like to check this problem.
It seems you are using your own trained model, can you confirm that this issue still happens with the published models? If it's reproducible, I will download the model and investigate this.

Hi..Thanks for the response.
Its the same case with pre-trained models also..
For VITS, its fine but for FastSpeech2+PWG, the problem occurs..
Can you please look into it once
Thanks in advance


Spelling mistake in the display elements - "Brazie", not "Brazil"

I don't know if this comes from the metadata, or whether this is hard coded somewhere... I can't find anything in this repo...
Look at https://met.refeds.org/met/federation/cafe-federation/ to see the mistake (Country: Brazie).

Fixed.


NLog-Contrib should be renamed to NLog.Contrib?

The repository NLog-Contrib should be renamed to NLog.Contrib. That would be more consistent.

Hopefully the NLog-Contrib repository will be remove completely and move it different repositiories only containing the targets code needed for the specific feature

I even like that more!


Broken Example Code

NSData deviceToken should be converted to base64 string. The example on this page is now broken with iOS 13. More details here: https://nshipster.com/apns-device-tokens/

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

ID: 918d6206-576d-9c12-5193-bf0cb5037849
Version Independent ID: 3040e5a2-79ae-ecc5-778b-4c156c6f891c
Content: Push Notifications in iOS - Xamarin
Content Source: docs/ios/platform/user-notifications/deprecated/remote-notifications-in-ios.md
Product: xamarin
Technology: xamarin-ios
GitHub Login: @conceptdev
Microsoft Alias: crdun

See this question for a code sample free from hackery: How to get device token in iOS 13 with Xamarin?
byte[] result = new byte[deviceToken.Length];
Marshal.Copy(deviceToken.Bytes, result, 0, (int) deviceToken.Length);
var token = BitConverter.ToString(result).Replace("-", "");

This is one of many Xamarin bugs that got uncovered by iOS 13. It sure would be nice if it were possible to find all the places where "throw it at the wall and see if it sticks" style coding that happens to work in the moment, and replace them with solid software engineering where iOS experts write libraries and samples based on knowledge of the API's actual guarantees. Otherwise, we'll expect to see more problems like this as iOS continues to move forward.

And this for reference: https://github.com/Azure/azure-notificationhubs-ios/pull/31/files#diff-675498bb0c47314c4e394a2e8b4da2ccR82-R89

Thanks for submitting an issue and we apologize for the delayed response. The requested updates haven't been made since the creation of the issue, and the timeline for resolution may vary based on resourcing, so the issue is being moved to an internal repo to better track it.


fix: recognize postional-only arguments

Issue: https://github.com/jshwi/docsig/issues/144
Not thoroughly tested, but it resolves the issue for me.

Thanks for spotting this one, looks good so far!
$ read -r -d '' string <<'EOF'
def starmap(
    # self, docsig cannot confirm this is a method
    fun: Callable[..., Any],
    iterable: Sequence[Sequence[Any]],
    /,
    *args: Any,
    timeout: float = 0,
    show_progress: bool | None = None,
    **kwargs: Any,
) -> list[Job]:
    """Submits many jobs to the queue.

    One for each sequence in the iterable.
    Waits for all to finish, then returns the results.

    Args:
        fun: ...
        iterable: ...
        *args: static arguments passed to the function.
        timeout: ...
        show_progress: ...
        **kwargs: static keyword-arguments passed to the function.

    Returns:
        ...
    """
    pass
EOF

$ docsig -s "$string"
# 1
# 	E102: includes parameters that do not exist
# 	E101: parameters out of order

$ echo $?
# 1

$ git checkout support-pos-only-args
# Switched to branch 'support-pos-only-args'

$ docsig -s "$string"
#
$ echo $?
# 0

I'll kick off the CI

Ok, I know how to make this pass, can you add this test to tests/init.py (bottom of the file is fine)
The setup is a little unconventional, but with it we can put together a lot of tests with a single addition (6 in this instance)
$ poetry run pytest | grep issue-1-1-4 | cat -n
     1	tests/_test.py::test_ignore_kwargs[p-issue-1-1-4-pos-only-args-w-args-w-kwargs-n] PASSED [ 11%]
     2	tests/_test.py::test_exit_status[p-issue-1-1-4-pos-only-args-w-args-w-kwargs-n] PASSED [ 51%]
     3	tests/_test.py::test_string_argument[p-issue-1-1-4-pos-only-args-w-args-w-kwargs-n] PASSED [ 62%]
     4	tests/_test.py::test_ignore_no_params[p-issue-1-1-4-pos-only-args-w-args-w-kwargs-n] PASSED [ 77%]
     5	tests/_test.py::test_ignore_args[p-issue-1-1-4-pos-only-args-w-args-w-kwargs-n] PASSED [ 90%]
     6	tests/_test.py::test_no_stdout[p-issue-1-1-4-pos-only-args-w-args-w-kwargs-n] PASSED [ 91%]

The name of the test effects how it will be processed (though it's not especially important if you copy and paste it to the end of the file, just that the name needs to remain the same)

P: We expect it to pass without extra conditions
WArgs: This includes *args, so we expect it to fail with -a/--ignore-args
WKwargs: This includes *kwargs, so we expect it to fail with -k/--ignore-kwargs

@_templates.register
class _PIssue114PosOnlyArgsWArgsWKwargsN(_BaseTemplate):
    @property
    def template(self) -> str:
        return """
def starmap(
    fun: Callable[..., Any],
    iterable: Sequence[Sequence[Any]],
    /,
    *args: Any,
    timeout: float = 0,
    show_progress: bool | None = None,
    **kwargs: Any,
) -> list[Job]:
    \"\"\"Submits many jobs to the queue.

    One for each sequence in the iterable.
    Waits for all to finish, then returns the results.

    Args:
        fun: ...
        iterable: ...
        *args: static arguments passed to the function.
        timeout: ...
        show_progress: ...
        **kwargs: static keyword-arguments passed to the function.

    Returns:
        ...
    \"\"\"
"""

    @property
    def expected(self) -> str:
        return ""

More on how the tests are processed here https://github.com/jshwi/docsig/blob/master/CONTRIBUTING.md#testing
With this we're still not hitting line 184 in docsig._function
Name                  Stmts   Miss  Cover   Missing
---------------------------------------------------
docsig/__init__.py        5      0   100%
docsig/_config.py        26      0   100%
docsig/_core.py          30      0   100%
docsig/_display.py      120      0   100%
docsig/_function.py     180      1    99%   184
docsig/_main.py           5      0   100%
docsig/_module.py        42      0   100%
docsig/_objects.py       17      0   100%
docsig/_report.py       119      0   100%
docsig/_utils.py          6      0   100%
docsig/_version.py        1      0   100%
docsig/messages.py       19      0   100%
tests/__init__.py      2142      0   100%
tests/_test.py           85      0   100%
tests/_utils.py           7      0   100%
tests/conftest.py        21      0   100%
tests/misc_test.py       49      0   100%
---------------------------------------------------
TOTAL                  2874      1    99%

The reason for this is that this is not actually doing anything
-        if ismethod and not isstaticmethod and arguments.args:
-            arguments.args.pop(0)
+        if ismethod and not isstaticmethod:
+            if arguments.posonlyargs:
+                arguments.posonlyargs.pop(0)
+            elif arguments.args:
+                arguments.args.pop(0)

The arg being popped is only relevant for self, as (at least for now) the tool completely ignores self when handling a method. All it does is remove self when it confirms this is in fact a method, and this is also not a static method (in which case it must include self)
Please add the test, and undo that change, and the CI should pass 😄, then I'll merge this and publish the updated release to PyPI so it's ready to use
Again thank you! I'm happy you spotted this one, and really appreciate you submitting the PR and actively resolving the issue
Cheers!
Stephen

Hi @fresh2dev,
Just added a test, all looks good
I'll revert this
diff --git a/docsig/_function.py b/docsig/_function.py
index 21e9f7f..ff8c133 100644
--- a/docsig/_function.py
+++ b/docsig/_function.py
@@ -178,12 +178,8 @@ class _Signature(_DocSig):
         ignore_kwargs: bool = False,
     ) -> None:
         super().__init__(ignore_args, ignore_kwargs)
-
-        if ismethod and not isstaticmethod:
-            if arguments.posonlyargs:
-                arguments.posonlyargs.pop(0)
-            elif arguments.args:
-                arguments.args.pop(0)
+        if ismethod and not isstaticmethod and arguments.args:
+            arguments.args.pop(0)

         self._args.extend(
             a if isinstance(a, Param) else Param(name=a.name)

As all it is doing is removing the first arg (self) in a non-static method
And as such the condition is never met and is not being covered
Name                  Stmts   Miss  Cover   Missing
---------------------------------------------------
docsig/__init__.py        5      0   100%
docsig/_config.py        26      0   100%
docsig/_core.py          30      0   100%
docsig/_display.py      120      0   100%
docsig/_function.py     180      1    99%   184
docsig/_main.py           5      0   100%
docsig/_module.py        42      0   100%
docsig/_objects.py       17      0   100%
docsig/_report.py       119      0   100%
docsig/_utils.py          6      0   100%
docsig/_version.py        1      0   100%
docsig/messages.py       19      0   100%
tests/__init__.py      2142      0   100%
tests/_test.py           85      0   100%
tests/_utils.py           7      0   100%
tests/conftest.py        21      0   100%
tests/misc_test.py       49      0   100%
---------------------------------------------------
TOTAL                  2874      1    99%

Thanks again for spotting this and taking the time out to fix it, really appreciate it! I'll get this to pypi so it can be used.

Hey, thanks for the prompt attention on this! Regarding this revert...
diff --git a/docsig/_function.py b/docsig/_function.py
index 21e9f7f..ff8c133 100644
--- a/docsig/_function.py
+++ b/docsig/_function.py
@@ -178,12 +178,8 @@ class _Signature(_DocSig):
         ignore_kwargs: bool = False,
     ) -> None:
         super().__init__(ignore_args, ignore_kwargs)
-
-        if ismethod and not isstaticmethod:
-            if arguments.posonlyargs:
-                arguments.posonlyargs.pop(0)
-            elif arguments.args:
-                arguments.args.pop(0)
+        if ismethod and not isstaticmethod and arguments.args:
+            arguments.args.pop(0)

         self._args.extend(
             a if isinstance(a, Param) else Param(name=a.name)

...while I don't understand the total implications, I do understood the intent. What I observed is that, when any arg is positional-only, self is inherently a positional-only arg as well, and it exists as the first item in arguments.posonlyargs. i.e., self (or cls) exists in one or the other (args or posonlyargs), depending on whether / is provided in the function signature.
 'args': [],
 'posonlyargs': [<AssignName.self l.819 at 0x7f53bc2d8b20>,
                 <AssignName.fun l.820 at 0x7f53bc2d8b50>,
                 <AssignName.iterable l.821 at 0x7f53bc2d8b80>],

That's why I made the change that I did. While the original logic I wrote seems appropriate, I of course trust your judgement (and your tests!) more than my limited understanding. :clinking_glasses:

hey @fresh2dev,
i might have jumped the gun with this one, could you please submit that change with a PR again? I'll add a new test

All good I was able to cherry pick the commit, so you're changes still apply, sorry about that, I should have enquired further as to the purpose of the change. You're right, the results are different with a class, I'll push this change to pypi now

ok that should be implemented now 😄 pushing to pypi

Godspeed sir :rocket: Thanks again :fist_right: :fist_left:

And thank you for your work in improving this package! 😄


SAKIII-4555 - Set permissions on the authorizable of private profiles

https://jira.sakaiproject.org/browse/SAKIII-4555

Merged via squash


[Umbrella Issue] Multilingual Support

At present, we do not have immediate plans to introduce multilingual support for our deployed web research preview. However, we are strong advocates for making AI technology more inclusive and accessible to speakers of various languages.
As part of this commitment, we want to support the community in adapting STORM for use in other languages. This issue serves as a space for discussion, sharing experiences, and collaboration on efforts to expand STORM's multilingual capabilities.
We encourage anyone interested in this effort to share their attempts, insights, or challenges here. For example, we have already seen initial success in adding support for Arabic (#169). Team members will be actively involved in the discussion to provide support.

Title: Article Outline Disordered After Modifying WriteLeadSection for Chinese Output
Description:
To enable Storm to generate articles in Chinese, we modified the prompt in the WriteLeadSection method of the ArticleGenerationModule, requesting the output to be in Chinese. After making this change, the generated initial article outline became disorganized and was not assembled according to the specified outline sequence.
Steps to Reproduce:

Modify the prompt in WriteLeadSection to request Chinese output.
Generate an article using the modified module.
Observe the structure of the generated article outline.

Expected Behavior:

The article outline should be generated in Chinese and assembled according to the predefined outline sequence.

Actual Behavior:

The generated article outline is disordered and does not follow the intended sequence.

Additional Information:

The issue began after changing the prompt for Chinese output.
This problem may affect other non-English language outputs as well.

Request:

Investigate the cause of the disordered outline when the prompt is set to Chinese.
Provide a fix or guidance on how to maintain the correct outline sequence with Chinese output.

@zhoucheng89 would you please share the full system log directory as a zip file?

@zhoucheng89您能将完整的系统日志目录以 zip 文件形式分享吗？

finding_key_players_in_complex_networks.zip

@zhoucheng89您能将完整的系统日志目录以 zip 文件格式分享吗？

finding_key_players_in_complex_networks.zip

I just checked out the issue. Given Steps to Reproduce include "Modify the prompt in WriteLeadSection to request Chinese output", I think I need to do more experiment on my side to see how to better support non-English languages instead of directly debugging your provided log.
I will follow up in this thread once I have progress.

@shaoyijia ok,thanks. Waiting for your good news

Hi @zhoucheng89 , sorry for the late response. I finally got time to look into this issue today. Here are the changes I made to make STORM support Chinese. (Note: This is not a very well-polished version but for demonstration-purpose only. I recommend run more experiments on your side)
In general, to make STORM support non-English languages, you need to confirm or modify the following things:

The retrieval module needs to be able to retrieve information in the target language.

For example, in my experiment, I change YouRM to make sure it can search Chinese websites and produce Chinese snippets.
If you look at the raw_search_results.json in your provided zip file, all the snippets are still in English. There is no way for STORM to generate the correct final article in Chinese, since STORM is a knowledge curation system grounding on the retrieved information.

The query generated by STORM needs to be in the target language. This can make it easier for the retrieval module to retrieve information in the target language (basically, the language of the query and the language of the results are the same).

To achieve this, you can require the simulated Wikipedia Writer to ask questions in Chinese and the simulated Topic Expert to break down queries and answer questions in Chinese. See my change for example.

The outline needs to be generated in the target language.

See my change for example.

The final article needs to be generated in the target language. To do so,

You need to change the embedding model to a model that process the target language; otherwise, the information table for each section would be wrong. For example, I use paraphrase-multilingual-MiniLM-L12-v2 in my example (see my change here).
You need to modify the prompt for generating the section. See my change here.

It's also suggested to change ArticleTextProcessing to handle corner cases in the target language.

Hope my answer provides you with pointers to modify STORM for your use case. If you are willing to polish my example and provide a STORM (Chinese) version, we are happy to link it in our README.md - I believe this contribution would help many people.

Hi @zhoucheng89 , thanks for testing it out and looking into the codebase.

However, the word count of the article I run is always 3400 words

Are you running with do_polish_article set as True? If this is set as True, after the article is generated, STORM will do a round of global refinement. This may lead to a long article being truncated due to the output length limit of the language model you use (please also check what's the value of max_tokens for the language model you use for each step.

Before generating the outline, I recalled more similar snippets through paraphrase-multilingual-MILM-L12-v2

This seems to be problematic. The embedding model is only used when STORM extends the outline into the final article. I don't think you shall call the embedding model before generating the outline.

The chapter order of the article was inconsistent with the chapter order in the outline.

Is the order for first-level heading (those headings marked with "#") correct or not? As elaborated here, STORM only forces the first-level heading to follow the planned outline and don't apply requirement for second/third/...-level heading to allow flexibility for article generation. You can change its behavior by modifying ArticleGenerationModule.
However, if the order for first-level heading does not follow the planned outline, this is not as expected and we can help look into it if you provide more details on what command you run and what results you get.

@shaoyijia  Can you add me as a contributor，because I have discovered a bug but am unable to submit code.
[SerperRM Bug]
valid_url_to_snippets.get(url, {}) get none value.
call strip function will be fix it. just like url.strip("'")

The result of running Storm last time was very hollow because my code was not updated. Now that I have updated to the latest code, I am planning to run it again. I am glad that you have introduced the co story mechanism, which will help users intervene in a timely manner before paper generation. I believe the biggest difference between dialogue mode and collaboration mode is the addition of a moderator and users. The moderator can guide users to intervene, which will promptly correct the confusing answers generated during the roundtable discussion process. This mechanism is great, and I will read the code of the collaboration mechanism in a timely manner and try to support it in Chinese.

Thank you! For contribution, please follow the steps below:

Click "Fork" on https://github.com/stanford-oval/storm
Clone the forked repository. The forked repository is under your account so you have full access to it.
Follow CONTRIBUTING.md to install pre-commit hook which will take care of the python code format.
Make edits on your forked repository and commit the change.
Create a PR to contribute your change to our main branch.

@shaoyijia I want to modify the Chinese version of SerperRM. I need to modify the search API. I modified the code on the dev Chinese branch after forking. Am I submitting a pull request directly from the dev Chinese branch after forking to the dev Chinese branch of Storm?


Update tutorial sample apps to use tensorflow import

still see cla/licenses Expected — Waiting for status to be reported - merging ...


workflows: remove test exception from EKS

This was a leftover from https://github.com/cilium/cilium-cli/issues/57 that was since fixed.
PR for testing workflow changes: #376

EKS test successful, so at least the PR itself is sound.
Go test https://github.com/cilium/cilium-cli/actions/runs/950721365 failed with:
 go test -timeout=5s -race -cover $(go list ./...)
?   	github.com/cilium/cilium-cli/clustermesh	[no test files]
?   	github.com/cilium/cilium-cli/cmd/cilium	[no test files]
?   	github.com/cilium/cilium-cli/config	[no test files]
?   	github.com/cilium/cilium-cli/connectivity	[no test files]
?   	github.com/cilium/cilium-cli/connectivity/check	[no test files]
?   	github.com/cilium/cilium-cli/connectivity/filters	[no test files]
?   	github.com/cilium/cilium-cli/connectivity/tests	[no test files]
?   	github.com/cilium/cilium-cli/defaults	[no test files]
?   	github.com/cilium/cilium-cli/hubble	[no test files]
# github.com/cilium/cilium-cli/internal/utils [github.com/cilium/cilium-cli/internal/utils.test]
internal/utils/exec_test.go:20:2: check redeclared as imported package name
	previous declaration at internal/utils/utils.go:27
ok  	github.com/cilium/cilium-cli/install	0.308s	coverage: 1.4% of statements
?   	github.com/cilium/cilium-cli/internal/certs	[no test files]
?   	github.com/cilium/cilium-cli/internal/cli/cmd	[no test files]
?   	github.com/cilium/cilium-cli/internal/k8s	[no test files]
FAIL	github.com/cilium/cilium-cli/internal/utils [build failed]
ok  	github.com/cilium/cilium-cli/status	0.268s	coverage: 71.3% of statements
?   	github.com/cilium/cilium-cli/sysdump	[no test files]
FAIL
make: *** [Makefile:69: test] Error 2
Error: Process completed with exit code 2.

GKE test https://github.com/cilium/cilium-cli/actions/runs/950721302 failed with #344:
  [-] Scenario [allow-all/pod-to-remote-nodeport]
  [.] Action [allow-all/pod-to-remote-nodeport/curl-0: cilium-test/client-7b7bf54b85-fgwd9 (<IP_ADDRESS>) -> cilium-test/echo-other-node (echo-other-node:8080)]
  ❌ command "curl -w %***local_ip***:%***local_port*** -> %***remote_ip***:%***remote_port*** = %***response_code*** --silent --fail --show-error --connect-timeout 5 --output /dev/null http://<IP_ADDRESS>:31623" failed: command terminated with exit code 7

[...]

   ❌ Flow validation failed for pod cilium-test/client-7b7bf54b85-fgwd9: 1 failures (first: -1, last: -1, matched: 0)

  📄 Flow logs for pod cilium-test/client-7b7bf54b85-fgwd9:
  ❓ [0] Jun 18 18:23:24.847: cilium-test/client-7b7bf54b85-fgwd9:44832 -> <IP_ADDRESS>:31623 from-endpoint FORWARDED (TCP Flags: SYN)
  ❓ [1] Jun 18 18:23:24.847: cilium-test/client-7b7bf54b85-fgwd9:44832 -> <IP_ADDRESS>:31623 all FORWARDED (TCP Flags: SYN)
  ❓ [2] Jun 18 18:23:24.847: cilium-test/client-7b7bf54b85-fgwd9:44832 -> <IP_ADDRESS>:31623 to-stack FORWARDED (TCP Flags: SYN)
  ❓ [3] Jun 18 18:23:24.848: <IP_ADDRESS> -> cilium-test/client-7b7bf54b85-fgwd9 from-stack FORWARDED (ICMPv4 DestinationUnreachable(Port))
  ❓ [4] Jun 18 18:23:24.848: <IP_ADDRESS> -> cilium-test/client-7b7bf54b85-fgwd9 to-endpoint FORWARDED (ICMPv4 DestinationUnreachable(Port))

[...]

📋 Test Report
❌ 1/9 tests failed (1/81 actions), 0 warnings, 0 tests skipped, 0 scenarios skipped:
Test [allow-all]:
  ❌ allow-all/pod-to-remote-nodeport/curl-0: cilium-test/client2-666976c95b-jxml8 (<IP_ADDRESS>) -> cilium-test/echo-other-node (echo-other-node:8080)
error: cannot exec into a container in a completed pod; current phase is Failed

We'll have to make a test PR switching from pull_request_target to pull_request for testing if the EKS workflow works, I'll do that when I'm back.

This will also need a rebase to fix the unit test build failure caused by the check name redeclaration (https://github.com/cilium/cilium-cli/pull/339/checks?check_run_id=2860841188). This was fixed in commit 2f9ac9b2e2cb8d3cd0246c56c3ca38035d04f2a3

EKS test from test PR successful: https://github.com/cilium/cilium-cli/actions/runs/979777872


Please update the reference link for the "Binding from a Control Template" topic?

The ref link in the page goes to a "404 - Page not found" page

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

ID: 4aad53c7-7e3e-9018-9781-060d9cab9e6c
Version Independent ID: d78c65af-9f3d-8871-b486-fba96b39247d
Content: Consuming XAML Markup Extensions - Xamarin
Content Source: docs/xamarin-forms/xaml/markup-extensions/consuming.md
Product: xamarin
GitHub Login: @davidbritch
Microsoft Alias: dabritch

Thanks for letting us know, fixing now.


GC Issue

Expected Behavior
Open Image Picker View
Actual Behavior
Not crushed but MainActivity(FragmentActivity) and Fragment was destroyed.
Steps to Reproduce the Problem

open image picker using launcher.launch in fragment
go to download folder and select image ( download folder has many gif images : <= 27 MB  )
repeat step 1 and 2
Not crushed but MainActivity and Fragment was destroyed and recreated.
As 4 step. Fragment ViewModel was recreated and selected data saved in ViewModel was cleared.

Log cat

Waiting for a blocking GC Alloc
Background young concurrent copying GC freed 78625(3271KB) AllocSpace objects, 74(30MB) LOS objects, 0% free, 156MB/156MB, paused 2.560ms total 286.331ms
WaitForGcToComplete blocked Alloc on ProfileSaver for 50.512ms
Starting a blocking GC Alloc
MainActivity and Fragment was destroyed and recreated.

If using default image folder ( not download folder, this folder has 2 images <= 1 MB ) that worked perfect so I think it is memory issue.

Specifications

Image Picker Version: 3.0.0-beta01
Android OS: 30 Android 11.0
Phone: Galaxy Note 9

I have fixed @chosw1029 : https://github.com/esafirm/android-image-picker/pull/419


BUG Fix signature of D_IIR_forback(1,2)

The precision parameter has type float but it is declared in _splinemodule.c
with type double.
From the code it looks to me like precision is supposed to be type float,
since err is also declared as a float, but it would also be possible to
switch the definition of the function.
I am a bit surprised this wasn't detected, since it seems like this should
be very buggy. Is this function used in the test suite ever? Why doesn't
this invalid declaration cause linker errors?

did this issue show up for you in Pyodide?

Yup, it's a linker error.

the declarations in _splinemodule.c are correct. So it's _bspline_util.c.in that needs fixing instead.

That does make more sense. I can go make the other change in that case.

I guess we always link with -Wl,--fatal-warnings in Pyodide so that may be a factor here.

I think it would be a good idea to split the declarations from _splinemodule.c into a separate header file and #include them into _bpline_util.c.in too. Then if there is an inconsistency it can be noticed at compile time (instead of at link time, at load time, at runtime, or never as the case may be).

So I need the template to automatically remove __complex__:
double => double
__complex__ double => double
float => float
__complex__ float => float

I think it would be a good idea to split the declarations from _splinemodule.c into a separate header file and #include them into _bpline_util.c.in too.

Agreed, good idea.

So I need the template to automatically remove __complex__:

I pushed a commit that fixes things locally - I think it should make CI happy.

Okay, this is happy now modulo a few unrelated test failures due to changes in numpy main. So in it goes, thanks @hoodmane!


Enabled Pagination

Notes for Reviewers
This PR fixes #7084
https://user-images.githubusercontent.com/103871275/218850948-f412484b-2bc7-46fb-b91f-ed8a33761816.mp4
Signed commits

[x] Yes, I signed my commits.

@leecalcote Really a proud moment for me. It's my 10th PR that got merged in meshery. Have learnt much and will continue to learn.